guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/37: gnu: gcc-boot0: Use libstdc++-boot0-gcc7 on riscv64-linux.


From: guix-commits
Subject: 02/37: gnu: gcc-boot0: Use libstdc++-boot0-gcc7 on riscv64-linux.
Date: Tue, 2 Nov 2021 03:27:07 -0400 (EDT)

efraim pushed a commit to branch wip-riscv
in repository guix.

commit 40bfd44638353d5b8bd88d5a5f1d3f087fb89d90
Author: Efraim Flashner <efraim@flashner.co.il>
AuthorDate: Sun Jul 25 12:58:38 2021 +0000

    gnu: gcc-boot0: Use libstdc++-boot0-gcc7 on riscv64-linux.
    
    * gnu/packages/commencement.scm (libstdc++-boot0-gcc7): New variable.
    (gcc-boot0)[inputs]: On riscv64-linux use libstdc++-boot0-gcc7 instead
    of libstdc++-boot0.
---
 gnu/packages/commencement.scm | 48 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 47 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index aff2a4a..90b9682 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -2702,6 +2702,50 @@ exec " gcc "/bin/" program
       (inputs (%boot0-inputs))
       (native-inputs '()))))
 
+(define libstdc++-boot0-gcc7
+  ;; GCC >= 7 is needed by architectures which use C++-14 features.
+  (let ((lib (make-libstdc++ gcc-7)))
+    (package
+      (inherit lib)
+      (source (bootstrap-origin (package-source lib)))
+      (name "libstdc++-boot0")
+      (arguments
+       `(#:guile ,%bootstrap-guile
+         #:implicit-inputs? #f
+
+         ;; XXX: libstdc++.so NEEDs ld.so for some reason.
+         #:validate-runpath? #f
+
+         ,@(substitute-keyword-arguments (package-arguments lib)
+             ((#:phases phases)
+              `(modify-phases ,phases
+                 (add-after 'unpack 'unpack-gmp&co
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     (let ((gmp  (assoc-ref %build-inputs "gmp-source"))
+                           (mpfr (assoc-ref %build-inputs "mpfr-source"))
+                           (mpc  (assoc-ref %build-inputs "mpc-source")))
+
+                       ;; To reduce the set of pre-built bootstrap inputs, 
build
+                       ;; GMP & co. from GCC.
+                       (for-each (lambda (source)
+                                   (invoke "tar" "xvf" source))
+                                 (list gmp mpfr mpc))
+
+                       ;; Create symlinks like `gmp' -> `gmp-x.y.z'.
+                       ,@(map (lambda (lib)
+                                ;; Drop trailing letters, as gmp-6.0.0a unpacks
+                                ;; into gmp-6.0.0.
+                                `(symlink ,(string-trim-right
+                                            (package-full-name lib "-")
+                                            char-set:letter)
+                                          ,(package-name lib)))
+                              (list gmp-6.0 mpfr mpc))))))))))
+      (inputs `(("gmp-source" ,(bootstrap-origin (package-source gmp-6.0)))
+                ("mpfr-source" ,(bootstrap-origin (package-source mpfr)))
+                ("mpc-source" ,(bootstrap-origin (package-source mpc)))
+                ,@(%boot0-inputs)))
+      (native-inputs '()))))
+
 (define gcc-boot0
   (package
     (inherit gcc)
@@ -2813,7 +2857,9 @@ exec " gcc "/bin/" program
               ("binutils-cross" ,binutils-boot0)
 
               ;; The libstdc++ that libcc1 links against.
-              ("libstdc++" ,libstdc++-boot0)
+              ("libstdc++" ,(match (%current-system)
+                                   ("riscv64-linux" libstdc++-boot0-gcc7)
+                                   (_ libstdc++-boot0)))
 
               ;; Call it differently so that the builder can check whether
               ;; the "libc" input is #f.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]