mirror of
https://github.com/esp-rs/esp-hal.git
synced 2025-09-27 04:10:28 +00:00
41 lines
1.4 KiB
Rust
41 lines
1.4 KiB
Rust
use std::{env, error::Error, fs, path::PathBuf};
|
|
|
|
use esp_build::assert_unique_used_features;
|
|
|
|
fn main() -> Result<(), Box<dyn Error>> {
|
|
// NOTE: update when adding new device support!
|
|
// Ensure that exactly one chip has been specified:
|
|
assert_unique_used_features!("esp32c6", "esp32s2", "esp32s3");
|
|
|
|
// NOTE: update when adding new device support!
|
|
// Determine the name of the configured device:
|
|
let device_name = if cfg!(feature = "esp32c6") {
|
|
"esp32c6"
|
|
} else if cfg!(feature = "esp32s2") {
|
|
"esp32s2"
|
|
} else if cfg!(feature = "esp32s3") {
|
|
"esp32s3"
|
|
} else {
|
|
unreachable!() // We've confirmed exactly one known device was selected
|
|
};
|
|
|
|
// Define all necessary configuration symbols for the configured device:
|
|
println!("cargo:rustc-cfg={}", device_name);
|
|
|
|
// Put the linker script somewhere the linker can find it:
|
|
let out = PathBuf::from(env::var_os("OUT_DIR").unwrap());
|
|
println!("cargo:rustc-link-search={}", out.display());
|
|
|
|
// Copy the required linker script to the `out` directory:
|
|
if cfg!(feature = "esp32c6") {
|
|
fs::copy("ld/link-lp.x", out.join("link.x"))?;
|
|
println!("cargo:rerun-if-changed=ld/link-lp.x");
|
|
} else if cfg!(feature = "esp32s2") || cfg!(feature = "esp32s3") {
|
|
fs::copy("ld/link-ulp.x", out.join("link.x"))?;
|
|
println!("cargo:rerun-if-changed=ld/link-ulp.x");
|
|
}
|
|
|
|
// Done!
|
|
Ok(())
|
|
}
|