about summary refs log tree commit diff
path: root/nixpkgs/pkgs/os-specific/windows/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/os-specific/windows/default.nix')
-rw-r--r--nixpkgs/pkgs/os-specific/windows/default.nix52
1 files changed, 34 insertions, 18 deletions
diff --git a/nixpkgs/pkgs/os-specific/windows/default.nix b/nixpkgs/pkgs/os-specific/windows/default.nix
index 4621c2da10fb..7f1634d5c0b3 100644
--- a/nixpkgs/pkgs/os-specific/windows/default.nix
+++ b/nixpkgs/pkgs/os-specific/windows/default.nix
@@ -1,29 +1,45 @@
-{ newScope, crossLibcStdenv }: let
+{ stdenv, buildPackages
+, newScope, overrideCC, crossLibcStdenv, libcCross
+}:
 
-  callPackage = newScope self;
+stdenv.lib.makeScope newScope (self: with self; {
 
-  self = {
-    cygwinSetup = callPackage ./cygwin-setup { };
+  cygwinSetup = callPackage ./cygwin-setup { };
 
-    jom = callPackage ./jom { };
+  jom = callPackage ./jom { };
 
-    w32api = callPackage ./w32api { };
+  w32api = callPackage ./w32api { };
 
-    mingwrt = callPackage ./mingwrt { };
-    mingw_runtime = self.mingwrt;
+  mingwrt = callPackage ./mingwrt { };
+  mingw_runtime = mingwrt;
 
-    mingw_w64 = callPackage ./mingw-w64 {
-      stdenv = crossLibcStdenv;
-    };
-
-    mingw_w64_headers = callPackage ./mingw-w64/headers.nix { };
+  mingw_w64 = callPackage ./mingw-w64 {
+    stdenv = crossLibcStdenv;
+  };
 
-    mingw_w64_pthreads = callPackage ./mingw-w64/pthreads.nix { };
+  crossThreadsStdenv = overrideCC crossLibcStdenv
+    (if stdenv.hostPlatform.useLLVM or false
+     then buildPackages.llvmPackages_8.lldClangNoLibcxx
+     else buildPackages.gccCrossStageStatic.override (old: {
+       bintools = old.bintools.override {
+         libc = libcCross;
+       };
+       libc = libcCross;
+     }));
 
-    pthreads = callPackage ./pthread-w32 { };
+  mingw_w64_headers = callPackage ./mingw-w64/headers.nix { };
 
-    wxMSW = callPackage ./wxMSW-2.8 { };
+  mingw_w64_pthreads = callPackage ./mingw-w64/pthreads.nix {
+    stdenv = crossThreadsStdenv;
+  };
 
-    libgnurx = callPackage ./libgnurx { };
+  mcfgthreads = callPackage ./mcfgthreads {
+    stdenv = crossThreadsStdenv;
   };
-in self
+
+  pthreads = callPackage ./pthread-w32 { };
+
+  wxMSW = callPackage ./wxMSW-2.8 { };
+
+  libgnurx = callPackage ./libgnurx { };
+})