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
This commit is contained in:
Lluís Batlle i Rossell 2012-05-24 22:07:23 +00:00
parent e9186a03b9
commit 383b76df79
3 changed files with 35 additions and 10 deletions

View File

@ -11,6 +11,13 @@ stdenv.mkDerivation (rec {
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 @@ stdenv.mkDerivation (rec {
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 ];

View File

@ -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";

View File

@ -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 = {