]>
Commit | Line | Data |
---|---|---|
7cac9316 XL |
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 | |
94b46f34 XL |
7 | env::set_var("CC", env::var_os("SCCACHE_CC").unwrap()); |
8 | env::set_var("CXX", env::var_os("SCCACHE_CXX").unwrap()); | |
ea8adc8c | 9 | let mut cfg = cc::Build::new(); |
7cac9316 XL |
10 | cfg.cargo_metadata(false) |
11 | .out_dir("/") | |
12 | .target(&target) | |
13 | .host(&target) | |
14 | .opt_level(0) | |
ea8adc8c | 15 | .warnings(false) |
7cac9316 XL |
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 | ||
94b46f34 XL |
30 | if let Ok(s) = env::var("SCCACHE_EXTRA_ARGS") { |
31 | for s in s.split_whitespace() { | |
32 | cmd.arg(s); | |
33 | } | |
34 | } | |
35 | ||
7cac9316 XL |
36 | let status = cmd.status().expect("failed to spawn"); |
37 | process::exit(status.code().unwrap_or(2)) | |
38 | } |