mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-02-02 08:07:29 +01:00
build-system: cargo: Use platform-rust-target.
* guix/build-system/cargo.scm (cargo-triplet): New procedure. (cargo-build, cargo-cross-build): Add cargo-target. (lower): Add cargo-target as private keyword. * guix/build/cargo-build-system.scm (configure): Use cargo-target to set CARGO_BUILD_TARGET. Change-Id: I476fa195dce0e9d20d59dda7dd15f050a56a15cb
This commit is contained in:
parent
67950f46ef
commit
937fd724f1
2 changed files with 13 additions and 20 deletions
|
@ -5,7 +5,7 @@
|
|||
;;; Copyright © 2016 David Craven <david@craven.ch>
|
||||
;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
|
||||
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
|
||||
;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2021, 2024 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -29,6 +29,7 @@ (define-module (guix build-system cargo)
|
|||
#: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)
|
||||
|
@ -67,6 +68,11 @@ (define (default-rust-sysroot target)
|
|||
(let ((module (resolve-interface '(gnu packages rust))))
|
||||
(module-ref module 'make-rust-sysroot)))
|
||||
|
||||
(define (cargo-triplet target)
|
||||
(false-if-exception
|
||||
(platform-rust-target
|
||||
(lookup-platform-by-target-or-system target))))
|
||||
|
||||
(define %cargo-utils-modules
|
||||
;; Build-side modules imported by default.
|
||||
`((guix build cargo-utils)
|
||||
|
@ -113,6 +119,7 @@ (define builder
|
|||
#:cargo-build-flags #$(sexp->gexp cargo-build-flags)
|
||||
#:cargo-test-flags #$(sexp->gexp cargo-test-flags)
|
||||
#:cargo-package-flags #$(sexp->gexp cargo-package-flags)
|
||||
#:cargo-target #$(cargo-triplet system)
|
||||
#:features #$(sexp->gexp features)
|
||||
#:skip-build? #$skip-build?
|
||||
#:install-source? #$install-source?
|
||||
|
@ -142,6 +149,7 @@ (define* (cargo-cross-build name
|
|||
(cargo-build-flags ''("--release"))
|
||||
(cargo-test-flags ''("--release"))
|
||||
(cargo-package-flags ''("--no-metadata" "--no-verify"))
|
||||
(cargo-target (cargo-triplet (or target system)))
|
||||
(features ''())
|
||||
(skip-build? #f)
|
||||
(install-source? (not (target-mingw? target)))
|
||||
|
@ -170,6 +178,7 @@ (define builder
|
|||
#:cargo-build-flags #$(sexp->gexp cargo-build-flags)
|
||||
#:cargo-test-flags #$(sexp->gexp cargo-test-flags)
|
||||
#:cargo-package-flags #$(sexp->gexp cargo-package-flags)
|
||||
#:cargo-target #$(cargo-triplet (or target system))
|
||||
#:features #$(sexp->gexp features)
|
||||
#:skip-build? #$skip-build?
|
||||
#:install-source? #$install-source?
|
||||
|
@ -313,7 +322,7 @@ (define* (lower name
|
|||
(define private-keywords
|
||||
`(#:rust #:inputs #:native-inputs #:outputs
|
||||
#:cargo-inputs #:cargo-development-inputs
|
||||
#:rust-sysroot
|
||||
#:rust-sysroot #:cargo-target
|
||||
,@(if target '() '(#:target))))
|
||||
|
||||
(bag
|
||||
|
|
|
@ -120,6 +120,7 @@ (define* (check-for-pregenerated-files #:rest _)
|
|||
|
||||
(define* (configure #:key inputs
|
||||
target system
|
||||
cargo-target
|
||||
(vendor-dir "guix-vendor")
|
||||
#:allow-other-keys)
|
||||
"Vendor Cargo.toml dependencies as guix inputs."
|
||||
|
@ -149,24 +150,7 @@ (define* (configure #:key inputs
|
|||
|
||||
;; For cross-building
|
||||
(when target
|
||||
(setenv "CARGO_BUILD_TARGET"
|
||||
;; Can this be replaced with platform-rust-architecture?
|
||||
;; Keep this synchronized with (guix platforms *)
|
||||
(match target
|
||||
("aarch64-linux-gnu" "aarch64-unknown-linux-gnu")
|
||||
("arm-linux-gnueabihf" "armv7-unknown-linux-gnueabihf")
|
||||
("i686-linux-gnu" "i686-unknown-linux-gnu")
|
||||
("mips64el-linux-gnu" "mips64el-unknown-linux-gnuabi64")
|
||||
("powerpc-linux-gnu" "powerpc-unknown-linux-gnu")
|
||||
("powerpc64-linux-gnu" "powerpc64-unknown-linux-gnu")
|
||||
("powerpc64le-linux-gnu" "powerpc64le-unknown-linux-gnu")
|
||||
("riscv64-linux-gnu" "riscv64gc-unknown-linux-gnu")
|
||||
("x86_64-linux-gnu" "x86_64-unknown-linux-gnu")
|
||||
("x86_64-linux-gnux32" "x86_64-unknown-linux-gnux32")
|
||||
("i586-pc-gnu" "i686-unknown-hurd-gnu")
|
||||
("i686-w64-mingw32" "i686-pc-windows-gnu")
|
||||
("x86_64-w64-mingw32" "x86_64-pc-windows-gnu")
|
||||
(else #f)))
|
||||
(setenv "CARGO_BUILD_TARGET" cargo-target)
|
||||
(setenv "RUSTFLAGS" (string-append
|
||||
(or (getenv "RUSTFLAGS") "")
|
||||
" --sysroot " (assoc-ref inputs "rust-sysroot")))
|
||||
|
|
Loading…
Reference in a new issue