• .gitlab-ci-unix.yml .gitl

    From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Thu Jul 16 19:25:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/f88761b4f2123a438616835e
    Modified Files:
    .gitlab-ci-unix.yml .gitlab-ci.yml
    Log Message:
    CI: build libtermgfx and the doors that link it on Linux x64

    The termgfx door family had no CI coverage: the Doors section only builds
    the ODoors-based doors, which are gmake projects. libtermgfx, syncdoom, syncduke, syncretro, syncmoo1 and syncconquer are CMake projects, so the existing build_doors gate does not fit them -- it drives gmake command
    lines that mean nothing to CMake.

    Add a separate build_termgfx_doors input, defaulting to 'no', and enable
    it on linux/x64 only. These doors also build under Windows/MSVC via each
    door's build.bat, but the other CI targets are unverified, so platforms
    opt in as each one is confirmed rather than opting out after a red
    pipeline.

    The jobs share a .<os>-termgfx-door template carrying the gate, the
    ccache launcher and needs: []. Unlike the ODoors doors, these build their dependencies (xpdev, termgfx, and each door's vendored engine) as CMake sub-targets, so they need no *.tgz artifact from the library jobs and can
    start immediately.

    Each door is driven through its own build.sh, the documented entry point,
    which encodes that door's CMake flags -- syncconquer's -DBUILD_VANILLATD=ON adds the second Tiberian Dawn binary, so calling cmake directly here would silently halve its artifact. build.sh only builds; it never deploys into a
    live install. libtermgfx has no build.sh, so its job calls cmake directly
    and is the one place TERMGFX_TESTS is turned on, running ctest.

    ccache follows the [syncterm-cmake] job's convention and matters more for
    these trees, which vendor whole engines. It is set through the CMAKE_<LANG>_COMPILER_LAUNCHER environment variables rather than -D,
    because build.sh owns the cmake invocation and takes no extra arguments.

    syncscumm is deliberately excluded: it is a full ScummVM configure+make
    across five engines rather than a small CMake project, and wants its own
    job once the rest are proven.

    ---
    þ 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 Sat Jul 25 00:37:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/0cf4790c54a240fc5f1841e6
    Modified Files:
    .gitlab-ci-unix.yml .gitlab-ci.yml src/doors/.gitignore build.sh
    Log Message:
    CI: build the rest of the *nix doors

    The Doors section covered eight of the doors under src/doors and the
    termgfx section five, leaving ten of what src/doors/build.sh calls
    buildable with no *nix job at all -- the counterpart to the gap the
    Win32 jobs closed in 1edeb70972 (winter-0-fill).

    The eight added under a new build_more_doors input are the make(1)
    trees that predate ../build/Common.gmake, plus the three registration
    key generators. Only Linux has been confirmed to build them, so they
    gate like the termgfx doors do: a platform opts in once it is
    confirmed, rather than turning a pipeline red to find out. Several
    cannot build everywhere -- timeport links -lcurses, and sde, top and
    vbbs name an odoors library directory by `uname` that a cross-build
    does not have -- so folding them into build_doors, which is on for the
    BSDs, macOS, alpine, arm64 and the mingw-w64 cross-build, was not an
    option. Only smurfcombat builds through Common.gmake and needs the
    stamp touching the other door jobs do; the rest either link ../../odoors/libs-`uname` directly or compile the xpdev sources they
    want straight out of the checkout.

    SyncRPG and SyncSCUMM join the termgfx doors, which have been proven
    on Linux since they were added there. Both vendor a whole interpreter
    rather than a small engine, so their build.sh is two-stage and only
    the first stage goes through the ccache launcher variables; their
    external dependencies are also the heaviest, with SyncSCUMM requiring
    libmad and SyncRPG the EasyRPG/liblcf set.

    src/doors/build.sh gains the two key generators added after it was
    written, so its target table again matches what the tree can build,
    and .gitignore stops leaving their binaries untracked.

    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

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