* [bug#72751] [PATCH 0/2] Rework cmake cross compiling.
@ 2024-08-21 18:05 Dariqq
2024-08-21 18:34 ` [bug#72751] [PATCH 1/2] guix: build-system: cmake: Rework cross compilation Dariqq
2024-08-21 18:34 ` [bug#72751] [PATCH 2/2] gnu: ath9k-firmware: Remove CMAKE_SYSTEM_NAME override Dariqq
0 siblings, 2 replies; 3+ messages in thread
From: Dariqq @ 2024-08-21 18:05 UTC (permalink / raw)
To: 72751; +Cc: Dariqq, Efraim Flashner, Vagrant Cascadian
Hi,
This is an attempt to move the cross compile logic out of the build side.
This should fix https://issues.guix.gnu.org/72697 and technically supersedes https://issues.guix.gnu.org/68366 .
Also cleans up after https://issues.guix.gnu.org/69476 by removing the need for CMAKE_SYSTEM_NAME override.
Main benefit is that this decouples the cmake native compilation and cmake cross compilation, i.e. if a new target needs a new CMAKE_SYSTEM_NAME we don't need to touch build code to enable it and thus don't need to rebuild everything natively for something only affecting cross building.
Also use the target-*? functions and c*-for-target instead of reimplementing them in build code.
The new cmake-system-name-for-target (a bit long, idk) now also supports hurd and bare-metal targets.
I have tested this with the package i had troubles in #72697, and also verified that the ath9k firmware hashes are unchanged.
Output of guix hash:
/gnu/store/0r075s8g9pr9i6yd3pvwfjl2g4mkm7s8-ath9k-htc-ar9271-firmware-1.4.0/lib/firmware/htc_9271.fw
0bi0m4y1g8i47mal4m11pry88kjqqyk2209hw5yj2awngp31qj55
/gnu/store/msjnrh864a2c8k44hvwqs6fra7c7bb6v-ath9k-htc-ar7010-firmware-1.4.0/lib/firmware/htc_7010.fw
01hl01gv66k8g5avw85fbfyzblsy1ccmv64wq7g3zbgdwcb4ry7f
Unfortunely this will cause a lot of rebuilds (but this will be hopefully easier in the future).
Dariqq (2):
guix: build-system: cmake: Rework cross compilation.
gnu: ath9k-firmware: Remove CMAKE_SYSTEM_NAME override.
gnu/packages/firmware.scm | 6 ++----
guix/build-system/cmake.scm | 19 ++++++++++++++++++-
guix/build/cmake-build-system.scm | 11 -----------
3 files changed, 20 insertions(+), 16 deletions(-)
base-commit: 7a149c6003d25e8b2794b113d34062be134d7710
--
2.45.2
^ permalink raw reply [flat|nested] 3+ messages in thread
* [bug#72751] [PATCH 1/2] guix: build-system: cmake: Rework cross compilation.
2024-08-21 18:05 [bug#72751] [PATCH 0/2] Rework cmake cross compiling Dariqq
@ 2024-08-21 18:34 ` Dariqq
2024-08-21 18:34 ` [bug#72751] [PATCH 2/2] gnu: ath9k-firmware: Remove CMAKE_SYSTEM_NAME override Dariqq
1 sibling, 0 replies; 3+ messages in thread
From: Dariqq @ 2024-08-21 18:34 UTC (permalink / raw)
To: 72751; +Cc: Dariqq
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
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [bug#72751] [PATCH 2/2] gnu: ath9k-firmware: Remove CMAKE_SYSTEM_NAME override.
2024-08-21 18:05 [bug#72751] [PATCH 0/2] Rework cmake cross compiling Dariqq
2024-08-21 18:34 ` [bug#72751] [PATCH 1/2] guix: build-system: cmake: Rework cross compilation Dariqq
@ 2024-08-21 18:34 ` Dariqq
1 sibling, 0 replies; 3+ messages in thread
From: Dariqq @ 2024-08-21 18:34 UTC (permalink / raw)
To: 72751; +Cc: Dariqq, Efraim Flashner, Vagrant Cascadian
* gnu/packages/firmware.scm
(ath9k-htc-ar7010-firmware)[#:configure-flags]: Remove CMAKE_SYSTEM_NAME.
(ath9k-htc-ar9271-firmware)[#:configure-flags]: Same.
Change-Id: I87acb0aa781d104be511b1f368d9332c61d71627
---
gnu/packages/firmware.scm | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 4348612567..183e25661d 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -116,8 +116,7 @@ (define-public ath9k-htc-ar7010-firmware
(list #:target "xtensa-ath9k-elf"
#:tests? #f
#:configure-flags
- #~'("-DCMAKE_SYSTEM_NAME=Generic" ;override default value
- "-DTARGET_MAGPIE=ON")
+ #~'("-DTARGET_MAGPIE=ON")
#:phases
#~(modify-phases %standard-phases
(add-before 'configure 'change-directory
@@ -145,8 +144,7 @@ (define-public ath9k-htc-ar9271-firmware
(substitute-keyword-arguments
(package-arguments ath9k-htc-ar7010-firmware)
((#:configure-flags flags)
- #~'("-DCMAKE_SYSTEM_NAME=Generic" ;override default value
- "-DTARGET_K2=ON"))))
+ #~'("-DTARGET_K2=ON"))))
(synopsis "Firmware for the Atheros AR9271 USB 802.11n NICs")
(description
"This is the firmware for the Qualcomm Atheros AR9271 802.11n USB NICs
--
2.45.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-08-21 18:36 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-21 18:05 [bug#72751] [PATCH 0/2] Rework cmake cross compiling Dariqq
2024-08-21 18:34 ` [bug#72751] [PATCH 1/2] guix: build-system: cmake: Rework cross compilation Dariqq
2024-08-21 18:34 ` [bug#72751] [PATCH 2/2] gnu: ath9k-firmware: Remove CMAKE_SYSTEM_NAME override Dariqq
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).