summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2017-05-22 16:13:15 +0200
committerRicardo Wurmus <rekado@elephly.net>2017-05-24 23:29:20 +0200
commit7b3318e34f4e2743254a88b908859901db960e9a (patch)
treec2c8ec6d45b64ce9e1a6cea7a6364d7056fd6d55
parent9b91fb32f8c7b1bcd910d2d4baa6eeba172764f7 (diff)
gnu: Allow overriding of xgcc package in cross-gcc.
* gnu/packages/cross-base.scm (cross-gcc-arguments): Take extra "xgcc" argument. (cross-gcc): Use keyword arguments; take optional "xgcc" argument. * gnu/packages/embedded.scm (gcc-arm-none-eabi-4.9, propeller-gcc, gcc-vc4): Use keyword arguments. * gnu/packages/avr.scm (avr-gcc-4.9): Likewise.
-rw-r--r--gnu/packages/avr.scm2
-rw-r--r--gnu/packages/cross-base.scm28
-rw-r--r--gnu/packages/embedded.scm7
3 files changed, 21 insertions, 16 deletions
diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index fd18ff6a9a..fc4eb8db0a 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -39,7 +39,7 @@
(name "avr-binutils")))
(define-public avr-gcc-4.9
- (let ((xgcc (cross-gcc "avr" avr-binutils)))
+ (let ((xgcc (cross-gcc "avr" #:xbinutils avr-binutils)))
(package
(inherit xgcc)
(name "avr-gcc")
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 47e0958193..54303b7b45 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -100,9 +100,9 @@
binutils)
target)))
-(define (cross-gcc-arguments target libc)
- "Return build system arguments for a cross-gcc for TARGET, using LIBC (which
-may be either a libc package or #f.)"
+(define (cross-gcc-arguments target xgcc libc)
+ "Return build system arguments for a cross-gcc for TARGET, using XGCC as the
+base compiler and using LIBC (which may be either a libc package or #f.)"
;; Set the current target system so that 'glibc-dynamic-linker' returns the
;; right name.
(parameterize ((%current-target-system target))
@@ -111,7 +111,7 @@ may be either a libc package or #f.)"
;; <http://lists.fedoraproject.org/pipermail/arm/2010-August/000663.html>
;; for instance.
(let ((args `(#:strip-binaries? #f
- ,@(package-arguments %xgcc))))
+ ,@(package-arguments xgcc))))
(substitute-keyword-arguments args
((#:configure-flags flags)
`(append (list ,(string-append "--target=" target)
@@ -183,18 +183,22 @@ may be either a libc package or #f.)"
(else #f)))
(define* (cross-gcc target
- #:optional (xbinutils (cross-binutils target)) libc)
+ #:key
+ (xgcc %xgcc)
+ (xbinutils (cross-binutils target))
+ (libc #f))
"Return a cross-compiler for TARGET, where TARGET is a GNU triplet. Use
-XBINUTILS as the associated cross-Binutils. If LIBC is false, then build a
-GCC that does not target a libc; otherwise, target that libc."
- (package (inherit %xgcc)
+XGCC as the base compiler. Use XBINUTILS as the associated cross-Binutils.
+If LIBC is false, then build a GCC that does not target a libc; otherwise,
+target that libc."
+ (package (inherit xgcc)
(name (string-append "gcc-cross-"
(if libc "" "sans-libc-")
target))
- (source (origin (inherit (package-source %xgcc))
+ (source (origin (inherit (package-source xgcc))
(patches
(append
- (origin-patches (package-source %xgcc))
+ (origin-patches (package-source xgcc))
(cons (search-patch "gcc-cross-environment-variables.patch")
(cross-gcc-patches target))))
(modules '((guix build utils)))
@@ -216,7 +220,7 @@ GCC that does not target a libc; otherwise, target that libc."
(srfi srfi-26)
(ice-9 regex))
- ,@(cross-gcc-arguments target libc)))
+ ,@(cross-gcc-arguments target xgcc libc)))
(native-inputs
`(("ld-wrapper-cross" ,(make-ld-wrapper
@@ -230,7 +234,7 @@ GCC that does not target a libc; otherwise, target that libc."
("libc-native" ,@(assoc-ref (%final-inputs) "libc"))
;; Remaining inputs.
- ,@(let ((inputs (append (package-inputs %xgcc)
+ ,@(let ((inputs (append (package-inputs xgcc)
(alist-delete "libc" (%final-inputs)))))
(cond
((target-mingw? target)
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index b919bdf6c4..632682d630 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -52,7 +52,8 @@
;; See https://launchpadlibrarian.net/218827644/release.txt
(define-public gcc-arm-none-eabi-4.9
(let ((xgcc (cross-gcc "arm-none-eabi"
- (cross-binutils "arm-none-eabi")))
+ #:xgcc gcc-4.9
+ #:xbinutils (cross-binutils "arm-none-eabi")))
(revision "1")
(svn-revision 227977))
(package (inherit xgcc)
@@ -419,7 +420,7 @@ with a layered architecture of JTAG interface and TAP support.")
(define-public propeller-gcc
(let ((xgcc (cross-gcc "propeller-elf"
- propeller-binutils))
+ #:xbinutils propeller-binutils))
(commit "b4f45a4725e0b6d0af59e594c4e3e35ca4105867")
(revision "1"))
(package (inherit xgcc)
@@ -776,7 +777,7 @@ the Raspberry Pi chip.")
(define-public gcc-vc4
(let ((commit "165f6d0e11d2e76ee799533bb45bd5c92bf60dc2")
- (xgcc (cross-gcc "vc4-elf" binutils-vc4)))
+ (xgcc (cross-gcc "vc4-elf" #:xbinutils binutils-vc4)))
(package (inherit xgcc)
(name "gcc-vc4")
(source (origin