• src/doors/syncdoom/build.

    From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Saturday, June 20, 2026 14:04:00
    https://gitlab.synchro.net/main/sbbs/-/commit/ebb7ed52b3c00825b41c5c57
    Added Files:
    src/doors/syncdoom/build.bat build.sh xtrn/syncdoom/.gitignore
    Modified Files:
    docs/v322_new.md src/doors/syncdoom/COMPILING.md MULTIPLAYER.md xtrn/syncdoom/README.md
    Log Message:
    syncdoom: docs + build-helper polish for release

    Documentation review before publishing the door:
    - xtrn README: Windows/MSVC is documented as SUPPORTED (build.bat or CMake +
    vcpkg, see COMPILING.md), not "planned" -- the Winsock port has shipped.
    - MULTIPLAYER.md: add the `[net] skill` and `[wadset:*] skill` keys to the
    config tables and correct the stale "skill is not a set key" note (it is one).
    - COMPILING.md: document the one-command build helpers in each platform section.
    - docs/v322_new.md: add SyncDOOM to the Stock Modules "what's new" list.

    Build helpers:
    - build.sh: the *nix counterpart of build.bat -- CMake configure + build, then
    copy the binary next to the lobby in this tree's xtrn/syncdoom/ (the same place
    build.bat installs the .exe). For an in-place install that's the live door dir;
    JPEG-XL tier auto-enabled when libjxl is found.
    - build.bat: track the existing Windows/MSVC build+install helper (was untracked).
    - xtrn/syncdoom/.gitignore: ignore the locally-built syncdoom / syncdoom.exe door
    binaries so they can't be committed by accident.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Friday, June 26, 2026 18:53:00
    https://gitlab.synchro.net/main/sbbs/-/commit/32936e72194b217d8d068f92
    Modified Files:
    src/doors/syncdoom/build.sh src/doors/syncduke/build.sh
    Log Message:
    syncduke/syncdoom: build.sh deploys to the live install, not just the repo

    A sysop reported re-running build.sh without his live door binary updating. build.sh derived its destination purely from the script's own location (../../../xtrn/<door>), which is the REPO's xtrn -- correct only when the live xtrn is the repo's (the recommended SYMLINK=1 *nix install, where xtrn -> repo/xtrn). On a COPY-style install the live xtrn is a separate directory the in-tree copy never reaches, so the running door kept the old binary. The binary is a git-ignored build artifact, so unlike the tracked door files it is not carried to a live install by `git pull` / `update.js` -- build.sh is what must deliver it.

    Deploy to the in-tree bundle AND, when it is a distinct directory, the live install -- located via $SBBSCTRL (install root = $SBBSCTRL/..) or an explicit $SYNCDUKE_DEST / $SYNCDOOM_DEST override. Same-directory targets (symlinked or build-in-place installs) are detected with -ef and skipped, and the deployed path is printed so a wrong guess/fallback is visible.

    The -ef guard also fixes a latent abort: cp -f onto a dev symlink (xtrn/<door>/<door> -> build/<door>) is a same-file copy that errors and, under `set -e`, aborted the whole script.

    Validated for both doors across three layouts: in-tree-only (SBBSCTRL unset), copy install (separate live dir gets the binary, verified byte-identical), and symlinked install (live == in-tree, skipped).

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows@VERT to Git commit to main/sbbs/m on Wednesday, July 01, 2026 02:20:00
    https://gitlab.synchro.net/main/sbbs/-/commit/89052800b9848c522a608af7
    Modified Files:
    src/doors/syncdoom/build.bat vcpkg.json src/doors/syncduke/build.bat vcpkg.json src/doors/termgfx/CMakeLists.txt
    Log Message:
    syncduke/syncdoom: link libsndfile via vcpkg for MSVC OGG music

    termgfx only detected libsndfile through pkg_check_modules (pkg-config),
    which doesn't exist under MSVC -- so on Windows the OGG-encode path was silently never compiled and rendered music always fell back to raw-PCM
    WAV. The MinGW-GCC libsndfile vendored in 3rdp/ (for SyncTERM) can't fill
    the gap: its objects pull in libgcc intrinsics (__chkstk_ms, __udivdi3)
    and MinGW CRT thunks (__mingw_printf, __imp____acrt_iob_func) that MSVC's linker can't satisfy from the UCRT.

    - termgfx/CMakeLists.txt: try find_package(SndFile CONFIG) first (the
    vcpkg/MSVC path; also chains in the transitive static codec deps --
    Vorbis/Ogg/FLAC/Opus -- via libsndfile's own config), then fall back to
    the existing pkg-config path for *nix.
    - syncduke/syncdoom vcpkg.json: add the libsndfile dependency (+ note the
    vendored MinGW build can't be used by the MSVC door).
    - syncduke/syncdoom build.bat: the vcpkg-prefix messages/comments now
    cover libjxl and libsndfile.

    Verified: both doors configure with "termgfx: libsndfile 1.2.2 (CONFIG)
    found -> OGG music compression" and build clean (vcpkg libsndfile:x86-windows-static-md).

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

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