]> git.lizzy.rs Git - rust.git/blob - src/bootstrap/bin/sccache-plus-cl.rs
Rollup merge of #107740 - oli-obk:lock_tcx, r=petrochenkov
[rust.git] / src / bootstrap / bin / sccache-plus-cl.rs
1 use std::env;
2 use std::process::{self, Command};
3
4 fn main() {
5     let target = env::var("SCCACHE_TARGET").unwrap();
6     // Locate the actual compiler that we're invoking
7     env::set_var("CC", env::var_os("SCCACHE_CC").unwrap());
8     env::set_var("CXX", env::var_os("SCCACHE_CXX").unwrap());
9     let mut cfg = cc::Build::new();
10     cfg.cargo_metadata(false)
11         .out_dir("/")
12         .target(&target)
13         .host(&target)
14         .opt_level(0)
15         .warnings(false)
16         .debug(false);
17     let compiler = cfg.get_compiler();
18
19     // Invoke sccache with said compiler
20     let sccache_path = env::var_os("SCCACHE_PATH").unwrap();
21     let mut cmd = Command::new(&sccache_path);
22     cmd.arg(compiler.path());
23     for &(ref k, ref v) in compiler.env() {
24         cmd.env(k, v);
25     }
26     for arg in env::args().skip(1) {
27         cmd.arg(arg);
28     }
29
30     if let Ok(s) = env::var("SCCACHE_EXTRA_ARGS") {
31         for s in s.split_whitespace() {
32             cmd.arg(s);
33         }
34     }
35
36     let status = cmd.status().expect("failed to spawn");
37     process::exit(status.code().unwrap_or(2))
38 }