| use std::path::PathBuf; |
| use std::{env, fs}; |
| |
| fn main() { |
| let target = env::var("TARGET").unwrap(); |
| let host_triple = env::var("HOST").unwrap(); |
| let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); |
| let name = env::var("CARGO_PKG_NAME").unwrap(); |
| |
| if host_triple == target { |
| println!("cargo:rustc-cfg=native"); |
| } |
| |
| if target.starts_with("thumb") { |
| let suffix = if env::var_os("CARGO_FEATURE_LINKER_PLUGIN_LTO").is_some() { |
| "-lto" |
| } else { |
| "" |
| }; |
| |
| fs::copy( |
| format!("bin/{}{}.a", target, suffix), |
| out_dir.join(format!("lib{}.a", name)), |
| ) |
| .unwrap(); |
| |
| println!("cargo:rustc-link-lib=static={}", name); |
| println!("cargo:rustc-link-search={}", out_dir.display()); |
| } |
| |
| 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"); |
| } |
| } |