summary refs log tree commit diff
path: root/pkgs/stdenv
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/stdenv')
-rw-r--r--pkgs/stdenv/adapters.nix8
-rw-r--r--pkgs/stdenv/generic/default.nix8
2 files changed, 13 insertions, 3 deletions
diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix
index 87d3938f13d..0b6707bf8b1 100644
--- a/pkgs/stdenv/adapters.nix
+++ b/pkgs/stdenv/adapters.nix
@@ -96,8 +96,12 @@ rec {
                     name = name + "-" + cross.config;
                     nativeBuildInputs = nativeBuildInputsDrvs
                       ++ nativeInputsFromBuildInputs
-                      ++ [ gccCross binutilsCross ] ++
-                      stdenv.lib.optional selfNativeBuildInput nativeDrv;
+                      ++ [ gccCross binutilsCross ]
+                      ++ stdenv.lib.optional selfNativeBuildInput nativeDrv
+                        # without proper `file` command, libtool sometimes fails
+                        # to recognize 64-bit DLLs
+                      ++ stdenv.lib.optional (cross.config  == "x86_64-w64-mingw32") pkgs.file
+                      ;
 
                     # Cross-linking dynamic libraries, every buildInput should
                     # be propagated because ld needs the -rpath-link to find
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index a51289fa901..b2891030728 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -196,7 +196,13 @@ let
           buildInputs = if crossConfig != null then buildInputs' else [];
           propagatedBuildInputs = if crossConfig != null then propagatedBuildInputs else [];
           # Inputs built by the usual native compiler.
-          nativeBuildInputs = nativeBuildInputs ++ (if crossConfig == null then buildInputs' else []);
+          nativeBuildInputs = nativeBuildInputs
+            ++ lib.optionals (crossConfig == null) buildInputs'
+            ++ lib.optional
+                (result.isCygwin
+                  || (crossConfig != null && lib.hasSuffix "mingw32" crossConfig))
+                ../../build-support/setup-hooks/win-dll-link.sh
+            ;
           propagatedNativeBuildInputs = propagatedNativeBuildInputs ++
             (if crossConfig == null then propagatedBuildInputs else []);
         } // ifDarwin {