diff options
| author | Rafael Ávila de Espíndola <respindola@mozilla.com> | 2011-07-07 14:59:18 -0400 |
|---|---|---|
| committer | Rafael Ávila de Espíndola <respindola@mozilla.com> | 2011-07-07 14:59:18 -0400 |
| commit | b13527735e5977d544eff498469cda9d9c4511de (patch) | |
| tree | b4fb2882176723c6096da3123b335567cb3b6fea /src/comp/driver | |
| parent | 6d6c4c2a7699778cb641cf96f4b08f7fc4402840 (diff) | |
| download | rust-b13527735e5977d544eff498469cda9d9c4511de.tar.gz rust-b13527735e5977d544eff498469cda9d9c4511de.zip | |
Use an early exit to reduce indentation.
Diffstat (limited to 'src/comp/driver')
| -rw-r--r-- | src/comp/driver/rustc.rs | 146 |
1 files changed, 74 insertions, 72 deletions
diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs index 15add626a3b..b9bef80534e 100644 --- a/src/comp/driver/rustc.rs +++ b/src/comp/driver/rustc.rs @@ -471,88 +471,90 @@ fn main(vec[str] args) { // gcc to link the object file with some libs // // TODO: Factor this out of main. - if (sopts.output_type == link::output_type_exe) { - let str glu = binary_dir + "/lib/glue.o"; - let str main = "rt/main.o"; - let str stage = "-L" + binary_dir + "/lib"; - let str prog = "gcc"; - // The invocations of gcc share some flags across platforms - - let vec[str] gcc_args = - [stage, "-Lrt", "-lrustrt", glu, "-m32", "-o", - saved_out_filename, saved_out_filename + ".o"]; - auto lib_cmd; - - auto os = sess.get_targ_cfg().os; - if (os == session::os_macos) { - lib_cmd = "-dynamiclib"; - } else { - lib_cmd = "-shared"; - } + if (sopts.output_type != link::output_type_exe) { + ret; + } - // Converts a library file name into a gcc -l argument - fn unlib(@session::config config, str filename) -> str { - auto rmlib = bind fn(@session::config config, - str filename) -> str { - if (config.os == session::os_macos - || config.os == session::os_linux - && str::find(filename, "lib") == 0) { - ret str::slice(filename, 3u, str::byte_len(filename)); - } else { - ret filename; - } - } (config, _); - fn rmext(str filename) -> str { - auto parts = str::split(filename, '.' as u8); - vec::pop(parts); - ret str::connect(parts, "."); - } - ret alt (config.os) { - case (session::os_macos) { rmext(rmlib(filename)) } - case (session::os_linux) { rmext(rmlib(filename)) } - case (_) { rmext(filename) } - }; - } + let str glu = binary_dir + "/lib/glue.o"; + let str main = "rt/main.o"; + let str stage = "-L" + binary_dir + "/lib"; + let str prog = "gcc"; + // The invocations of gcc share some flags across platforms + + let vec[str] gcc_args = + [stage, "-Lrt", "-lrustrt", glu, "-m32", "-o", + saved_out_filename, saved_out_filename + ".o"]; + auto lib_cmd; + + auto os = sess.get_targ_cfg().os; + if (os == session::os_macos) { + lib_cmd = "-dynamiclib"; + } else { + lib_cmd = "-shared"; + } - for (str cratepath in sess.get_used_crate_files()) { - auto dir = fs::dirname(cratepath); - if (dir != "") { - gcc_args += ["-L" + dir]; + // Converts a library file name into a gcc -l argument + fn unlib(@session::config config, str filename) -> str { + auto rmlib = bind fn(@session::config config, + str filename) -> str { + if (config.os == session::os_macos + || config.os == session::os_linux + && str::find(filename, "lib") == 0) { + ret str::slice(filename, 3u, str::byte_len(filename)); + } else { + ret filename; } - auto libarg = unlib(sess.get_targ_cfg(), fs::basename(cratepath)); - gcc_args += ["-l" + libarg]; + } (config, _); + fn rmext(str filename) -> str { + auto parts = str::split(filename, '.' as u8); + vec::pop(parts); + ret str::connect(parts, "."); } + ret alt (config.os) { + case (session::os_macos) { rmext(rmlib(filename)) } + case (session::os_linux) { rmext(rmlib(filename)) } + case (_) { rmext(filename) } + }; + } - gcc_args += sess.get_used_link_args(); - auto used_libs = sess.get_used_libraries(); - for (str l in used_libs) { - gcc_args += ["-l" + l]; + for (str cratepath in sess.get_used_crate_files()) { + auto dir = fs::dirname(cratepath); + if (dir != "") { + gcc_args += ["-L" + dir]; } + auto libarg = unlib(sess.get_targ_cfg(), fs::basename(cratepath)); + gcc_args += ["-l" + libarg]; + } - if (sopts.library) { - gcc_args += [lib_cmd]; - } else { - // FIXME: why do we hardcode -lm? - gcc_args += ["-lm", main]; - } - // We run 'gcc' here + gcc_args += sess.get_used_link_args(); + auto used_libs = sess.get_used_libraries(); + for (str l in used_libs) { + gcc_args += ["-l" + l]; + } - auto err_code = run::run_program(prog, gcc_args); - if (0 != err_code) { - sess.err(#fmt("linking with gcc failed with code %d", err_code)); - sess.note(#fmt("gcc arguments: %s", str::connect(gcc_args, " "))); - sess.abort_if_errors(); - } - // Clean up on Darwin + if (sopts.library) { + gcc_args += [lib_cmd]; + } else { + // FIXME: why do we hardcode -lm? + gcc_args += ["-lm", main]; + } + // We run 'gcc' here - if (sess.get_targ_cfg().os == session::os_macos) { - run::run_program("dsymutil", [saved_out_filename]); - } + auto err_code = run::run_program(prog, gcc_args); + if (0 != err_code) { + sess.err(#fmt("linking with gcc failed with code %d", err_code)); + sess.note(#fmt("gcc arguments: %s", str::connect(gcc_args, " "))); + sess.abort_if_errors(); + } + // Clean up on Darwin - // Remove the temporary object file if we aren't saving temps - if (!sopts.save_temps) { - run::run_program("rm", [saved_out_filename + ".o"]); - } + if (sess.get_targ_cfg().os == session::os_macos) { + run::run_program("dsymutil", [saved_out_filename]); + } + + // Remove the temporary object file if we aren't saving temps + if (!sopts.save_temps) { + run::run_program("rm", [saved_out_filename + ".o"]); } } // Local Variables: |
