зеркало из https://github.com/mozilla/gecko-dev.git
51 строка
1.0 KiB
Rust
51 строка
1.0 KiB
Rust
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()
|
|
}
|