summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/build-support/gcc-cross-wrapper/builder.sh5
-rw-r--r--pkgs/build-support/gcc-cross-wrapper/default.nix4
-rw-r--r--pkgs/build-support/gcc-cross-wrapper/gcc-wrapper.sh2
-rw-r--r--pkgs/build-support/gcc-cross-wrapper/ld-wrapper.sh2
-rw-r--r--pkgs/build-support/gcc-cross-wrapper/setup-hook.sh5
-rw-r--r--pkgs/development/compilers/gcc-4.3/builder.sh5
-rw-r--r--pkgs/development/interpreters/guile/default.nix6
-rw-r--r--pkgs/development/libraries/glibc-2.11/default.nix3
-rw-r--r--pkgs/development/libraries/glibc-2.9/default.nix3
-rw-r--r--pkgs/development/libraries/gmp/default.nix2
-rw-r--r--pkgs/top-level/all-packages.nix16
11 files changed, 28 insertions, 25 deletions
diff --git a/pkgs/build-support/gcc-cross-wrapper/builder.sh b/pkgs/build-support/gcc-cross-wrapper/builder.sh
index 2299574e85ac..aaf52cd7745d 100644
--- a/pkgs/build-support/gcc-cross-wrapper/builder.sh
+++ b/pkgs/build-support/gcc-cross-wrapper/builder.sh
@@ -17,7 +17,7 @@ if test -n "$nativeTools"; then
 else
     ldflags="$ldflags -L$gcc/lib"
     gccPath="$gcc/bin"
-    ldPath="$binutils/bin"
+    ldPath="$binutils/$crossConfig/bin"
 fi
 
 
@@ -40,7 +40,8 @@ doSubstitute() {
         --subst-var "cflagsLink" \
         --subst-var "ldflags" \
         --subst-var "ldflagsBefore" \
-        --subst-var-by "ld" "$ldPath/$crossConfig-ld"
+        --subst-var "ldPath" \
+        --subst-var-by "ld" "$ldPath/ld"
 }
 
 
diff --git a/pkgs/build-support/gcc-cross-wrapper/default.nix b/pkgs/build-support/gcc-cross-wrapper/default.nix
index a9042dddf195..140432adfbca 100644
--- a/pkgs/build-support/gcc-cross-wrapper/default.nix
+++ b/pkgs/build-support/gcc-cross-wrapper/default.nix
@@ -5,13 +5,13 @@
 # stdenv.mkDerivation provides a wrapper that sets up the right environment
 # variables so that the compiler and the linker just "work".
 
-{ name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? ""
+{ name ? "", stdenv, nativeTools, nativeLibc, noLibc ? false, nativePrefix ? ""
 , gcc ? null, libc ? null, binutils ? null, shell ? "", cross ? ""
 }:
 
 assert nativeTools -> nativePrefix != "";
 assert !nativeTools -> gcc != null && binutils != null;
-assert !nativeLibc -> libc != null;
+assert !noLibc -> (!nativeLibc -> libc != null);
 
 stdenv.mkDerivation {
   builder = ./builder.sh;
diff --git a/pkgs/build-support/gcc-cross-wrapper/gcc-wrapper.sh b/pkgs/build-support/gcc-cross-wrapper/gcc-wrapper.sh
index d514b57e28a0..e5a2f5e65bb1 100644
--- a/pkgs/build-support/gcc-cross-wrapper/gcc-wrapper.sh
+++ b/pkgs/build-support/gcc-cross-wrapper/gcc-wrapper.sh
@@ -112,6 +112,8 @@ if test -n "$NIX_GCC_WRAPPER_EXEC_HOOK"; then
     source "$NIX_GCC_WRAPPER_EXEC_HOOK"
 fi
 
+# We want gcc to call the wrapper linker, not that of binutils.
+export PATH="@ldPath@:$PATH"
 
 # Call the real `gcc'.  Filter out warnings from stderr about unused
 # `-B' flags, since they confuse some programs.  Deep bash magic to
diff --git a/pkgs/build-support/gcc-cross-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-cross-wrapper/ld-wrapper.sh
index cc1b125804a4..f3ff33f5c251 100644
--- a/pkgs/build-support/gcc-cross-wrapper/ld-wrapper.sh
+++ b/pkgs/build-support/gcc-cross-wrapper/ld-wrapper.sh
@@ -121,7 +121,7 @@ if test "$NIX_DONT_SET_RPATH" != "1"; then
 
     # Finally, add `-rpath' switches.
     for i in $rpath; do
-        extra=(${extra[@]} -rpath $i)
+        extra=(${extra[@]} -rpath $i -rpath-link $i)
     done
 fi
 
diff --git a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh
index 81735a4feffe..99618cb21124 100644
--- a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh
+++ b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh
@@ -26,5 +26,6 @@ if test -n "@libc@"; then
 fi
 
 configureFlags="$configureFlags --build=$system --host=$crossConfig"
-dontPatchELF=1
-dontStrip=1
+# Disabling the tests when cross compiling, as usually the tests are meant for
+# native compilations.
+doCheck=""
diff --git a/pkgs/development/compilers/gcc-4.3/builder.sh b/pkgs/development/compilers/gcc-4.3/builder.sh
index 183575edf193..69e2a0b137ea 100644
--- a/pkgs/development/compilers/gcc-4.3/builder.sh
+++ b/pkgs/development/compilers/gcc-4.3/builder.sh
@@ -124,11 +124,6 @@ postInstall() {
             ln -sfn g++ $i
         fi
     done
-
-    # gcc will look for the binutils there, called through collect2
-    if test -n "$crossConfig"; then
-      ln -s $binutilsCross/$crossConfig/bin $out/$crossConfig/bin
-    fi
 }
 
 
diff --git a/pkgs/development/interpreters/guile/default.nix b/pkgs/development/interpreters/guile/default.nix
index f81f8ab1e828..5be39a20f5a5 100644
--- a/pkgs/development/interpreters/guile/default.nix
+++ b/pkgs/development/interpreters/guile/default.nix
@@ -9,13 +9,15 @@ stdenv.mkDerivation rec {
   };
 
   buildNativeInputs = [ makeWrapper ];
-  propagatedBuildInputs = [ libtool ];
-  propagatedBuildNativeInputs = [readline gmp gawk];
+  propagatedBuildInputs = [ libtool gmp ];
+  propagatedBuildNativeInputs = [readline gawk];
 
   postInstall = ''
     wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin"
   '';
 
+  NIX_DEBUG=1;
+
   preBuild = ''
     sed -e '/lt_dlinit/a  lt_dladdsearchdir("'$out/lib'");' -i libguile/dynl.c
   '';
diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix
index ad312123b3ae..5cfdb22e6ac4 100644
--- a/pkgs/development/libraries/glibc-2.11/default.nix
+++ b/pkgs/development/libraries/glibc-2.11/default.nix
@@ -2,7 +2,6 @@
 , installLocales ? true
 , profilingLibraries ? false
 , cross ? null
-, binutilsCross ? null
 , gccCross ? null
 }:
 
@@ -78,7 +77,7 @@ stdenv.mkDerivation rec {
     "--without-fp"
   ] else []);
 
-  buildInputs = stdenv.lib.optionals (cross != null) [ binutilsCross gccCross ];
+  buildInputs = stdenv.lib.optionals (cross != null) [ gccCross ];
 
   preInstall = ''
     ensureDir $out/lib
diff --git a/pkgs/development/libraries/glibc-2.9/default.nix b/pkgs/development/libraries/glibc-2.9/default.nix
index 9f02fa33e0df..98e281c19180 100644
--- a/pkgs/development/libraries/glibc-2.9/default.nix
+++ b/pkgs/development/libraries/glibc-2.9/default.nix
@@ -2,7 +2,6 @@
 , installLocales ? true
 , profilingLibraries ? false
 , cross ? null
-, binutilsCross ? null
 , gccCross ? null
 }:
 
@@ -80,7 +79,7 @@ stdenv.mkDerivation rec {
     "--without-fp"
   ] else []);
 
-  buildInputs = stdenv.lib.optionals (cross != null) [ binutilsCross gccCross ];
+  buildInputs = stdenv.lib.optionals (cross != null) [ gccCross ];
 
   preInstall = ''
     ensureDir $out/lib
diff --git a/pkgs/development/libraries/gmp/default.nix b/pkgs/development/libraries/gmp/default.nix
index 541fabddd441..72561f270311 100644
--- a/pkgs/development/libraries/gmp/default.nix
+++ b/pkgs/development/libraries/gmp/default.nix
@@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
     sha256 = "1j5pklq36ivg2cim5wfysns229a544lqkimp3mlzkwjl513ra0ma";
   };
 
-  buildInputs = [m4];
+  buildNativeInputs = [m4];
 
   preConfigure = "ln -sf configfsf.guess config.guess";
 
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 629d3fe89d70..2fb6471ed079 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1785,10 +1785,15 @@ let
     crossStageStatic = false;
   };
 
-  gccCrossStageStatic = cross: (gcc43_realCross cross).override {
-    crossStageStatic = true;
-    langCC = false;
-    glibcCross = null;
+  gccCrossStageStatic = cross: wrapGCCCross {
+    gcc = (gcc43_realCross cross).override {
+        crossStageStatic = true;
+        langCC = false;
+        glibcCross = null;
+    };
+    libc = null;
+    binutils = binutilsCross cross;
+    inherit cross;
   };
 
   gccCrossStageFinal = cross: wrapGCCCross {
@@ -2218,6 +2223,7 @@ let
     import ../build-support/gcc-cross-wrapper {
       nativeTools = false;
       nativeLibc = false;
+      noLibc = (libc == null);
       inherit stdenv gcc binutils libc shell name cross;
     };
 
@@ -3415,7 +3421,6 @@ let
 
   glibc29Cross = cross : makeOverridable (import ../development/libraries/glibc-2.9) {
     inherit stdenv fetchurl cross;
-    binutilsCross = binutilsCross cross;
     gccCross = gccCrossStageStatic cross;
     kernelHeaders = kernelHeadersCross cross;
     installLocales = getPkgConfig "glibc" "locales" false;
@@ -3428,7 +3433,6 @@ let
 
   glibc211Cross = cross : makeOverridable (import ../development/libraries/glibc-2.11) {
     inherit stdenv fetchurl cross;
-    binutilsCross = binutilsCross cross;
     gccCross = gccCrossStageStatic cross;
     kernelHeaders = kernelHeadersCross cross;
     installLocales = getPkgConfig "glibc" "locales" false;