• src/doors/syncconquer/COMPILING.md PROVENANCE.md build.bat src/doors/s

    From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Sun Jul 12 15:06:14 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/d49b5d0ec112048e7c541f2b
    Modified Files:
    src/doors/syncconquer/COMPILING.md PROVENANCE.md build.bat src/doors/syncconquer/vanilla/tiberiandawn/winstub.cpp
    Log Message:
    syncconquer: build syncdawn.exe on Windows (MSVC/Win32)

    Tiberian Dawn could not be built on Windows at all. Two things were in the
    way, and the second only showed up once the first was fixed and the compiler actually got to the TD sources.

    build.bat never enabled the title. It didn't pass -DBUILD_VANILLATD=ON, and
    the CMake cache default is OFF, so the if(TARGET VanillaTD) block was a no-op and the Win32 build silently produced syncalert.exe alone. It now mirrors build.sh: both titles by default, "ra" to build Red Alert alone, and it verifies (and reports) each binary it was asked to produce.

    With TD enabled, the engine failed to compile under MSVC:

    tiberiandawn/winstub.cpp(223): error C2065: 'Winsock': undeclared identifier

    commonv defines WINSOCK_IPX publicly on Windows, and redalert/winstub.cpp fences every legacy Winsock call behind #ifndef WINSOCK_IPX. TD's WM_DESTROY emergency-shutdown path does not, so it referenced a TcpipManagerClass Winsock that exists only in the #ifndef _WIN32 half of common/fakesock.h. Upstream never trips over this because its Windows build always defines SDL_BUILD and skips that whole non-SDL WndProc -- the same never-compiled path whose Win16-era 32-bit assumptions already pin this door to Win32. Guarded TD's two Winsock lines the way RA guards its own (vendored patch, PROVENANCE #32).

    COMPILING.md now describes the family as it actually is -- one tree, two
    titles -- with the binary/engine table, the per-title asset bundles, the BUILD_VANILLATD option, and -DBUILD_VANILLATD=ON added to every manual cmake example. It had also listed BUILD_VANILLATD among the switches "pinned by CMakeLists.txt -- don't set them by hand", which is backwards: it is deliberately the one non-FORCE cache variable a build dir is meant to set.

    Both binaries link clean at Win32/Release, with and without the vcpkg tiers. Verified build.bat, build.bat ra, and a hand-run cmake.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net