[PATCH 2/3] cmake.eclass: Unconditionally set CMAKE_SYSTEM_NAME in toolchain file
Andreas Sturmlechner <[email protected]> Sat, 06 Jun 2026 00:50:55 +0200
| Newsgroups | gmane.linux.gentoo.devel |
|---|---|
| Message-ID | <[email protected]> |
Also explicitly add CMAKE_CROSSCOMPILING=(TRUE|FALSE). Bug: https://bugs.gentoo.org/975603 Signed-off-by: Andreas Sturmlechner <[email protected]> --- eclass/cmake.eclass | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/eclass/cmake.eclass b/eclass/cmake.eclass index a0bcdfd19596..4edb246b51eb 100644 --- a/eclass/cmake.eclass +++ b/eclass/cmake.eclass @@ -595,17 +595,15 @@ cmake_src_configure() { local -x ASMFLAGS=${CFLAGS} local -x PKG_CONFIG=$(tc-getPKG_CONFIG) - if tc-is-cross-compiler; then - local sysname - case "${KERNEL:-linux}" in - Cygwin) sysname="CYGWIN_NT-5.1" ;; - HPUX) sysname="HP-UX" ;; - Hurd) sysname="GNU" ;; - linux) sysname="Linux" ;; - Winnt) sysname="Windows" ;; - *) sysname="${KERNEL}" ;; - esac - fi + local sysname + case "${KERNEL:-linux}" in + Cygwin) sysname="CYGWIN_NT-5.1" ;; + HPUX) sysname="HP-UX" ;; + Hurd) sysname="GNU" ;; + linux) sysname="Linux" ;; + Winnt) sysname="Windows" ;; + *) sysname="${KERNEL}" ;; + esac # !!! IMPORTANT NOTE !!! # Single slash below is intentional. CMake is weird and wants the @@ -621,8 +619,14 @@ cmake_src_configure() { set(CMAKE_Fortran_COMPILER "${myFC/ /;}") set(CMAKE_AR $(type -P $(tc-getAR)) CACHE FILEPATH "Archive manager" FORCE) set(CMAKE_RANLIB $(type -P $(tc-getRANLIB)) CACHE FILEPATH "Archive index generator" FORCE) + set(CMAKE_SYSTEM_NAME "${sysname}") + set(CMAKE_CROSSCOMPILING $(tc-is-cross-compiler && echo TRUE || echo FALSE)) set(CMAKE_SYSTEM_PROCESSOR "${CHOST%%-*}") + if(CMAKE_CROSSCOMPILING AND CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(CMAKE_RC_COMPILER $(tc-getRC)) + endif() + # When building with a sysroot (e.g. with crossdev's emerge wrappers) # we need to tell cmake to use libs/headers from the sysroot but programs from / only. if($(if [[ ${SYSROOT:-/} != / ]] ; then echo 1; else echo 0; fi)) # if \${SYSROOT:-/} != / @@ -631,13 +635,6 @@ cmake_src_configure() { set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) endif() - - if($(tc-is-cross-compiler && echo 1 || echo 0)) # if tc-is-cross-compiler - set(CMAKE_SYSTEM_NAME "${sysname}") - if(CMAKE_SYSTEM_NAME STREQUAL "Windows") - set(CMAKE_RC_COMPILER $(tc-getRC)) - endif() - endif() _EOF_ # Common configure parameters (invariants) -- 2.54.0
signature.asc
(application/pgp-signature, 829 B)
-----BEGIN PGP SIGNATURE----- iQIvBAABCgCZFiEE34gXUSooizdYNDu3S5FW4z0PgBkFAmojUs8bFIAAAAAABAAO bWFudTIsMi41KzEuMTIsMiwyXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25z Lm9wZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRERjg4MTc1MTJBMjg4QjM3NTgzNDNC Qjc0QjkxNTZFMzNEMEY4MDE5AAoJEEuRVuM9D4AZxpMMAJi1dyueLMMch3yuCnOs Jn34pX57HLkwmarAIBbYBNaPHH4NZkDALHHnd1hLmX3aRoa7gnrBmzMIShwm2hUj lmfxxDbcqEnZJHHSy8A2Wq0Mnm8z2FdMCAAz7WninwzfgLKCLQRhoLes7DtPlS6L jcrz3/TuJaVpcNmElT5XDjNM4ltv4BirJ+BFfIjqZDigYonzmSra+gklepnCQ6A+ 5xDWo6kIRYcoPPUAQRkz+CRALznkFYFNV66jXTAQqXS5d6EnBhkajgmd/ZVYNSeQ ZzF1PWcofJe2ShSStOM1TYJCk7KhTUeQO5CkYAztY2oBZT7eta/d/e5euA43XC/J Iy58A5RzDbPylQEKkEr5+ZKUgr3/h28QtQq9gs/4/GSBLS7bk2kwN5tXFpHYFq8n Lde+MKvlGmvYd7Z2ZYoOhkqME6WNBizTpog4YPbSXiKqFaUJpd3ivYBKNiN40PKY odCSqJIsiLZe+SZaygPxpb6YLot6VN4zl5TTWykophKu/g== =Vyx5 -----END PGP SIGNATURE-----