about summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2005-02-22 14:32:56 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2005-02-22 14:32:56 +0000
commit2e0380b7a0d19b1d708111c108210f4bfcef7a6a (patch)
treebae333593f343ed5a7aa6e270fdaee974bea3323 /pkgs/build-support
parent290fba0cb6a030365f1706b410011c1a0df2a7b0 (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-flags5
-rw-r--r--pkgs/build-support/gcc-wrapper/builder.sh64
-rw-r--r--pkgs/build-support/gcc-wrapper/default.nix2
-rw-r--r--pkgs/build-support/gcc-wrapper/gcc-wrapper.sh8
-rw-r--r--pkgs/build-support/substitute/substitute.sh7
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