diff options
author | 2024-04-16 17:26:58 +0200 | |
---|---|---|
committer | 2024-04-19 20:46:46 +0200 | |
commit | 75a308e0686ff3757855e05ff06e9ba7418a0458 (patch) | |
tree | b2001910bf2abe3ccbf1fc51718991a3aae6cfe8 /eclass/distutils-r1.eclass | |
parent | distutils-r1.eclass: Document DISTUTILS_ARGS for maturin & meson (diff) | |
download | gentoo-75a308e0686ff3757855e05ff06e9ba7418a0458.tar.gz gentoo-75a308e0686ff3757855e05ff06e9ba7418a0458.tar.bz2 gentoo-75a308e0686ff3757855e05ff06e9ba7418a0458.zip |
distutils-r1.eclass: Pass arguments to scikit-build-core
Support passing DISTUTILS_ARGS to scikit-build-core, along with some
standard arguments that:
- ensure that CFLAGS, CXXFLAGS, CPPFLAGS and so on, are respected
- respect CMAKE_BUILD_TYPE, along with the default of RelWithDebInfo
- enable verbose builds
- disable stripping
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'eclass/distutils-r1.eclass')
-rw-r--r-- | eclass/distutils-r1.eclass | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass index ddcba288d85c..a67122a59a33 100644 --- a/eclass/distutils-r1.eclass +++ b/eclass/distutils-r1.eclass @@ -454,6 +454,9 @@ unset -f _distutils_set_globals # For meson-python, the arguments will be passed as `meson setup` # arguments. # +# For scikit-build-core, the arguments will be passed as `cmake` +# options (e.g. `-DFOO=BAR` form should be used). +# # For setuptools, the arguments will be passed as first parameters # to setup.py invocations (via esetup.py), as well as to the PEP517 # backend. For future compatibility, only global options should be used @@ -1412,6 +1415,46 @@ distutils_pep517_install() { EOF ) ;; + scikit-build-core) + # TODO: split out the config/toolchain logic from cmake.eclass + # for now, we copy the most important bits + local CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE:-RelWithDebInfo} + cat >> "${BUILD_DIR}"/config.cmake <<- _EOF_ || die + set(CMAKE_ASM_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") + set(CMAKE_ASM-ATT_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") + set(CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") + set(CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") + set(CMAKE_Fortran_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") + set(CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") + set(CMAKE_MODULE_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") + set(CMAKE_SHARED_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") + set(CMAKE_STATIC_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") + _EOF_ + + # hack around CMake ignoring CPPFLAGS + local -x CFLAGS="${CFLAGS} ${CPPFLAGS}" + local -x CXXFLAGS="${CXXFLAGS} ${CPPFLAGS}" + + local cmake_args=( + "-C${BUILD_DIR}/config.cmake" + "${DISTUTILS_ARGS[@]}" + ) + + # NB: we need to pass strings for boolean fields + # https://github.com/scikit-build/scikit-build-core/issues/707 + config_settings=$( + "${EPYTHON}" - "${cmake_args[@]}" <<-EOF || die + import json + import sys + print(json.dumps({ + "cmake.args": ";".join(sys.argv[1:]), + "cmake.build-type": "${CMAKE_BUILD_TYPE}", + "cmake.verbose": "true", + "install.strip": "false", + })) + EOF + ) + ;; setuptools) if in_iuse debug && use debug; then local -x SETUPTOOLS_RUST_CARGO_PROFILE=dev |