use std::env;
#[derive(Copy, Clone)]
enum Backend {
Standard,
Linker,
Stap3,
NoOp,
}
fn main() {
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rustc-check-cfg=cfg(usdt_backend_noop)");
println!("cargo:rustc-check-cfg=cfg(usdt_backend_stapsdt)");
println!("cargo:rustc-check-cfg=cfg(usdt_backend_linker)");
println!("cargo:rustc-check-cfg=cfg(usdt_backend_standard)");
let backend = match env::var("CARGO_CFG_TARGET_OS").ok().as_deref() {
Some("macos") => Backend::Linker,
Some("illumos") | Some("solaris") | Some("freebsd") => Backend::Standard,
Some("linux") => Backend::Stap3,
_ => Backend::NoOp,
};
match backend {
Backend::NoOp => {
println!("cargo:rustc-cfg=usdt_backend_noop");
}
Backend::Stap3 => {
println!("cargo:rustc-cfg=usdt_backend_stapsdt");
}
Backend::Linker => {
println!("cargo:rustc-cfg=usdt_backend_linker");
}
Backend::Standard => {
println!("cargo:rustc-cfg=usdt_backend_standard");
}
}
}