distro: gcc: Allow `libstdc++' to be found.

* distro/base.scm (gcc-4.7): Add `-rpath' arguments to `LIB_SPEC' to
  allow `libstdc++' to be found by users.
This commit is contained in:
Ludovic Courtès 2012-09-01 00:35:12 +02:00
parent 6e0874db3d
commit f1f100b297
1 changed files with 6 additions and 5 deletions

View File

@ -609,8 +609,9 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
#:phases #:phases
(alist-cons-before (alist-cons-before
'configure 'pre-configure 'configure 'pre-configure
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
(let ((libc (assoc-ref inputs "libc"))) (let ((out (assoc-ref outputs "out"))
(libc (assoc-ref inputs "libc")))
;; Fix the dynamic linker's file name. ;; Fix the dynamic linker's file name.
(substitute* "gcc/config/i386/linux64.h" (substitute* "gcc/config/i386/linux64.h"
(("#define GLIBC_DYNAMIC_LINKER([^ ]*).*$" _ suffix) (("#define GLIBC_DYNAMIC_LINKER([^ ]*).*$" _ suffix)
@ -618,14 +619,14 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
suffix suffix
(string-append libc "/lib/ld-linux-x86-64.so.2")))) (string-append libc "/lib/ld-linux-x86-64.so.2"))))
;; Tell where to find libc and `?crt*.o', except ;; Tell where to find libstdc++, libc, and `?crt*.o', except
;; `crt{begin,end}.o', which come with GCC. ;; `crt{begin,end}.o', which come with GCC.
(substitute* ("gcc/config/gnu-user.h" (substitute* ("gcc/config/gnu-user.h"
"gcc/config/i386/gnu-user.h" "gcc/config/i386/gnu-user.h"
"gcc/config/i386/gnu-user64.h") "gcc/config/i386/gnu-user64.h")
(("#define LIB_SPEC (.*)$" _ suffix) (("#define LIB_SPEC (.*)$" _ suffix)
(format #f "#define LIB_SPEC \"-L~a/lib \" ~a~%" (format #f "#define LIB_SPEC \"-L~a/lib -rpath=~a/lib64 -rpath=~a/lib \" ~a~%"
libc suffix)) libc out out suffix))
(("^.*crt([^\\.])\\.o.*$" line) (("^.*crt([^\\.])\\.o.*$" line)
(regexp-substitute/global #f (regexp-substitute/global #f
"([a-zA-Z]?)crt([^\\.])\\.o" "([a-zA-Z]?)crt([^\\.])\\.o"