@@ -561,6 +561,29 @@ fn link_binary(sess: session::session,
561
561
obj_filename : str ,
562
562
out_filename : str ,
563
563
lm : link_meta ) {
564
+ // Converts a library file name into a gcc -l argument
565
+ fn unlib ( config : @session:: config , filename : str ) -> str {
566
+ let rmlib =
567
+ bind fn ( config: @session:: config, filename: str ) -> str {
568
+ if config. os == session:: os_macos ||
569
+ config. os == session:: os_linux &&
570
+ str:: find ( filename, "lib" ) == 0 {
571
+ ret str:: slice ( filename, 3 u,
572
+ str:: byte_len ( filename) ) ;
573
+ } else { ret filename; }
574
+ } ( config, _) ;
575
+ fn rmext ( filename : str ) -> str {
576
+ let parts = str:: split ( filename, '.' as u8 ) ;
577
+ vec:: pop ( parts) ;
578
+ ret str:: connect ( parts, "." ) ;
579
+ }
580
+ ret alt config. os {
581
+ session:: os_macos. { rmext ( rmlib ( filename) ) }
582
+ session:: os_linux. { rmext ( rmlib ( filename) ) }
583
+ _ { rmext( filename) }
584
+ } ;
585
+ }
586
+
564
587
let output = if sess. building_library ( ) {
565
588
let long_libname =
566
589
std:: os:: dylib_filename ( #fmt ( "%s-%s-%s" ,
@@ -585,29 +608,6 @@ fn link_binary(sess: session::session,
585
608
lib_cmd = "-dynamiclib" ;
586
609
} else { lib_cmd = "-shared" ; }
587
610
588
- // Converts a library file name into a gcc -l argument
589
- fn unlib ( config : @session:: config , filename : str ) -> str {
590
- let rmlib =
591
- bind fn ( config: @session:: config, filename: str ) -> str {
592
- if config. os == session:: os_macos ||
593
- config. os == session:: os_linux &&
594
- str:: find ( filename, "lib" ) == 0 {
595
- ret str:: slice ( filename, 3 u,
596
- str:: byte_len ( filename) ) ;
597
- } else { ret filename; }
598
- } ( config, _) ;
599
- fn rmext ( filename : str ) -> str {
600
- let parts = str:: split ( filename, '.' as u8 ) ;
601
- vec:: pop ( parts) ;
602
- ret str:: connect ( parts, "." ) ;
603
- }
604
- ret alt config. os {
605
- session:: os_macos. { rmext ( rmlib ( filename) ) }
606
- session:: os_linux. { rmext ( rmlib ( filename) ) }
607
- _ { rmext( filename) }
608
- } ;
609
- }
610
-
611
611
let cstore = sess. get_cstore ( ) ;
612
612
for cratepath: str in cstore:: get_used_crate_files ( cstore) {
613
613
if str:: ends_with ( cratepath, ".rlib" ) {
@@ -655,7 +655,7 @@ fn link_binary(sess: session::session,
655
655
gcc_args += [ "-lmorestack" ] ;
656
656
}
657
657
658
- gcc_args += rpath:: get_rpath_flags ( sess, out_filename ) ;
658
+ gcc_args += rpath:: get_rpath_flags ( sess, output ) ;
659
659
660
660
log #fmt( "gcc link args: %s" , str:: connect ( gcc_args, " " ) ) ;
661
661
// We run 'gcc' here
0 commit comments