From 8c7ccb424c311f002d3f04ac47916190db3c34b5 Mon Sep 17 00:00:00 2001 From: Nir Soffer Date: Sat, 17 Jun 2023 04:22:29 +0300 Subject: [PATCH] Make blake3 C library usable as meson subproject The meson build system[1] support subprojects - a way to use another project in your build. The blake3 C library can be used like this, but meson requires that the subproject root directory has either `meson.build` (for meson projects) or `CMakeLists.txt` (meson can build cmake projects). Add `CMakeLists.txt` in the root directory with the project info, including the `c` subdirectory. With this you can add blake3 as subproject to a meson project. Example wrap file (using test release from my fork): % cat subprojects/blake3.wrap [wrap-file] directory = BLAKE3-1.4.1-cmake source_url = https://github.com/nirs/BLAKE3/archive/refs/tags/1.4.1-cmake.tar.gz source_filename = BLAKE3-1.4.1-cmake.tar.gz source_hash = 6c6f053ede700d76d12a7ced7bbd640e7a47f97122fe4cbe718aa9406251d043 With this wrap file, you can use blake3 in your meson project[2] like this: % cat meson.build project('blake3-meson', 'c', default_options: ['buildtype=release']) cmake = import('cmake') blake3_subproj = cmake.subproject('blake3') blake3_dep = blake3_subproj.dependency('blake3') executable(example, ['example.c'], dependencies: blake3_dep) [1] https://mesonbuild.com/ [2] https://github.com/nirs/blake3-meson --- .github/workflows/ci.yml | 4 ++-- CMakeLists.txt | 10 ++++++++++ c/CMakeLists.txt | 10 +--------- 3 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 CMakeLists.txt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2de4fdd6..2772080c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -331,6 +331,6 @@ jobs: steps: - uses: actions/checkout@v3 - name: CMake generation - run: cmake -S c -B c/build -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/target + run: cmake -S . -B build -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/target - name: CMake build / install - run: cmake --build c/build --target install + run: cmake --build build --target install diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..d754d331 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 3.9) + +project(libblake3 + VERSION 1.5.0 + DESCRIPTION "BLAKE3 C implementation" + LANGUAGES C ASM +) + +include_directories(c) +add_subdirectory(c) diff --git a/c/CMakeLists.txt b/c/CMakeLists.txt index c73b9c7c..09118966 100644 --- a/c/CMakeLists.txt +++ b/c/CMakeLists.txt @@ -1,11 +1,3 @@ -cmake_minimum_required(VERSION 3.9) - -project(libblake3 - VERSION 1.5.0 - DESCRIPTION "BLAKE3 C implementation" - LANGUAGES C ASM -) - include(FeatureSummary) include(GNUInstallDirs) @@ -167,7 +159,7 @@ install(FILES ) configure_file(libblake3.pc.in libblake3.pc @ONLY) -install(FILES "${CMAKE_BINARY_DIR}/libblake3.pc" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libblake3.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") # print feature summary