diff options
author | Ludovic Courtès <ludo@gnu.org> | 2010-05-12 15:46:51 +0000 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2010-05-12 15:46:51 +0000 |
commit | 7e08174782cc8a3af15f6b90b35db161dc87ba62 (patch) | |
tree | d5b063e874957e3232096ce82e71f4e3b4602044 | |
parent | 2d4fa8897e1d3c0be52f4b4b91e86790d582cf4a (diff) | |
download | nixlib-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.nix | 17 | ||||
-rw-r--r-- | pkgs/development/libraries/glibc-2.11/default.nix | 10 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 20 |
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; |