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