~ruther/guix-local

7b3318e34f4e2743254a88b908859901db960e9a — Ricardo Wurmus 8 years ago 9b91fb3
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.
3 files changed, 21 insertions(+), 16 deletions(-)

M gnu/packages/avr.scm
M gnu/packages/cross-base.scm
M gnu/packages/embedded.scm
M gnu/packages/avr.scm => gnu/packages/avr.scm +1 -1
@@ 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")

M gnu/packages/cross-base.scm => gnu/packages/cross-base.scm +16 -12
@@ 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)

M gnu/packages/embedded.scm => gnu/packages/embedded.scm +4 -3
@@ 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