@@ -18,6 +18,7 @@
(define-module (guix build-system)
#:use-module (guix records)
+ #:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
#:export (build-system
@@ -40,7 +41,8 @@ (define-module (guix build-system)
make-bag
- build-system-with-c-toolchain))
+ build-system-with-c-toolchain
+ build-system-with-target))
(define-record-type* <build-system> build-system make-build-system
build-system?
@@ -129,3 +131,20 @@ (define (lower* . args)
(build-system
(inherit bs)
(lower lower*)))
+
+(define (build-system-with-target bs target)
+ "Return a variant of @var{bs}, a build system, that user @var{target} instead
+of the default target."
+ (define lower
+ (build-system-lower bs))
+
+ (define (lower* . args)
+ (parameterize ((%current-target-system target))
+ (apply lower
+ (append
+ (strip-keyword-arguments (list #:target) args)
+ (list #:target target)))))
+
+ (build-system
+ (inherit bs)
+ (lower lower*)))