librustc: De-export driver. rs=deexport
This commit is contained in:
parent
b070590564
commit
3105bcfdc1
6 changed files with 218 additions and 239 deletions
|
@ -94,8 +94,6 @@ pub fn WriteOutputFile(sess: Session,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub mod jit {
|
pub mod jit {
|
||||||
#[legacy_exports];
|
|
||||||
|
|
||||||
use back::link::llvm_err;
|
use back::link::llvm_err;
|
||||||
use lib::llvm::llvm;
|
use lib::llvm::llvm;
|
||||||
use lib::llvm::{ModuleRef, PassManagerRef, mk_target_data};
|
use lib::llvm::{ModuleRef, PassManagerRef, mk_target_data};
|
||||||
|
@ -109,21 +107,20 @@ pub mod jit {
|
||||||
|
|
||||||
#[nolink]
|
#[nolink]
|
||||||
#[abi = "rust-intrinsic"]
|
#[abi = "rust-intrinsic"]
|
||||||
extern mod rusti {
|
pub extern mod rusti {
|
||||||
#[legacy_exports];
|
pub fn morestack_addr() -> *();
|
||||||
fn morestack_addr() -> *();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Closure {
|
pub struct Closure {
|
||||||
code: *(),
|
code: *(),
|
||||||
env: *(),
|
env: *(),
|
||||||
}
|
}
|
||||||
|
|
||||||
fn exec(sess: Session,
|
pub fn exec(sess: Session,
|
||||||
pm: PassManagerRef,
|
pm: PassManagerRef,
|
||||||
m: ModuleRef,
|
m: ModuleRef,
|
||||||
opt: c_int,
|
opt: c_int,
|
||||||
stacks: bool) {
|
stacks: bool) {
|
||||||
unsafe {
|
unsafe {
|
||||||
let manager = llvm::LLVMRustPrepareJIT(rusti::morestack_addr());
|
let manager = llvm::LLVMRustPrepareJIT(rusti::morestack_addr());
|
||||||
|
|
||||||
|
@ -174,8 +171,6 @@ pub mod jit {
|
||||||
}
|
}
|
||||||
|
|
||||||
mod write {
|
mod write {
|
||||||
#[legacy_exports];
|
|
||||||
|
|
||||||
use back::link::jit;
|
use back::link::jit;
|
||||||
use back::link::{ModuleRef, WriteOutputFile, output_type};
|
use back::link::{ModuleRef, WriteOutputFile, output_type};
|
||||||
use back::link::{output_type_assembly, output_type_bitcode};
|
use back::link::{output_type_assembly, output_type_bitcode};
|
||||||
|
@ -193,7 +188,7 @@ mod write {
|
||||||
use core::str;
|
use core::str;
|
||||||
use core::vec;
|
use core::vec;
|
||||||
|
|
||||||
fn is_object_or_assembly_or_exe(ot: output_type) -> bool {
|
pub fn is_object_or_assembly_or_exe(ot: output_type) -> bool {
|
||||||
if ot == output_type_assembly || ot == output_type_object ||
|
if ot == output_type_assembly || ot == output_type_object ||
|
||||||
ot == output_type_exe {
|
ot == output_type_exe {
|
||||||
return true;
|
return true;
|
||||||
|
@ -201,7 +196,7 @@ mod write {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_passes(sess: Session, llmod: ModuleRef, output: &Path) {
|
pub fn run_passes(sess: Session, llmod: ModuleRef, output: &Path) {
|
||||||
unsafe {
|
unsafe {
|
||||||
let opts = sess.opts;
|
let opts = sess.opts;
|
||||||
if sess.time_llvm_passes() { llvm::LLVMRustEnableTimePasses(); }
|
if sess.time_llvm_passes() { llvm::LLVMRustEnableTimePasses(); }
|
||||||
|
|
|
@ -208,8 +208,6 @@ fn minimize_rpaths(rpaths: &[Path]) -> ~[Path] {
|
||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
mod test {
|
mod test {
|
||||||
#[legacy_exports];
|
|
||||||
|
|
||||||
use core::prelude::*;
|
use core::prelude::*;
|
||||||
|
|
||||||
use back::rpath::{get_absolute_rpath, get_install_prefix_rpath};
|
use back::rpath::{get_absolute_rpath, get_install_prefix_rpath};
|
||||||
|
@ -221,14 +219,14 @@ mod test {
|
||||||
use core::str;
|
use core::str;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_rpaths_to_flags() {
|
pub fn test_rpaths_to_flags() {
|
||||||
let flags = rpaths_to_flags(~[Path("path1"),
|
let flags = rpaths_to_flags(~[Path("path1"),
|
||||||
Path("path2")]);
|
Path("path2")]);
|
||||||
assert flags == ~[~"-Wl,-rpath,path1", ~"-Wl,-rpath,path2"];
|
assert flags == ~[~"-Wl,-rpath,path1", ~"-Wl,-rpath,path2"];
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_prefix_rpath() {
|
pub fn test_prefix_rpath() {
|
||||||
let res = get_install_prefix_rpath("triple");
|
let res = get_install_prefix_rpath("triple");
|
||||||
let d = Path(env!("CFG_PREFIX"))
|
let d = Path(env!("CFG_PREFIX"))
|
||||||
.push_rel(&Path("lib/rustc/triple/lib"));
|
.push_rel(&Path("lib/rustc/triple/lib"));
|
||||||
|
@ -239,13 +237,13 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_prefix_rpath_abs() {
|
pub fn test_prefix_rpath_abs() {
|
||||||
let res = get_install_prefix_rpath("triple");
|
let res = get_install_prefix_rpath("triple");
|
||||||
assert res.is_absolute;
|
assert res.is_absolute;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_minimize1() {
|
pub fn test_minimize1() {
|
||||||
let res = minimize_rpaths([Path("rpath1"),
|
let res = minimize_rpaths([Path("rpath1"),
|
||||||
Path("rpath2"),
|
Path("rpath2"),
|
||||||
Path("rpath1")]);
|
Path("rpath1")]);
|
||||||
|
@ -253,7 +251,7 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_minimize2() {
|
pub fn test_minimize2() {
|
||||||
let res = minimize_rpaths(~[Path("1a"), Path("2"), Path("2"),
|
let res = minimize_rpaths(~[Path("1a"), Path("2"), Path("2"),
|
||||||
Path("1a"), Path("4a"),Path("1a"),
|
Path("1a"), Path("4a"),Path("1a"),
|
||||||
Path("2"), Path("3"), Path("4a"),
|
Path("2"), Path("3"), Path("4a"),
|
||||||
|
@ -262,7 +260,7 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_relative_to1() {
|
pub fn test_relative_to1() {
|
||||||
let p1 = Path("/usr/bin/rustc");
|
let p1 = Path("/usr/bin/rustc");
|
||||||
let p2 = Path("/usr/lib/mylib");
|
let p2 = Path("/usr/lib/mylib");
|
||||||
let res = get_relative_to(&p1, &p2);
|
let res = get_relative_to(&p1, &p2);
|
||||||
|
@ -270,7 +268,7 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_relative_to2() {
|
pub fn test_relative_to2() {
|
||||||
let p1 = Path("/usr/bin/rustc");
|
let p1 = Path("/usr/bin/rustc");
|
||||||
let p2 = Path("/usr/bin/../lib/mylib");
|
let p2 = Path("/usr/bin/../lib/mylib");
|
||||||
let res = get_relative_to(&p1, &p2);
|
let res = get_relative_to(&p1, &p2);
|
||||||
|
@ -278,7 +276,7 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_relative_to3() {
|
pub fn test_relative_to3() {
|
||||||
let p1 = Path("/usr/bin/whatever/rustc");
|
let p1 = Path("/usr/bin/whatever/rustc");
|
||||||
let p2 = Path("/usr/lib/whatever/mylib");
|
let p2 = Path("/usr/lib/whatever/mylib");
|
||||||
let res = get_relative_to(&p1, &p2);
|
let res = get_relative_to(&p1, &p2);
|
||||||
|
@ -286,7 +284,7 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_relative_to4() {
|
pub fn test_relative_to4() {
|
||||||
let p1 = Path("/usr/bin/whatever/../rustc");
|
let p1 = Path("/usr/bin/whatever/../rustc");
|
||||||
let p2 = Path("/usr/lib/whatever/mylib");
|
let p2 = Path("/usr/lib/whatever/mylib");
|
||||||
let res = get_relative_to(&p1, &p2);
|
let res = get_relative_to(&p1, &p2);
|
||||||
|
@ -294,7 +292,7 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_relative_to5() {
|
pub fn test_relative_to5() {
|
||||||
let p1 = Path("/usr/bin/whatever/../rustc");
|
let p1 = Path("/usr/bin/whatever/../rustc");
|
||||||
let p2 = Path("/usr/lib/whatever/../mylib");
|
let p2 = Path("/usr/lib/whatever/../mylib");
|
||||||
let res = get_relative_to(&p1, &p2);
|
let res = get_relative_to(&p1, &p2);
|
||||||
|
@ -302,7 +300,7 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_relative_to6() {
|
pub fn test_relative_to6() {
|
||||||
let p1 = Path("/1");
|
let p1 = Path("/1");
|
||||||
let p2 = Path("/2/3");
|
let p2 = Path("/2/3");
|
||||||
let res = get_relative_to(&p1, &p2);
|
let res = get_relative_to(&p1, &p2);
|
||||||
|
@ -310,7 +308,7 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_relative_to7() {
|
pub fn test_relative_to7() {
|
||||||
let p1 = Path("/1/2");
|
let p1 = Path("/1/2");
|
||||||
let p2 = Path("/3");
|
let p2 = Path("/3");
|
||||||
let res = get_relative_to(&p1, &p2);
|
let res = get_relative_to(&p1, &p2);
|
||||||
|
@ -318,7 +316,7 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_relative_to8() {
|
pub fn test_relative_to8() {
|
||||||
let p1 = Path("/home/brian/Dev/rust/build/").push_rel(
|
let p1 = Path("/home/brian/Dev/rust/build/").push_rel(
|
||||||
&Path("stage2/lib/rustc/i686-unknown-linux-gnu/lib/librustc.so"));
|
&Path("stage2/lib/rustc/i686-unknown-linux-gnu/lib/librustc.so"));
|
||||||
let p2 = Path("/home/brian/Dev/rust/build/stage2/bin/..").push_rel(
|
let p2 = Path("/home/brian/Dev/rust/build/stage2/bin/..").push_rel(
|
||||||
|
@ -333,7 +331,7 @@ mod test {
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
#[cfg(target_os = "andorid")]
|
#[cfg(target_os = "andorid")]
|
||||||
fn test_rpath_relative() {
|
pub fn test_rpath_relative() {
|
||||||
let o = session::os_linux;
|
let o = session::os_linux;
|
||||||
let res = get_rpath_relative_to_output(o,
|
let res = get_rpath_relative_to_output(o,
|
||||||
&Path("bin/rustc"), &Path("lib/libstd.so"));
|
&Path("bin/rustc"), &Path("lib/libstd.so"));
|
||||||
|
@ -342,7 +340,7 @@ mod test {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg(target_os = "freebsd")]
|
#[cfg(target_os = "freebsd")]
|
||||||
fn test_rpath_relative() {
|
pub fn test_rpath_relative() {
|
||||||
let o = session::os_freebsd;
|
let o = session::os_freebsd;
|
||||||
let res = get_rpath_relative_to_output(o,
|
let res = get_rpath_relative_to_output(o,
|
||||||
&Path("bin/rustc"), &Path("lib/libstd.so"));
|
&Path("bin/rustc"), &Path("lib/libstd.so"));
|
||||||
|
@ -351,7 +349,7 @@ mod test {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
fn test_rpath_relative() {
|
pub fn test_rpath_relative() {
|
||||||
// this is why refinements would be nice
|
// this is why refinements would be nice
|
||||||
let o = session::os_macos;
|
let o = session::os_macos;
|
||||||
let res = get_rpath_relative_to_output(o,
|
let res = get_rpath_relative_to_output(o,
|
||||||
|
@ -361,7 +359,7 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_get_absolute_rpath() {
|
pub fn test_get_absolute_rpath() {
|
||||||
let res = get_absolute_rpath(&Path("lib/libstd.so"));
|
let res = get_absolute_rpath(&Path("lib/libstd.so"));
|
||||||
debug!("test_get_absolute_rpath: %s vs. %s",
|
debug!("test_get_absolute_rpath: %s vs. %s",
|
||||||
res.to_str(),
|
res.to_str(),
|
||||||
|
|
|
@ -46,7 +46,7 @@ use syntax::parse;
|
||||||
use syntax::print::{pp, pprust};
|
use syntax::print::{pp, pprust};
|
||||||
use syntax;
|
use syntax;
|
||||||
|
|
||||||
enum pp_mode {
|
pub enum pp_mode {
|
||||||
ppm_normal,
|
ppm_normal,
|
||||||
ppm_expanded,
|
ppm_expanded,
|
||||||
ppm_typed,
|
ppm_typed,
|
||||||
|
@ -58,16 +58,16 @@ enum pp_mode {
|
||||||
* The name used for source code that doesn't originate in a file
|
* The name used for source code that doesn't originate in a file
|
||||||
* (e.g. source from stdin or a string)
|
* (e.g. source from stdin or a string)
|
||||||
*/
|
*/
|
||||||
fn anon_src() -> ~str { ~"<anon>" }
|
pub fn anon_src() -> ~str { ~"<anon>" }
|
||||||
|
|
||||||
fn source_name(input: input) -> ~str {
|
pub fn source_name(input: input) -> ~str {
|
||||||
match input {
|
match input {
|
||||||
file_input(ref ifile) => (*ifile).to_str(),
|
file_input(ref ifile) => (*ifile).to_str(),
|
||||||
str_input(_) => anon_src()
|
str_input(_) => anon_src()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn default_configuration(sess: Session, +argv0: ~str, input: input) ->
|
pub fn default_configuration(sess: Session, +argv0: ~str, input: input) ->
|
||||||
ast::crate_cfg {
|
ast::crate_cfg {
|
||||||
let libc = match sess.targ_cfg.os {
|
let libc = match sess.targ_cfg.os {
|
||||||
session::os_win32 => ~"msvcrt.dll",
|
session::os_win32 => ~"msvcrt.dll",
|
||||||
|
@ -106,7 +106,8 @@ fn default_configuration(sess: Session, +argv0: ~str, input: input) ->
|
||||||
mk(~"build_input", source_name(input))];
|
mk(~"build_input", source_name(input))];
|
||||||
}
|
}
|
||||||
|
|
||||||
fn append_configuration(+cfg: ast::crate_cfg, +name: ~str) -> ast::crate_cfg {
|
pub fn append_configuration(+cfg: ast::crate_cfg, +name: ~str)
|
||||||
|
-> ast::crate_cfg {
|
||||||
if attr::contains_name(cfg, name) {
|
if attr::contains_name(cfg, name) {
|
||||||
return cfg;
|
return cfg;
|
||||||
} else {
|
} else {
|
||||||
|
@ -114,7 +115,7 @@ fn append_configuration(+cfg: ast::crate_cfg, +name: ~str) -> ast::crate_cfg {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build_configuration(sess: Session, +argv0: ~str, input: input) ->
|
pub fn build_configuration(sess: Session, +argv0: ~str, input: input) ->
|
||||||
ast::crate_cfg {
|
ast::crate_cfg {
|
||||||
// Combine the configuration requested by the session (command line) with
|
// Combine the configuration requested by the session (command line) with
|
||||||
// some default and generated configuration items
|
// some default and generated configuration items
|
||||||
|
@ -132,7 +133,7 @@ fn build_configuration(sess: Session, +argv0: ~str, input: input) ->
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert strings provided as --cfg [cfgspec] into a crate_cfg
|
// Convert strings provided as --cfg [cfgspec] into a crate_cfg
|
||||||
fn parse_cfgspecs(cfgspecs: ~[~str]) -> ast::crate_cfg {
|
pub fn parse_cfgspecs(cfgspecs: ~[~str]) -> ast::crate_cfg {
|
||||||
// FIXME (#2399): It would be nice to use the parser to parse all
|
// FIXME (#2399): It would be nice to use the parser to parse all
|
||||||
// varieties of meta_item here. At the moment we just support the
|
// varieties of meta_item here. At the moment we just support the
|
||||||
// meta_word variant.
|
// meta_word variant.
|
||||||
|
@ -143,14 +144,14 @@ fn parse_cfgspecs(cfgspecs: ~[~str]) -> ast::crate_cfg {
|
||||||
return words;
|
return words;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum input {
|
pub enum input {
|
||||||
/// Load source from file
|
/// Load source from file
|
||||||
file_input(Path),
|
file_input(Path),
|
||||||
/// The string is the source
|
/// The string is the source
|
||||||
str_input(~str)
|
str_input(~str)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_input(sess: Session, +cfg: ast::crate_cfg, input: input)
|
pub fn parse_input(sess: Session, +cfg: ast::crate_cfg, input: input)
|
||||||
-> @ast::crate {
|
-> @ast::crate {
|
||||||
match input {
|
match input {
|
||||||
file_input(ref file) => {
|
file_input(ref file) => {
|
||||||
|
@ -164,7 +165,7 @@ fn parse_input(sess: Session, +cfg: ast::crate_cfg, input: input)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn time<T>(do_it: bool, what: ~str, thunk: fn() -> T) -> T {
|
pub fn time<T>(do_it: bool, what: ~str, thunk: fn() -> T) -> T {
|
||||||
if !do_it { return thunk(); }
|
if !do_it { return thunk(); }
|
||||||
let start = std::time::precise_time_s();
|
let start = std::time::precise_time_s();
|
||||||
let rv = thunk();
|
let rv = thunk();
|
||||||
|
@ -174,7 +175,7 @@ fn time<T>(do_it: bool, what: ~str, thunk: fn() -> T) -> T {
|
||||||
move rv
|
move rv
|
||||||
}
|
}
|
||||||
|
|
||||||
enum compile_upto {
|
pub enum compile_upto {
|
||||||
cu_parse,
|
cu_parse,
|
||||||
cu_expand,
|
cu_expand,
|
||||||
cu_typeck,
|
cu_typeck,
|
||||||
|
@ -182,17 +183,17 @@ enum compile_upto {
|
||||||
cu_everything,
|
cu_everything,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl compile_upto : cmp::Eq {
|
pub impl compile_upto : cmp::Eq {
|
||||||
pure fn eq(&self, other: &compile_upto) -> bool {
|
pure fn eq(&self, other: &compile_upto) -> bool {
|
||||||
((*self) as uint) == ((*other) as uint)
|
((*self) as uint) == ((*other) as uint)
|
||||||
}
|
}
|
||||||
pure fn ne(&self, other: &compile_upto) -> bool { !(*self).eq(other) }
|
pure fn ne(&self, other: &compile_upto) -> bool { !(*self).eq(other) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn compile_upto(sess: Session, cfg: ast::crate_cfg,
|
pub fn compile_upto(sess: Session, cfg: ast::crate_cfg,
|
||||||
input: input, upto: compile_upto,
|
input: input, upto: compile_upto,
|
||||||
outputs: Option<output_filenames>)
|
outputs: Option<output_filenames>)
|
||||||
-> {crate: @ast::crate, tcx: Option<ty::ctxt>} {
|
-> {crate: @ast::crate, tcx: Option<ty::ctxt>} {
|
||||||
let time_passes = sess.time_passes();
|
let time_passes = sess.time_passes();
|
||||||
let mut crate = time(time_passes, ~"parsing",
|
let mut crate = time(time_passes, ~"parsing",
|
||||||
|| parse_input(sess, copy cfg, input) );
|
|| parse_input(sess, copy cfg, input) );
|
||||||
|
@ -337,8 +338,8 @@ fn compile_upto(sess: Session, cfg: ast::crate_cfg,
|
||||||
return {crate: crate, tcx: None};
|
return {crate: crate, tcx: None};
|
||||||
}
|
}
|
||||||
|
|
||||||
fn compile_input(sess: Session, +cfg: ast::crate_cfg, input: input,
|
pub fn compile_input(sess: Session, +cfg: ast::crate_cfg, input: input,
|
||||||
outdir: &Option<Path>, output: &Option<Path>) {
|
outdir: &Option<Path>, output: &Option<Path>) {
|
||||||
|
|
||||||
let upto = if sess.opts.parse_only { cu_parse }
|
let upto = if sess.opts.parse_only { cu_parse }
|
||||||
else if sess.opts.no_trans { cu_no_trans }
|
else if sess.opts.no_trans { cu_no_trans }
|
||||||
|
@ -347,8 +348,8 @@ fn compile_input(sess: Session, +cfg: ast::crate_cfg, input: input,
|
||||||
compile_upto(sess, cfg, input, upto, Some(outputs));
|
compile_upto(sess, cfg, input, upto, Some(outputs));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn pretty_print_input(sess: Session, +cfg: ast::crate_cfg, input: input,
|
pub fn pretty_print_input(sess: Session, +cfg: ast::crate_cfg, input: input,
|
||||||
ppm: pp_mode) {
|
ppm: pp_mode) {
|
||||||
fn ann_paren_for_expr(node: pprust::ann_node) {
|
fn ann_paren_for_expr(node: pprust::ann_node) {
|
||||||
match node {
|
match node {
|
||||||
pprust::node_expr(s, _) => pprust::popen(s),
|
pprust::node_expr(s, _) => pprust::popen(s),
|
||||||
|
@ -424,7 +425,7 @@ fn pretty_print_input(sess: Session, +cfg: ast::crate_cfg, input: input,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_os(triple: ~str) -> Option<session::os> {
|
pub fn get_os(triple: ~str) -> Option<session::os> {
|
||||||
if str::contains(triple, ~"win32") ||
|
if str::contains(triple, ~"win32") ||
|
||||||
str::contains(triple, ~"mingw32") {
|
str::contains(triple, ~"mingw32") {
|
||||||
Some(session::os_win32)
|
Some(session::os_win32)
|
||||||
|
@ -439,7 +440,7 @@ fn get_os(triple: ~str) -> Option<session::os> {
|
||||||
} else { None }
|
} else { None }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_arch(triple: ~str) -> Option<session::arch> {
|
pub fn get_arch(triple: ~str) -> Option<session::arch> {
|
||||||
if str::contains(triple, ~"i386") ||
|
if str::contains(triple, ~"i386") ||
|
||||||
str::contains(triple, ~"i486") ||
|
str::contains(triple, ~"i486") ||
|
||||||
str::contains(triple, ~"i586") ||
|
str::contains(triple, ~"i586") ||
|
||||||
|
@ -454,8 +455,9 @@ fn get_arch(triple: ~str) -> Option<session::arch> {
|
||||||
} else { None }
|
} else { None }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build_target_config(sopts: @session::options,
|
pub fn build_target_config(sopts: @session::options,
|
||||||
demitter: diagnostic::emitter) -> @session::config {
|
demitter: diagnostic::emitter)
|
||||||
|
-> @session::config {
|
||||||
let os = match get_os(sopts.target_triple) {
|
let os = match get_os(sopts.target_triple) {
|
||||||
Some(os) => os,
|
Some(os) => os,
|
||||||
None => early_error(demitter, ~"unknown operating system")
|
None => early_error(demitter, ~"unknown operating system")
|
||||||
|
@ -481,7 +483,7 @@ fn build_target_config(sopts: @session::options,
|
||||||
return target_cfg;
|
return target_cfg;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn host_triple() -> ~str {
|
pub fn host_triple() -> ~str {
|
||||||
// Get the host triple out of the build environment. This ensures that our
|
// Get the host triple out of the build environment. This ensures that our
|
||||||
// idea of the host triple is the same as for the set of libraries we've
|
// idea of the host triple is the same as for the set of libraries we've
|
||||||
// actually built. We can't just take LLVM's host triple because they
|
// actually built. We can't just take LLVM's host triple because they
|
||||||
|
@ -498,9 +500,10 @@ fn host_triple() -> ~str {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build_session_options(+binary: ~str,
|
pub fn build_session_options(+binary: ~str,
|
||||||
matches: &getopts::Matches,
|
matches: &getopts::Matches,
|
||||||
demitter: diagnostic::emitter) -> @session::options {
|
demitter: diagnostic::emitter)
|
||||||
|
-> @session::options {
|
||||||
let crate_type = if opt_present(matches, ~"lib") {
|
let crate_type = if opt_present(matches, ~"lib") {
|
||||||
session::lib_crate
|
session::lib_crate
|
||||||
} else if opt_present(matches, ~"bin") {
|
} else if opt_present(matches, ~"bin") {
|
||||||
|
@ -637,8 +640,8 @@ fn build_session_options(+binary: ~str,
|
||||||
return sopts;
|
return sopts;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build_session(sopts: @session::options,
|
pub fn build_session(sopts: @session::options,
|
||||||
demitter: diagnostic::emitter) -> Session {
|
demitter: diagnostic::emitter) -> Session {
|
||||||
let codemap = @codemap::CodeMap::new();
|
let codemap = @codemap::CodeMap::new();
|
||||||
let diagnostic_handler =
|
let diagnostic_handler =
|
||||||
diagnostic::mk_handler(Some(demitter));
|
diagnostic::mk_handler(Some(demitter));
|
||||||
|
@ -647,11 +650,11 @@ fn build_session(sopts: @session::options,
|
||||||
build_session_(sopts, codemap, demitter, span_diagnostic_handler)
|
build_session_(sopts, codemap, demitter, span_diagnostic_handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build_session_(sopts: @session::options,
|
pub fn build_session_(sopts: @session::options,
|
||||||
cm: @codemap::CodeMap,
|
cm: @codemap::CodeMap,
|
||||||
demitter: diagnostic::emitter,
|
demitter: diagnostic::emitter,
|
||||||
span_diagnostic_handler: diagnostic::span_handler)
|
span_diagnostic_handler: diagnostic::span_handler)
|
||||||
-> Session {
|
-> Session {
|
||||||
let target_cfg = build_target_config(sopts, demitter);
|
let target_cfg = build_target_config(sopts, demitter);
|
||||||
let p_s = parse::new_parse_sess_special_handler(span_diagnostic_handler,
|
let p_s = parse::new_parse_sess_special_handler(span_diagnostic_handler,
|
||||||
cm);
|
cm);
|
||||||
|
@ -675,7 +678,7 @@ fn build_session_(sopts: @session::options,
|
||||||
lint_settings: lint_settings})
|
lint_settings: lint_settings})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_pretty(sess: Session, &&name: ~str) -> pp_mode {
|
pub fn parse_pretty(sess: Session, &&name: ~str) -> pp_mode {
|
||||||
match name {
|
match name {
|
||||||
~"normal" => ppm_normal,
|
~"normal" => ppm_normal,
|
||||||
~"expanded" => ppm_expanded,
|
~"expanded" => ppm_expanded,
|
||||||
|
@ -691,7 +694,7 @@ fn parse_pretty(sess: Session, &&name: ~str) -> pp_mode {
|
||||||
}
|
}
|
||||||
|
|
||||||
// rustc command line options
|
// rustc command line options
|
||||||
fn optgroups() -> ~[getopts::groups::OptGroup] {
|
pub fn optgroups() -> ~[getopts::groups::OptGroup] {
|
||||||
~[
|
~[
|
||||||
optflag(~"", ~"bin", ~"Compile an executable crate (default)"),
|
optflag(~"", ~"bin", ~"Compile an executable crate (default)"),
|
||||||
optflag(~"c", ~"", ~"Compile and assemble, but do not link"),
|
optflag(~"c", ~"", ~"Compile and assemble, but do not link"),
|
||||||
|
@ -755,13 +758,13 @@ fn optgroups() -> ~[getopts::groups::OptGroup] {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
type output_filenames = @{out_filename:Path, obj_filename:Path};
|
pub type output_filenames = @{out_filename:Path, obj_filename:Path};
|
||||||
|
|
||||||
fn build_output_filenames(input: input,
|
pub fn build_output_filenames(input: input,
|
||||||
odir: &Option<Path>,
|
odir: &Option<Path>,
|
||||||
ofile: &Option<Path>,
|
ofile: &Option<Path>,
|
||||||
sess: Session)
|
sess: Session)
|
||||||
-> output_filenames {
|
-> output_filenames {
|
||||||
let obj_path;
|
let obj_path;
|
||||||
let out_path;
|
let out_path;
|
||||||
let sopts = sess.opts;
|
let sopts = sess.opts;
|
||||||
|
@ -831,21 +834,19 @@ fn build_output_filenames(input: input,
|
||||||
obj_filename: obj_path};
|
obj_filename: obj_path};
|
||||||
}
|
}
|
||||||
|
|
||||||
fn early_error(emitter: diagnostic::emitter, msg: ~str) -> ! {
|
pub fn early_error(emitter: diagnostic::emitter, msg: ~str) -> ! {
|
||||||
emitter(None, msg, diagnostic::fatal);
|
emitter(None, msg, diagnostic::fatal);
|
||||||
fail;
|
fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn list_metadata(sess: Session, path: &Path, out: io::Writer) {
|
pub fn list_metadata(sess: Session, path: &Path, out: io::Writer) {
|
||||||
metadata::loader::list_file_metadata(
|
metadata::loader::list_file_metadata(
|
||||||
sess.parse_sess.interner,
|
sess.parse_sess.interner,
|
||||||
session::sess_os_to_meta_os(sess.targ_cfg.os), path, out);
|
session::sess_os_to_meta_os(sess.targ_cfg.os), path, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
pub mod test {
|
||||||
#[legacy_exports];
|
|
||||||
|
|
||||||
use core::prelude::*;
|
use core::prelude::*;
|
||||||
|
|
||||||
use driver::driver::{build_configuration, build_session};
|
use driver::driver::{build_configuration, build_session};
|
||||||
|
@ -859,7 +860,7 @@ mod test {
|
||||||
|
|
||||||
// When the user supplies --test we should implicitly supply --cfg test
|
// When the user supplies --test we should implicitly supply --cfg test
|
||||||
#[test]
|
#[test]
|
||||||
fn test_switch_implies_cfg_test() {
|
pub fn test_switch_implies_cfg_test() {
|
||||||
let matches =
|
let matches =
|
||||||
&match getopts(~[~"--test"], optgroups()) {
|
&match getopts(~[~"--test"], optgroups()) {
|
||||||
Ok(copy m) => m,
|
Ok(copy m) => m,
|
||||||
|
@ -876,7 +877,7 @@ mod test {
|
||||||
// When the user supplies --test and --cfg test, don't implicitly add
|
// When the user supplies --test and --cfg test, don't implicitly add
|
||||||
// another --cfg test
|
// another --cfg test
|
||||||
#[test]
|
#[test]
|
||||||
fn test_switch_implies_cfg_test_unless_cfg_test() {
|
pub fn test_switch_implies_cfg_test_unless_cfg_test() {
|
||||||
let matches =
|
let matches =
|
||||||
&match getopts(~[~"--test", ~"--cfg=test"], optgroups()) {
|
&match getopts(~[~"--test", ~"--cfg=test"], optgroups()) {
|
||||||
Ok(copy m) => m,
|
Ok(copy m) => m,
|
||||||
|
|
|
@ -8,16 +8,7 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
#[legacy_exports];
|
pub use syntax::diagnostic;
|
||||||
|
|
||||||
use syntax::diagnostic;
|
pub mod driver;
|
||||||
|
pub mod session;
|
||||||
export diagnostic;
|
|
||||||
|
|
||||||
export driver;
|
|
||||||
export session;
|
|
||||||
|
|
||||||
#[legacy_exports]
|
|
||||||
mod driver;
|
|
||||||
#[legacy_exports]
|
|
||||||
mod session;
|
|
||||||
|
|
|
@ -29,27 +29,27 @@ use syntax::parse::parse_sess;
|
||||||
use syntax::{ast, codemap};
|
use syntax::{ast, codemap};
|
||||||
use syntax;
|
use syntax;
|
||||||
|
|
||||||
enum os { os_win32, os_macos, os_linux, os_android, os_freebsd, }
|
pub enum os { os_win32, os_macos, os_linux, os_android, os_freebsd, }
|
||||||
|
|
||||||
impl os : cmp::Eq {
|
pub impl os : cmp::Eq {
|
||||||
pure fn eq(&self, other: &os) -> bool {
|
pure fn eq(&self, other: &os) -> bool {
|
||||||
((*self) as uint) == ((*other) as uint)
|
((*self) as uint) == ((*other) as uint)
|
||||||
}
|
}
|
||||||
pure fn ne(&self, other: &os) -> bool { !(*self).eq(other) }
|
pure fn ne(&self, other: &os) -> bool { !(*self).eq(other) }
|
||||||
}
|
}
|
||||||
|
|
||||||
enum arch { arch_x86, arch_x86_64, arch_arm, }
|
pub enum arch { arch_x86, arch_x86_64, arch_arm, }
|
||||||
|
|
||||||
impl arch : cmp::Eq {
|
pub impl arch : cmp::Eq {
|
||||||
pure fn eq(&self, other: &arch) -> bool {
|
pure fn eq(&self, other: &arch) -> bool {
|
||||||
((*self) as uint) == ((*other) as uint)
|
((*self) as uint) == ((*other) as uint)
|
||||||
}
|
}
|
||||||
pure fn ne(&self, other: &arch) -> bool { !(*self).eq(other) }
|
pure fn ne(&self, other: &arch) -> bool { !(*self).eq(other) }
|
||||||
}
|
}
|
||||||
|
|
||||||
enum crate_type { bin_crate, lib_crate, unknown_crate, }
|
pub enum crate_type { bin_crate, lib_crate, unknown_crate, }
|
||||||
|
|
||||||
type config =
|
pub type config =
|
||||||
{os: os,
|
{os: os,
|
||||||
arch: arch,
|
arch: arch,
|
||||||
target_strs: target_strs::t,
|
target_strs: target_strs::t,
|
||||||
|
@ -57,26 +57,26 @@ type config =
|
||||||
uint_type: uint_ty,
|
uint_type: uint_ty,
|
||||||
float_type: float_ty};
|
float_type: float_ty};
|
||||||
|
|
||||||
const verbose: uint = 1 << 0;
|
pub const verbose: uint = 1 << 0;
|
||||||
const time_passes: uint = 1 << 1;
|
pub const time_passes: uint = 1 << 1;
|
||||||
const count_llvm_insns: uint = 1 << 2;
|
pub const count_llvm_insns: uint = 1 << 2;
|
||||||
const time_llvm_passes: uint = 1 << 3;
|
pub const time_llvm_passes: uint = 1 << 3;
|
||||||
const trans_stats: uint = 1 << 4;
|
pub const trans_stats: uint = 1 << 4;
|
||||||
const no_asm_comments: uint = 1 << 5;
|
pub const no_asm_comments: uint = 1 << 5;
|
||||||
const no_verify: uint = 1 << 6;
|
pub const no_verify: uint = 1 << 6;
|
||||||
const trace: uint = 1 << 7;
|
pub const trace: uint = 1 << 7;
|
||||||
const coherence: uint = 1 << 8;
|
pub const coherence: uint = 1 << 8;
|
||||||
const borrowck_stats: uint = 1 << 9;
|
pub const borrowck_stats: uint = 1 << 9;
|
||||||
const borrowck_note_pure: uint = 1 << 10;
|
pub const borrowck_note_pure: uint = 1 << 10;
|
||||||
const borrowck_note_loan: uint = 1 << 11;
|
pub const borrowck_note_loan: uint = 1 << 11;
|
||||||
const no_landing_pads: uint = 1 << 12;
|
pub const no_landing_pads: uint = 1 << 12;
|
||||||
const debug_llvm: uint = 1 << 13;
|
pub const debug_llvm: uint = 1 << 13;
|
||||||
const count_type_sizes: uint = 1 << 14;
|
pub const count_type_sizes: uint = 1 << 14;
|
||||||
const meta_stats: uint = 1 << 15;
|
pub const meta_stats: uint = 1 << 15;
|
||||||
const no_opt: uint = 1 << 16;
|
pub const no_opt: uint = 1 << 16;
|
||||||
const no_monomorphic_collapse: uint = 1 << 17;
|
pub const no_monomorphic_collapse: uint = 1 << 17;
|
||||||
|
|
||||||
fn debugging_opts_map() -> ~[(~str, ~str, uint)] {
|
pub fn debugging_opts_map() -> ~[(~str, ~str, uint)] {
|
||||||
~[(~"verbose", ~"in general, enable more debug printouts", verbose),
|
~[(~"verbose", ~"in general, enable more debug printouts", verbose),
|
||||||
(~"time-passes", ~"measure time of each rustc pass", time_passes),
|
(~"time-passes", ~"measure time of each rustc pass", time_passes),
|
||||||
(~"count-llvm-insns", ~"count where LLVM \
|
(~"count-llvm-insns", ~"count where LLVM \
|
||||||
|
@ -105,21 +105,21 @@ fn debugging_opts_map() -> ~[(~str, ~str, uint)] {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
enum OptLevel {
|
pub enum OptLevel {
|
||||||
No, // -O0
|
No, // -O0
|
||||||
Less, // -O1
|
Less, // -O1
|
||||||
Default, // -O2
|
Default, // -O2
|
||||||
Aggressive // -O3
|
Aggressive // -O3
|
||||||
}
|
}
|
||||||
|
|
||||||
impl OptLevel : cmp::Eq {
|
pub impl OptLevel : cmp::Eq {
|
||||||
pure fn eq(&self, other: &OptLevel) -> bool {
|
pure fn eq(&self, other: &OptLevel) -> bool {
|
||||||
((*self) as uint) == ((*other) as uint)
|
((*self) as uint) == ((*other) as uint)
|
||||||
}
|
}
|
||||||
pure fn ne(&self, other: &OptLevel) -> bool { !(*self).eq(other) }
|
pure fn ne(&self, other: &OptLevel) -> bool { !(*self).eq(other) }
|
||||||
}
|
}
|
||||||
|
|
||||||
type options =
|
pub type options =
|
||||||
// The crate config requested for the session, which may be combined
|
// The crate config requested for the session, which may be combined
|
||||||
// with additional crate configurations during the compile process
|
// with additional crate configurations during the compile process
|
||||||
{crate_type: crate_type,
|
{crate_type: crate_type,
|
||||||
|
@ -147,26 +147,26 @@ type options =
|
||||||
debugging_opts: uint,
|
debugging_opts: uint,
|
||||||
};
|
};
|
||||||
|
|
||||||
type crate_metadata = {name: ~str, data: ~[u8]};
|
pub type crate_metadata = {name: ~str, data: ~[u8]};
|
||||||
|
|
||||||
type Session_ = {targ_cfg: @config,
|
pub type Session_ = {targ_cfg: @config,
|
||||||
opts: @options,
|
opts: @options,
|
||||||
cstore: metadata::cstore::CStore,
|
cstore: metadata::cstore::CStore,
|
||||||
parse_sess: parse_sess,
|
parse_sess: parse_sess,
|
||||||
codemap: @codemap::CodeMap,
|
codemap: @codemap::CodeMap,
|
||||||
// For a library crate, this is always none
|
// For a library crate, this is always none
|
||||||
mut main_fn: Option<(node_id, codemap::span)>,
|
mut main_fn: Option<(node_id, codemap::span)>,
|
||||||
span_diagnostic: diagnostic::span_handler,
|
span_diagnostic: diagnostic::span_handler,
|
||||||
filesearch: filesearch::FileSearch,
|
filesearch: filesearch::FileSearch,
|
||||||
mut building_library: bool,
|
mut building_library: bool,
|
||||||
working_dir: Path,
|
working_dir: Path,
|
||||||
lint_settings: lint::lint_settings};
|
lint_settings: lint::lint_settings};
|
||||||
|
|
||||||
enum Session {
|
pub enum Session {
|
||||||
Session_(@Session_)
|
Session_(@Session_)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Session {
|
pub impl Session {
|
||||||
fn span_fatal(sp: span, msg: ~str) -> ! {
|
fn span_fatal(sp: span, msg: ~str) -> ! {
|
||||||
self.span_diagnostic.span_fatal(sp, msg)
|
self.span_diagnostic.span_fatal(sp, msg)
|
||||||
}
|
}
|
||||||
|
@ -271,7 +271,7 @@ impl Session {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Some reasonable defaults
|
/// Some reasonable defaults
|
||||||
fn basic_options() -> @options {
|
pub fn basic_options() -> @options {
|
||||||
@{
|
@{
|
||||||
crate_type: session::lib_crate,
|
crate_type: session::lib_crate,
|
||||||
static: false,
|
static: false,
|
||||||
|
@ -296,12 +296,15 @@ fn basic_options() -> @options {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Seems out of place, but it uses session, so I'm putting it here
|
// Seems out of place, but it uses session, so I'm putting it here
|
||||||
fn expect<T: Copy>(sess: Session, opt: Option<T>, msg: fn() -> ~str) -> T {
|
pub fn expect<T: Copy>(sess: Session,
|
||||||
|
opt: Option<T>,
|
||||||
|
msg: fn() -> ~str)
|
||||||
|
-> T {
|
||||||
diagnostic::expect(sess.diagnostic(), opt, msg)
|
diagnostic::expect(sess.diagnostic(), opt, msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn building_library(req_crate_type: crate_type, crate: @ast::crate,
|
pub fn building_library(req_crate_type: crate_type, crate: @ast::crate,
|
||||||
testing: bool) -> bool {
|
testing: bool) -> bool {
|
||||||
match req_crate_type {
|
match req_crate_type {
|
||||||
bin_crate => false,
|
bin_crate => false,
|
||||||
lib_crate => true,
|
lib_crate => true,
|
||||||
|
@ -320,7 +323,7 @@ fn building_library(req_crate_type: crate_type, crate: @ast::crate,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sess_os_to_meta_os(os: os) -> metadata::loader::os {
|
pub fn sess_os_to_meta_os(os: os) -> metadata::loader::os {
|
||||||
use metadata::loader;
|
use metadata::loader;
|
||||||
|
|
||||||
match os {
|
match os {
|
||||||
|
@ -333,9 +336,7 @@ fn sess_os_to_meta_os(os: os) -> metadata::loader::os {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
pub mod test {
|
||||||
#[legacy_exports];
|
|
||||||
|
|
||||||
use core::prelude::*;
|
use core::prelude::*;
|
||||||
|
|
||||||
use driver::session::{bin_crate, building_library, lib_crate};
|
use driver::session::{bin_crate, building_library, lib_crate};
|
||||||
|
@ -344,7 +345,7 @@ mod test {
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
use syntax::ast_util;
|
use syntax::ast_util;
|
||||||
|
|
||||||
fn make_crate_type_attr(+t: ~str) -> ast::attribute {
|
pub fn make_crate_type_attr(+t: ~str) -> ast::attribute {
|
||||||
ast_util::respan(ast_util::dummy_sp(), ast::attribute_ {
|
ast_util::respan(ast_util::dummy_sp(), ast::attribute_ {
|
||||||
style: ast::attr_outer,
|
style: ast::attr_outer,
|
||||||
value: ast_util::respan(ast_util::dummy_sp(),
|
value: ast_util::respan(ast_util::dummy_sp(),
|
||||||
|
@ -356,7 +357,7 @@ mod test {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn make_crate(with_bin: bool, with_lib: bool) -> @ast::crate {
|
pub fn make_crate(with_bin: bool, with_lib: bool) -> @ast::crate {
|
||||||
let mut attrs = ~[];
|
let mut attrs = ~[];
|
||||||
if with_bin { attrs += ~[make_crate_type_attr(~"bin")]; }
|
if with_bin { attrs += ~[make_crate_type_attr(~"bin")]; }
|
||||||
if with_lib { attrs += ~[make_crate_type_attr(~"lib")]; }
|
if with_lib { attrs += ~[make_crate_type_attr(~"lib")]; }
|
||||||
|
@ -368,43 +369,43 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn bin_crate_type_attr_results_in_bin_output() {
|
pub fn bin_crate_type_attr_results_in_bin_output() {
|
||||||
let crate = make_crate(true, false);
|
let crate = make_crate(true, false);
|
||||||
assert !building_library(unknown_crate, crate, false);
|
assert !building_library(unknown_crate, crate, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn lib_crate_type_attr_results_in_lib_output() {
|
pub fn lib_crate_type_attr_results_in_lib_output() {
|
||||||
let crate = make_crate(false, true);
|
let crate = make_crate(false, true);
|
||||||
assert building_library(unknown_crate, crate, false);
|
assert building_library(unknown_crate, crate, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn bin_option_overrides_lib_crate_type() {
|
pub fn bin_option_overrides_lib_crate_type() {
|
||||||
let crate = make_crate(false, true);
|
let crate = make_crate(false, true);
|
||||||
assert !building_library(bin_crate, crate, false);
|
assert !building_library(bin_crate, crate, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn lib_option_overrides_bin_crate_type() {
|
pub fn lib_option_overrides_bin_crate_type() {
|
||||||
let crate = make_crate(true, false);
|
let crate = make_crate(true, false);
|
||||||
assert building_library(lib_crate, crate, false);
|
assert building_library(lib_crate, crate, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn bin_crate_type_is_default() {
|
pub fn bin_crate_type_is_default() {
|
||||||
let crate = make_crate(false, false);
|
let crate = make_crate(false, false);
|
||||||
assert !building_library(unknown_crate, crate, false);
|
assert !building_library(unknown_crate, crate, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_option_overrides_lib_crate_type() {
|
pub fn test_option_overrides_lib_crate_type() {
|
||||||
let crate = make_crate(false, true);
|
let crate = make_crate(false, true);
|
||||||
assert !building_library(unknown_crate, crate, true);
|
assert !building_library(unknown_crate, crate, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_option_does_not_override_requested_lib_type() {
|
pub fn test_option_does_not_override_requested_lib_type() {
|
||||||
let crate = make_crate(false, false);
|
let crate = make_crate(false, false);
|
||||||
assert building_library(lib_crate, crate, true);
|
assert building_library(lib_crate, crate, true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
#[crate_type = "lib"];
|
#[crate_type = "lib"];
|
||||||
|
|
||||||
#[legacy_modes];
|
#[legacy_modes];
|
||||||
#[legacy_exports];
|
|
||||||
#[legacy_records];
|
#[legacy_records];
|
||||||
|
|
||||||
#[allow(non_implicitly_copyable_typarams)];
|
#[allow(non_implicitly_copyable_typarams)];
|
||||||
|
@ -49,153 +48,147 @@ use driver_ = driver;
|
||||||
use middle_ = middle;
|
use middle_ = middle;
|
||||||
use back_ = back;
|
use back_ = back;
|
||||||
|
|
||||||
mod middle {
|
pub mod middle {
|
||||||
#[legacy_exports];
|
pub mod trans {
|
||||||
mod trans {
|
|
||||||
#[legacy_exports];
|
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod inline;
|
pub mod inline;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod monomorphize;
|
pub mod monomorphize;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod controlflow;
|
pub mod controlflow;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod glue;
|
pub mod glue;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod datum;
|
pub mod datum;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod callee;
|
pub mod callee;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod expr;
|
pub mod expr;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod common;
|
pub mod common;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod consts;
|
pub mod consts;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod type_of;
|
pub mod type_of;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod build;
|
pub mod build;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod base;
|
pub mod base;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod _match;
|
pub mod _match;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod uniq;
|
pub mod uniq;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod closure;
|
pub mod closure;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod tvec;
|
pub mod tvec;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod meth;
|
pub mod meth;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod cabi;
|
pub mod cabi;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod cabi_x86_64;
|
pub mod cabi_x86_64;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod foreign;
|
pub mod foreign;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod reflect;
|
pub mod reflect;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod shape;
|
pub mod shape;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod debuginfo;
|
pub mod debuginfo;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod type_use;
|
pub mod type_use;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod reachable;
|
pub mod reachable;
|
||||||
mod machine;
|
pub mod machine;
|
||||||
}
|
}
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod ty;
|
pub mod ty;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod resolve;
|
pub mod resolve;
|
||||||
#[path = "typeck/mod.rs"]
|
#[path = "typeck/mod.rs"]
|
||||||
pub mod typeck;
|
pub mod typeck;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod check_loop;
|
pub mod check_loop;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod check_match;
|
pub mod check_match;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod check_const;
|
pub mod check_const;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod lint;
|
pub mod lint;
|
||||||
#[path = "borrowck/mod.rs"]
|
#[path = "borrowck/mod.rs"]
|
||||||
pub mod borrowck;
|
pub mod borrowck;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod mem_categorization;
|
pub mod mem_categorization;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod liveness;
|
pub mod liveness;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod kind;
|
pub mod kind;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod freevars;
|
pub mod freevars;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod capture;
|
pub mod capture;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod pat_util;
|
pub mod pat_util;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod region;
|
pub mod region;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod const_eval;
|
pub mod const_eval;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod astencode;
|
pub mod astencode;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod lang_items;
|
pub mod lang_items;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod privacy;
|
pub mod privacy;
|
||||||
mod mode;
|
pub mod mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
mod front {
|
pub mod front {
|
||||||
#[legacy_exports];
|
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod config;
|
pub mod config;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod test;
|
pub mod test;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod core_inject;
|
pub mod core_inject;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod intrinsic_inject;
|
pub mod intrinsic_inject;
|
||||||
}
|
}
|
||||||
|
|
||||||
mod back {
|
pub mod back {
|
||||||
#[legacy_exports];
|
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod link;
|
pub mod link;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod abi;
|
pub mod abi;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod upcall;
|
pub mod upcall;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod arm;
|
pub mod arm;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod x86;
|
pub mod x86;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod x86_64;
|
pub mod x86_64;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod rpath;
|
pub mod rpath;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod target_strs;
|
pub mod target_strs;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[path = "metadata/mod.rs"]
|
#[path = "metadata/mod.rs"]
|
||||||
mod metadata;
|
pub mod metadata;
|
||||||
|
|
||||||
#[path = "driver/mod.rs"]
|
#[path = "driver/mod.rs"]
|
||||||
mod driver;
|
pub mod driver;
|
||||||
|
|
||||||
mod util {
|
pub mod util {
|
||||||
#[legacy_exports];
|
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod common;
|
pub mod common;
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod ppaux;
|
pub mod ppaux;
|
||||||
}
|
}
|
||||||
|
|
||||||
mod lib {
|
pub mod lib {
|
||||||
#[legacy_exports];
|
|
||||||
#[legacy_exports]
|
#[legacy_exports]
|
||||||
mod llvm;
|
pub mod llvm;
|
||||||
}
|
}
|
||||||
|
|
||||||
use result::{Ok, Err};
|
use result::{Ok, Err};
|
||||||
|
@ -214,7 +207,7 @@ use driver::driver::{host_triple, optgroups, early_error,
|
||||||
use driver::session;
|
use driver::session;
|
||||||
use middle::lint;
|
use middle::lint;
|
||||||
|
|
||||||
fn version(argv0: &str) {
|
pub fn version(argv0: &str) {
|
||||||
let mut vers = ~"unknown version";
|
let mut vers = ~"unknown version";
|
||||||
let env_vers = env!("CFG_VERSION");
|
let env_vers = env!("CFG_VERSION");
|
||||||
if env_vers.len() != 0 { vers = env_vers; }
|
if env_vers.len() != 0 { vers = env_vers; }
|
||||||
|
@ -222,7 +215,7 @@ fn version(argv0: &str) {
|
||||||
io::println(fmt!("host: %s", host_triple()));
|
io::println(fmt!("host: %s", host_triple()));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn usage(argv0: &str) {
|
pub fn usage(argv0: &str) {
|
||||||
let message = fmt!("Usage: %s [OPTIONS] INPUT", argv0);
|
let message = fmt!("Usage: %s [OPTIONS] INPUT", argv0);
|
||||||
io::println(groups::usage(message, optgroups()) +
|
io::println(groups::usage(message, optgroups()) +
|
||||||
~"Additional help:
|
~"Additional help:
|
||||||
|
@ -231,7 +224,7 @@ fn usage(argv0: &str) {
|
||||||
");
|
");
|
||||||
}
|
}
|
||||||
|
|
||||||
fn describe_warnings() {
|
pub fn describe_warnings() {
|
||||||
io::println(fmt!("
|
io::println(fmt!("
|
||||||
Available lint options:
|
Available lint options:
|
||||||
-W <foo> Warn about <foo>
|
-W <foo> Warn about <foo>
|
||||||
|
@ -266,7 +259,7 @@ Available lint options:
|
||||||
io::println(~"");
|
io::println(~"");
|
||||||
}
|
}
|
||||||
|
|
||||||
fn describe_debug_flags() {
|
pub fn describe_debug_flags() {
|
||||||
io::println(fmt!("\nAvailable debug options:\n"));
|
io::println(fmt!("\nAvailable debug options:\n"));
|
||||||
for session::debugging_opts_map().each |pair| {
|
for session::debugging_opts_map().each |pair| {
|
||||||
let (name, desc, _) = /*bad*/copy *pair;
|
let (name, desc, _) = /*bad*/copy *pair;
|
||||||
|
@ -274,7 +267,7 @@ fn describe_debug_flags() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_compiler(args: &~[~str], demitter: diagnostic::emitter) {
|
pub fn run_compiler(args: &~[~str], demitter: diagnostic::emitter) {
|
||||||
// Don't display log spew by default. Can override with RUST_LOG.
|
// Don't display log spew by default. Can override with RUST_LOG.
|
||||||
logging::console_off();
|
logging::console_off();
|
||||||
|
|
||||||
|
@ -361,12 +354,12 @@ fn run_compiler(args: &~[~str], demitter: diagnostic::emitter) {
|
||||||
compile_input(sess, cfg, input, &odir, &ofile);
|
compile_input(sess, cfg, input, &odir, &ofile);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum monitor_msg {
|
pub enum monitor_msg {
|
||||||
fatal,
|
fatal,
|
||||||
done,
|
done,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl monitor_msg : cmp::Eq {
|
pub impl monitor_msg : cmp::Eq {
|
||||||
pure fn eq(&self, other: &monitor_msg) -> bool {
|
pure fn eq(&self, other: &monitor_msg) -> bool {
|
||||||
((*self) as uint) == ((*other) as uint)
|
((*self) as uint) == ((*other) as uint)
|
||||||
}
|
}
|
||||||
|
@ -385,7 +378,7 @@ diagnostic emitter which records when we hit a fatal error. If the task
|
||||||
fails without recording a fatal error then we've encountered a compiler
|
fails without recording a fatal error then we've encountered a compiler
|
||||||
bug and need to present an error.
|
bug and need to present an error.
|
||||||
*/
|
*/
|
||||||
fn monitor(+f: fn~(diagnostic::emitter)) {
|
pub fn monitor(+f: fn~(diagnostic::emitter)) {
|
||||||
let p = oldcomm::Port();
|
let p = oldcomm::Port();
|
||||||
let ch = oldcomm::Chan(&p);
|
let ch = oldcomm::Chan(&p);
|
||||||
|
|
||||||
|
@ -435,7 +428,7 @@ fn monitor(+f: fn~(diagnostic::emitter)) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
pub fn main() {
|
||||||
let mut args = os::args();
|
let mut args = os::args();
|
||||||
do monitor |move args, demitter| {
|
do monitor |move args, demitter| {
|
||||||
run_compiler(&args, demitter);
|
run_compiler(&args, demitter);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue