Author: viric
Date: Thu May 24 22:07:23 2012
New Revision: 34232
URL: https://nixos.org/websvn/nix/?rev=34232&sc=1

Log:
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.

Modified:
   nixpkgs/trunk/pkgs/os-specific/windows/mingw-w64/default.nix
   nixpkgs/trunk/pkgs/top-level/all-packages.nix
   nixpkgs/trunk/pkgs/top-level/release-cross.nix

Modified: nixpkgs/trunk/pkgs/os-specific/windows/mingw-w64/default.nix
==============================================================================
--- nixpkgs/trunk/pkgs/os-specific/windows/mingw-w64/default.nix        Thu May 
24 21:45:49 2012        (r34231)
+++ nixpkgs/trunk/pkgs/os-specific/windows/mingw-w64/default.nix        Thu May 
24 22:07:23 2012        (r34232)
@@ -11,6 +11,13 @@
     sha256 = "043jk6z90f9pxs9kfn6ckh2vlnbgcv6yfbp5ybahrj3z58dcijp5";
   };
 
+  # I don't know what's that $host directory about, I put the
+  # files inside include as usual.
+  postInstall = ''
+    rmdir $out/include
+    mv $out/x86_64-w64-mingw32/* $out
+    rm -R $out/x86_64-w64-mingw32
+  '';
 } //
 (if onlyHeaders then {
   name = name + "-headers";
@@ -18,13 +25,6 @@
     cd mingw-w64-headers
   '';
   configureFlags = "--without-crt --host=x86_64-w64-mingw32";
-
-  # I don't know what's that $host directory about, I put the
-  # files inside include as usual.
-  postInstall = ''
-    mv $out/x86_64-w64-mingw32/include/* $out/include
-    rm -R $out/x86_64-w64-mingw32
-  '';
 } else {
   buildInputs = [ gccCross binutilsCross ];
 

Modified: nixpkgs/trunk/pkgs/top-level/all-packages.nix
==============================================================================
--- nixpkgs/trunk/pkgs/top-level/all-packages.nix       Thu May 24 21:45:49 
2012        (r34231)
+++ nixpkgs/trunk/pkgs/top-level/all-packages.nix       Thu May 24 22:07:23 
2012        (r34232)
@@ -1852,9 +1852,9 @@
 
   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 @@
   # 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";
 

Modified: nixpkgs/trunk/pkgs/top-level/release-cross.nix
==============================================================================
--- nixpkgs/trunk/pkgs/top-level/release-cross.nix      Thu May 24 21:45:49 
2012        (r34231)
+++ nixpkgs/trunk/pkgs/top-level/release-cross.nix      Thu May 24 22:07:23 
2012        (r34232)
@@ -164,6 +164,29 @@
   };
 }) // (
 
+/* 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 = {
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits

Reply via email to