mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 10:19:47 -04:00
45408d60f1
recompiler/CMakeLists.txt defined both `psxrecomp` (the user-facing CLI, src/main_cli.cpp) and `PSXRecomp` (a legacy duplicate of psxrecomp-game, built from the identical PSXRECOMP_GAME_SOURCES list). CMake treats those as distinct targets, but Windows and macOS filesystems are case-insensitive, so both wrote the same file and the last one linked won. The CLI lost. After a clean build, psxrecomp.exe was the game recompiler, answering `--config <game.toml>` instead of the documented `build --disc ... --bios ... --output ...`. tools/build_cli.py packages that binary into psxrecomp-cli-windows-x86_64.zip, and README's first instruction to a new user is to download and run it, so the primary onboarding path handed people a program matching no documentation. Invisible on Linux, which is why it survived. Remove the legacy target (psxrecomp-game already covers those sources) and add a configure-time guard so it cannot recur: the guard compares OUTPUT_NAME case-insensitively across a directory's targets and fails with an actionable message. A rename alone would not have prevented recurrence. The PSXRecomp.exe named in README's Release Package section is a different artifact, the BIOS-only runtime named via OUTPUT_NAME in runtime/runtime.cmake, and is unaffected. Verified: clean build now yields psxrecomp.exe (791KB) printing the documented `build --disc` interface; no case-colliding pair remains; guard confirmed to fire by temporarily reintroducing a collision. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>