use std::path::PathBuf;
use std::{env, error::Error};
fn main() -> Result<(), Box<dyn Error>> {
enum Device {
NanoS,
NanoSPlus,
NanoX,
Stax,
Flex,
}
use Device::*;
let device = match env::var_os("CARGO_CFG_TARGET_OS").unwrap().to_str().unwrap() {
"nanos" => NanoS,
"nanosplus" => NanoSPlus,
"nanox" => NanoX,
"stax" => Stax,
"flex" => Flex,
target_name => panic!(
"invalid target `{target_name}`, expected one of `nanos`, `nanox`, `nanosplus`, `stax` or `flex`. Run with `-Z build-std=core --target=./<target name>.json`"
),
};
let out_dir = PathBuf::from(env::var_os("OUT_DIR").unwrap());
println!("cargo:rustc-link-search={}", out_dir.display());
let linkerscript = match device {
NanoS => "nanos_layout.ld",
NanoX => "nanox_layout.ld",
NanoSPlus => "nanosplus_layout.ld",
Stax | Flex => "stax_flex_layout.ld",
};
std::fs::copy(linkerscript, out_dir.join(linkerscript))?;
std::fs::copy("link.ld", out_dir.join("link.ld"))?;
Ok(())
}