add modified gcc-wrapper

svn path=/nixpkgs/branches/nixos-pkgs/; revision=1793
This commit is contained in:
Armijn Hemel 2004-11-22 16:36:27 +00:00
parent a30b6755ad
commit aad382248f
4 changed files with 26 additions and 10 deletions

View File

@ -9,8 +9,12 @@ if test -z "$nativeGlibc"; then
# against the crt1.o from our own glibc, rather than the one in
# /usr/lib. The real solution is of course to prevent those paths
# from being used by gcc in the first place.
# The dynamic linker is passed in `ldflagsBefore' to allow
# explicit overrides of the dynamic linker by callers to gcc/ld
# (the *last* value counts, so ours should come first).
cflagsCompile="$cflagsCompile -B$glibc/lib -isystem $glibc/include"
ldflags="$ldflags -L$glibc/lib -dynamic-linker $glibc/lib/ld-linux.so.2"
ldflags="$ldflags -L$glibc/lib"
ldflagsBefore="-dynamic-linker $glibc/lib/ld-linux.so.2"
fi
if test -n "$nativeTools"; then
@ -57,6 +61,7 @@ ln -s g77 $out/bin/f77
sed \
-e "s^@out@^$out^g" \
-e "s^@ldflags@^$ldflags^g" \
-e "s^@ldflagsBefore@^$ldflagsBefore^g" \
-e "s^@ld@^$ldPath/ld^g" \
-e "s^@shell@^$shell^g" \
< $ldWrapper > $out/bin/ld
@ -71,6 +76,7 @@ cat > $out/nix-support/add-flags <<EOF
export NIX_CFLAGS_COMPILE="$cflagsCompile \$NIX_CFLAGS_COMPILE"
export NIX_CFLAGS_LINK="$cflagsLink \$NIX_CFLAGS_LINK"
export NIX_LDFLAGS="$ldflags \$NIX_LDFLAGS"
export NIX_LDFLAGS_BEFORE="$ldflagsBefore \$NIX_LDFLAGS_BEFORE"
export NIX_GLIBC_FLAGS_SET=1
EOF

View File

@ -11,7 +11,7 @@
assert nativeTools -> nativePrefix != "";
assert !nativeTools -> gcc != null && binutils != null;
assert !nativeGlibc -> glibc != null;
#assert !nativeGlibc -> glibc != null;
stdenv.mkDerivation {
builder = ./builder.sh;

View File

@ -63,24 +63,28 @@ fi
# Add the flags for the C compiler proper.
extra=($NIX_CFLAGS_COMPILE)
extraAfter=($NIX_CFLAGS_COMPILE)
extraBefore=()
if test "$dontLink" != "1"; then
# Add the flags that should only be passed to the compiler when
# linking.
extra=(${extra[@]} $NIX_CFLAGS_LINK)
extraAfter=(${extraAfter[@]} $NIX_CFLAGS_LINK)
# Add the flags that should be passed to the linker (and prevent
# `ld-wrapper' from adding NIX_LDFLAGS again).
for i in $NIX_LDFLAGS_BEFORE; do
extraBefore=(${extraBefore[@]} "-Wl,$i")
done
for i in $NIX_LDFLAGS; do
extra=(${extra[@]} "-Wl,$i")
extraAfter=(${extraAfter[@]} "-Wl,$i")
done
export NIX_LDFLAGS_SET=1
if test "$NIX_STRIP_DEBUG" = "1"; then
# Add executable-stripping flags.
extra=(${extra[@]} $NIX_CFLAGS_STRIP)
extraAfter=(${extraAfter[@]} $NIX_CFLAGS_STRIP)
fi
fi
@ -90,8 +94,12 @@ if test "$NIX_DEBUG" = "1"; then
for i in "${params[@]}"; do
echo " $i" >&2
done
echo "extra flags to @gcc@:" >&2
for i in ${extra[@]}; do
echo "extraBefore flags to @gcc@:" >&2
for i in ${extraBefore[@]}; do
echo " $i" >&2
done
echo "extraAfter flags to @gcc@:" >&2
for i in ${extraAfter[@]}; do
echo " $i" >&2
done
fi
@ -100,4 +108,4 @@ if test -n "$NIX_GCC_WRAPPER_EXEC_HOOK"; then
. "$NIX_GCC_WRAPPER_EXEC_HOOK"
fi
exec @gcc@ "${params[@]}" ${extra[@]}
exec @gcc@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]}

View File

@ -42,9 +42,11 @@ fi
extra=()
extraBefore=()
if test -z "$NIX_LDFLAGS_SET"; then
extra=(${extra[@]} $NIX_LDFLAGS)
extraBefore=(${extraBefore[@]} $NIX_LDFLAGS_BEFORE)
fi
@ -141,4 +143,4 @@ if test -n "$NIX_LD_WRAPPER_EXEC_HOOK"; then
. "$NIX_LD_WRAPPER_EXEC_HOOK"
fi
exec @ld@ "${params[@]}" ${extra[@]}
exec @ld@ ${extraBefore[@]} "${params[@]}" ${extra[@]}