build(cmake): clean up presets, add release/apple presets, cross-platform triplets
Rationalize the preset set to match the project's actual state (past M5): - Rename dev->skeleton (no-deps stub smoke), m1-dev->dev (default dev preset) - Drop m2-dev (cache-identical to m1-dev) - Add release preset (optimized + tests on, symbols kept) - Strip server-release binaries (-s linker flag) - Add apple-dev/apple-ios/apple-ios-sim scaffolding presets for XCFramework Add cmake/voicecat-toolchain.cmake wrapper that auto-resolves the vcpkg triplet from the host platform (x64-mingw-static/x64-linux/arm64-osx) so the main presets work on Windows/Linux/macOS without per-OS variants. Update all docs (building.md, CLAUDE.md, README.md, AGENTS.md, deployment.md, tech-stack.md, client READMEs) and stale preset-name references in code comments. No C++ behavior changes — the core was already portable.
This commit is contained in:
43
PROGRESS.md
43
PROGRESS.md
@@ -10,6 +10,49 @@ up instantly. Newest status at the top.
|
||||
|
||||
## ▶ Where we left off / next action
|
||||
|
||||
- **Done:** **CMake preset cleanup + cross-platform build config** (2026-06-18). The preset
|
||||
set was a mess — `dev` (never used), `m1-dev` (the one everyone used), `m2-dev`
|
||||
(cache-identical to `m1-dev`, never used), no optimized+tests preset, no stripping.
|
||||
Cleaned up to a sensible set + added cross-platform triplet auto-resolution + Apple
|
||||
platform scaffolding:
|
||||
- **Renames:** `dev`→`skeleton` (no-deps stub smoke — accurately named now); `m1-dev`→`dev`
|
||||
(the default development preset — milestone-named presets were misleading since the
|
||||
project is past M5); `m2-dev` **dropped** (cache-identical to `m1-dev`).
|
||||
- **New presets:** `release` (optimized Release + tests on, symbols kept — run the suite
|
||||
against optimized code or profile); `apple-dev` / `apple-ios` / `apple-ios-sim`
|
||||
(scaffolding — static `libvoicecat.a` slices for the Swift Package / XCFramework; marked
|
||||
"not yet CI-validated, build on macOS to verify").
|
||||
- **`server-release`** now strips binaries (`CMAKE_EXE_LINKER_FLAGS=-s` +
|
||||
`CMAKE_SHARED_LINKER_FLAGS=-s`) — smaller executables for deployment.
|
||||
- **Cross-platform triplet auto-resolution:** new `cmake/voicecat-toolchain.cmake` wraps
|
||||
vcpkg's toolchain and resolves `VCPKG_TARGET_TRIPLET` / `VCPKG_HOST_TRIPLET` from
|
||||
`CMAKE_HOST_SYSTEM_NAME` + `CMAKE_HOST_SYSTEM_PROCESSOR` — `x64-mingw-static` on Windows,
|
||||
`x64-linux` on Linux, `arm64-osx` on Apple Silicon. The main presets (`dev`, `release`,
|
||||
`server-release`) now work on all three platforms without per-OS variants. Cross-compile
|
||||
presets (`apple-ios`, `apple-ios-sim`) override `VCPKG_TARGET_TRIPLET` explicitly. Hidden
|
||||
base preset renamed `vcpkg-base`→`vcpkg-common` (now points at the wrapper toolchain
|
||||
instead of vcpkg's toolchain directly).
|
||||
- **No C++ source changes** — the core was already portable (every `#ifdef _WIN32` in
|
||||
`client.cpp` already had a POSIX `#else`; `voicecat.h`'s export macro already handled
|
||||
GCC visibility; `transport.cpp` is pure Asio; miniaudio abstracts WASAPI/CoreAudio/ALSA).
|
||||
- **Docs updated:** `docs/building.md` (full rewrite — 8-preset table, platform matrix,
|
||||
preset history mapping old names to new, Apple scaffolding section), `CLAUDE.md` (build
|
||||
section reframed around `dev` as default, status line updated to M5-done), `README.md`
|
||||
(stale "M0 skeleton" framing replaced with current M5 reality), `AGENTS.md` (build
|
||||
section updated, stale "placeholder builtin-baseline" sentence deleted),
|
||||
`docs/deployment.md` (server-release now stripped + cross-platform note),
|
||||
`docs/tech-stack.md` §4 (triplet auto-resolution + Apple scaffolding note),
|
||||
`clients/apple/README.md` (new "Building the core for Apple platforms" section with
|
||||
XCFramework workflow), `clients/windows/README.md` (m1-dev→dev).
|
||||
- **Code comments updated:** `core/include/voicecat.h`, `core/src/net/transport.h`,
|
||||
`core/src/voicecat.cpp`, `tests/CMakeLists.txt` — preset name references updated.
|
||||
- **Historical `PROGRESS.md` entries left intact** — `m1-dev`/`m2-dev` mentions in older
|
||||
entries are a true record of what was run; rewriting them would falsify history. The
|
||||
preset history table in `docs/building.md` §1 maps old names to new.
|
||||
- **Verified:** `cmake --list-presets` shows all 8 presets. `skeleton` + `dev` configure
|
||||
and build green on Windows. Apple presets are scaffolding (won't build on Windows —
|
||||
expected; they require macOS).
|
||||
|
||||
- **Done:** **Disconnect, timeout & keepalive system** (2026-06-18). Three reported bugs
|
||||
traced to one root cause + two missing designed features, all fixed:
|
||||
1. **Stale users after disconnect + eternal PLC hiss** (root cause): `ConnSession::close()`
|
||||
|
||||
Reference in New Issue
Block a user