@@ -399,37 +399,34 @@ fn main(vec[str] args) {
399
399
let str prog = "gcc" ;
400
400
// The invocations of gcc share some flags across platforms
401
401
402
- let vec[ str] common_cflags =
403
- [ "-fno-strict-aliasing" , "-fPIC" , "-Wall" , "-fno-rtti" ,
404
- "-fno-exceptions" , "-g" ] ;
405
- let vec[ str] common_libs =
406
- [ stage, "-Lrustllvm" , "-Lrt" , "-lrustrt" , "-lrustllvm" , "-lstd" ,
407
- "-lm" ] ;
402
+ let vec[ str] common_args = [ stage, "-Lrt" , "-lrustrt" ,
403
+ "-fno-strict-aliasing" , "-fPIC" , "-Wall" ,
404
+ "-fno-rtti" , "-fno-exceptions" , "-g" , glu, "-o" ,
405
+ saved_out_filename, saved_out_filename + ".o" ] ;
406
+
407
+ auto shared_cmd;
408
+
408
409
alt ( sess. get_targ_cfg ( ) . os ) {
409
410
case ( session:: os_win32) {
410
- gcc_args =
411
- common_cflags +
412
- [ "-march=i686" , "-O2" , glu, main, "-o" ,
413
- saved_out_filename, saved_out_filename + ".o" ] +
414
- common_libs;
411
+ shared_cmd = "-shared" ;
412
+ gcc_args = common_args + [ "-march=i686" , "-O2" ] ;
415
413
}
416
414
case ( session:: os_macos) {
417
- gcc_args =
418
- common_cflags +
419
- [ "-arch i386" , "-O0" , "-m32" , glu, main, "-o" ,
420
- saved_out_filename, saved_out_filename + ".o" ] +
421
- common_libs;
415
+ shared_cmd = "-dynamiclib" ;
416
+ gcc_args = common_args + [ "-arch i386" , "-O0" , "-m32" ] ;
422
417
}
423
418
case ( session:: os_linux) {
424
- gcc_args =
425
- common_cflags +
426
- [ "-march=i686" , "-O2" , "-m32" , glu, main, "-o" ,
427
- saved_out_filename, saved_out_filename + ".o" ] +
428
- common_libs;
419
+ shared_cmd = "-shared" ;
420
+ gcc_args = common_args + [ "-march=i686" , "-O2" , "-m32" ] ;
429
421
}
430
422
}
431
- // We run 'gcc' here
423
+ if ( sopts. shared ) {
424
+ gcc_args += [ shared_cmd] ;
425
+ } else {
426
+ gcc_args += [ "-Lrustllvm" , "-lrustllvm" , "-lstd" , "-lm" , main] ;
427
+ }
432
428
429
+ // We run 'gcc' here
433
430
run:: run_program ( prog, gcc_args) ;
434
431
// Clean up on Darwin
435
432
0 commit comments