summaryrefslogtreecommitdiffstats
path: root/src/tools/rust-analyzer/crates/proc-macro-srv/build.rs
blob: a8c732f31541daa12827a51f67d12b61cd248b66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//! Determine rustc version `proc-macro-srv` (and thus the sysroot ABI) is
//! build with and make it accessible at runtime for ABI selection.

use std::{env, fs::File, io::Write, path::PathBuf, process::Command};

fn main() {
    let mut path = PathBuf::from(env::var_os("OUT_DIR").unwrap());
    path.push("rustc_version.rs");
    let mut f = File::create(&path).unwrap();

    let rustc = env::var("RUSTC").expect("proc-macro-srv's build script expects RUSTC to be set");
    let output = Command::new(rustc).arg("--version").output().expect("rustc --version must run");
    let version_string = std::str::from_utf8(&output.stdout[..])
        .expect("rustc --version output must be UTF-8")
        .trim();

    write!(
        f,
        "
    #[allow(dead_code)]
    pub(crate) const RUSTC_VERSION_STRING: &str = {version_string:?};
    "
    )
    .unwrap();
}