]>
Commit | Line | Data |
---|---|---|
136023e0 XL |
1 | use std::env; |
2 | #[cfg(unix)] | |
3 | use std::os::unix::process::CommandExt; | |
4 | use std::path::PathBuf; | |
5 | use std::process::Command; | |
6 | ||
7 | fn main() { | |
136023e0 XL |
8 | let sysroot = PathBuf::from(env::current_exe().unwrap().parent().unwrap()); |
9 | ||
923072b8 FG |
10 | let mut rustflags = String::new(); |
11 | rustflags.push_str(" -Cpanic=abort -Zpanic-abort-tests -Zcodegen-backend="); | |
12 | rustflags.push_str( | |
136023e0 XL |
13 | sysroot |
14 | .join(if cfg!(windows) { "bin" } else { "lib" }) | |
15 | .join( | |
16 | env::consts::DLL_PREFIX.to_string() | |
17 | + "rustc_codegen_cranelift" | |
18 | + env::consts::DLL_SUFFIX, | |
19 | ) | |
20 | .to_str() | |
21 | .unwrap(), | |
22 | ); | |
923072b8 FG |
23 | rustflags.push_str(" --sysroot "); |
24 | rustflags.push_str(sysroot.to_str().unwrap()); | |
25 | env::set_var("RUSTFLAGS", env::var("RUSTFLAGS").unwrap_or(String::new()) + &rustflags); | |
26 | env::set_var("RUSTDOCFLAGS", env::var("RUSTDOCFLAGS").unwrap_or(String::new()) + &rustflags); | |
136023e0 XL |
27 | |
28 | // Ensure that the right toolchain is used | |
9ffffee4 | 29 | env::set_var("RUSTUP_TOOLCHAIN", env!("TOOLCHAIN_NAME")); |
136023e0 XL |
30 | |
31 | let args: Vec<_> = match env::args().nth(1).as_deref() { | |
32 | Some("jit") => { | |
33 | env::set_var( | |
34 | "RUSTFLAGS", | |
35 | env::var("RUSTFLAGS").unwrap_or(String::new()) + " -Cprefer-dynamic", | |
36 | ); | |
a2a8927a | 37 | IntoIterator::into_iter(["rustc".to_string()]) |
136023e0 | 38 | .chain(env::args().skip(2)) |
94222f64 XL |
39 | .chain([ |
40 | "--".to_string(), | |
923072b8 | 41 | "-Zunstable-options".to_string(), |
94222f64 XL |
42 | "-Cllvm-args=mode=jit".to_string(), |
43 | ]) | |
136023e0 XL |
44 | .collect() |
45 | } | |
46 | Some("lazy-jit") => { | |
47 | env::set_var( | |
48 | "RUSTFLAGS", | |
49 | env::var("RUSTFLAGS").unwrap_or(String::new()) + " -Cprefer-dynamic", | |
50 | ); | |
a2a8927a | 51 | IntoIterator::into_iter(["rustc".to_string()]) |
136023e0 | 52 | .chain(env::args().skip(2)) |
94222f64 XL |
53 | .chain([ |
54 | "--".to_string(), | |
923072b8 | 55 | "-Zunstable-options".to_string(), |
94222f64 XL |
56 | "-Cllvm-args=mode=jit-lazy".to_string(), |
57 | ]) | |
136023e0 XL |
58 | .collect() |
59 | } | |
60 | _ => env::args().skip(1).collect(), | |
61 | }; | |
62 | ||
63 | #[cfg(unix)] | |
64 | Command::new("cargo").args(args).exec(); | |
65 | ||
66 | #[cfg(not(unix))] | |
67 | std::process::exit( | |
68 | Command::new("cargo").args(args).spawn().unwrap().wait().unwrap().code().unwrap_or(1), | |
69 | ); | |
70 | } |