summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/commencement.scm39
-rw-r--r--gnu/packages/gcc.scm27
2 files changed, 32 insertions, 34 deletions
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 07530adaa5..d63e812e64 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -2399,13 +2399,7 @@ exec " gcc "/bin/" program
,(glibc-dynamic-linker
(match (%current-system)
("x86_64-linux" "i686-linux")
- (_ (%current-system))))))
- (if (target-hurd64?)
- ;;Convince gmp's configure that gcc works
- (list (string-append
- "CC_FOR_BUILD=gcc"
- " -Wno-implicit-function-declaration"))
- '())))))
+ (_ (%current-system))))))))))
((#:phases phases)
#~(modify-phases #$phases
(add-after 'unpack 'unpack-gmp&co
@@ -3275,24 +3269,14 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
"/lib -L" zlib "/lib -Wl,-rpath="
zlib "/lib")
flag))
- #$(if (or (target-hurd64?)
- (and (target-x86?) (target-linux?)))
- `(cons
- (string-append
- ;;Convince gmp's configure that gcc works
- "STAGE_CC_WRAPPER=" (getcwd) "/build/gcc.sh")
- ,flags)
- flags))))
+ #$flags)))
((#:configure-flags flags)
+ ;; XXX FIXME: Does this need to stay separate?
(if (or (target-hurd64?)
(and (target-x86?) (target-linux?)))
#~(append
#$flags
- (list #$(string-append
- ;;Convince gmp's configure that gcc works
- "CC=gcc"
- " -Wno-implicit-function-declaration")
- "--disable-plugin"))
+ (list "--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
@@ -3338,20 +3322,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
(getenv "CPLUS_INCLUDE_PATH")
#\:))
":")
- "\nAM_CXXFLAGS = "))))))
- #$@(if (or (target-hurd64?)
- (and (target-x86?) (target-linux?)))
- #~((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))))
- #~()))))))
+ "\nAM_CXXFLAGS = ")))))))))))
;; 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
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index ad3c52e4a1..cc9f2d109e 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -241,6 +241,33 @@ where the OS part is overloaded to denote a specific ABI---into GCC
#:phases
(modify-phases %standard-phases
+ (add-before 'configure 'relax-gcc-14s-strictness
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((bash (assoc-ref inputs "bash"))
+ (wrapper (string-append (getcwd) "/gcc.sh"))
+ (stage-wrapper (string-append (getcwd) "/stage-gcc.sh")))
+ (with-output-to-file wrapper
+ (lambda _
+ (format #t "#! ~a/bin/bash
+exec gcc \"$@\" \
+ -Wno-error=implicit-function-declaration"
+ bash)))
+ (chmod wrapper #o555)
+ (with-output-to-file stage-wrapper
+ (lambda _
+ (format #t "#! ~a/bin/bash
+exec \"$@\" \
+ -Wno-error=implicit-function-declaration"
+ bash)))
+ (chmod stage-wrapper #o555)
+ ;; Rather than adding CC to #:configure-flags and
+ ;; STAGE_CC_WRAPPER to #:make-flags, we add them to the
+ ;; environment in this easily removable stage.
+ (cond (,(%current-target-system) ;cross-build?
+ (setenv "CC_FOR_BUILD" wrapper))
+ (else
+ (setenv "CC" wrapper)
+ (setenv "STAGE_CC_WRAPPER" stage-wrapper))))))
(add-before 'configure 'pre-configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((libdir ,(libdir))