summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJanneke Nieuwenhuizen <janneke@gnu.org>2024-12-12 12:34:03 +0100
committerAndreas Enge <andreas@enge.fr>2025-07-18 20:17:15 +0200
commit4c98f0d1f45cac9e86311b7b033f6c474fff74c6 (patch)
treebe4c0fc3c5b3c76fda1079457d1ebde76993eeaa
parentbb9cee6b43a786acf24f676aa2ba96da1a801b7a (diff)
gnu: gcc-4.7: Add gcc-wrapper from gcc-final.
* gnu/packages/commencement.scm (gcc-boot0)[arguments]: Remove CC_FOR_BUILD strictness relaxing from #:make-flags. (gcc-final)[arguments]: Move stage "create-stage-wrapper" and related settings in #:configure-flags and #:make-flags to... * gnu/packages/gcc.scm (gcc-4.7)[arguments]: ...new "relax-gcc-14s-strictness stage here. Change-Id: I0c372a4f372281b54e44dd446b6e5ddac5841c5a
-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))