blob: ebb9cc8f4c7544401805facecdd6b1251ca62cef [file] [log] [blame]
use std::env;
use std::process::Command;
use std::str::FromStr;
fn main() {
let minor = match rustc_minor_version() {
Some(minor) => minor,
None => return,
};
if minor >= 22 {
println!("cargo:rustc-cfg=derive_copy");
}
if minor >= 28 {
println!("cargo:rustc-cfg=repr_transparent");
}
if minor >= 36 {
println!("cargo:rustc-cfg=native_uninit");
}
}
fn rustc_minor_version() -> Option<u32> {
let rustc = env::var_os("RUSTC");
let output = rustc.and_then(|rustc| {
Command::new(rustc).arg("--version").output().ok()
});
let version = output.and_then(|output| {
String::from_utf8(output.stdout).ok()
});
let version = if let Some(version) = version {
version
} else {
return None;
};
let mut pieces = version.split('.');
if pieces.next() != Some("rustc 1") {
return None;
}
let next = match pieces.next() {
Some(next) => next,
None => return None,
};
u32::from_str(next).ok()
}