GNU bug report logs - #74290
[PATCH 00/31] Add support for x86_64-gnu, aka the 64bit Hurd.

Previous Next

Package: guix-patches;

Reported by: Janneke Nieuwenhuizen <janneke <at> gnu.org>

Date: Sun, 10 Nov 2024 10:35:02 UTC

Severity: normal

Tags: patch

Done: Janneke Nieuwenhuizen <janneke <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Janneke Nieuwenhuizen <janneke <at> gnu.org>
To: 74290 <at> debbugs.gnu.org
Cc: Andreas Enge <andreas <at> enge.fr>, Efraim Flashner <efraim <at> flashner.co.il>, Ekaitz Zarraga <ekaitz <at> elenq.tech>, Ludovic Courtès <ludo <at> gnu.org>
Subject: [bug#74290] [PATCH v4 58/58] gnu: commencement: gcc-final: Support the 64bit Hurd.
Date: Sun, 24 Nov 2024 08:55:21 +0100
* gnu/packages/commencement.scm (gcc-final)[arguments]: When building for the
64bit Hurd, create a gcc wrapper in phase "create-stage-wrapper", use it
by adding STAGE_CC_WRAPPER to #:make-flags, and CC to #:configure-flags
to convince configure gmp that gcc and g++ work.

Change-Id: I939c03c6c0fd9698efc4b293e59cf576249e3b77
---
 gnu/packages/commencement.scm | 37 ++++++++++++++++++++++++++++++++---
 1 file changed, 34 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 3dbd27b660..4368893f4d 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -3255,13 +3255,32 @@ (define gcc-final
          ;; Since $LIBRARY_PATH is not honored, add the relevant flags.
          #~(let ((zlib (assoc-ref %build-inputs "zlib")))
              (map (lambda (flag)
-                    (if (string-prefix? "LDFLAGS=" flag)
+                    (if #$(if (target-hurd64?)
+                              #~(and (string? flag)
+                                     (string-prefix? "LDFLAGS=" flag))
+                              #~(string-prefix? "LDFLAGS=" flag))
                         (string-append flag " -L"
                                        (assoc-ref %build-inputs "libstdc++")
                                        "/lib -L" zlib "/lib -Wl,-rpath="
                                        zlib "/lib")
                         flag))
-                  #$flags)))
+                  #$(if (target-hurd64?)
+                        `(cons
+                          (string-append
+                           ;;Convince gmp's configure that gcc works
+                           "STAGE_CC_WRAPPER=" (getcwd) "/build/gcc.sh")
+                          ,flags)
+                        flags))))
+        ((#:configure-flags flags)
+         (if (target-hurd64?)
+             #~(append
+                #$flags
+                (list #$(string-append
+                         ;;Convince gmp's configure that gcc works
+                         "CC=gcc"
+                         " -Wno-implicit-function-declaration")
+                      "--disable-plugin"))
+             flags))
         ;; Build again GMP & co. within GCC's build process, because it's hard
         ;; to do outside (because GCC-BOOT0 is a cross-compiler, and thus
         ;; doesn't honor $LIBRARY_PATH, which breaks `gnu-build-system'.)
@@ -3306,7 +3325,19 @@ (define gcc-final
                                                (getenv "CPLUS_INCLUDE_PATH")
                                                #\:))
                                       ":")
-                                     "\nAM_CXXFLAGS = ")))))))))))
+                                     "\nAM_CXXFLAGS = "))))))
+             #$@(if (target-hurd64?)
+                    #~((add-after 'configure 'create-stage-wrapper
+                         (lambda _
+                           (with-output-to-file "gcc.sh"
+                             (lambda _
+                               (format #t "#! ~a/bin/bash
+exec \"$@\" \
+    -Wno-error \
+    -Wno-implicit-function-declaration"
+                                       #$static-bash-for-glibc)))
+                           (chmod "gcc.sh" #o555))))
+                    #~()))))))
 
     ;; This time we want Texinfo, so we get the manual.  Add
     ;; STATIC-BASH-FOR-GLIBC so that it's used in the final shebangs of
-- 
2.46.0





This bug report was last modified 175 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.