2022-07-21 11:37:41 +00:00
|
|
|
//! Determine rustc version `proc-macro-srv` (and thus the sysroot ABI) is
|
|
|
|
//! build with and make it accessible at runtime for ABI selection.
|
|
|
|
|
2022-07-21 11:13:24 +00:00
|
|
|
use std::{env, fs::File, io::Write, path::PathBuf, process::Command};
|
|
|
|
|
|
|
|
fn main() {
|
2024-01-04 16:10:14 +00:00
|
|
|
println!("cargo:rustc-check-cfg=cfg(rust_analyzer)");
|
|
|
|
|
2022-07-21 11:13:24 +00:00
|
|
|
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();
|
|
|
|
}
|