]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_codegen_cranelift/scripts/cargo-clif.rs
New upstream version 1.69.0+dfsg1
[rustc.git] / compiler / rustc_codegen_cranelift / scripts / cargo-clif.rs
CommitLineData
136023e0
XL
1use std::env;
2#[cfg(unix)]
3use std::os::unix::process::CommandExt;
4use std::path::PathBuf;
5use std::process::Command;
6
7fn 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}