* 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 \
< $setup > $out/setup || exit 1
gcc='$NIX_CC'
sed \
-e s^@GCC\@^$gcc^g \
-e 's^@GCC\@^$NIX_CC^g' \
< $gccwrapper > $out/bin/gcc || exit 1
chmod +x $out/bin/gcc || exit 1
ln -s gcc $out/bin/cc
gcc='$NIX_CXX'
ln -s gcc $out/bin/cc || exit 1
sed \
-e s^@GCC\@^$gcc^g \
-e 's^@GCC\@^$NIX_CXX^g' \
< $gccwrapper > $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(
[ ("name", "stdenv-native")
[ ("name", "baseenv")
, ("build", Relative("baseenv/baseenv-build.sh"))
, ("setup", Relative("baseenv/setup.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
if test "$i" == "-c"; then
justcompile=1
fi
if test "$i" == "-S"; then
elif test "$i" == "-S"; then
justcompile=1
fi
if test "$i" == "-E"; then
elif 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
fi
done
IFS=" "
extra=($NIX_CFLAGS)
extra=($NIX_CFLAGS_COMPILE)
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
extra=(${extra[@]} -Wl,-s)
extra=(${extra[@]} -g0 -Wl,-s)
fi
fi
if test "$NIX_DEBUG" == "1"; then
echo "extra gcc flags:" >&2
echo "extra flags to @GCC@:" >&2
for i in ${extra[@]}; do
echo " $i" >&2
done

View file

@ -11,7 +11,8 @@ addtoenv()
fi
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
if test -d $1/lib/pkgconfig; then
@ -33,7 +34,7 @@ for i in $oldenvpkgs; do
done
# 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.
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
# 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
sed \

View file

@ -3,7 +3,9 @@ export SHELL=/bin/sh
. @BASEENV@/setup
export NIX_CFLAGS="-isystem @GLIBC@/include $NIX_CFLAGS"
export NIX_LDFLAGS="-L@GLIBC@/lib -Wl,-dynamic-linker,@GLIBC@/lib/ld-linux.so.2,-rpath,@GLIBC@/lib $NIX_LDFLAGS"
export NIX_CFLAGS_COMPILE="-isystem @GLIBC@/include $NIX_CFLAGS_COMPILE"
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_CXX=/usr/bin/g++
export NIX_LD=/usr/bin/ld

View file

@ -3,10 +3,12 @@ export SHELL=@SHELL@
. @BASEENV@/setup
export NIX_CFLAGS="-isystem @GLIBC@/include -isystem @LINUX@/include $NIX_CFLAGS"
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_COMPILE="-isystem @GLIBC@/include -isystem @LINUX@/include $NIX_CFLAGS_COMPILE"
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_CXX=@CXX@
export NIX_LD=@LD@
export NIX_LIBC_INCLUDES="@GLIBC@/include"
export NIX_LIBC_LIBS="@GLIBC@/lib"

View file

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

View file

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

View file

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

View file

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