mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
gnu: gcc: Use the system zlib.
* gnu/packages/gcc.scm (gcc-4.7) <configure-flags>: Pass '--with-system-zlib'. * gnu/packages/commencement.scm (gcc-boot0)[arguments]: Remove '--with-system-zlib' from the configure flags. * gnu/packages/commencement.scm (zlib-final): New variable. (gcc-final)[arguments]: Add ZLIB-FINAL to #:allowed-references. Pass -L and -Wl,-rpath for zlib in LDFLAGS, as a configure flag. [inputs]: Add LD-WRAPPER-BOOT3 and ZLIB-FINAL.
This commit is contained in:
parent
52cfd8cb54
commit
98bd851ee8
2 changed files with 34 additions and 16 deletions
|
@ -204,7 +204,8 @@ (define gcc-boot0
|
|||
"--disable-libssp"
|
||||
"--disable-libquadmath"
|
||||
"--disable-decimal-float")
|
||||
(remove (cut string-match "--enable-languages.*" <>)
|
||||
(remove (cut string-match
|
||||
"--(with-system-zlib|enable-languages.*)" <>)
|
||||
,flags)))
|
||||
((#:phases phases)
|
||||
`(alist-cons-after
|
||||
|
@ -548,6 +549,25 @@ (define libstdc++
|
|||
(propagated-inputs '())
|
||||
(synopsis "GNU C++ standard library (intermediate)"))))
|
||||
|
||||
(define zlib-final
|
||||
;; Zlib used by GCC-FINAL.
|
||||
(package-with-bootstrap-guile
|
||||
(package
|
||||
(inherit zlib)
|
||||
(arguments
|
||||
`(#:guile ,%bootstrap-guile
|
||||
#:implicit-inputs? #f
|
||||
#:allowed-references ("out" ,glibc-final)
|
||||
,@(package-arguments zlib)))
|
||||
(inputs %boot2-inputs))))
|
||||
|
||||
(define ld-wrapper-boot3
|
||||
;; A linker wrapper that uses the bootstrap Guile.
|
||||
(make-ld-wrapper "ld-wrapper-boot3"
|
||||
#:binutils binutils-final
|
||||
#:guile %bootstrap-guile
|
||||
#:bash (car (assoc-ref %boot2-inputs "bash"))))
|
||||
|
||||
(define gcc-final
|
||||
;; The final GCC.
|
||||
(package (inherit gcc-boot0)
|
||||
|
@ -562,7 +582,7 @@ (define gcc-final
|
|||
`(#:guile ,%bootstrap-guile
|
||||
#:implicit-inputs? #f
|
||||
|
||||
#:allowed-references ("out" "lib"
|
||||
#:allowed-references ("out" "lib" ,zlib-final
|
||||
,glibc-final ,static-bash-for-glibc)
|
||||
|
||||
;; Things like libasan.so and libstdc++.so NEED ld.so for some
|
||||
|
@ -583,13 +603,15 @@ (define gcc-final
|
|||
(loop rest)))))
|
||||
((#:make-flags flags)
|
||||
;; Since $LIBRARY_PATH is not honored, add the relevant flags.
|
||||
`(map (lambda (flag)
|
||||
(if (string-prefix? "LDFLAGS=" flag)
|
||||
(string-append flag " -L"
|
||||
(assoc-ref %build-inputs "libstdc++")
|
||||
"/lib")
|
||||
flag))
|
||||
,flags))
|
||||
`(let ((zlib (assoc-ref %build-inputs "zlib")))
|
||||
(map (lambda (flag)
|
||||
(if (string-prefix? "LDFLAGS=" flag)
|
||||
(string-append flag " -L"
|
||||
(assoc-ref %build-inputs "libstdc++")
|
||||
"/lib -L" zlib "/lib -Wl,-rpath="
|
||||
zlib "/lib")
|
||||
flag))
|
||||
,flags)))
|
||||
((#:phases phases)
|
||||
`(alist-delete 'symlink-libgcc_eh ,phases)))))
|
||||
|
||||
|
@ -604,17 +626,12 @@ (define gcc-final
|
|||
(inputs `(("gmp-source" ,(bootstrap-origin (package-source gmp)))
|
||||
("mpfr-source" ,(package-source mpfr))
|
||||
("mpc-source" ,(package-source mpc))
|
||||
("ld-wrapper" ,ld-wrapper-boot3)
|
||||
("binutils" ,binutils-final)
|
||||
("libstdc++" ,libstdc++)
|
||||
("zlib" ,zlib-final)
|
||||
,@%boot2-inputs))))
|
||||
|
||||
(define ld-wrapper-boot3
|
||||
;; A linker wrapper that uses the bootstrap Guile.
|
||||
(make-ld-wrapper "ld-wrapper-boot3"
|
||||
#:binutils binutils-final
|
||||
#:guile %bootstrap-guile
|
||||
#:bash (car (assoc-ref %boot2-inputs "bash"))))
|
||||
|
||||
(define %boot3-inputs
|
||||
;; 4th stage inputs.
|
||||
`(("gcc" ,gcc-final)
|
||||
|
|
|
@ -97,6 +97,7 @@ (define-public gcc-4.7
|
|||
'("--enable-plugin"
|
||||
"--enable-languages=c,c++"
|
||||
"--disable-multilib"
|
||||
"--with-system-zlib"
|
||||
|
||||
;; No pre-compiled libstdc++ headers, to save space.
|
||||
"--disable-libstdcxx-pch"
|
||||
|
|
Loading…
Reference in a new issue