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

Change-Id: Ic68acc246e543491ed147e53d47cec5de46b82cb
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Dariqq 2024-08-21 18:34:50 +00:00 committed by Ludovic Courtès
parent f5fa65b3e9
commit ad672d80d7
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 18 additions and 12 deletions

View file

@ -39,6 +39,15 @@
;; ;;
;; Code: ;; 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 (define %cmake-build-system-modules
;; Build-side modules imported by default. ;; Build-side modules imported by default.
`((guix build cmake-build-system) `((guix build cmake-build-system)
@ -231,7 +240,15 @@ build system."
search-path-specification->sexp search-path-specification->sexp
native-search-paths) native-search-paths)
#:phases #$phases #: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 #:make-flags #$make-flags
#:out-of-source? #$out-of-source? #:out-of-source? #$out-of-source?
#:build-type #$build-type #:build-type #$build-type

View file

@ -62,17 +62,6 @@
,(string-append "-DCMAKE_INSTALL_RPATH=" out "/lib") ,(string-append "-DCMAKE_INSTALL_RPATH=" out "/lib")
;; enable verbose output from builds ;; enable verbose output from builds
"-DCMAKE_VERBOSE_MAKEFILE=ON" "-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))) ,@configure-flags)))
(format #t "running 'cmake' with arguments ~s~%" args) (format #t "running 'cmake' with arguments ~s~%" args)
(apply invoke "cmake" args)))) (apply invoke "cmake" args))))