[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-----