about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/development/compilers/gcc-4.4/default.nix3
-rw-r--r--pkgs/development/libraries/glibc-2.11/common.nix4
-rw-r--r--pkgs/development/libraries/glibc-2.11/default.nix2
-rw-r--r--pkgs/os-specific/linux/kernel-headers/2.6.32.nix11
-rw-r--r--pkgs/top-level/all-packages.nix9
-rw-r--r--pkgs/top-level/release.nix1
6 files changed, 20 insertions, 10 deletions
diff --git a/pkgs/development/compilers/gcc-4.4/default.nix b/pkgs/development/compilers/gcc-4.4/default.nix
index 3ae45592fd53..358e52124072 100644
--- a/pkgs/development/compilers/gcc-4.4/default.nix
+++ b/pkgs/development/compilers/gcc-4.4/default.nix
@@ -57,8 +57,11 @@ let version = "4.4.3";
 
     javaAwtGtk = langJava && gtk != null;
 
+    withCPU = if cross ? cpu then " --with-cpu=${cross.cpu}" else "";
+
     crossConfigureFlags =
       "--target=${cross.config}" +
+      withCPU +
       (if crossStageStatic then
         " --disable-libssp --disable-nls" +
         " --without-headers" +
diff --git a/pkgs/development/libraries/glibc-2.11/common.nix b/pkgs/development/libraries/glibc-2.11/common.nix
index 2fd3fbcbab9c..77a89f744908 100644
--- a/pkgs/development/libraries/glibc-2.11/common.nix
+++ b/pkgs/development/libraries/glibc-2.11/common.nix
@@ -67,9 +67,9 @@ stdenv.mkDerivation ({
      then "--enable-profile"
      else "--disable-profile")
   ] ++ stdenv.lib.optionals (cross != null) [
-    "--with-tls"
+    (if cross.withTLS then "--with-tls" else "--without-tls")
+    (if cross.float == "float" then "--without-fp" else "--with-fp")
     "--enable-kernel=2.6.0"
-    "--without-fp"
     "--with-__thread"
   ] ++ stdenv.lib.optionals (stdenv.system == "armv5tel-linux") [
     "--host=arm-linux-gnueabi"
diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix
index c638e0bcf702..32c37aaac34e 100644
--- a/pkgs/development/libraries/glibc-2.11/default.nix
+++ b/pkgs/development/libraries/glibc-2.11/default.nix
@@ -46,6 +46,8 @@ in
         libc_cv_forced_unwind=yes
         libc_cv_c_cleanup=yes
         libc_cv_gnu89_inline=yes
+        # Only due to a problem in gcc configure scripts:
+        libc_cv_sparc64_tls=${if cross.withTLS then "yes" else "no"}
         EOF
         export BUILD_CC=gcc
         export CC="$crossConfig-gcc"
diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.32.nix b/pkgs/os-specific/linux/kernel-headers/2.6.32.nix
index a09ad98c85ca..dbc6797934de 100644
--- a/pkgs/os-specific/linux/kernel-headers/2.6.32.nix
+++ b/pkgs/os-specific/linux/kernel-headers/2.6.32.nix
@@ -1,21 +1,21 @@
-{stdenv, fetchurl, perl, cross ? null}:
+{stdenv, fetchurl, perl, cross ? null, platform}:
 
-assert stdenv.isLinux;
+assert cross == null -> stdenv.isLinux;
 
-let version = "2.6.32.4"; in
+let version = "2.6.32.9"; in
 
 stdenv.mkDerivation {
   name = "linux-headers-${version}";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v2.6/linux-${version}.tar.bz2";
-    sha256 = "1n8pj05sazxv1dgi68q61lrvrnzvvx61qqw6kx80vqizqanz97z1";
+    sha256 = "1g6hs7j5kmifb3phbnckdmrnxd0cpqrijnnbry86z26npsh9my7l";
   };
 
   targetConfig = if (cross != null) then cross.config else null;
 
   platform =
-    if cross != null then cross.arch else
+    if cross != null then platform.kernelArch else
     if stdenv.system == "i686-linux" then "i386" else
     if stdenv.system == "x86_64-linux" then "x86_64" else
     if stdenv.system == "powerpc-linux" then "powerpc" else
@@ -33,6 +33,7 @@ stdenv.mkDerivation {
     if test -n "$targetConfig"; then
        export ARCH=$platform
     fi
+    make ${platform.kernelHeadersBaseConfig}
     make mrproper headers_check
   '';
 
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index d4ec90bfae1b..bec3c8aeaefa 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1967,7 +1967,9 @@ let
     binutilsCross = binutilsCross cross;
     libcCross = libcCross cross;
     profiledCompiler = false;
-    enableMultilib = true;
+    enableMultilib = false;
+    # cross-building for ultrasparc in 4.4.3 will require disabling shared due to a gcc bug.
+    # enableShared = false;
     crossStageStatic = false;
   };
 
@@ -1976,6 +1978,7 @@ let
         crossStageStatic = true;
         langCC = false;
         libcCross = null;
+        enableShared = true;
     });
     libc = null;
     binutils = binutilsCross cross;
@@ -5841,8 +5844,8 @@ let
 
   linuxHeaders = linuxHeaders_2_6_28;
 
-  linuxHeadersCross = cross : forceBuildDrv (import ../os-specific/linux/kernel-headers/2.6.28.nix {
-    inherit stdenv fetchurl cross perl;
+  linuxHeadersCross = cross : forceBuildDrv (import ../os-specific/linux/kernel-headers/2.6.32.nix {
+    inherit stdenv fetchurl cross perl platform;
   });
 
   linuxHeaders_2_6_18 = import ../os-specific/linux/kernel-headers/2.6.18.5.nix {
diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix
index dbcb4003e2d7..b957096cb08a 100644
--- a/pkgs/top-level/release.nix
+++ b/pkgs/top-level/release.nix
@@ -708,6 +708,7 @@ let
       bigEndian = false;
       arch = "arm";
       float = "soft";
+      withTLS = true;
   };
   nativePlatforms = linux;
 in {