mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-01-18 21:46:35 +01:00
build/zig: Really support cross compilation.
* guix/build/zig-build-system.scm (configure): New procedure. (set-cc,set-zig-global-cache-dir): Delete procedures. (%standard-phases): Adjust accordingly. Change-Id: I08d15add2b249f7016f9cbb07f151ecf469fe656
This commit is contained in:
parent
8808ea98ae
commit
6fc811d02a
1 changed files with 19 additions and 10 deletions
|
@ -1,5 +1,6 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2023 Ekaitz Zarraga <ekaitz@elenq.tech>
|
||||
;;; Copyright © 2024 Hilton Chain <hako@ultrarare.space>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -34,14 +35,24 @@ (define-module (guix build zig-build-system)
|
|||
;; 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* (configure #:key inputs target #:allow-other-keys)
|
||||
;; Set cache dir, otherwise Zig looks for `$HOME/.cache'.
|
||||
(setenv "ZIG_GLOBAL_CACHE_DIR" global-cache-dir)
|
||||
|
||||
(define* (set-zig-global-cache-dir #:rest args)
|
||||
(setenv "ZIG_GLOBAL_CACHE_DIR" global-cache-dir))
|
||||
;; Libc paths for target.
|
||||
(let ((libc (assoc-ref inputs (if target "cross-libc" "libc")))
|
||||
(port (open-file "/tmp/guix-zig-libc-paths" "w" #:encoding "utf8")))
|
||||
(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))
|
||||
(setenv "ZIG_LIBC" "/tmp/guix-zig-libc-paths"))
|
||||
|
||||
(define* (build #:key
|
||||
zig-build-flags
|
||||
|
@ -91,9 +102,7 @@ (define* (install #:key inputs outputs #:allow-other-keys)
|
|||
(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)))
|
||||
|
|
Loading…
Reference in a new issue