diff --git a/pkgs/build-support/setup-hooks/cygwin-dll-link.sh b/pkgs/os-specific/cygwin/cygwin-dll-link-hook/cygwin-dll-link.sh similarity index 98% rename from pkgs/build-support/setup-hooks/cygwin-dll-link.sh rename to pkgs/os-specific/cygwin/cygwin-dll-link-hook/cygwin-dll-link.sh index a9309925e658..371ba633edc8 100644 --- a/pkgs/build-support/setup-hooks/cygwin-dll-link.sh +++ b/pkgs/os-specific/cygwin/cygwin-dll-link-hook/cygwin-dll-link.sh @@ -18,7 +18,7 @@ addOutputDLLPaths() { postInstallHooks+=(addOutputDLLPaths) _dllDeps() { - "$OBJDUMP" -p "$1" \ + @objdump@ -p "$1" \ | sed -n 's/.*DLL Name: \(.*\)/\1/p' \ | sort -u } diff --git a/pkgs/os-specific/cygwin/cygwin-dll-link-hook/default.nix b/pkgs/os-specific/cygwin/cygwin-dll-link-hook/default.nix new file mode 100644 index 000000000000..b3185140f2ea --- /dev/null +++ b/pkgs/os-specific/cygwin/cygwin-dll-link-hook/default.nix @@ -0,0 +1,13 @@ +{ + lib, + makeSetupHook, + binutils-unwrapped, + stdenv, + callPackage, +}: +makeSetupHook { + name = "cygwin-dll-link-hook"; + substitutions = { + objdump = "${lib.getBin binutils-unwrapped}/${stdenv.targetPlatform.config}/bin/objdump"; + }; +} ./cygwin-dll-link.sh diff --git a/pkgs/os-specific/cygwin/default.nix b/pkgs/os-specific/cygwin/default.nix index 09f69ff9f9b2..d1217f7880c1 100644 --- a/pkgs/os-specific/cygwin/default.nix +++ b/pkgs/os-specific/cygwin/default.nix @@ -21,5 +21,7 @@ makeScopeWithSplicing' { # this is here to avoid symlinks being made to cygwin1.dll in /nix/store newlib-cygwin-nobin = callPackage ./newlib-cygwin/nobin.nix { }; newlib-cygwin-headers = callPackage ./newlib-cygwin { headersOnly = true; }; + + cygwinDllLinkHook = callPackage ./cygwin-dll-link-hook { }; }; } diff --git a/pkgs/stdenv/cross/default.nix b/pkgs/stdenv/cross/default.nix index cc53957eee0d..b194c780a319 100644 --- a/pkgs/stdenv/cross/default.nix +++ b/pkgs/stdenv/cross/default.nix @@ -83,7 +83,10 @@ lib.init bootStages || p.isGenode; in f hostPlatform && !(f buildPlatform) - ) buildPackages.updateAutotoolsGnuConfigScriptsHook; + ) buildPackages.updateAutotoolsGnuConfigScriptsHook + ++ lib.optional ( + hostPlatform.isCygwin && !buildPlatform.isCygwin + ) buildPackages.cygwin.cygwinDllLinkHook; }) ); in diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index cdfeb34a2411..d66fbf71035e 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -475,7 +475,6 @@ let nativeBuildInputs ++ optional separateDebugInfo' ../../build-support/setup-hooks/separate-debug-info.sh ++ optional isWindows ../../build-support/setup-hooks/win-dll-link.sh - ++ optional isCygwin ../../build-support/setup-hooks/cygwin-dll-link.sh ++ optionals doCheck nativeCheckInputs ++ optionals doInstallCheck nativeInstallCheckInputs;