@@ -457,6 +457,21 @@ fn print_native_static_libs(sess: &Session, all_native_libs: &[NativeLibrary]) {
457
457
}
458
458
}
459
459
460
+ fn get_file_path ( sess : & Session , name : & str ) -> PathBuf {
461
+ let fs = sess. target_filesearch ( PathKind :: Native ) ;
462
+ let file_path = fs. get_lib_path ( ) . join ( name) ;
463
+ if file_path. exists ( ) {
464
+ return file_path
465
+ }
466
+ for search_path in fs. search_paths ( ) {
467
+ let file_path = search_path. dir . join ( name) ;
468
+ if file_path. exists ( ) {
469
+ return file_path
470
+ }
471
+ }
472
+ PathBuf :: from ( name)
473
+ }
474
+
460
475
// Create a dynamic library or executable
461
476
//
462
477
// This will invoke the system linker/cc to create the resulting file. This
@@ -472,7 +487,6 @@ fn link_natively(sess: &Session,
472
487
// The invocations of cc share some flags across platforms
473
488
let ( pname, mut cmd) = get_linker ( sess, & linker, flavor) ;
474
489
475
- let root = sess. target_filesearch ( PathKind :: Native ) . get_lib_path ( ) ;
476
490
if let Some ( args) = sess. target . target . options . pre_link_args . get ( & flavor) {
477
491
cmd. args ( args) ;
478
492
}
@@ -500,12 +514,12 @@ fn link_natively(sess: &Session,
500
514
& sess. target . target . options . pre_link_objects_dll
501
515
} ;
502
516
for obj in pre_link_objects {
503
- cmd. arg ( root . join ( obj) ) ;
517
+ cmd. arg ( get_file_path ( sess , obj) ) ;
504
518
}
505
519
506
520
if crate_type == config:: CrateType :: Executable && sess. crt_static ( ) {
507
521
for obj in & sess. target . target . options . pre_link_objects_exe_crt {
508
- cmd. arg ( root . join ( obj) ) ;
522
+ cmd. arg ( get_file_path ( sess , obj) ) ;
509
523
}
510
524
}
511
525
@@ -529,11 +543,11 @@ fn link_natively(sess: &Session,
529
543
cmd. args ( args) ;
530
544
}
531
545
for obj in & sess. target . target . options . post_link_objects {
532
- cmd. arg ( root . join ( obj) ) ;
546
+ cmd. arg ( get_file_path ( sess , obj) ) ;
533
547
}
534
548
if sess. crt_static ( ) {
535
549
for obj in & sess. target . target . options . post_link_objects_crt {
536
- cmd. arg ( root . join ( obj) ) ;
550
+ cmd. arg ( get_file_path ( sess , obj) ) ;
537
551
}
538
552
}
539
553
if let Some ( args) = sess. target . target . options . post_link_args . get ( & flavor) {
0 commit comments