diff --git a/pkgs/development/compilers/gcc-4.4/default.nix b/pkgs/development/compilers/gcc-4.4/default.nix index 3ae45592fd5..358e5212407 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 2fd3fbcbab9..77a89f74490 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 c638e0bcf70..32c37aaac34 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 a09ad98c85c..dbc6797934d 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 d4ec90bfae1..bec3c8aeaef 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 dbcb4003e2d..b957096cb08 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 {