summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/os-specific/windows/default.nix22
-rw-r--r--pkgs/os-specific/windows/mcfgthreads/default.nix19
-rw-r--r--pkgs/top-level/all-packages.nix2
3 files changed, 40 insertions, 3 deletions
diff --git a/pkgs/os-specific/windows/default.nix b/pkgs/os-specific/windows/default.nix
index 8c2f3ca5498..7f1634d5c0b 100644
--- a/pkgs/os-specific/windows/default.nix
+++ b/pkgs/os-specific/windows/default.nix
@@ -1,4 +1,6 @@
-{ stdenv, newScope, crossLibcStdenv }:
+{ stdenv, buildPackages
+, newScope, overrideCC, crossLibcStdenv, libcCross
+}:
 
 stdenv.lib.makeScope newScope (self: with self; {
 
@@ -15,9 +17,25 @@ stdenv.lib.makeScope newScope (self: with self; {
     stdenv = crossLibcStdenv;
   };
 
+  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;
+     }));
+
   mingw_w64_headers = callPackage ./mingw-w64/headers.nix { };
 
-  mingw_w64_pthreads = callPackage ./mingw-w64/pthreads.nix { };
+  mingw_w64_pthreads = callPackage ./mingw-w64/pthreads.nix {
+    stdenv = crossThreadsStdenv;
+  };
+
+  mcfgthreads = callPackage ./mcfgthreads {
+    stdenv = crossThreadsStdenv;
+  };
 
   pthreads = callPackage ./pthread-w32 { };
 
diff --git a/pkgs/os-specific/windows/mcfgthreads/default.nix b/pkgs/os-specific/windows/mcfgthreads/default.nix
new file mode 100644
index 00000000000..468e92a1e9d
--- /dev/null
+++ b/pkgs/os-specific/windows/mcfgthreads/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchFromGitHub, autoreconfHook }:
+
+stdenv.mkDerivation {
+  pname = "mcfgthreads";
+  version = "git";
+  src = fetchFromGitHub {
+    owner = "lhmouse";
+    repo = "mcfgthread";
+    rev = "9570e5ca7b98002d707c502c919d951bf256b9c6";
+    sha256 = "10y2x3x601a7c1hkd6zlr3xpfsnlr05xl28v23clf619756a5755";
+  };
+  # Don't want prebuilt binaries sneaking in.
+  postUnpack = ''
+    rm -r "$sourceRoot/debug" "$sourceRoot/release"
+  '';
+  nativeBuildInputs = [
+    autoreconfHook
+  ];
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 5a1b9cfab69..4ca16cc81e6 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -7577,7 +7577,7 @@ in
     ../development/compilers/gcc/libstdc++-hook.sh;
 
   crossLibcStdenv = overrideCC stdenv
-    (if stdenv.targetPlatform.useLLVM or false
+    (if stdenv.hostPlatform.useLLVM or false
      then buildPackages.llvmPackages_8.lldClangNoLibc
      else buildPackages.gccCrossStageStatic);