Rollup merge of #110917 - Be-ing:whole_archive_with_staticlib_fix, r=petrochenkov
only error combining +whole-archive and +bundle for rlibs
Fixes https://github.com/rust-lang/rust/issues/110912
Checking `flavor == RlibFlavor::Normal` was accidentally lost in 601fc8b36b
https://github.com/rust-lang/rust/pull/105601
That caused combining +whole-archive and +bundle link modifiers on non-rlib crates to fail with a confusing error message saying that combination is unstable for rlibs. In particular, this caused the build to fail when +whole-archive was used on staticlib crates, even though +whole-archive effectively does nothing on non-bin crates because the final linker invocation is left to an external build system.
cc ``@petrochenkov``
This commit is contained in:
commit
33f15e899d
@ -349,7 +349,10 @@ fn link_rlib<'a>(
|
|||||||
let NativeLibKind::Static { bundle: None | Some(true), whole_archive } = lib.kind else {
|
let NativeLibKind::Static { bundle: None | Some(true), whole_archive } = lib.kind else {
|
||||||
continue;
|
continue;
|
||||||
};
|
};
|
||||||
if whole_archive == Some(true) && !codegen_results.crate_info.feature_packed_bundled_libs {
|
if whole_archive == Some(true)
|
||||||
|
&& flavor == RlibFlavor::Normal
|
||||||
|
&& !codegen_results.crate_info.feature_packed_bundled_libs
|
||||||
|
{
|
||||||
sess.emit_err(errors::IncompatibleLinkingModifiers);
|
sess.emit_err(errors::IncompatibleLinkingModifiers);
|
||||||
}
|
}
|
||||||
if flavor == RlibFlavor::Normal && let Some(filename) = lib.filename {
|
if flavor == RlibFlavor::Normal && let Some(filename) = lib.filename {
|
||||||
|
Loading…
Reference in New Issue
Block a user