You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
1.2 KiB
32 lines
1.2 KiB
use std::path::PathBuf; |
|
|
|
fn main() { |
|
// Open Cargo.toml |
|
let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap(); |
|
let manifest_path = format!("{manifest_dir}/Cargo.toml"); |
|
let manifest_str = std::fs::read_to_string(&manifest_path) |
|
.unwrap_or_else(|e| panic!("Could not open {manifest_path}: {e}")); |
|
let manifest_data: toml::Value = |
|
toml::de::from_str(&manifest_str).expect("Could not parse Cargo manifest as TOML"); |
|
|
|
// Find the romfs setting and compute the path |
|
let romfs_dir_setting = manifest_data |
|
.as_table() |
|
.and_then(|table| table.get("package")) |
|
.and_then(toml::Value::as_table) |
|
.and_then(|table| table.get("metadata")) |
|
.and_then(toml::Value::as_table) |
|
.and_then(|table| table.get("cargo-3ds")) |
|
.and_then(toml::Value::as_table) |
|
.and_then(|table| table.get("romfs_dir")) |
|
.and_then(toml::Value::as_str) |
|
.unwrap_or("romfs"); |
|
let romfs_path = PathBuf::from(format!("{manifest_dir}/{romfs_dir_setting}")); |
|
|
|
// Check if the romfs path exists so we can compile the module |
|
if romfs_path.exists() { |
|
println!("cargo:rustc-cfg=romfs_exists"); |
|
} |
|
|
|
println!("cargo:rerun-if-changed={}", manifest_dir); |
|
}
|
|
|