// Embed the application icon and EXE metadata on Windows.
//
// The icon (`resources/icon.ico`, multi-frame: 16/32/48/64/128/256) ends
// up as the executable's IDI_ICON1 resource — that's what Explorer, the
// taskbar, Alt+Tab, the Task Manager, and the title-bar of any dialog
// hosted by this process pick up. Regenerate the .ico from the source
// PNG by running `python3 resources/build_ico.py`.
//
// The version-info block populates the "Details" tab in the EXE's
// Properties dialog (ProductName / FileDescription / etc.). winres
// derives FileVersion / ProductVersion from CARGO_PKG_VERSION
// automatically.
//
// We gate on `CARGO_CFG_TARGET_OS` (the *target* OS, not the host) so a
// cross-compile from Linux/macOS to Windows still embeds the icon. winres
// inspects the active linker/toolchain (windres for GNU, rc.exe for MSVC)
// when invoked.

fn main() {
    println!("cargo:rerun-if-changed=build.rs");
    println!("cargo:rerun-if-changed=resources/icon.ico");
    // winres derives FileVersion / ProductVersion from `CARGO_PKG_VERSION`,
    // which is sourced from `Cargo.toml`. Without this directive, cargo
    // happily skips the build script when only the version field changed
    // (build.rs and the .ico are byte-identical), and the resulting EXE
    // ships with stale "FileVersion" / "ProductVersion" properties — the
    // binary itself is the new build, but Explorer's Properties dialog
    // and any Authenticode tooling that reads the resource block see the
    // previous version. Forcing a re-run on Cargo.toml changes is cheap
    // (winres compile is sub-second) and bulletproof.
    println!("cargo:rerun-if-changed=Cargo.toml");

    let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap_or_default();
    if target_os != "windows" {
        return;
    }

    let mut res = winres::WindowsResource::new();
    res.set_icon("resources/icon.ico")
        .set("ProductName", "HelloAgent")
        .set("FileDescription", "HelloAgent — RustDesk-protocol support agent")
        .set("CompanyName", "cStudio GmbH")
        .set("LegalCopyright", "Copyright © 2026 cStudio GmbH")
        .set("OriginalFilename", "hello-agent.exe")
        .set("InternalName", "hello-agent");
    if let Err(e) = res.compile() {
        eprintln!("winres: failed to compile icon resource: {e}");
        std::process::exit(1);
    }
}
