mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-21 14:55:43 +00:00
89140523dc
On Windows/MSVC the test executables for `psysonic-analysis`, `psysonic-audio` and the top `psysonic` crate link the wry/tao windowing runtime (via the tauri dependency) and statically import `TaskDialogIndirect` from comctl32. That symbol only exists in Common-Controls v6; System32 comctl32.dll is v5.82 and lacks it, so an unmanifested test exe aborts at startup with STATUS_ENTRYPOINT_NOT_FOUND (0xC0000139) before any test runs. The app binary avoids this through the manifest tauri_build embeds. Declare the Common-Controls v6 dependency on the test binaries via build-script link args, gated to windows-msvc. The app binary's manifest is unchanged (byte-identical: tauri_build already embeds the same dependency, the linker dedupes). Non-Windows/CI builds are unaffected.
21 lines
1.1 KiB
Rust
21 lines
1.1 KiB
Rust
fn main() {
|
|
// Windows/MSVC test binaries only: bind to Common-Controls v6.
|
|
//
|
|
// The library test harness (`--lib` unittests) links the wry/tao windowing
|
|
// runtime and statically imports `TaskDialogIndirect` from comctl32, which
|
|
// exists only in Common-Controls v6 (WinSxS). The real app binary gets that
|
|
// manifest from `tauri_build`, but the separate test executable does not, so
|
|
// it aborts at startup with STATUS_ENTRYPOINT_NOT_FOUND (0xC0000139). Add the
|
|
// dependency to test targets only — never the app binary (which already has a
|
|
// manifest via tauri_build) nor non-Windows/CI builds.
|
|
let is_windows_msvc = std::env::var("CARGO_CFG_TARGET_OS").as_deref() == Ok("windows")
|
|
&& std::env::var("CARGO_CFG_TARGET_ENV").as_deref() == Ok("msvc");
|
|
if is_windows_msvc {
|
|
println!(
|
|
"cargo::rustc-link-arg=/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"
|
|
);
|
|
}
|
|
|
|
tauri_build::build()
|
|
}
|