From a6dc203ff1f015853eb415a1dcf310e3c3f7d052 Mon Sep 17 00:00:00 2001 From: Ralf Hubert Date: Thu, 22 Jan 2026 09:14:00 +0100 Subject: [PATCH 1/4] make: use fifo jobServer To support the Makefile-Generator of cmake we have to use the same jobServer implementation for ninja and make as both classes are inherited by cmake. See: https://github.com/BobBuildTool/basement/pull/295#discussion_r2715711062 --- classes/make.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/make.yaml b/classes/make.yaml index a6802c5..b3f8b0e 100644 --- a/classes/make.yaml +++ b/classes/make.yaml @@ -1,4 +1,4 @@ -jobServer: "fifo-or-pipe" +jobServer: "fifo" buildToolsWeak: [make] buildVarsWeak: [MAKE_JOBS] buildSetup: | From 86b95e0fb05be4a9cc69bfd1eed2843e0817ca04 Mon Sep 17 00:00:00 2001 From: Ralf Hubert Date: Mon, 5 Jul 2021 06:55:47 +0200 Subject: [PATCH 2/4] classes/cmake: make CMake Generator configurable Some builds are failing if ninja is used while the succeed with make. Make the Generator setable and support 'Unix Makefiles' next to ninja. --- classes/cmake.yaml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/classes/cmake.yaml b/classes/cmake.yaml index 61aba71..dc2e34a 100644 --- a/classes/cmake.yaml +++ b/classes/cmake.yaml @@ -1,7 +1,7 @@ -inherit: [cpackage, ninja, install, licenses] +inherit: [cpackage, ninja, install, licenses, make] buildToolsWeak: [cmake] -buildVars: [AUTOCONF_HOST, AR, CC, CXX] +buildVars: [AUTOCONF_HOST, AR, CC, CXX, CMAKE_GENERATOR] buildSetup: | # Make sure CMake finds other stuff by its own logic too CMAKE_FIND_ROOT_PATH= @@ -144,7 +144,7 @@ buildSetup: | pushd build cmake "$1" \ - -G Ninja \ + -G "${CMAKE_GENERATOR:-Ninja}" \ ${CMAKE_TOOLCHAIN_FILE:+-DCMAKE_TOOLCHAIN_FILE="$CMAKE_TOOLCHAIN_FILE"} \ -DCMAKE_FIND_ROOT_PATH="$CMAKE_FIND_ROOT_PATH" \ -DCMAKE_BUILD_TYPE=Bob \ @@ -155,9 +155,13 @@ buildSetup: | -DCMAKE_MSVC_RUNTIME_LIBRARY="" \ "${@:2}" - ninjaParallel ${MAKE_OPTIONS:+"${MAKE_OPTIONS[@]}"} \ - ${MAKE_TARGETS:+"${MAKE_TARGETS[@]}"} - + if [[ "${CMAKE_GENERATOR:-Ninja}" == Ninja ]]; then + ninjaParallel ${MAKE_OPTIONS:+"${MAKE_OPTIONS[@]}"} \ + ${MAKE_TARGETS:+"${MAKE_TARGETS[@]}"} + elif [[ "${CMAKE_GENERATOR:-Ninja}" == 'Unix Makefiles' ]]; then + makeParallel ${MAKE_OPTIONS:+"${MAKE_OPTIONS[@]}"} \ + ${MAKE_TARGETS:+"${MAKE_TARGET[@]}"} + fi if [[ -n "$INSTALL" ]] ; then DESTDIR="${PWD}/../install" cmake \ ${INSTALL_COMPONENT:+-DCOMPONENT="$INSTALL_COMPONENT"} \ From 9b06d133670a49b0d08e665e91923e11c3b5d791 Mon Sep 17 00:00:00 2001 From: Ralf Hubert Date: Tue, 27 Jan 2026 06:52:42 +0100 Subject: [PATCH 3/4] cmake: bump to v4.2.1 --- recipes/devel/cmake.yaml | 5 +++-- .../devel/cmake/0001-fix-curl-lib-deps.patch | 22 ++++++++++--------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/recipes/devel/cmake.yaml b/recipes/devel/cmake.yaml index 850f9f5..c2ed0ba 100644 --- a/recipes/devel/cmake.yaml +++ b/recipes/devel/cmake.yaml @@ -1,13 +1,13 @@ inherit: [patch] metaEnvironment: - PKG_VERSION: "3.25.1" + PKG_VERSION: "${DEVEL__CMAKE_VERSION:-4.2.1}" PKG_LICENSE: "BSD-3-Clause" checkoutSCM: scm: url url: ${GITHUB_MIRROR}/Kitware/CMake/releases/download/v${PKG_VERSION}/cmake-${PKG_VERSION}.tar.gz - digestSHA256: 1c511d09516af493694ed9baf13c55947a36389674d657a2d5e0ccedc6b291d8 + digestSHA256: "${DEVEL__CMAKE_DIGEST:-414aacfac54ba0e78e64a018720b64ed6bfca14b587047b8b3489f407a14a070}" stripComponents: 1 checkoutDeterministic: True @@ -40,6 +40,7 @@ multiPackage: -DKWSYS_LFS_WORKS=TRUE \ -DKWSYS_CHAR_IS_SIGNED=TRUE \ -DCMAKE_USE_SYSTEM_LIBRARIES=1 \ + -DCMAKE_USE_SYSTEM_LIBRARY_CPPDAP=OFF \ -DCTEST_USE_XMLRPC=OFF \ -DBUILD_CursesDialog=OFF diff --git a/recipes/devel/cmake/0001-fix-curl-lib-deps.patch b/recipes/devel/cmake/0001-fix-curl-lib-deps.patch index ad3b4f5..3a6446a 100644 --- a/recipes/devel/cmake/0001-fix-curl-lib-deps.patch +++ b/recipes/devel/cmake/0001-fix-curl-lib-deps.patch @@ -3,27 +3,29 @@ Fix CURL find package module The current implementation does not account for transitive dependencies of cURL. Add what is strictly necessary to get it compiled in our environment. -diff -Nurp a/Modules/FindCURL.cmake b/Modules/FindCURL.cmake ---- a/Modules/FindCURL.cmake 2022-11-30 14:57:03.000000000 +0100 -+++ b/Modules/FindCURL.cmake 2022-12-05 21:25:34.000000000 +0100 -@@ -185,13 +185,19 @@ find_package_handle_standard_args(CURL +diff -Nurp a/Modules/FindCURL.cmake b/Modules/FindCURL.cmake +--- a/Modules/FindCURL.cmake 2025-12-08 19:33:58.000000000 +0100 ++++ b/Modules/FindCURL.cmake 2026-01-21 14:42:55.650870435 +0100 +@@ -291,7 +291,7 @@ find_package_handle_standard_args(CURL HANDLE_COMPONENTS) - + if(CURL_FOUND) - set(CURL_LIBRARIES ${CURL_LIBRARY}) + set(CURL_LIBRARIES ${CURL_LIBRARY} ${PC_CURL_LIBRARIES}) set(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR}) - + if(NOT TARGET CURL::libcurl) - add_library(CURL::libcurl UNKNOWN IMPORTED) +@@ -299,6 +299,13 @@ if(CURL_FOUND) set_target_properties(CURL::libcurl PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CURL_INCLUDE_DIRS}") + + if(PC_CURL_FOUND) + set(CURL_DEPENDENCY_LIBRARIES "${PC_CURL_LIBRARIES}") + list(REMOVE_ITEM CURL_DEPENDENCY_LIBRARIES curl) + set_target_properties(CURL::libcurl PROPERTIES + INTERFACE_LINK_LIBRARIES "${CURL_DEPENDENCY_LIBRARIES}") + endif() - - if(EXISTS "${CURL_LIBRARY}") - set_target_properties(CURL::libcurl PROPERTIES ++ + if(CURL_USE_STATIC_LIBS) + set_property(TARGET CURL::libcurl APPEND PROPERTY + INTERFACE_COMPILE_DEFINITIONS "CURL_STATICLIB") From 7f88accb485163d38aebed097087c0a02812655c Mon Sep 17 00:00:00 2001 From: Ralf Hubert Date: Fri, 23 Jan 2026 14:35:55 +0100 Subject: [PATCH 4/4] add cmake-3 class CMake 4.0 removed support for cmake_minium_version <= 3.5 ([1]). Since there are still packages around requiring older cmake versions add a cmake-3 class to be used by them. [1] https://cmake.org/cmake/help/latest/command/cmake_minimum_required.html --- classes/cmake-3.yaml | 7 ++++ recipes/devel/cmake-3.yaml | 73 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 classes/cmake-3.yaml create mode 100644 recipes/devel/cmake-3.yaml diff --git a/classes/cmake-3.yaml b/classes/cmake-3.yaml new file mode 100644 index 0000000..bf7f926 --- /dev/null +++ b/classes/cmake-3.yaml @@ -0,0 +1,7 @@ +inherit: [cmake] + +depends: + - name: devel::cmake-3 + use: [tools] + tools: + target-toolchain: host-compat-toolchain diff --git a/recipes/devel/cmake-3.yaml b/recipes/devel/cmake-3.yaml new file mode 100644 index 0000000..863bfba --- /dev/null +++ b/recipes/devel/cmake-3.yaml @@ -0,0 +1,73 @@ +inherit: [patch] + +metaEnvironment: + PKG_VERSION: "3.31.0" + PKG_LICENSE: "BSD-3-Clause" + +checkoutSCM: + scm: url + url: ${GITHUB_MIRROR}/Kitware/CMake/releases/download/v${PKG_VERSION}/cmake-${PKG_VERSION}.tar.gz + digestSHA256: "300b71db6d69dcc1ab7c5aae61cbc1aa2778a3e00cbd918bc720203e311468c3" + stripComponents: 1 + +checkoutDeterministic: True +checkoutScript: | + patchApplySeries $<@cmake/*.patch@> + +multiPackage: + "": + inherit: [cmake] + depends: + - libs::expat-dev + - libs::jsoncpp-dev + - libs::libarchive-dev + - libs::libuv-dev + - libs::rhash-dev + - libs::zlib-dev + - net::curl-dev + - use: [] + depends: + - libs::expat-tgt + - libs::jsoncpp-tgt + - libs::libarchive-tgt + - libs::libuv-tgt + - libs::rhash-tgt + - libs::zlib-tgt + - net::curl-tgt + + buildScript: | + cmakeBuild "$1" \ + -DKWSYS_LFS_WORKS=TRUE \ + -DKWSYS_CHAR_IS_SIGNED=TRUE \ + -DCMAKE_USE_SYSTEM_LIBRARIES=1 \ + -DCTEST_USE_XMLRPC=OFF \ + -DBUILD_CursesDialog=OFF + + packageScript: | + cmakePackageTgt + + provideDeps: [ "*-tgt" ] + + bootstrap: + inherit: [make, install] + + buildTools: [target-toolchain] + buildVars: [CC, CXX, LD, CPPFLAGS, CFLAGS, CXXFLAGS, LDFLAGS] + buildVarsWeak: [MAKE_JOBS] # hook onto make class + buildScript: | + mkdir -p build install + pushd build + "$1"/bootstrap \ + --prefix=/usr \ + --parallel="${MAKE_JOBS-$(nproc)}" -- \ + -DCMAKE_USE_OPENSSL:BOOL=OFF \ + -DBUILD_CursesDialog=OFF + makeParallel + make install DESTDIR="$PWD/../install" + popd + + packageScript: | + installPackageTgt "$1/install/" + +provideTools: + cmake: usr/bin