about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2010-05-12 15:46:51 +0000
committerLudovic Courtès <ludo@gnu.org>2010-05-12 15:46:51 +0000
commit7e08174782cc8a3af15f6b90b35db161dc87ba62 (patch)
treed5b063e874957e3232096ce82e71f4e3b4602044
parent2d4fa8897e1d3c0be52f4b4b91e86790d582cf4a (diff)
downloadnixlib-7e08174782cc8a3af15f6b90b35db161dc87ba62.tar
nixlib-7e08174782cc8a3af15f6b90b35db161dc87ba62.tar.gz
nixlib-7e08174782cc8a3af15f6b90b35db161dc87ba62.tar.bz2
nixlib-7e08174782cc8a3af15f6b90b35db161dc87ba62.tar.lz
nixlib-7e08174782cc8a3af15f6b90b35db161dc87ba62.tar.xz
nixlib-7e08174782cc8a3af15f6b90b35db161dc87ba62.tar.zst
nixlib-7e08174782cc8a3af15f6b90b35db161dc87ba62.zip
glibc 2.11: Cross-build for GNU/Hurd.
svn path=/nixpkgs/trunk/; revision=21752
-rw-r--r--pkgs/development/libraries/glibc-2.11/common.nix17
-rw-r--r--pkgs/development/libraries/glibc-2.11/default.nix10
-rw-r--r--pkgs/top-level/all-packages.nix20
3 files changed, 39 insertions, 8 deletions
diff --git a/pkgs/development/libraries/glibc-2.11/common.nix b/pkgs/development/libraries/glibc-2.11/common.nix
index fcdccd90f2ec..cdd968b45823 100644
--- a/pkgs/development/libraries/glibc-2.11/common.nix
+++ b/pkgs/development/libraries/glibc-2.11/common.nix
@@ -5,6 +5,7 @@ cross :
 
 { name, fetchurl, stdenv, installLocales ? false
 , gccCross ? null, kernelHeaders ? null
+, machHeaders ? null, hurdHeaders ? null, mig ? null
 , profilingLibraries ? false, meta
 , preConfigure ? "", ... }@args :
 
@@ -77,7 +78,8 @@ stdenv.mkDerivation ({
     "--without-fp"
   ];
 
-  buildInputs = stdenv.lib.optionals (cross != null) [ gccCross ];
+  buildInputs = stdenv.lib.optionals (cross != null) [ gccCross ]
+    ++ stdenv.lib.optional (mig != null) mig;
 
   # Needed to install share/zoneinfo/zone.tab.  Set to impure /bin/sh to
   # prevent a retained dependency on the bootstrap tools in the stdenv-linux
@@ -149,4 +151,15 @@ stdenv.mkDerivation ({
     maintainers = [ stdenv.lib.maintainers.ludo ];
     platforms = stdenv.lib.platforms.linux;
   } // meta;
-})
+}
+
+//
+
+(if (cross != null && cross.config == "i586-pc-gnu")
+ then {
+   # Work around the fact that the configure snippet that looks for
+   # <hurd/version.h> does not honor `--with-headers=$sysheaders' and that
+   # glibc expects both Mach and Hurd headers to be in the same place.
+   CPATH = "${hurdHeaders}/include:${machHeaders}/include";
+ }
+ else { }))
diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix
index 32c37aaac34e..9bbc77408969 100644
--- a/pkgs/development/libraries/glibc-2.11/default.nix
+++ b/pkgs/development/libraries/glibc-2.11/default.nix
@@ -1,10 +1,14 @@
 { stdenv, fetchurl, kernelHeaders
+, machHeaders ? null, hurdHeaders ? null
 , installLocales ? true
 , profilingLibraries ? false
 , gccCross ? null
+, mig ? null
 }:
 
 assert stdenv.gcc.gcc != null;
+assert (mig != null) -> (machHeaders != null);
+assert (machHeaders != null) -> (hurdHeaders != null);
 
 let
   build = import ./common.nix;
@@ -37,6 +41,12 @@ in
 
   //
 
+  (if hurdHeaders != null
+   then { inherit machHeaders hurdHeaders mig; }
+   else { })
+
+  //
+
   (if cross != null
    then {
       preConfigure = ''
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 2f4534d42f01..0d4d5a898ec0 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -3901,12 +3901,20 @@ let
     installLocales = getPkgConfig "glibc" "locales" false;
   };
 
-  glibc211Cross = forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.11) {
-    inherit stdenv fetchurl;
-    gccCross = gccCrossStageStatic;
-    kernelHeaders = linuxHeadersCross;
-    installLocales = getPkgConfig "glibc" "locales" false;
-  });
+  glibc211Cross = forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.11)
+    (let crossGNU = (crossSystem.config == "i586-pc-gnu");
+     in ({
+       inherit stdenv fetchurl;
+       gccCross = gccCrossStageStatic;
+       kernelHeaders = if crossGNU then hurdHeaders else linuxHeadersCross;
+       installLocales = getPkgConfig "glibc" "locales" false;
+     }
+
+     //
+
+     (if crossGNU
+      then { inherit machHeaders hurdHeaders; mig = migCross; }
+      else { }))));
 
   glibcCross = glibc211Cross;