fn main() {
let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap();
let changelog_path = std::path::Path::new(&manifest_dir)
.join("..")
.join("..")
.join("CHANGELOG.md");
let out_dir = std::env::var("OUT_DIR").unwrap();
let dest = std::path::Path::new(&out_dir).join("CHANGELOG.md");
if changelog_path.exists() {
std::fs::copy(&changelog_path, &dest).expect("Failed to copy CHANGELOG.md");
} else {
std::fs::write(&dest, "Changelog not available.").expect("Failed to write fallback");
}
println!("cargo:rerun-if-changed={}", changelog_path.display());
println!("cargo:rerun-if-changed=resources/manifest");
println!("cargo:rerun-if-env-changed=CARGO_CFG_TARGET_OS");
println!("cargo:rerun-if-env-changed=CARGO_CFG_TARGET_ENV");
if std::env::var("CARGO_CFG_TARGET_OS").as_deref() == Ok("windows") {
match std::env::var("CARGO_CFG_TARGET_ENV").as_deref() {
Ok("msvc") => println!("cargo:rustc-link-arg-bin=arf=/STACK:10485760"),
Ok("gnu") => println!("cargo:rustc-link-arg-bin=arf=-Wl,--stack,10485760"),
Ok(environment) => println!(
"cargo:warning=Windows stack reserve is not configured for target environment {environment}"
),
Err(_) => println!("cargo:warning=CARGO_CFG_TARGET_ENV is unset for Windows target"),
}
}
#[cfg(windows)]
{
let resource = std::path::Path::new("resources")
.join("manifest")
.join("arf-manifest.rc");
let _ = embed_resource::compile_for_everything(resource, embed_resource::NONE);
}
}