janneke pushed a commit to branch core-packages-team in repository guix. commit a1dda308571841de1a2c223d7864622d304cdf30 Author: Dariqq <dar...@posteo.net> AuthorDate: Wed Aug 21 18:34:50 2024 +0000
guix: build-system: cmake: Rework cross compilation. Move the extra configure flags for cross building out from the build side code and instead prepend them to the configure-flags. Use new procedure cmake-system-name-for-target to add support for the Hurd and bare-metal targets. * guix/build/cmake-build-system.scm (configure): Move cross build flags from here ... * guix/build-system/cmake.scm (cmake-cross-build): ... to here. (cmake-system-name-for-target): New procedure. Signed-off-by: Janneke Nieuwenhuizen <jann...@gnu.org> Change-Id: Ic68acc246e543491ed147e53d47cec5de46b82cb --- guix/build-system/cmake.scm | 20 +++++++++++++++++++- guix/build/cmake-build-system.scm | 11 ----------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm index 0b8a651ee0..8a3a183524 100644 --- a/guix/build-system/cmake.scm +++ b/guix/build-system/cmake.scm @@ -39,6 +39,15 @@ ;; ;; Code: +(define* (cmake-system-name-for-target + #:optional (target (or (%current-target-system) + (%current-system)))) + (cond ((target-hurd? target) "GNU") + ((target-linux? target) "Linux") + ((target-mingw? target) "Windows") + ;; For avr, or1k-elf, xtensa-ath9k-elf + (else "Generic"))) + (define %cmake-build-system-modules ;; Build-side modules imported by default. `((guix build cmake-build-system) @@ -231,7 +240,16 @@ build system." search-path-specification->sexp native-search-paths) #:phases #$phases - #:configure-flags #$configure-flags + #:configure-flags + `(#$(string-append "-DCMAKE_C_COMPILER=" + (cc-for-target target)) + #$(string-append "-DCMAKE_CXX_COMPILER=" + (cxx-for-target target)) + #$(string-append "-DCMAKE_SYSTEM_NAME=" + (cmake-system-name-for-target target)) + ,@#$(if (pair? configure-flags) + (sexp->gexp configure-flags) + configure-flags)) #:make-flags #$make-flags #:out-of-source? #$out-of-source? #:build-type #$build-type diff --git a/guix/build/cmake-build-system.scm b/guix/build/cmake-build-system.scm index d1ff5071be..61033061c6 100644 --- a/guix/build/cmake-build-system.scm +++ b/guix/build/cmake-build-system.scm @@ -62,17 +62,6 @@ ,(string-append "-DCMAKE_INSTALL_RPATH=" out "/lib") ;; enable verbose output from builds "-DCMAKE_VERBOSE_MAKEFILE=ON" - - ;; Cross-build - ,@(if target - (list (string-append "-DCMAKE_C_COMPILER=" - target "-gcc") - (string-append "-DCMAKE_CXX_COMPILER=" - target "-g++") - (if (string-contains target "mingw") - "-DCMAKE_SYSTEM_NAME=Windows" - "-DCMAKE_SYSTEM_NAME=Linux")) - '()) ,@configure-flags))) (format #t "running 'cmake' with arguments ~s~%" args) (apply invoke "cmake" args))))