@@ -491,19 +491,24 @@ impl Step for Llvm {
491
491
492
492
cfg. build ( ) ;
493
493
494
- // When building LLVM with LLVM_LINK_LLVM_DYLIB for macOS, an unversioned
495
- // libLLVM.dylib will be built. However, llvm-config will still look
496
- // for a versioned path like libLLVM-14.dylib. Manually create a symbolic
497
- // link to make llvm-config happy.
498
- if builder. llvm_link_shared ( ) && target. contains ( "apple-darwin" ) {
494
+ // Helper to find the name of LLVM's shared library on darwin and linux.
495
+ let find_llvm_lib_name = |extension| {
499
496
let mut cmd = Command :: new ( & res. llvm_config ) ;
500
497
let version = output ( cmd. arg ( "--version" ) ) ;
501
498
let major = version. split ( '.' ) . next ( ) . unwrap ( ) ;
502
- let lib_name = match llvm_version_suffix {
503
- Some ( s ) => format ! ( "libLLVM-{major}{s}.dylib " ) ,
504
- None => format ! ( "libLLVM-{major}.dylib " ) ,
499
+ let lib_name = match & llvm_version_suffix {
500
+ Some ( version_suffix ) => format ! ( "libLLVM-{major}{version_suffix}.{extension} " ) ,
501
+ None => format ! ( "libLLVM-{major}.{extension} " ) ,
505
502
} ;
503
+ lib_name
504
+ } ;
506
505
506
+ // When building LLVM with LLVM_LINK_LLVM_DYLIB for macOS, an unversioned
507
+ // libLLVM.dylib will be built. However, llvm-config will still look
508
+ // for a versioned path like libLLVM-14.dylib. Manually create a symbolic
509
+ // link to make llvm-config happy.
510
+ if builder. llvm_link_shared ( ) && target. contains ( "apple-darwin" ) {
511
+ let lib_name = find_llvm_lib_name ( "dylib" ) ;
507
512
let lib_llvm = out_dir. join ( "build" ) . join ( "lib" ) . join ( lib_name) ;
508
513
if !lib_llvm. exists ( ) {
509
514
t ! ( builder. symlink_file( "libLLVM.dylib" , & lib_llvm) ) ;
0 commit comments