diff options
author | Lluís Batlle i Rossell <viric@vicerveza.homeunix.net> | 2012-05-24 22:07:23 +0000 |
---|---|---|
committer | Lluís Batlle i Rossell <viric@vicerveza.homeunix.net> | 2012-05-24 22:07:23 +0000 |
commit | 383b76df790a3722b005934f9799d3edc9fecb8e (patch) | |
tree | 1a7236ee847fa7c084e3e6433a2a3439b1d3308f /pkgs/top-level | |
parent | e9186a03b9eba84b830de16d341f3caedcac8ba7 (diff) |
Fixing mingw-w64 builds. I can build simple C++ programs with gccCrossStageFinal.
I also add tests for hydra; let's see if it builds far.
svn path=/nixpkgs/trunk/; revision=34232
Diffstat (limited to 'pkgs/top-level')
-rw-r--r-- | pkgs/top-level/all-packages.nix | 8 | ||||
-rw-r--r-- | pkgs/top-level/release-cross.nix | 23 |
2 files changed, 28 insertions, 3 deletions
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c7a0fae055d0..3e6658ef1346 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1852,9 +1852,9 @@ let gccCrossStageStatic = let isMingw = (stdenv.cross.libc == "msvcrt"); - isMingw64 = (stdenv.cross.libc == "msvcrt64"); - libcCross1 = if isMingw then windows.mingw_headers1 else - if isMingw64 then windows.mingw_w64_headers else null; + isMingw64 = isMingw && stdenv.cross.config == "x86_64-w64-mingw32"; + libcCross1 = if isMingw64 then windows.mingw_w64_headers else + if isMingw then windows.mingw_headers1 else null; in wrapGCCCross { gcc = forceBuildDrv (lib.addMetaAttrs { platforms = []; } ( @@ -3528,6 +3528,8 @@ let # We can choose: libcCrossChooser = name : if (name == "glibc") then glibcCross else if (name == "uclibc") then uclibcCross + else if (name == "msvcrt" && stdenv.cross.config == "x86_64-w64-mingw32") then + windows.mingw_w64 else if (name == "msvcrt") then windows.mingw_headers3 else throw "Unknown libc"; diff --git a/pkgs/top-level/release-cross.nix b/pkgs/top-level/release-cross.nix index 3c34ec4b0f62..a1af20acc77c 100644 --- a/pkgs/top-level/release-cross.nix +++ b/pkgs/top-level/release-cross.nix @@ -164,6 +164,29 @@ in { }; }) // ( +/* Test some cross builds on mingw-w64 */ +let + crossSystem = { + # That's the triplet they use in the mingw-w64 docs, + # and it's relevant for nixpkgs conditions. + config = "x86_64-w64-mingw32"; + arch = "x86_64"; # Irrelevant + libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain + platform = {}; + }; +in { + crossMingwW64 = mapTestOnCross crossSystem { + coreutils.hostDrv = nativePlatforms; + boehmgc.hostDrv = nativePlatforms; + gmp.hostDrv = nativePlatforms; + guile_1_8.hostDrv = nativePlatforms; + libffi.hostDrv = nativePlatforms; + libtool.hostDrv = nativePlatforms; + libunistring.hostDrv = nativePlatforms; + windows.wxMSW.hostDrv = nativePlatforms; + }; +}) // ( + /* GNU aka. GNU/Hurd. */ let crossSystem = { |