diff --git a/src/cargo/core/compiler/build_context/target_info.rs b/src/cargo/core/compiler/build_context/target_info.rs index 39346b34ccb..5b7dac40bab 100644 --- a/src/cargo/core/compiler/build_context/target_info.rs +++ b/src/cargo/core/compiler/build_context/target_info.rs @@ -257,6 +257,17 @@ impl TargetInfo { flavor: FileFlavor::Normal, should_replace_hyphens: false, }) + } else if target_triple.ends_with("windows-gnu") + && crate_type.ends_with("dylib") + && suffix == ".dll" + { + // LD can link DLL directly, but LLD requires the import library. + ret.push(FileType { + suffix: ".dll.a".to_string(), + prefix: "lib".to_string(), + flavor: FileFlavor::Normal, + should_replace_hyphens: false, + }) } // See rust-lang/cargo#4535. diff --git a/tests/testsuite/build.rs b/tests/testsuite/build.rs index b116635b3d9..dc987c6e602 100644 --- a/tests/testsuite/build.rs +++ b/tests/testsuite/build.rs @@ -3810,8 +3810,7 @@ fn cdylib_final_outputs() { if cfg!(target_env = "msvc") { vec!["foo_bar.dll.lib", "foo_bar.dll"] } else { - // FIXME https://github.com/rust-lang/cargo/pull/6875 - vec!["foo_bar.dll"] + vec!["foo_bar.dll", "libfoo_bar.dll.a"] } } else if cfg!(target_os = "macos") { vec!["libfoo_bar.dylib"] diff --git a/tests/testsuite/build_script.rs b/tests/testsuite/build_script.rs index eb79675f79b..caaf45a968c 100644 --- a/tests/testsuite/build_script.rs +++ b/tests/testsuite/build_script.rs @@ -1663,7 +1663,6 @@ fn build_script_with_dynamic_native_dependency() { let src = root.join(&file); let dst = out_dir.join(&file); fs::copy(src, dst).unwrap(); - // FIXME https://github.com/rust-lang/cargo/pull/6875 if cfg!(target_env = "msvc") { fs::copy(root.join("builder.dll.lib"), out_dir.join("builder.dll.lib")).unwrap(); diff --git a/tests/testsuite/out_dir.rs b/tests/testsuite/out_dir.rs index d68bf27bdb7..15b26f61980 100644 --- a/tests/testsuite/out_dir.rs +++ b/tests/testsuite/out_dir.rs @@ -92,8 +92,7 @@ fn dynamic_library_with_debug() { &["libfoo.so"], &["libfoo.dylib"], &["foo.dll", "foo.dll.lib"], - // FIXME https://github.com/rust-lang/cargo/pull/6875 - &["foo.dll"], + &["foo.dll", "libfoo.dll.a"], ); } diff --git a/tests/testsuite/plugins.rs b/tests/testsuite/plugins.rs index f714399f892..0035e20315e 100644 --- a/tests/testsuite/plugins.rs +++ b/tests/testsuite/plugins.rs @@ -180,8 +180,7 @@ fn plugin_with_dynamic_native_dependency() { let src = root.join(&file); let dst = out_dir.join(&file); fs::copy(src, dst).unwrap(); - // FIXME https://github.com/rust-lang/cargo/pull/6875 - if cfg!(target_env = "msvc") { + if cfg!(target_env = "msvc") { fs::copy(root.join("builder.dll.lib"), out_dir.join("builder.dll.lib")).unwrap(); }