• src/conio/GNUmakefile src/sbbs3/gtkchat/GNUmakefile src/sbbs3/scfg/GNU

    From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Fri Jul 24 00:10:50 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/7941f2308d4f8526b28cb59b
    Modified Files:
    src/conio/GNUmakefile src/sbbs3/gtkchat/GNUmakefile src/sbbs3/scfg/GNUmakefile src/sbbs3/syncview/GNUmakefile src/sbbs3/targets.mk src/sbbs3/uedit/GNUmakefile src/sbbs3/umonitor/GNUmakefile src/syncterm/GNUmakefile
    Log Message:
    build: depend on $(HASH_LIB) wherever $(HASH_LIBS) is linked

    Every target that links $(HASH_LIBS) needs the hash library to be built
    first, but only $(SBBS) and $(JSDOOR) named $(HASH_LIB) as a
    prerequisite. $(HASH_LIB) appeared nowhere in targets.mk, so "make sexyz"
    (and the other utils, scfg, uedit, umonitor, syncview, gtkchat,
    cterm_test and syncterm) never descended into src/hash and simply linked whatever libhash.a happened to be lying around.

    That was harmless only because the library's exported surface had not
    changed in years. Adding crc32tbl_slicing in boost-4-twins (f7c50ed5e3) introduced the first new symbol, and an incremental build against a
    stale libhash.a then failed to link:

    zmodem.o: undefined reference to `crc32tbl_slicing'

    Dependency (.d) files cannot cover this: they express header-to-object dependencies within one make invocation, not the sub-make descent into src/hash, and the failure is a link-time dependency on a library rather
    than a compile-time dependency on a header.

    Verified by deleting libhash.a and rebuilding: standalone-utils now
    descends into src/hash exactly once and links cleanly, and each of the
    other patched makefiles issues the descent as well.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)