summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorJohn Ericson <Ericson2314@Yahoo.com>2017-06-19 11:51:01 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2017-06-22 17:53:51 -0400
commitbb7067f882bf3c53ea68780a8ec0a7117f563253 (patch)
tree02be64697b37a74b462fc977a86737119d15a780 /pkgs
parentc2e2152afc513fa4eda51b96dc5c7f349c3497da (diff)
downloadnixpkgs-bb7067f882bf3c53ea68780a8ec0a7117f563253.tar
nixpkgs-bb7067f882bf3c53ea68780a8ec0a7117f563253.tar.gz
nixpkgs-bb7067f882bf3c53ea68780a8ec0a7117f563253.tar.bz2
nixpkgs-bb7067f882bf3c53ea68780a8ec0a7117f563253.tar.lz
nixpkgs-bb7067f882bf3c53ea68780a8ec0a7117f563253.tar.xz
nixpkgs-bb7067f882bf3c53ea68780a8ec0a7117f563253.tar.zst
nixpkgs-bb7067f882bf3c53ea68780a8ec0a7117f563253.zip
mingw-w64: Clean up, especially clarifying staging
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/os-specific/windows/mingw-w64/common.nix11
-rw-r--r--pkgs/os-specific/windows/mingw-w64/default.nix38
-rw-r--r--pkgs/os-specific/windows/mingw-w64/headers.nix13
-rw-r--r--pkgs/os-specific/windows/mingw-w64/pthreads.nix13
-rw-r--r--pkgs/top-level/all-packages.nix31
5 files changed, 55 insertions, 51 deletions
diff --git a/pkgs/os-specific/windows/mingw-w64/common.nix b/pkgs/os-specific/windows/mingw-w64/common.nix
new file mode 100644
index 00000000000..ece2586dc80
--- /dev/null
+++ b/pkgs/os-specific/windows/mingw-w64/common.nix
@@ -0,0 +1,11 @@
+{ fetchurl }:
+
+rec {
+  version = "4.0.6";
+  name = "mingw-w64-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/mingw-w64/mingw-w64-v${version}.tar.bz2";
+    sha256 = "0p01vm5kx1ixc08402z94g1alip4vx66gjpvyi9maqyqn2a76h0c";
+  };
+}
diff --git a/pkgs/os-specific/windows/mingw-w64/default.nix b/pkgs/os-specific/windows/mingw-w64/default.nix
index 49612b0b461..697e0353182 100644
--- a/pkgs/os-specific/windows/mingw-w64/default.nix
+++ b/pkgs/os-specific/windows/mingw-w64/default.nix
@@ -1,36 +1,6 @@
-{ stdenv, fetchurl, binutils ? null, gccCross ? null
-, onlyHeaders ? false
-, onlyPthreads ? false
-}:
-
-let
-  version = "4.0.6";
-  name = "mingw-w64-${version}";
-in
-stdenv.mkDerivation ({
-  inherit name;
-
-  src = fetchurl {
-    url = "mirror://sourceforge/mingw-w64/mingw-w64-v${version}.tar.bz2";
-    sha256 = "0p01vm5kx1ixc08402z94g1alip4vx66gjpvyi9maqyqn2a76h0c";
-  };
-} //
-(if onlyHeaders then {
-  name = name + "-headers";
-  preConfigure = ''
-    cd mingw-w64-headers
-  '';
-  configureFlags = "--without-crt";
-} else if onlyPthreads then {
-  name = name + "-pthreads";
-  preConfigure = ''
-    cd mingw-w64-libraries/winpthreads
-  '';
-} else {
-  buildInputs = [ gccCross binutils ];
-
-  crossConfig = gccCross.crossConfig;
+{ stdenv, callPackage }:
 
+stdenv.mkDerivation {
+  inherit (callPackage ./common.nix {}) name src;
   dontStrip = true;
-})
-)
+}
diff --git a/pkgs/os-specific/windows/mingw-w64/headers.nix b/pkgs/os-specific/windows/mingw-w64/headers.nix
new file mode 100644
index 00000000000..03dbf712e2e
--- /dev/null
+++ b/pkgs/os-specific/windows/mingw-w64/headers.nix
@@ -0,0 +1,13 @@
+{ stdenvNoCC, callPackage }:
+
+let
+  inherit (callPackage ./common.nix {}) name src;
+
+in stdenvNoCC.mkDerivation {
+  name = name + "-headers";
+  inherit src;
+
+  preConfigure = ''
+    cd mingw-w64-headers
+  '';
+}
diff --git a/pkgs/os-specific/windows/mingw-w64/pthreads.nix b/pkgs/os-specific/windows/mingw-w64/pthreads.nix
new file mode 100644
index 00000000000..c585ab54ff8
--- /dev/null
+++ b/pkgs/os-specific/windows/mingw-w64/pthreads.nix
@@ -0,0 +1,13 @@
+{ stdenvNoCC, callPackage }:
+
+let
+  inherit (callPackage ./common.nix {}) name src;
+
+in stdenvNoCC.mkDerivation {
+  name = name + "-pthreads";
+  inherit src;
+
+  preConfigure = ''
+    cd mingw-w64-libraries/winpthreads
+  '';
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index c201715dfef..882a308d285 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5163,9 +5163,17 @@ with pkgs;
 
   gccApple = throw "gccApple is no longer supported";
 
+  # Can't just overrideCC, because then the stdenv-cross mkDerivation will be
+  # thrown away. TODO: find a better solution for this.
+  crossLibcStdenv = buildPackages.makeStdenvCross {
+    inherit (buildPackages.buildPackages) stdenv;
+    inherit buildPlatform hostPlatform targetPlatform;
+    cc = buildPackages.gccCrossStageStatic;
+  };
+
   gccCrossStageStatic = assert targetPlatform != buildPlatform; let
     libcCross1 =
-      if targetPlatform.libc == "msvcrt" then windows.mingw_w64_headers
+      if targetPlatform.libc == "msvcrt" then __targetPackages.windows.mingw_w64_headers
       else if targetPlatform.libc == "libSystem" then darwin.xcode
       else null;
     in wrapCCCross {
@@ -7800,13 +7808,7 @@ with pkgs;
   # Being redundant to avoid cycles on boot. TODO: find a better way
   glibcCross = callPackage ../development/libraries/glibc {
     installLocales = config.glibc.locales or false;
-    # Can't just overrideCC, because then the stdenv-cross mkDerivation will be
-    # thrown away. TODO: find a better solution for this.
-    stdenv = buildPackages.makeStdenvCross {
-      inherit (buildPackages.buildPackages) stdenv;
-      inherit buildPlatform hostPlatform targetPlatform;
-      cc = buildPackages.gccCrossStageStatic;
-    };
+    stdenv = crossLibcStdenv;
   };
 
   # We can choose:
@@ -7815,7 +7817,7 @@ with pkgs;
     # hack fixes the hack, *sigh*.
     /**/ if name == "glibc" then __targetPackages.glibcCross or glibcCross
     else if name == "uclibc" then uclibcCross
-    else if name == "msvcrt" then windows.mingw_w64
+    else if name == "msvcrt" then __targetPackages.windows.mingw_w64 or windows.mingw_w64
     else if name == "libSystem" then darwin.xcode
     else throw "Unknown libc";
 
@@ -12561,17 +12563,12 @@ with pkgs;
     };
 
     mingw_w64 = callPackage ../os-specific/windows/mingw-w64 {
-      gccCross = gccCrossStageStatic;
-      binutils = binutils;
+      stdenv = crossLibcStdenv;
     };
 
-    mingw_w64_headers = callPackage ../os-specific/windows/mingw-w64 {
-      onlyHeaders = true;
-    };
+    mingw_w64_headers = callPackage ../os-specific/windows/mingw-w64/headers.nix { };
 
-    mingw_w64_pthreads = callPackage ../os-specific/windows/mingw-w64 {
-      onlyPthreads = true;
-    };
+    mingw_w64_pthreads = callPackage ../os-specific/windows/mingw-w64/pthreads.nix { };
 
     pthreads = callPackage ../os-specific/windows/pthread-w32 {
       mingw_headers = mingw_headers3;