diff options
author | Armijn Hemel <armijn@gpl-violations.org> | 2004-11-22 16:36:27 +0000 |
---|---|---|
committer | Armijn Hemel <armijn@gpl-violations.org> | 2004-11-22 16:36:27 +0000 |
commit | aad382248f0d5a4be002c005e37d2d58625d3b17 (patch) | |
tree | cc8446c57650ef7eea3d56fbd366a77f4b30d721 /pkgs/build-support/gcc-wrapper | |
parent | a30b6755adcd8de02b8bd86c8ae6d82a91201434 (diff) | |
download | nixpkgs-aad382248f0d5a4be002c005e37d2d58625d3b17.tar nixpkgs-aad382248f0d5a4be002c005e37d2d58625d3b17.tar.gz nixpkgs-aad382248f0d5a4be002c005e37d2d58625d3b17.tar.bz2 nixpkgs-aad382248f0d5a4be002c005e37d2d58625d3b17.tar.lz nixpkgs-aad382248f0d5a4be002c005e37d2d58625d3b17.tar.xz nixpkgs-aad382248f0d5a4be002c005e37d2d58625d3b17.tar.zst nixpkgs-aad382248f0d5a4be002c005e37d2d58625d3b17.zip |
add modified gcc-wrapper
svn path=/nixpkgs/branches/nixos-pkgs/; revision=1793
Diffstat (limited to 'pkgs/build-support/gcc-wrapper')
-rw-r--r-- | pkgs/build-support/gcc-wrapper/builder.sh | 8 | ||||
-rw-r--r-- | pkgs/build-support/gcc-wrapper/default.nix | 2 | ||||
-rw-r--r-- | pkgs/build-support/gcc-wrapper/gcc-wrapper.sh | 22 | ||||
-rw-r--r-- | pkgs/build-support/gcc-wrapper/ld-wrapper.sh | 4 |
4 files changed, 26 insertions, 10 deletions
diff --git a/pkgs/build-support/gcc-wrapper/builder.sh b/pkgs/build-support/gcc-wrapper/builder.sh index c0c0c53a7a6..d48f57e159c 100644 --- a/pkgs/build-support/gcc-wrapper/builder.sh +++ b/pkgs/build-support/gcc-wrapper/builder.sh @@ -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 diff --git a/pkgs/build-support/gcc-wrapper/default.nix b/pkgs/build-support/gcc-wrapper/default.nix index 80c8c7abd64..5da8805f843 100644 --- a/pkgs/build-support/gcc-wrapper/default.nix +++ b/pkgs/build-support/gcc-wrapper/default.nix @@ -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; diff --git a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh index 149d6e2fcbc..fa2abe07650 100644 --- a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh @@ -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[@]} diff --git a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh index d90b290e007..362392c154f 100644 --- a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh @@ -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[@]} |