@@ -303,15 +303,16 @@ impl LinkerFlavor {
303
303
}
304
304
}
305
305
306
- fn infer_linker_hints ( linker_stem : & str ) -> ( Option < Cc > , Option < Lld > ) {
306
+ fn infer_linker_hints ( linker_stem : & str ) -> Result < Self , ( Option < Cc > , Option < Lld > ) > {
307
307
// Remove any version postfix.
308
308
let stem = linker_stem
309
309
. rsplit_once ( '-' )
310
310
. and_then ( |( lhs, rhs) | rhs. chars ( ) . all ( char:: is_numeric) . then_some ( lhs) )
311
311
. unwrap_or ( linker_stem) ;
312
312
313
- // GCC/Clang can have an optional target prefix.
314
- if stem == "emcc"
313
+ if stem == "llvm-bitcode-linker" {
314
+ Ok ( Self :: Llbc )
315
+ } else if stem == "emcc" // GCC/Clang can have an optional target prefix.
315
316
|| stem == "gcc"
316
317
|| stem. ends_with ( "-gcc" )
317
318
|| stem == "g++"
@@ -321,19 +322,19 @@ impl LinkerFlavor {
321
322
|| stem == "clang++"
322
323
|| stem. ends_with ( "-clang++" )
323
324
{
324
- ( Some ( Cc :: Yes ) , Some ( Lld :: No ) )
325
+ Err ( ( Some ( Cc :: Yes ) , Some ( Lld :: No ) ) )
325
326
} else if stem == "wasm-ld"
326
327
|| stem. ends_with ( "-wasm-ld" )
327
328
|| stem == "ld.lld"
328
329
|| stem == "lld"
329
330
|| stem == "rust-lld"
330
331
|| stem == "lld-link"
331
332
{
332
- ( Some ( Cc :: No ) , Some ( Lld :: Yes ) )
333
+ Err ( ( Some ( Cc :: No ) , Some ( Lld :: Yes ) ) )
333
334
} else if stem == "ld" || stem. ends_with ( "-ld" ) || stem == "link" {
334
- ( Some ( Cc :: No ) , Some ( Lld :: No ) )
335
+ Err ( ( Some ( Cc :: No ) , Some ( Lld :: No ) ) )
335
336
} else {
336
- ( None , None )
337
+ Err ( ( None , None ) )
337
338
}
338
339
}
339
340
@@ -357,7 +358,10 @@ impl LinkerFlavor {
357
358
}
358
359
359
360
pub fn with_linker_hints ( self , linker_stem : & str ) -> LinkerFlavor {
360
- self . with_hints ( LinkerFlavor :: infer_linker_hints ( linker_stem) )
361
+ match LinkerFlavor :: infer_linker_hints ( linker_stem) {
362
+ Ok ( linker_flavor) => linker_flavor,
363
+ Err ( hints) => self . with_hints ( hints) ,
364
+ }
361
365
}
362
366
363
367
pub fn check_compatibility ( self , cli : LinkerFlavorCli ) -> Option < String > {
0 commit comments