use std::env; use std::ffi::OsString; use std::process::Command; fn main() { println!("cargo:rerun-if-changed=build.rs"); let rustc = env::var_os("RUSTC").unwrap_or_else(|| OsString::from("rustc")); let output = Command::new(rustc) .arg("--version") .output() .expect("failed to run `rustc --version`"); if String::from_utf8_lossy(&output.stdout).contains("nightly") { println!("cargo:rustc-cfg=nightly"); } let target = env::var("TARGET").unwrap(); if target.starts_with("thumbv6m-") { println!("cargo:rustc-cfg=cortex_m"); println!("cargo:rustc-cfg=armv6m"); } else if target.starts_with("thumbv7m-") { println!("cargo:rustc-cfg=cortex_m"); println!("cargo:rustc-cfg=armv7m"); } else if target.starts_with("thumbv7em-") { println!("cargo:rustc-cfg=cortex_m"); println!("cargo:rustc-cfg=armv7m"); println!("cargo:rustc-cfg=armv7em"); // (not currently used) } else if target.starts_with("thumbv8m.base") { println!("cargo:rustc-cfg=cortex_m"); println!("cargo:rustc-cfg=armv8m"); println!("cargo:rustc-cfg=armv8m_base"); } else if target.starts_with("thumbv8m.main") { println!("cargo:rustc-cfg=cortex_m"); println!("cargo:rustc-cfg=armv8m"); println!("cargo:rustc-cfg=armv8m_main"); } if target.ends_with("-eabihf") { println!("cargo:rustc-cfg=has_fpu"); } }