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