diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2005-02-22 14:32:56 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2005-02-22 14:32:56 +0000 |
commit | 2e0380b7a0d19b1d708111c108210f4bfcef7a6a (patch) | |
tree | bae333593f343ed5a7aa6e270fdaee974bea3323 /pkgs/build-support | |
parent | 290fba0cb6a030365f1706b410011c1a0df2a7b0 (diff) |
* Use the generic substituter in the generation of stdenv and gcc-wrapper.
svn path=/nixpkgs/trunk/; revision=2269
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/gcc-wrapper/add-flags | 5 | ||||
-rw-r--r-- | pkgs/build-support/gcc-wrapper/builder.sh | 64 | ||||
-rw-r--r-- | pkgs/build-support/gcc-wrapper/default.nix | 2 | ||||
-rw-r--r-- | pkgs/build-support/gcc-wrapper/gcc-wrapper.sh | 8 | ||||
-rw-r--r-- | pkgs/build-support/substitute/substitute.sh | 7 |
5 files changed, 52 insertions, 34 deletions
diff --git a/pkgs/build-support/gcc-wrapper/add-flags b/pkgs/build-support/gcc-wrapper/add-flags new file mode 100644 index 0000000000000..ac1e58ebb8126 --- /dev/null +++ b/pkgs/build-support/gcc-wrapper/add-flags @@ -0,0 +1,5 @@ +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 diff --git a/pkgs/build-support/gcc-wrapper/builder.sh b/pkgs/build-support/gcc-wrapper/builder.sh index 2e2c14f90bf6a..ade66fcef1cf0 100644 --- a/pkgs/build-support/gcc-wrapper/builder.sh +++ b/pkgs/build-support/gcc-wrapper/builder.sh @@ -1,4 +1,5 @@ . $stdenv/setup +. $substitute # Force gcc to use ld-wrapper.sh when calling ld. @@ -29,9 +30,30 @@ fi mkdir $out mkdir $out/bin +mkdir $out/nix-support + + +doSubstitute() { + local src=$1 + local dst=$2 + substitute "$src" "$dst" \ + --subst-var "out" \ + --subst-var "shell" \ + --subst-var "gcc" \ + --subst-var "gccProg" \ + --subst-var "binutils" \ + --subst-var "glibc" \ + --subst-var "cflagsCompile" \ + --subst-var "cflagsLink" \ + --subst-var "ldflags" \ + --subst-var "ldflagsBefore" \ + --subst-var-by "ld" "$ldPath/ld" +} -mkGccWrapper () { +# Make wrapper scripts around gcc, g++, and g77. Also make symlinks +# cc, c++, and f77. +mkGccWrapper() { local dst=$1 local src=$2 @@ -40,12 +62,9 @@ mkGccWrapper () { return fi - sed \ - -e "s^@gcc@^$src^g" \ - -e "s^@out@^$out^g" \ - -e "s^@shell@^$shell^g" \ - < $gccWrapper > $dst - chmod +x $dst + gccProg="$src" + doSubstitute "$gccWrapper" "$dst" + chmod +x "$dst" } mkGccWrapper $out/bin/gcc $gccPath/gcc @@ -58,33 +77,18 @@ mkGccWrapper $out/bin/g77 $gccPath/g77 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 -chmod +x $out/bin/ld +# Make a wrapper around the linker. +doSubstitute "$ldWrapper" "$out/bin/ld" +chmod +x "$out/bin/ld" -mkdir $out/nix-support +# Emit a setup hook. Also store the path to the original GCC and +# Glibc. test -n "$gcc" && echo $gcc > $out/nix-support/orig-gcc test -n "$glibc" && echo $glibc > $out/nix-support/orig-glibc -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 -#export GCC_EXEC_PREFIX=$gcc/libexec/gcc/i686-pc-linux-gnu/3.4.3 -EOF - -sed \ - -e "s^@gcc@^$gcc^g" \ - -e "s^@binutils@^$binutils^g" \ - -e "s^@glibc@^$glibc^g" \ - < $setupHook > $out/nix-support/setup-hook +doSubstitute "$addFlags" "$out/nix-support/add-flags" + +doSubstitute "$setupHook" "$out/nix-support/setup-hook" cp -p $utils $out/nix-support/utils diff --git a/pkgs/build-support/gcc-wrapper/default.nix b/pkgs/build-support/gcc-wrapper/default.nix index 80c8c7abd647c..4296aef67c8bc 100644 --- a/pkgs/build-support/gcc-wrapper/default.nix +++ b/pkgs/build-support/gcc-wrapper/default.nix @@ -15,10 +15,12 @@ assert !nativeGlibc -> glibc != null; stdenv.mkDerivation { builder = ./builder.sh; + substitute = ../substitute/substitute.sh; setupHook = ./setup-hook.sh; gccWrapper = ./gcc-wrapper.sh; ldWrapper = ./ld-wrapper.sh; utils = ./utils.sh; + addFlags = ./add-flags; inherit nativeTools nativeGlibc nativePrefix gcc glibc binutils; name = if name == "" then gcc.name else name; langC = if nativeTools then true else gcc.langC; diff --git a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh index fa2abe07650fb..e9b912ba66297 100644 --- a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh @@ -90,15 +90,15 @@ fi # Optionally print debug info. if test "$NIX_DEBUG" = "1"; then - echo "original flags to @gcc@:" >&2 + echo "original flags to @gccProg@:" >&2 for i in "${params[@]}"; do echo " $i" >&2 done - echo "extraBefore flags to @gcc@:" >&2 + echo "extraBefore flags to @gccProg@:" >&2 for i in ${extraBefore[@]}; do echo " $i" >&2 done - echo "extraAfter flags to @gcc@:" >&2 + echo "extraAfter flags to @gccProg@:" >&2 for i in ${extraAfter[@]}; do echo " $i" >&2 done @@ -108,4 +108,4 @@ if test -n "$NIX_GCC_WRAPPER_EXEC_HOOK"; then . "$NIX_GCC_WRAPPER_EXEC_HOOK" fi -exec @gcc@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} +exec @gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} diff --git a/pkgs/build-support/substitute/substitute.sh b/pkgs/build-support/substitute/substitute.sh index bd318522cae1c..c1a32488e1d74 100644 --- a/pkgs/build-support/substitute/substitute.sh +++ b/pkgs/build-support/substitute/substitute.sh @@ -22,6 +22,13 @@ substitute() { sedArgs=("${sedArgs[@]}" "-e" "s^@${varName}@^${!varName}^g") fi + if test "$p" = "--subst-var-by"; then + varName=${params[$((n + 1))]} + replacement=${params[$((n + 2))]} + n=$((n + 2)) + sedArgs=("${sedArgs[@]}" "-e" "s^@${varName}@^$replacement^g") + fi + done sed "${sedArgs[@]}" < "$input" > "$output".tmp |