Skip to content

Latest commit

 

History

History
79 lines (61 loc) · 2.94 KB

dev.md

File metadata and controls

79 lines (61 loc) · 2.94 KB

Developer guide

Building from source, running the test suites, sanitizers, cross-compiling, and CI, for both the terminal frontend (nam_console) and the graphical frontend (nam_sdl).

Terminal frontend (nam_console)

make            # build both frontends (default)
make console    # build only nam_console
make run        # build and run nam_console
make test       # configure + build + run its test suite
make sanitize   # configure + build + run under ASan/UBSan

CMake is the authoritative build system; the Makefile is a convenience wrapper. Equivalent presets:

cmake --preset debug && cmake --build --preset debug
ctest --preset debug --output-on-failure

cmake --preset release && cmake --build --preset release
ctest --preset release --output-on-failure

cmake --preset asan-ubsan && cmake --build --preset asan-ubsan
ctest --preset asan-ubsan --output-on-failure

Cross-compile the Windows console executable from Linux with make mingw (artifact: build/mingw/NAM_Console/nam_console.exe).

Graphical (SDL3) frontend (nam_sdl)

nam_sdl plays the same deterministic expedition with a rendered map, HUD, and overlays instead of ANSI text. It's opt-in at build time — an ordinary make console/make test never fetches SDL3.

Prerequisites: a C++17 toolchain and (for the reproducible presets) Ninja. FetchContent pulls and statically links pinned SDL3/SDL3_image/SDL3_ttf commits, so no system SDL install is required.

make sdl           # build nam_sdl
make run-sdl       # build and run it
make test-sdl      # configure/build/run its test suite

or with presets:

cmake --preset sdl-debug && cmake --build --preset sdl-debug
ctest --preset sdl-debug -L sdl --output-on-failure

Supported flags: --help, --version, --no-animation (disable presentation animation), and --smoke (headless asset/init check, no window). There is no --seed/--map selection in version 1 — it always launches a fixed internal seed's four-tier expedition.

Supported desktop platforms: Linux, Windows (MSVC and MinGW cross-compiled from Linux via make mingw-sdl), and macOS. See ../NAM_SDL/README.md for architecture, asset licensing, the test-coverage boundary, and troubleshooting.

CI

CI is split by cost. .github/workflows/ci.yml runs on every push and pull request as two independent tracks that never gate on each other — console (debug-preset tests, then a single advanced job running the acceptance, sanitizers, hardened, and Clang checks concurrently as a CMake superbuild — see cmake/advanced_checks/CMakeLists.txt — then Linux/MinGW release builds) and SDL (SDL debug-preset tests, then SDL ASan+UBSan, then Linux/MinGW nam_sdl release builds) — so a failure in one track never blocks the other from testing or shipping. .github/workflows/windows.yml (native MSVC) and .github/workflows/macos.yml are workflow_dispatch only, kept off the push tier due to billing multipliers.