Skip to content

Commit 5ecc18f

Browse files
authored
Rollup merge of #70937 - mati865:mingw-staticlib-suffix, r=petrochenkov
Fix staticlib name for *-pc-windows-gnu targets Fix #69904 Guess this will need FCP but opened PR anyway to bring the attention. In short Rust has been using wrong `foo.lib` format for static libraries when building for `*-pc-windows-gnu` since version [1.8.0](34b4e66). [LD](https://github.com/bminor/binutils-gdb/blob/f4a220077b03af3a1f905b7dc6dc84c0a06d582f/ld/emultempl/pe.em#L2224-L2227) and [LLD](https://github.com/llvm/llvm-project/blob/0605f5fbe755326e3dbc8daa4fc34453b8c5ac0e/lld/MinGW/Driver.cpp#L140-L141) agree in that regard and only accept static libraries with `libfoo.a` format. So the only thing to break here is when somebody added a hack to rename created library to proper format (like [here](https://gitlab.gnome.org/GNOME/librsvg/-/commit/ad86ab8580c8779fc3eb2bee2422bb116919844e#d5b4de16d947214ec306bd57bed1bd23a939b5f9_197_194)).
2 parents f9c0ea2 + b9d9689 commit 5ecc18f

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

src/librustc_target/spec/windows_base.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ pub fn opts() -> TargetOptions {
7575
dll_prefix: String::new(),
7676
dll_suffix: ".dll".to_string(),
7777
exe_suffix: ".exe".to_string(),
78-
staticlib_prefix: String::new(),
79-
staticlib_suffix: ".lib".to_string(),
78+
staticlib_prefix: "lib".to_string(),
79+
staticlib_suffix: ".a".to_string(),
8080
target_family: Some("windows".to_string()),
8181
is_like_windows: true,
8282
allows_weak_linkage: false,

src/test/run-make-fulldeps/output-type-permutations/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ all:
7878
rm $(TMPDIR)/$(call BIN,foo)
7979
$(RUSTC) foo.rs --crate-type=dylib --emit=link=$(TMPDIR)/$(call BIN,foo)
8080
rm $(TMPDIR)/$(call BIN,foo)
81-
rm -f $(TMPDIR)/{lib,}foo.{dll.exp,dll.lib,pdb,dll.a,exe.lib}
81+
rm -f $(TMPDIR)/{lib,}foo.{dll.exp,dll.lib,pdb,dll.a,exe.a}
8282
[ "$$(ls -1 $(TMPDIR) | wc -l)" -eq "0" ] || (ls -1 $(TMPDIR) && exit 1)
8383

8484
$(RUSTC) foo.rs --crate-type=staticlib -o $(TMPDIR)/foo

src/test/run-make-fulldeps/tools.mk

+5
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,13 @@ RUN = PATH="$(PATH):$(TARGET_RPATH_DIR)" $(RUN_BINFILE)
4444
FAIL = PATH="$(PATH):$(TARGET_RPATH_DIR)" $(RUN_BINFILE) && exit 1 || exit 0
4545
DYLIB_GLOB = $(1)*.dll
4646
DYLIB = $(TMPDIR)/$(1).dll
47+
ifdef IS_MSVC
4748
STATICLIB = $(TMPDIR)/$(1).lib
4849
STATICLIB_GLOB = $(1)*.lib
50+
else
51+
STATICLIB = $(TMPDIR)/lib$(1).a
52+
STATICLIB_GLOB = lib$(1)*.a
53+
endif
4954
BIN = $(1).exe
5055
LLVM_FILECHECK := $(shell cygpath -u "$(LLVM_FILECHECK)")
5156
else

0 commit comments

Comments
 (0)