gnu: cross-base: Add support for `mips64el-linux-gnu-gnuabi64' (N64 ABI).
* gnu/packages/cross-base.scm (gcc-configure-flags-for-triplet): New procedure. (cross-gcc): Use it. (xgcc-mips64el): Use *-gnuabi64 instead of the N32 ABI.
This commit is contained in:
parent
5708485357
commit
beda99e882
|
@ -30,6 +30,7 @@
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
#:use-module (srfi srfi-26)
|
#:use-module (srfi srfi-26)
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
|
#:use-module (ice-9 regex)
|
||||||
#:export (cross-binutils
|
#:export (cross-binutils
|
||||||
cross-libc
|
cross-libc
|
||||||
cross-gcc))
|
cross-gcc))
|
||||||
|
@ -65,6 +66,20 @@
|
||||||
`(cons "--with-sysroot=/" ,flags)))))))
|
`(cons "--with-sysroot=/" ,flags)))))))
|
||||||
(cross binutils target)))
|
(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
|
(define* (cross-gcc target
|
||||||
#:optional (xbinutils (cross-binutils target)) libc)
|
#:optional (xbinutils (cross-binutils target)) libc)
|
||||||
"Return a cross-compiler for TARGET, where TARGET is a GNU triplet. Use
|
"Return a cross-compiler for TARGET, where TARGET is a GNU triplet. Use
|
||||||
|
@ -86,6 +101,7 @@ GCC that does not target a libc; otherwise, target that libc."
|
||||||
,@(substitute-keyword-arguments (package-arguments gcc-4.7)
|
,@(substitute-keyword-arguments (package-arguments gcc-4.7)
|
||||||
((#:configure-flags flags)
|
((#:configure-flags flags)
|
||||||
`(append (list ,(string-append "--target=" target)
|
`(append (list ,(string-append "--target=" target)
|
||||||
|
,@(gcc-configure-flags-for-triplet target)
|
||||||
,@(if libc
|
,@(if libc
|
||||||
'()
|
'()
|
||||||
`( ;; Disable features not needed at this stage.
|
`( ;; Disable features not needed at this stage.
|
||||||
|
@ -260,7 +276,7 @@ XBINUTILS and the cross tool chain."
|
||||||
;;;
|
;;;
|
||||||
|
|
||||||
(define-public xgcc-mips64el
|
(define-public xgcc-mips64el
|
||||||
(let ((triplet "mips64el-linux-gnu"))
|
(let ((triplet "mips64el-linux-gnuabi64")) ; N64 ABI
|
||||||
(cross-gcc triplet
|
(cross-gcc triplet
|
||||||
(cross-binutils triplet)
|
(cross-binutils triplet)
|
||||||
(cross-libc triplet))))
|
(cross-libc triplet))))
|
||||||
|
|
Loading…
Reference in New Issue