diff options
-rw-r--r-- | gnu/packages/cross-base.scm | 15 | ||||
-rw-r--r-- | gnu/packages/gcc.scm | 23 |
2 files changed, 22 insertions, 16 deletions
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm index 5edc1b52e3..29a81f1fa7 100644 --- a/gnu/packages/cross-base.scm +++ b/gnu/packages/cross-base.scm @@ -30,7 +30,6 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (ice-9 match) - #:use-module (ice-9 regex) #:export (cross-binutils cross-libc cross-gcc)) @@ -66,20 +65,6 @@ `(cons "--with-sysroot=/" ,flags))))))) (cross binutils target))) -(define (gcc-configure-flags-for-triplet target) - "Return a list of additional GCC `configure' flags for TARGET, a GNU triplet. - -The purpose of this procedure is to translate extended GNU triplets---e.g., -where the OS part is overloaded to denote a specific ABI---into GCC -`configure' options. We take extended GNU triplets that glibc recognizes." - (cond ((string-match "^mips64el.*gnuabin?64$" target) - ;; Triplets recognized by glibc as denoting the N64 ABI; see - ;; ports/sysdeps/mips/preconfigure. - '("--with-abi=64")) - (else - ;; TODO: Add `armel.*gnueabi', `hf', etc. - '()))) - (define* (cross-gcc target #:optional (xbinutils (cross-binutils target)) libc) "Return a cross-compiler for TARGET, where TARGET is a GNU triplet. Use diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index b297ef1fb1..bba35901a2 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -25,12 +25,27 @@ #:use-module (gnu packages multiprecision) #:use-module (guix packages) #:use-module (guix download) - #:use-module (guix build-system gnu)) + #:use-module (guix build-system gnu) + #:use-module (ice-9 regex)) (define %gcc-infrastructure ;; Base URL for GCC's infrastructure. "ftp://gcc.gnu.org/pub/gcc/infrastructure/") +(define-public (gcc-configure-flags-for-triplet target) + "Return a list of additional GCC `configure' flags for TARGET, a GNU triplet. + +The purpose of this procedure is to translate extended GNU triplets---e.g., +where the OS part is overloaded to denote a specific ABI---into GCC +`configure' options. We take extended GNU triplets that glibc recognizes." + (cond ((string-match "^mips64el.*gnuabin?64$" target) + ;; Triplets recognized by glibc as denoting the N64 ABI; see + ;; ports/sysdeps/mips/preconfigure. + '("--with-abi=64")) + (else + ;; TODO: Add `armel.*gnueabi', `hf', etc. + '()))) + (define-public gcc-4.7 (let* ((stripped? #t) ; TODO: make this a parameter (maybe-target-tools @@ -64,6 +79,12 @@ "/include") "--without-headers"))) + ;; When cross-compiling GCC, pass the right options for the + ;; target triplet. + (or (and=> (%current-target-system) + gcc-configure-flags-for-triplet) + '()) + (maybe-target-tools)))))) (package (name "gcc") |