diff options
-rw-r--r-- | pkgs/build-support/gcc-cross-wrapper/builder.sh | 5 | ||||
-rw-r--r-- | pkgs/build-support/gcc-cross-wrapper/default.nix | 4 | ||||
-rw-r--r-- | pkgs/build-support/gcc-cross-wrapper/gcc-wrapper.sh | 2 | ||||
-rw-r--r-- | pkgs/build-support/gcc-cross-wrapper/ld-wrapper.sh | 2 | ||||
-rw-r--r-- | pkgs/build-support/gcc-cross-wrapper/setup-hook.sh | 5 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc-4.3/builder.sh | 5 | ||||
-rw-r--r-- | pkgs/development/interpreters/guile/default.nix | 6 | ||||
-rw-r--r-- | pkgs/development/libraries/glibc-2.11/default.nix | 3 | ||||
-rw-r--r-- | pkgs/development/libraries/glibc-2.9/default.nix | 3 | ||||
-rw-r--r-- | pkgs/development/libraries/gmp/default.nix | 2 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 16 |
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; |