diff options
author | Carl Dong <contact@carldong.me> | 2019-05-06 22:34:15 +0000 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2019-05-13 09:46:58 +0200 |
commit | 3ed497d42a5af8756bd95c64f9f9bed4de5f6d3c (patch) | |
tree | a5f7246e71ac5fa24288dd463cff7b0f934b125a /gnu | |
parent | 102d307520dee27a40feb1ca5a699763a2f3aefe (diff) | |
download | guix-3ed497d42a5af8756bd95c64f9f9bed4de5f6d3c.tar.gz |
gnu: Allow building gcc with non-default libc.
* gnu/packages/base.scm (make-gcc-libc): New procedure, returns a gcc that targets a specified libc. (gcc-glibc-2.26, gcc-glibc-2.27): New public variables. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/packages/base.scm | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index e33e3c52c8..5c0cd36c14 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -1009,6 +1009,35 @@ with the Linux kernel.") (("/bin/pwd") "pwd")) #t)))))))) +(define (make-gcc-libc base-gcc libc) + "Return a GCC that targets LIBC." + (package (inherit base-gcc) + (name (string-append (package-name base-gcc) "-" + (package-name libc) "-" + (package-version libc))) + (arguments + (substitute-keyword-arguments + (ensure-keyword-arguments (package-arguments base-gcc) + '(#:implicit-inputs? #f)) + ((#:make-flags flags) + `(let ((libc (assoc-ref %build-inputs "libc"))) + ;; FLAGS_FOR_TARGET are needed for the target libraries to receive + ;; the -Bxxx for the startfiles. + (cons (string-append "FLAGS_FOR_TARGET=-B" libc "/lib") + ,flags))))) + (native-inputs + `(("libc" ,libc) + ("libc:static" ,libc "static") + ,@(append (package-inputs base-gcc) + (fold alist-delete (%final-inputs) '("libc" "libc:static"))))) + (inputs '()))) + +(define-public gcc-glibc-2.27 + (make-gcc-libc gcc glibc-2.27)) + +(define-public gcc-glibc-2.26 + (make-gcc-libc gcc glibc-2.26)) + (define-public (make-glibc-locales glibc) (package (inherit glibc) |