@@ -336,6 +336,7 @@ fn link_rlib<'a, B: ArchiveBuilder<'a>>(
336
336
| NativeLibKind :: Dylib { .. }
337
337
| NativeLibKind :: Framework { .. }
338
338
| NativeLibKind :: RawDylib
339
+ | NativeLibKind :: LinkArg
339
340
| NativeLibKind :: Unspecified => continue ,
340
341
}
341
342
if let Some ( name) = lib. name {
@@ -1287,6 +1288,7 @@ fn print_native_static_libs(sess: &Session, all_native_libs: &[NativeLib]) {
1287
1288
}
1288
1289
// These are included, no need to print them
1289
1290
NativeLibKind :: Static { bundle : None | Some ( true ) , .. }
1291
+ | NativeLibKind :: LinkArg
1290
1292
| NativeLibKind :: RawDylib => None ,
1291
1293
}
1292
1294
} )
@@ -2225,6 +2227,9 @@ fn add_local_native_libraries(
2225
2227
// FIXME(#58713): Proper handling for raw dylibs.
2226
2228
bug ! ( "raw_dylib feature not yet implemented" ) ;
2227
2229
}
2230
+ NativeLibKind :: LinkArg => {
2231
+ cmd. arg ( name) ;
2232
+ }
2228
2233
}
2229
2234
}
2230
2235
}
@@ -2362,19 +2367,34 @@ fn add_upstream_rust_crates<'a, B: ArchiveBuilder<'a>>(
2362
2367
( lib. name , lib. kind , lib. verbatim )
2363
2368
} ;
2364
2369
2365
- if let NativeLibKind :: Static { bundle : Some ( false ) , whole_archive } =
2366
- lib . kind
2367
- {
2368
- let verbatim = lib . verbatim . unwrap_or ( false ) ;
2369
- if whole_archive == Some ( true ) {
2370
+ match lib . kind {
2371
+ NativeLibKind :: Static {
2372
+ bundle : Some ( false ) ,
2373
+ whole_archive : Some ( true ) ,
2374
+ } => {
2370
2375
cmd. link_whole_staticlib (
2371
2376
name,
2372
- verbatim,
2377
+ lib . verbatim . unwrap_or ( false ) ,
2373
2378
search_path. get_or_init ( || archive_search_paths ( sess) ) ,
2374
2379
) ;
2375
- } else {
2376
- cmd. link_staticlib ( name, verbatim) ;
2377
2380
}
2381
+ NativeLibKind :: Static {
2382
+ bundle : Some ( false ) ,
2383
+ whole_archive : Some ( false ) | None ,
2384
+ } => {
2385
+ cmd. link_staticlib ( name, lib. verbatim . unwrap_or ( false ) ) ;
2386
+ }
2387
+ NativeLibKind :: LinkArg => {
2388
+ cmd. arg ( name) ;
2389
+ }
2390
+ NativeLibKind :: Dylib { .. }
2391
+ | NativeLibKind :: Framework { .. }
2392
+ | NativeLibKind :: Unspecified
2393
+ | NativeLibKind :: RawDylib => { }
2394
+ NativeLibKind :: Static {
2395
+ bundle : Some ( true ) | None ,
2396
+ whole_archive : _,
2397
+ } => { }
2378
2398
}
2379
2399
}
2380
2400
}
@@ -2565,7 +2585,7 @@ fn add_upstream_native_libraries(
2565
2585
// already included them in add_local_native_libraries and
2566
2586
// add_upstream_rust_crates
2567
2587
NativeLibKind :: Static { .. } => { }
2568
- NativeLibKind :: RawDylib => { }
2588
+ NativeLibKind :: RawDylib | NativeLibKind :: LinkArg => { }
2569
2589
}
2570
2590
}
2571
2591
}
0 commit comments