]>
git.proxmox.com Git - rustc.git/blob - compiler/rustc_codegen_cranelift/scripts/cargo-clif.rs
3 use std
::os
::unix
::process
::CommandExt
;
4 use std
::process
::Command
;
7 let current_exe
= env
::current_exe().unwrap();
8 let mut sysroot
= current_exe
.parent().unwrap();
9 if sysroot
.file_name().unwrap().to_str().unwrap() == "bin" {
10 sysroot
= sysroot
.parent().unwrap();
13 let mut rustflags
= String
::new();
14 rustflags
.push_str(" -Cpanic=abort -Zpanic-abort-tests -Zcodegen-backend=");
15 if let Some(name
) = option_env
!("BUILTIN_BACKEND") {
16 rustflags
.push_str(name
);
20 .join(if cfg
!(windows
) { "bin" }
else { "lib" }
)
22 env
::consts
::DLL_PREFIX
.to_string()
23 + "rustc_codegen_cranelift"
24 + env
::consts
::DLL_SUFFIX
,
30 rustflags
.push_str(" --sysroot ");
31 rustflags
.push_str(sysroot
.to_str().unwrap());
32 env
::set_var("RUSTFLAGS", env
::var("RUSTFLAGS").unwrap_or(String
::new()) + &rustflags
);
33 env
::set_var("RUSTDOCFLAGS", env
::var("RUSTDOCFLAGS").unwrap_or(String
::new()) + &rustflags
);
35 let cargo
= if let Some(cargo
) = option_env
!("CARGO") {
38 // Ensure that the right toolchain is used
39 env
::set_var("RUSTUP_TOOLCHAIN", option_env
!("TOOLCHAIN_NAME").expect("TOOLCHAIN_NAME"));
43 let args
: Vec
<_
> = match env
::args().nth(1).as_deref() {
47 env
::var("RUSTFLAGS").unwrap_or(String
::new()) + " -Cprefer-dynamic",
49 IntoIterator
::into_iter(["rustc".to_string()])
50 .chain(env
::args().skip(2))
53 "-Zunstable-options".to_string(),
54 "-Cllvm-args=mode=jit".to_string(),
61 env
::var("RUSTFLAGS").unwrap_or(String
::new()) + " -Cprefer-dynamic",
63 IntoIterator
::into_iter(["rustc".to_string()])
64 .chain(env
::args().skip(2))
67 "-Zunstable-options".to_string(),
68 "-Cllvm-args=mode=jit-lazy".to_string(),
72 _
=> env
::args().skip(1).collect(),
76 panic
!("Failed to spawn cargo: {}", Command
::new(cargo
).args(args
).exec());
80 Command
::new(cargo
).args(args
).spawn().unwrap().wait().unwrap().code().unwrap_or(1),