fix(windows): statically link MinGW runtime into all binaries
The static-MinGW recipe (-static-libgcc -static-libstdc++ -static) was only applied inside the VOICECAT_BUILD_SHARED branch in core/CMakeLists, so it covered voicecat.dll but not voicecat-server.exe / vccli. With the x64-mingw-static triplet only vcpkg's own deps are static; the GCC/MinGW runtime stays dynamic, so the server failed to start on clean Windows machines with missing libgcc_s_seh-1.dll / libwinpthread-1.dll / libstdc++-6.dll. Move the recipe to a global add_link_options (WIN32 AND MINGW) so every produced binary embeds the runtime. Verified with objdump -p: only Windows system DLLs remain. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -37,6 +37,20 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|||||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||||
|
|
||||||
|
# ── Static MinGW runtime (Windows) ────────────────────────────────────────────
|
||||||
|
# x64-mingw-static only statically links vcpkg's OWN deps (protobuf, sodium, ...);
|
||||||
|
# the GCC/MinGW runtime stays dynamic by default, so every produced .exe/.dll
|
||||||
|
# otherwise depends on libgcc_s_seh-1.dll / libwinpthread-1.dll / libstdc++-6.dll
|
||||||
|
# at runtime — DLLs that exist on a dev box (MSYS2/UCRT64) but not on a clean
|
||||||
|
# Windows machine, where the server then fails to start with "… was not found".
|
||||||
|
# Apply the fully-static-MinGW recipe to ALL targets so binaries are portable.
|
||||||
|
# (The SHARED voicecat.dll already sets these in core/CMakeLists.txt; the duplicate
|
||||||
|
# is harmless. Verify with: objdump -p build/<preset>/bin/voicecat-server.exe |
|
||||||
|
# grep "DLL Name" — only Windows system DLLs should remain.)
|
||||||
|
if(WIN32 AND MINGW)
|
||||||
|
add_link_options(-static-libgcc -static-libstdc++ -static -lwinpthread)
|
||||||
|
endif()
|
||||||
|
|
||||||
# ── Targets ───────────────────────────────────────────────────────────────────
|
# ── Targets ───────────────────────────────────────────────────────────────────
|
||||||
add_subdirectory(core)
|
add_subdirectory(core)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user