diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2024-01-24 01:50:04 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2024-01-24 01:51:43 +0300 |
| commit | 03f23c1a2fd36b33820750ddf41246ad322baef7 (patch) | |
| tree | bae2f1140edde529c161fbd164cbe3e4d4b2cae4 | |
| parent | 1b8e871f1c3b2aca174ac1a4d46613355a956fcc (diff) | |
| download | rust-03f23c1a2fd36b33820750ddf41246ad322baef7.tar.gz rust-03f23c1a2fd36b33820750ddf41246ad322baef7.zip | |
linker: Fix Rust dylib crate extension on windows-msvc
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/link.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs index e3b4189b3f5..f098fc9cb59 100644 --- a/compiler/rustc_codegen_ssa/src/back/link.rs +++ b/compiler/rustc_codegen_ssa/src/back/link.rs @@ -2866,7 +2866,11 @@ fn add_dynamic_crate(cmd: &mut dyn Linker, sess: &Session, cratepath: &Path) { if let Some(dir) = parent { cmd.include_path(&rehome_sysroot_lib_dir(sess, dir)); } - let stem = cratepath.file_stem().unwrap().to_str().unwrap(); + // "<dir>/name.dll -> name.dll" on windows-msvc + // "<dir>/name.dll -> name" on windows-gnu + // "<dir>/libname.<ext> -> name" elsewhere + let stem = if sess.target.is_like_msvc { cratepath.file_name() } else { cratepath.file_stem() }; + let stem = stem.unwrap().to_str().unwrap(); // Convert library file-stem into a cc -l argument. let prefix = if stem.starts_with("lib") && !sess.target.is_like_windows { 3 } else { 0 }; cmd.link_dylib_by_name(&stem[prefix..], false, true); |
