From 3ed497d42a5af8756bd95c64f9f9bed4de5f6d3c Mon Sep 17 00:00:00 2001 From: Carl Dong Date: Mon, 6 May 2019 22:34:15 +0000 Subject: [PATCH] gnu: Allow building gcc with non-default libc. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- gnu/packages/base.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) 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)