@@ -319,6 +319,21 @@ fn link_rlib<'a, B: ArchiveBuilder<'a>>(
319
319
for lib in codegen_results. crate_info . used_libraries . iter ( ) {
320
320
match lib. kind {
321
321
NativeLibKind :: Static { bundle : None | Some ( true ) , whole_archive } => {
322
+ if flavor == RlibFlavor :: Normal
323
+ && whole_archive == Some ( true )
324
+ && !sess. opts . unstable_opts . split_bundled_libs
325
+ {
326
+ // Don't allow mixing +bundle with +whole_archive since an rlib may contain
327
+ // multiple native libs, some of which are +whole-archive and some of which are
328
+ // -whole-archive and it isn't clear how we can currently handle such a
329
+ // situation correctly.
330
+ // See https://github.com/rust-lang/rust/issues/88085#issuecomment-901050897
331
+ sess. err (
332
+ "the linking modifiers `+bundle` and `+whole-archive` are not compatible \
333
+ with each other when generating rlibs",
334
+ ) ;
335
+ }
336
+
322
337
let Some ( name) = lib. name else {
323
338
continue ;
324
339
} ;
@@ -329,27 +344,13 @@ fn link_rlib<'a, B: ArchiveBuilder<'a>>(
329
344
& lib_search_paths,
330
345
sess,
331
346
) ;
332
- if flavor == RlibFlavor :: Normal {
333
- if whole_archive == Some ( true ) && !sess. opts . unstable_opts . split_bundled_libs {
334
- // Don't allow mixing +bundle with +whole_archive since an rlib may contain
335
- // multiple native libs, some of which are +whole-archive and some of which are
336
- // -whole-archive and it isn't clear how we can currently handle such a
337
- // situation correctly.
338
- // See https://github.com/rust-lang/rust/issues/88085#issuecomment-901050897
339
- sess. err (
340
- "the linking modifiers `+bundle` and `+whole-archive` are not compatible \
341
- with each other when generating rlibs",
342
- ) ;
343
- }
344
347
345
- if sess. opts . unstable_opts . split_bundled_libs {
346
- let suffix = & sess. target . staticlib_suffix ;
347
- let crate_name = out_filename. to_str ( ) . unwrap ( ) ;
348
- let bundle_lib =
349
- PathBuf :: from ( & format ! ( "{crate_name}.bundle.{name}{suffix}" ) ) ;
350
- fs:: copy ( location, bundle_lib) . unwrap ( ) ;
351
- continue ;
352
- }
348
+ if ( flavor == RlibFlavor :: Normal ) && sess. opts . unstable_opts . split_bundled_libs {
349
+ let suffix = & sess. target . staticlib_suffix ;
350
+ let crate_name = out_filename. to_str ( ) . unwrap ( ) ;
351
+ let bundle_lib = PathBuf :: from ( & format ! ( "{crate_name}.bundle.{name}{suffix}" ) ) ;
352
+ fs:: copy ( location, bundle_lib) . unwrap ( ) ;
353
+ continue ;
353
354
}
354
355
355
356
ab. add_archive ( & location, |_| false ) . unwrap_or_else ( |e| {
0 commit comments