GNU bug report logs -
#72751
[PATCH 0/2] Rework cmake cross compiling.
Previous Next
Reported by: Dariqq <dariqq <at> posteo.net>
Date: Wed, 21 Aug 2024 18:10:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
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
---
guix/build-system/cmake.scm | 19 ++++++++++++++++++-
guix/build/cmake-build-system.scm | 11 -----------
2 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm
index aa187c9844..fd32548342 100644
--- a/guix/build-system/cmake.scm
+++ b/guix/build-system/cmake.scm
@@ -39,6 +39,15 @@ (define-module (guix build-system cmake)
;;
;; 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)
@@ -228,7 +237,15 @@ (define* (cmake-cross-build name
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 @@ (define* (configure #:key outputs (configure-flags '()) (out-of-source? #t)
,(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))))
--
2.45.2
This bug report was last modified 179 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.