mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
gnu: gcc-4.8: Fix building.
* gnu/packages/gcc.scm (gcc-4.7)[arguments]: Adjust configure-flags to build gcc-4.8 using the C++03 standard. (gcc-4.8)[arguments]: Add a phase to remove the current gcc's C++ headers from the CPLUS_INCLUDE_PATH. (gcc-4.9)[arguments]: Inherit from gcc-4.8. (gcc-6)[arguments]: Inherit from gcc-4.7. Change-Id: Ibec0683e8385ae011e6a809c664cb679f1a35b80
This commit is contained in:
parent
8a0910e042
commit
50d068591c
1 changed files with 43 additions and 40 deletions
|
@ -192,13 +192,16 @@ (define-public gcc-4.7
|
|||
`(#:out-of-source? #t
|
||||
#:configure-flags ,(let ((flags (configure-flags))
|
||||
(version (package-version this-package)))
|
||||
;; GCC 4.9 and 5.0 requires C++11 but GCC
|
||||
;; 11.3.0 defaults to C++17, which is partly
|
||||
;; incompatible. Force C++11.
|
||||
(if (or (version-prefix? "4.9" version)
|
||||
(version-prefix? "5" version))
|
||||
`(cons "CXX=g++ -std=c++11" ,flags)
|
||||
flags))
|
||||
;; GCC 11.3.0 defaults to C++17 which is partly
|
||||
;; incompatible with some earlier versions.
|
||||
;; Force an earlier C++ standard while building.
|
||||
(cond
|
||||
((version-prefix? "4.8" version)
|
||||
`(cons "CXX=g++ -std=c++03" ,flags))
|
||||
((or (version-prefix? "4.9" version)
|
||||
(version-prefix? "5" version))
|
||||
`(cons "CXX=g++ -std=c++11" ,flags))
|
||||
(else flags)))
|
||||
|
||||
#:make-flags
|
||||
;; None of the flags below are needed when doing a Canadian cross.
|
||||
|
@ -419,6 +422,37 @@ (define-public gcc-4.8
|
|||
(("struct ucontext") "ucontext_t")))
|
||||
'("aarch64" "alpha" "bfin" "i386" "m68k"
|
||||
"pa" "sh" "tilepro" "xtensa")))))
|
||||
(arguments
|
||||
;; Since 'arguments' is a function of the package's version, define
|
||||
;; 'parent' such that the 'arguments' thunk gets to see the right
|
||||
;; version.
|
||||
(let ((parent (package
|
||||
(inherit gcc-4.7)
|
||||
(version (package-version this-package)))))
|
||||
(if (%current-target-system)
|
||||
(package-arguments parent)
|
||||
;; For native builds of some GCC versions the C++ include path needs to
|
||||
;; be adjusted so it does not interfere with GCC's own build processes.
|
||||
(substitute-keyword-arguments (package-arguments parent)
|
||||
((#:modules modules %gnu-build-system-modules)
|
||||
`((srfi srfi-1)
|
||||
,@modules))
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(add-after 'set-paths 'adjust-CPLUS_INCLUDE_PATH
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((libc (assoc-ref inputs "libc"))
|
||||
(gcc (assoc-ref inputs "gcc")))
|
||||
(setenv "CPLUS_INCLUDE_PATH"
|
||||
(string-join (fold delete
|
||||
(string-split (getenv "CPLUS_INCLUDE_PATH")
|
||||
#\:)
|
||||
(list (string-append libc "/include")
|
||||
(string-append gcc "/include/c++")))
|
||||
":"))
|
||||
(format #t
|
||||
"environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%"
|
||||
(getenv "CPLUS_INCLUDE_PATH")))))))))))
|
||||
(supported-systems %supported-systems)
|
||||
(inputs
|
||||
(modify-inputs (package-inputs gcc-4.7)
|
||||
|
@ -454,38 +488,7 @@ (define-public gcc-4.9
|
|||
"pa" "sh" "tilepro" "xtensa")))))
|
||||
;; Override inherited texinfo-5 with latest version.
|
||||
(native-inputs (list perl ;for manpages
|
||||
texinfo))
|
||||
(arguments
|
||||
;; Since 'arguments' is a function of the package's version, define
|
||||
;; 'parent' such that the 'arguments' thunk gets to see the right
|
||||
;; version.
|
||||
(let ((parent (package
|
||||
(inherit gcc-4.8)
|
||||
(version (package-version this-package)))))
|
||||
(if (%current-target-system)
|
||||
(package-arguments parent)
|
||||
;; For native builds of GCC 4.9 and GCC 5, the C++ include path needs
|
||||
;; to be adjusted so it does not interfere with GCC's own build processes.
|
||||
(substitute-keyword-arguments (package-arguments parent)
|
||||
((#:modules modules %gnu-build-system-modules)
|
||||
`((srfi srfi-1)
|
||||
,@modules))
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(add-after 'set-paths 'adjust-CPLUS_INCLUDE_PATH
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((libc (assoc-ref inputs "libc"))
|
||||
(gcc (assoc-ref inputs "gcc")))
|
||||
(setenv "CPLUS_INCLUDE_PATH"
|
||||
(string-join (fold delete
|
||||
(string-split (getenv "CPLUS_INCLUDE_PATH")
|
||||
#\:)
|
||||
(list (string-append libc "/include")
|
||||
(string-append gcc "/include/c++")))
|
||||
":"))
|
||||
(format #t
|
||||
"environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%"
|
||||
(getenv "CPLUS_INCLUDE_PATH")))))))))))))
|
||||
texinfo))))
|
||||
|
||||
(define gcc-canadian-cross-objdump-snippet
|
||||
;; Fix 'libcc1/configure' error when cross-compiling GCC. Without that,
|
||||
|
@ -546,7 +549,7 @@ (define-public gcc-6
|
|||
"gcc-5.0-libvtv-runpath.patch"))))
|
||||
|
||||
;; GCC 4.9 and 5 has a workaround that is not needed for GCC 6 and later.
|
||||
(arguments (package-arguments gcc-4.8))
|
||||
(arguments (package-arguments gcc-4.7))
|
||||
|
||||
(inputs
|
||||
`(("isl" ,isl)
|
||||
|
|
Loading…
Reference in a new issue