[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
57/59: build/zig: Support cross compilation.
From: |
guix-commits |
Subject: |
57/59: build/zig: Support cross compilation. |
Date: |
Sun, 17 Nov 2024 21:52:03 -0500 (EST) |
hako pushed a commit to branch wip-zig-bootstrap
in repository guix.
commit 5d76353f6f0f5b62f8767273e17dbdc8cffbdc9f
Author: Hilton Chain <hako@ultrarare.space>
AuthorDate: Sun Nov 17 02:42:35 2024 +0800
build/zig: Support cross compilation.
* guix/build-system/zig.scm (zig-build,zig-cross-build): Add
#:zig-glibc-linker.
* guix/build/zig-build-system.scm (configure): New procedure.
(build): Add "--libc" argument.
(set-cc,set-zig-global-cache-dir): Delete procedures.
(%standard-phases): Adjust accordingly.
Change-Id: I08d15add2b249f7016f9cbb07f151ecf469fe656
---
guix/build-system/zig.scm | 5 +++++
guix/build/zig-build-system.scm | 32 +++++++++++++++++++++-----------
2 files changed, 26 insertions(+), 11 deletions(-)
diff --git a/guix/build-system/zig.scm b/guix/build-system/zig.scm
index ad8a96b607..32eaff3a51 100644
--- a/guix/build-system/zig.scm
+++ b/guix/build-system/zig.scm
@@ -23,6 +23,7 @@
#:use-module (guix gexp)
#:use-module (guix monads)
#:use-module (guix packages)
+ #:use-module (guix platform)
#:use-module (guix build-system)
#:use-module (guix build-system gnu)
#:use-module (ice-9 match)
@@ -69,6 +70,8 @@
#:zig-build-flags #$zig-build-flags
#:zig-test-flags #$zig-test-flags
#:zig-release-type #$zig-release-type
+ #:zig-glibc-linker #$(platform-glibc-dynamic-linker
+ (lookup-platform-by-system system))
#:tests? #$tests?
#:phases #$phases
#:outputs #$(outputs->gexp outputs)
@@ -139,6 +142,8 @@
#:zig-build-flags #$zig-build-flags
#:zig-test-flags #$zig-test-flags
#:zig-release-type #$zig-release-type
+ #:zig-glibc-linker #$(platform-glibc-dynamic-linker
+ (lookup-platform-by-target target))
#:zig-destdir #$zig-destdir
#:zig-test-destdir #$zig-test-destdir
#:tests? #$tests?
diff --git a/guix/build/zig-build-system.scm b/guix/build/zig-build-system.scm
index 8352a73324..5deb5d57f5 100644
--- a/guix/build/zig-build-system.scm
+++ b/guix/build/zig-build-system.scm
@@ -34,14 +34,25 @@
;; https://github.com/riverwm/river/blob/master/PACKAGING.md
(define global-cache-dir "zig-cache")
-(define* (set-cc #:rest args)
- ;; TODO: Zig needs the gcc-toolchain in order to find the libc.
- ;; we need to think about how to solve this in the build system
- ;; directly: --libc
- (setenv "CC" "gcc"))
-
-(define* (set-zig-global-cache-dir #:rest args)
- (setenv "ZIG_GLOBAL_CACHE_DIR" global-cache-dir))
+(define* (configure #:key inputs native-inputs target zig-glibc-linker
+ #:allow-other-keys)
+ (let ((libc
+ (assoc-ref inputs (if target "cross-libc" "libc")))
+ (dynamic-linker
+ (search-input-file inputs zig-glibc-linker))
+ (port (open-file "/tmp/guix-zig-libc-paths" "w" #:encoding "utf8")))
+ (setenv "ZIG_GLOBAL_CACHE_DIR" global-cache-dir)
+ (setenv "GUIX_ZIG_GLIBC_LINKER" dynamic-linker)
+ (display
+ (string-append "\
+include_dir=" libc "/include
+sys_include_dir=" libc "/include
+crt_dir=" libc "/lib
+msvc_lib_dir=
+kernel32_lib_dir=
+gcc_dir=")
+ port)
+ (close-port port)))
(define* (build #:key
zig-build-flags
@@ -63,6 +74,7 @@
,@(if zig-release-type
(list (string-append "-Drelease-" zig-release-type))
'())
+ "--libc" "/tmp/guix-zig-libc-paths"
,@zig-build-flags)))
(format #t "running: ~s~%" call)
(apply invoke call)))
@@ -91,9 +103,7 @@
(define %standard-phases
(modify-phases gnu:%standard-phases
(delete 'bootstrap)
- (delete 'configure)
- (add-before 'build 'set-zig-global-cache-dir set-zig-global-cache-dir)
- (add-before 'build 'set-cc set-cc)
+ (replace 'configure configure)
(replace 'build build)
(replace 'check check)
(replace 'install install)))
- 41/59: gnu: Add zig-0.11.0-587., (continued)
- 41/59: gnu: Add zig-0.11.0-587., guix-commits, 2024/11/17
- 59/59: gnu: zig: Respect the PKG_CONFIG environment variable., guix-commits, 2024/11/17
- 33/59: gnu: Add zig-0.10.0-3807., guix-commits, 2024/11/17
- 32/59: gnu: Add zig-0.10.0-3728., guix-commits, 2024/11/17
- 38/59: gnu: Add zig-0.11.0-149., guix-commits, 2024/11/17
- 47/59: gnu: Add zig-0.11.0-3245., guix-commits, 2024/11/17
- 53/59: gnu: Add zig-0.12., guix-commits, 2024/11/17
- 55/59: gnu: Add zig-0.13., guix-commits, 2024/11/17
- 22/59: gnu: Add zig-0.10.0-1713., guix-commits, 2024/11/17
- 37/59: gnu: Add zig-0.11., guix-commits, 2024/11/17
- 57/59: build/zig: Support cross compilation.,
guix-commits <=
- 58/59: build/zig: Adjust the build triplets for some systems., guix-commits, 2024/11/17