* Provide an ld-wrapper that sets the linker search path correctly (just like

gcc-wrapper).  Useful for builds that call ld directly.

svn path=/nixpkgs/trunk/; revision=363
This commit is contained in:
Eelco Dolstra 2003-08-27 12:37:38 +00:00
parent 1edcca4322
commit 6b66d16116
11 changed files with 43 additions and 32 deletions

View file

@ -9,20 +9,17 @@ sed \
-e s^@OUT\@^$out^g \ -e s^@OUT\@^$out^g \
< $setup > $out/setup || exit 1 < $setup > $out/setup || exit 1
gcc='$NIX_CC'
sed \ sed \
-e s^@GCC\@^$gcc^g \ -e 's^@GCC\@^$NIX_CC^g' \
< $gccwrapper > $out/bin/gcc || exit 1 < $gccwrapper > $out/bin/gcc || exit 1
chmod +x $out/bin/gcc || exit 1 chmod +x $out/bin/gcc || exit 1
ln -s gcc $out/bin/cc || exit 1
ln -s gcc $out/bin/cc
gcc='$NIX_CXX'
sed \ sed \
-e s^@GCC\@^$gcc^g \ -e 's^@GCC\@^$NIX_CXX^g' \
< $gccwrapper > $out/bin/g++ || exit 1 < $gccwrapper > $out/bin/g++ || exit 1
chmod +x $out/bin/g++ || exit 1 chmod +x $out/bin/g++ || exit 1
ln -s g++ $out/bin/c++ || exit 1
ln -s g++ $out/bin/c++ cp $ldwrapper $out/bin/ld || exit 1
chmod +x $out/bin/ld || exit 1

View file

@ -1,8 +1,9 @@
Package( Package(
[ ("name", "stdenv-native") [ ("name", "baseenv")
, ("build", Relative("baseenv/baseenv-build.sh")) , ("build", Relative("baseenv/baseenv-build.sh"))
, ("setup", Relative("baseenv/setup.sh")) , ("setup", Relative("baseenv/setup.sh"))
, ("gccwrapper", Relative("baseenv/gcc-wrapper.sh")) , ("gccwrapper", Relative("baseenv/gcc-wrapper.sh"))
, ("ldwrapper", Relative("baseenv/ld-wrapper.sh"))
] ]
) )

View file

@ -6,26 +6,33 @@ justcompile=0
for i in $@; do for i in $@; do
if test "$i" == "-c"; then if test "$i" == "-c"; then
justcompile=1 justcompile=1
fi elif test "$i" == "-S"; then
if test "$i" == "-S"; then
justcompile=1 justcompile=1
fi elif test "$i" == "-E"; then
if test "$i" == "-E"; then justcompile=1
elif test "$i" == "-E"; then
justcompile=1
elif test "$i" == "-M"; then
justcompile=1
elif test "$i" == "-MM"; then
justcompile=1 justcompile=1
fi fi
done done
IFS=" " IFS=" "
extra=($NIX_CFLAGS) extra=($NIX_CFLAGS_COMPILE)
if test "$justcompile" != "1"; then if test "$justcompile" != "1"; then
extra=(${extra[@]} $NIX_LDFLAGS) extra=(${extra[@]} $NIX_CFLAGS_LINK)
for i in $NIX_LDFLAGS; do
extra=(${extra[@]} "-Wl,$i")
done
if test "$NIX_STRIP_DEBUG" == "1"; then if test "$NIX_STRIP_DEBUG" == "1"; then
extra=(${extra[@]} -Wl,-s) extra=(${extra[@]} -g0 -Wl,-s)
fi fi
fi fi
if test "$NIX_DEBUG" == "1"; then if test "$NIX_DEBUG" == "1"; then
echo "extra gcc flags:" >&2 echo "extra flags to @GCC@:" >&2
for i in ${extra[@]}; do for i in ${extra[@]}; do
echo " $i" >&2 echo " $i" >&2
done done

View file

@ -11,7 +11,8 @@ addtoenv()
fi fi
if test -d $1/lib; then if test -d $1/lib; then
export NIX_LDFLAGS="-L $1/lib -Wl,-rpath,$1/lib $NIX_LDFLAGS" export NIX_CFLAGS_LINK="-L$1/lib $NIX_CFLAGS_LINK"
export NIX_LDFLAGS="-rpath $1/lib $NIX_LDFLAGS"
fi fi
if test -d $1/lib/pkgconfig; then if test -d $1/lib/pkgconfig; then
@ -33,7 +34,7 @@ for i in $oldenvpkgs; do
done done
# Add the output as an rpath. # Add the output as an rpath.
export NIX_LDFLAGS="-Wl,-rpath,$out/lib $NIX_LDFLAGS" export NIX_LDFLAGS="-rpath $out/lib $NIX_LDFLAGS"
# Strip debug information by default. # Strip debug information by default.
export NIX_STRIP_DEBUG=1 export NIX_STRIP_DEBUG=1

View file

@ -20,7 +20,10 @@ cd build || exit 1
../gcc-*/configure --prefix=$out --enable-languages=c,c++ || exit 1 ../gcc-*/configure --prefix=$out --enable-languages=c,c++ || exit 1
# Patch some of the makefiles to force linking against our own glibc. # Patch some of the makefiles to force linking against our own glibc.
extraflags="$NIX_CFLAGS $NIX_LDFLAGS -Wl,-s -isystem $linux/include" extraflags="-Wl,-s -isystem $linux/include $NIX_CFLAGS_COMPILE $NIX_CFLAGS_LINK"
for i in $NIX_LDFLAGS; do
extraflags="$extraflags -Wl,$i"
done
mf=Makefile mf=Makefile
sed \ sed \

View file

@ -3,7 +3,9 @@ export SHELL=/bin/sh
. @BASEENV@/setup . @BASEENV@/setup
export NIX_CFLAGS="-isystem @GLIBC@/include $NIX_CFLAGS" export NIX_CFLAGS_COMPILE="-isystem @GLIBC@/include $NIX_CFLAGS_COMPILE"
export NIX_LDFLAGS="-L@GLIBC@/lib -Wl,-dynamic-linker,@GLIBC@/lib/ld-linux.so.2,-rpath,@GLIBC@/lib $NIX_LDFLAGS" export NIX_CFLAGS_LINK="-L@GLIBC@/lib $NIX_CFLAGS_LINK"
export NIX_LDFLAGS="-dynamic-linker @GLIBC@/lib/ld-linux.so.2 -rpath @GLIBC@/lib $NIX_LDFLAGS"
export NIX_CC=/usr/bin/gcc export NIX_CC=/usr/bin/gcc
export NIX_CXX=/usr/bin/g++ export NIX_CXX=/usr/bin/g++
export NIX_LD=/usr/bin/ld

View file

@ -3,10 +3,12 @@ export SHELL=@SHELL@
. @BASEENV@/setup . @BASEENV@/setup
export NIX_CFLAGS="-isystem @GLIBC@/include -isystem @LINUX@/include $NIX_CFLAGS" export NIX_CFLAGS_COMPILE="-isystem @GLIBC@/include -isystem @LINUX@/include $NIX_CFLAGS_COMPILE"
export NIX_LDFLAGS="-L@GLIBC@/lib -Wl,-dynamic-linker,@GLIBC@/lib/ld-linux.so.2,-rpath,@GLIBC@/lib $NIX_LDFLAGS -L@GCC@/lib -Wl,-rpath,@GCC@/lib" export NIX_CFLAGS_LINK="-L@GLIBC@/lib -L@GCC@/lib $NIX_CFLAGS_LINK"
export NIX_LDFLAGS="-dynamic-linker @GLIBC@/lib/ld-linux.so.2 -rpath @GLIBC@/lib -rpath @GCC@/lib $NIX_LDFLAGS"
export NIX_CC=@CC@ export NIX_CC=@CC@
export NIX_CXX=@CXX@ export NIX_CXX=@CXX@
export NIX_LD=@LD@
export NIX_LIBC_INCLUDES="@GLIBC@/include" export NIX_LIBC_INCLUDES="@GLIBC@/include"
export NIX_LIBC_LIBS="@GLIBC@/lib" export NIX_LIBC_LIBS="@GLIBC@/lib"

View file

@ -6,7 +6,7 @@ mkdir $out || exit 1
p= p=
first=1 first=1
for i in $tools; do for i in $tools $gcc $binutils $shell; do
if test "$first" == 1; then if test "$first" == 1; then
first= first=
else else
@ -17,6 +17,7 @@ done
cc=$gcc/bin/gcc cc=$gcc/bin/gcc
cxx=$gcc/bin/g++ cxx=$gcc/bin/g++
ld=$binutils/bin/ld
shell=$shell/bin/sh shell=$shell/bin/sh
echo "########## $p" echo "########## $p"
@ -27,6 +28,7 @@ sed \
-e s^@GCC\@^$gcc^g \ -e s^@GCC\@^$gcc^g \
-e s^@CC\@^$cc^g \ -e s^@CC\@^$cc^g \
-e s^@CXX\@^$cxx^g \ -e s^@CXX\@^$cxx^g \
-e s^@LD\@^$ld^g \
-e s^@BASEENV\@^$baseenv^g \ -e s^@BASEENV\@^$baseenv^g \
-e s^@PATH\@^$p^g \ -e s^@PATH\@^$p^g \
-e s^@SHELL\@^$shell^g \ -e s^@SHELL\@^$shell^g \

View file

@ -6,9 +6,5 @@ mkdir $out || exit 1
sed \ sed \
-e s^@GLIBC\@^$glibc^g \ -e s^@GLIBC\@^$glibc^g \
-e s^@CC\@^$cc^g \
-e s^@CXX\@^$cxx^g \
-e s^@BASEENV\@^$baseenv^g \ -e s^@BASEENV\@^$baseenv^g \
-e s^@PATH\@^$p^g \
-e s^@SHELL\@^$shell^g \
< $setup > $out/setup || exit 1 < $setup > $out/setup || exit 1

View file

@ -1,5 +1,5 @@
Package( Package(
[ ("name", "stdenv-linux") [ ("name", "stdenv-nativetools")
, ("build", Relative("stdenv-linux/stdenv-nativetools-build.sh")) , ("build", Relative("stdenv-linux/stdenv-nativetools-build.sh"))
, ("setup", Relative("stdenv-linux/setup-nativetools.sh")) , ("setup", Relative("stdenv-linux/setup-nativetools.sh"))

View file

@ -18,11 +18,11 @@ Package(
, IncludeFix("gzip/gzip.fix") , IncludeFix("gzip/gzip.fix")
, IncludeFix("bzip2/bzip2.fix") , IncludeFix("bzip2/bzip2.fix")
, IncludeFix("gnumake/gnumake.fix") , IncludeFix("gnumake/gnumake.fix")
, IncludeFix("binutils/binutils.fix")
, IncludeFix("bash/bash.fix") , IncludeFix("bash/bash.fix")
]) ])
, ("gcc", IncludeFix("gcc/gcc.fix")) , ("gcc", IncludeFix("gcc/gcc.fix"))
, ("binutils", IncludeFix("binutils/binutils.fix"))
, ("shell", IncludeFix("bash/bash.fix")) , ("shell", IncludeFix("bash/bash.fix"))
] ]
) )