diff --git a/classes/cmake-3.yaml b/classes/cmake-3.yaml new file mode 100644 index 00000000..bf7f926a --- /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/classes/cmake.yaml b/classes/cmake.yaml index 61aba71d..dc2e34aa 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"} \ diff --git a/classes/make.yaml b/classes/make.yaml index a6802c5f..b3f8b0e5 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: | diff --git a/recipes/devel/cmake-3.yaml b/recipes/devel/cmake-3.yaml new file mode 100644 index 00000000..25fc6cb2 --- /dev/null +++ b/recipes/devel/cmake-3.yaml @@ -0,0 +1,46 @@ +inherit: [cmake, patch] + +metaEnvironment: + PKG_VERSION: "3.31.11" + PKG_LICENSE: "BSD-3-Clause" + +checkoutSCM: + scm: url + url: ${GITHUB_MIRROR}/Kitware/CMake/releases/download/v${PKG_VERSION}/cmake-${PKG_VERSION}.tar.gz + digestSHA256: c0a3b3f2912b2166f522d5010ffb6029d8454ee635f5ad7a3247e0be7f9a15c9 + stripComponents: 1 + +checkoutDeterministic: True +checkoutScript: | + patchApplySeries $<@cmake-3/*.patch@> + +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" \ + -DCMAKE_USE_SYSTEM_LIBRARIES=1 \ + -DBUILD_CursesDialog=OFF \ + -DCMake_ENABLE_DEBUGGER=OFF + +packageScript: | + cmakePackageTgt + +provideDeps: [ "*-tgt" ] +provideTools: + cmake: usr/bin diff --git a/recipes/devel/cmake-3/0001-fix-curl-lib-deps.patch b/recipes/devel/cmake-3/0001-fix-curl-lib-deps.patch new file mode 100644 index 00000000..3181bf7a --- /dev/null +++ b/recipes/devel/cmake-3/0001-fix-curl-lib-deps.patch @@ -0,0 +1,31 @@ +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 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) +@@ -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(CURL_USE_STATIC_LIBS) + set_property(TARGET CURL::libcurl APPEND PROPERTY + INTERFACE_COMPILE_DEFINITIONS "CURL_STATICLIB") diff --git a/recipes/devel/cmake.yaml b/recipes/devel/cmake.yaml index 850f9f5d..16d3ca7f 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: "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: "414aacfac54ba0e78e64a018720b64ed6bfca14b587047b8b3489f407a14a070" stripComponents: 1 checkoutDeterministic: True @@ -37,11 +37,9 @@ multiPackage: buildScript: | cmakeBuild "$1" \ - -DKWSYS_LFS_WORKS=TRUE \ - -DKWSYS_CHAR_IS_SIGNED=TRUE \ -DCMAKE_USE_SYSTEM_LIBRARIES=1 \ - -DCTEST_USE_XMLRPC=OFF \ - -DBUILD_CursesDialog=OFF + -DBUILD_CursesDialog=OFF \ + -DCMake_ENABLE_DEBUGGER=OFF packageScript: | cmakePackageTgt diff --git a/recipes/devel/cmake/0001-fix-curl-lib-deps.patch b/recipes/devel/cmake/0001-fix-curl-lib-deps.patch index ad3b4f5e..3181bf7a 100644 --- a/recipes/devel/cmake/0001-fix-curl-lib-deps.patch +++ b/recipes/devel/cmake/0001-fix-curl-lib-deps.patch @@ -4,26 +4,28 @@ 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 +--- 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") diff --git a/recipes/devel/dune.yaml b/recipes/devel/dune.yaml index 070fe2dd..b7d44896 100644 --- a/recipes/devel/dune.yaml +++ b/recipes/devel/dune.yaml @@ -1,7 +1,7 @@ inherit: [cpackage, make] metaEnvironment: - PKG_VERSION: "3.21.0" + PKG_VERSION: "3.17.2" PKG_LICENSE: "MIT" depends: @@ -13,7 +13,7 @@ depends: checkoutSCM: scm: url url: https://github.com/ocaml/dune/archive/refs/tags/${PKG_VERSION}.tar.gz - digestSHA256: 07c7dbd778579e35f365320b559d6f781cd755c6485b164b802f109fe21ead68 + digestSHA256: 1b45e34d1eacf40be569e4d7ad055508a3242637b098327c91f7ce67772a1889 stripComponents: 1 multiPackage: diff --git a/tests/linux/recipes/buildall.yaml b/tests/linux/recipes/buildall.yaml index 11aa772e..841dd172 100644 --- a/tests/linux/recipes/buildall.yaml +++ b/tests/linux/recipes/buildall.yaml @@ -17,6 +17,11 @@ depends: - devel::llvm-libs-dev - devel::llvm-libs-tgt + # Just build cmake-3 but do not use its tool. It is already provided by + # devel::cmake, included by basement::rootrecipe above. + - name: devel::cmake-3 + use: [result] + buildScript: | true