aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-06-26 23:02:49 +0200
committerLudovic Courtès <ludo@gnu.org>2013-06-26 23:02:49 +0200
commitca16cb96066e29b32df924df9e1446efcc58c87f (patch)
treeebb649e621ecaf36202c8462b8d4a8ee86dfec9e
parent58ab9f9b8e80f9f0eb1e1e1c2e41e97533b65371 (diff)
downloadguix-ca16cb96066e29b32df924df9e1446efcc58c87f.tar
guix-ca16cb96066e29b32df924df9e1446efcc58c87f.tar.gz
gnu: gcc: Use `gcc-configure-flags-for-triplet' when cross-compiling GCC.
* gnu/packages/cross-base.scm (gcc-configure-flags-for-triplet): Move to... * gnu/packages/gcc.scm (gcc-configure-flags-for-triplet): ... here. New procedure. (gcc-4.7): Use it when (%current-target-system) is true.
-rw-r--r--gnu/packages/cross-base.scm15
-rw-r--r--gnu/packages/gcc.scm23
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")