Files
Cagire/build.rs
2026-03-05 22:14:28 +01:00

35 lines
1.6 KiB
Rust

//! Build script — embeds Windows application resources (icon, metadata).
fn main() {
let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap_or_default();
if target_os == "windows" {
// C++ runtime (stdc++, gcc, gcc_eh, pthread) linked statically via .cargo/config.toml
// using -Wl,-Bstatic. Only Windows system DLLs go here.
println!("cargo:rustc-link-lib=ws2_32");
println!("cargo:rustc-link-lib=iphlpapi");
println!("cargo:rustc-link-lib=winmm");
println!("cargo:rustc-link-lib=ole32");
println!("cargo:rustc-link-lib=oleaut32");
}
if target_os == "windows" {
let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap();
let icon = format!("{manifest_dir}/assets/Cagire.ico");
eprintln!("winres: manifest_dir = {manifest_dir}");
eprintln!("winres: icon path = {icon}");
eprintln!("winres: icon exists = {}", std::path::Path::new(&icon).exists());
eprintln!("winres: OUT_DIR = {}", std::env::var("OUT_DIR").unwrap_or_default());
eprintln!("winres: TARGET = {}", std::env::var("TARGET").unwrap_or_default());
let mut res = winres::WindowsResource::new();
res.set_icon(&icon)
.set("ProductName", "Cagire")
.set("FileDescription", "Forth-based music sequencer")
.set("LegalCopyright", "Copyright (c) 2025 Raphaël Forment");
if let Err(e) = res.compile() {
eprintln!("winres: compile error: {e:?}");
panic!("Failed to compile Windows resources: {e}");
}
}
}