@@ -471,88 +471,90 @@ fn main(vec[str] args) {
471
471
// gcc to link the object file with some libs
472
472
//
473
473
// TODO: Factor this out of main.
474
- if ( sopts. output_type == link:: output_type_exe) {
475
- let str glu = binary_dir + "/lib/glue.o" ;
476
- let str main = "rt/main.o" ;
477
- let str stage = "-L" + binary_dir + "/lib" ;
478
- let str prog = "gcc" ;
479
- // The invocations of gcc share some flags across platforms
480
-
481
- let vec[ str] gcc_args =
482
- [ stage, "-Lrt" , "-lrustrt" , glu, "-m32" , "-o" ,
483
- saved_out_filename, saved_out_filename + ".o" ] ;
484
- auto lib_cmd;
485
-
486
- auto os = sess. get_targ_cfg ( ) . os ;
487
- if ( os == session:: os_macos) {
488
- lib_cmd = "-dynamiclib" ;
489
- } else {
490
- lib_cmd = "-shared" ;
491
- }
474
+ if ( sopts. output_type != link:: output_type_exe) {
475
+ ret;
476
+ }
492
477
493
- // Converts a library file name into a gcc -l argument
494
- fn unlib ( @session:: config config, str filename ) -> str {
495
- auto rmlib = bind fn( @session:: config config,
496
- str filename) -> str {
497
- if ( config. os == session:: os_macos
498
- || config. os == session:: os_linux
499
- && str:: find ( filename, "lib" ) == 0 ) {
500
- ret str:: slice ( filename, 3 u, str:: byte_len ( filename) ) ;
501
- } else {
502
- ret filename;
503
- }
504
- } ( config, _) ;
505
- fn rmext ( str filename ) -> str {
506
- auto parts = str:: split ( filename, '.' as u8 ) ;
507
- vec:: pop ( parts) ;
508
- ret str:: connect ( parts, "." ) ;
509
- }
510
- ret alt ( config. os ) {
511
- case ( session:: os_macos) { rmext ( rmlib ( filename) ) }
512
- case ( session:: os_linux) { rmext ( rmlib ( filename) ) }
513
- case ( _) { rmext ( filename) }
514
- } ;
515
- }
478
+ let str glu = binary_dir + "/lib/glue.o" ;
479
+ let str main = "rt/main.o" ;
480
+ let str stage = "-L" + binary_dir + "/lib" ;
481
+ let str prog = "gcc" ;
482
+ // The invocations of gcc share some flags across platforms
483
+
484
+ let vec[ str] gcc_args =
485
+ [ stage, "-Lrt" , "-lrustrt" , glu, "-m32" , "-o" ,
486
+ saved_out_filename, saved_out_filename + ".o" ] ;
487
+ auto lib_cmd;
488
+
489
+ auto os = sess. get_targ_cfg ( ) . os ;
490
+ if ( os == session:: os_macos) {
491
+ lib_cmd = "-dynamiclib" ;
492
+ } else {
493
+ lib_cmd = "-shared" ;
494
+ }
516
495
517
- for ( str cratepath in sess. get_used_crate_files( ) ) {
518
- auto dir = fs:: dirname( cratepath) ;
519
- if ( dir != "" ) {
520
- gcc_args += [ "-L" + dir] ;
496
+ // Converts a library file name into a gcc -l argument
497
+ fn unlib ( @session:: config config, str filename ) -> str {
498
+ auto rmlib = bind fn( @session:: config config,
499
+ str filename) -> str {
500
+ if ( config. os == session:: os_macos
501
+ || config. os == session:: os_linux
502
+ && str:: find ( filename, "lib" ) == 0 ) {
503
+ ret str:: slice ( filename, 3 u, str:: byte_len ( filename) ) ;
504
+ } else {
505
+ ret filename;
521
506
}
522
- auto libarg = unlib( sess. get_targ_cfg( ) , fs:: basename( cratepath) ) ;
523
- gcc_args += [ "-l" + libarg] ;
507
+ } ( config, _) ;
508
+ fn rmext ( str filename ) -> str {
509
+ auto parts = str:: split ( filename, '.' as u8 ) ;
510
+ vec:: pop ( parts) ;
511
+ ret str:: connect ( parts, "." ) ;
524
512
}
513
+ ret alt ( config. os ) {
514
+ case ( session:: os_macos) { rmext ( rmlib ( filename) ) }
515
+ case ( session:: os_linux) { rmext ( rmlib ( filename) ) }
516
+ case ( _) { rmext ( filename) }
517
+ } ;
518
+ }
525
519
526
- gcc_args += sess. get_used_link_args ( ) ;
527
- auto used_libs = sess . get_used_libraries ( ) ;
528
- for ( str l in used_libs ) {
529
- gcc_args += [ "-l " + l ] ;
520
+ for ( str cratepath in sess. get_used_crate_files ( ) ) {
521
+ auto dir = fs :: dirname ( cratepath ) ;
522
+ if ( dir != "" ) {
523
+ gcc_args += [ "-L " + dir ] ;
530
524
}
525
+ auto libarg = unlib( sess. get_targ_cfg( ) , fs:: basename( cratepath) ) ;
526
+ gcc_args += [ "-l" + libarg] ;
527
+ }
531
528
532
- if ( sopts. library) {
533
- gcc_args += [ lib_cmd] ;
534
- } else {
535
- // FIXME: why do we hardcode -lm?
536
- gcc_args += [ "-lm" , main] ;
537
- }
538
- // We run 'gcc' here
529
+ gcc_args += sess. get_used_link_args( ) ;
530
+ auto used_libs = sess. get_used_libraries( ) ;
531
+ for ( str l in used_libs) {
532
+ gcc_args += [ "-l" + l] ;
533
+ }
539
534
540
- auto err_code = run :: run_program ( prog , gcc_args ) ;
541
- if ( 0 != err_code ) {
542
- sess . err ( #fmt ( "linking with gcc failed with code %d" , err_code ) ) ;
543
- sess . note ( #fmt ( "gcc arguments: %s" , str :: connect ( gcc_args , " " ) ) ) ;
544
- sess . abort_if_errors ( ) ;
545
- }
546
- // Clean up on Darwin
535
+ if ( sopts . library ) {
536
+ gcc_args += [ lib_cmd ] ;
537
+ } else {
538
+ // FIXME: why do we hardcode -lm?
539
+ gcc_args += [ "-lm" , main ] ;
540
+ }
541
+ // We run 'gcc' here
547
542
548
- if ( sess. get_targ_cfg( ) . os == session:: os_macos) {
549
- run:: run_program( "dsymutil" , [ saved_out_filename] ) ;
550
- }
543
+ auto err_code = run:: run_program( prog, gcc_args) ;
544
+ if ( 0 != err_code) {
545
+ sess. err( #fmt( "linking with gcc failed with code %d" , err_code) ) ;
546
+ sess. note( #fmt( "gcc arguments: %s" , str:: connect( gcc_args, " " ) ) ) ;
547
+ sess. abort_if_errors( ) ;
548
+ }
549
+ // Clean up on Darwin
551
550
552
- // Remove the temporary object file if we aren't saving temps
553
- if ( !sopts. save_temps) {
554
- run:: run_program( "rm" , [ saved_out_filename + ".o" ] ) ;
555
- }
551
+ if ( sess. get_targ_cfg( ) . os == session:: os_macos) {
552
+ run:: run_program( "dsymutil" , [ saved_out_filename] ) ;
553
+ }
554
+
555
+ // Remove the temporary object file if we aren't saving temps
556
+ if ( !sopts. save_temps) {
557
+ run:: run_program( "rm" , [ saved_out_filename + ".o" ] ) ;
556
558
}
557
559
}
558
560
// Local Variables:
0 commit comments