use std::fmt::Display;
fn is_feature_enabled(f: &str) -> bool {
let mut f = f.replace("-", "_");
f.make_ascii_uppercase();
std::env::var_os(format!("CARGO_FEATURE_{}", f)).is_some()
}
fn cfg(k: &str, v: impl Display) {
println!("cargo:rustc-cfg={}={:?}", k, v.to_string());
}
fn main() {
for (feature, ver) in [
("windows-2000", "2000"),
("windows-xp", "xp"),
("windows-vista", "vista"),
("windows-7", "7"),
("windows-7", "7.0"),
("windows-8", "8"),
("windows-8", "8.0"),
("windows-8-1", "8.1"),
("windows-10", "10"),
("windows-10", "10.0"),
].iter().copied() {
if is_feature_enabled(feature) {
cfg("windows", ver);
}
}
for (feature, partition) in [
("winapi-family-desktop-app", "desktop"),
("winapi-family-desktop-app", "app"),
("winapi-family-desktop-app", "pc-app"),
("winapi-family-pc-app", "app"),
("winapi-family-pc-app", "pc-app"),
("winapi-family-phone-app", "app"),
("winapi-family-phone-app", "phone-app"),
("winapi-family-system", "system"),
("winapi-family-server", "system"),
("winapi-family-server", "server"),
("winapi-family-games", "games"),
].iter().copied() {
if is_feature_enabled(feature) {
cfg("partition", partition);
}
}
}