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:
35
README.md
35
README.md
@@ -5,10 +5,11 @@ channel-based voice, channel + private text, one server you run yourself. Plain
|
||||
(control) and **UDP** (media), no WebRTC. Encrypted by default. A shared **C++ core**
|
||||
(`libvoicecat`) drives native clients (Swift on macOS/iOS, C# on Windows) and the server.
|
||||
|
||||
> **Status: pre-implementation.** The design is complete in [`docs/`](docs/). The code is an
|
||||
> M0 **skeleton** — it compiles and links, but every subsystem is a stub. See
|
||||
> [`AGENTS.md`](AGENTS.md) to start building, and [`docs/roadmap.md`](docs/roadmap.md) for the
|
||||
> milestones.
|
||||
> **Status:** Design complete in [`docs/`](docs/). M1–M5 are implemented — real TLS control
|
||||
> plane, encrypted UDP voice (Opus), multi-stream, TOFU identity pinning, channel tree,
|
||||
> permissions, moderation, disconnect/keepalive/reaper. Windows WinForms C# client shipped
|
||||
> (M4). macOS/iOS Swift client is next. See [`PROGRESS.md`](PROGRESS.md) and
|
||||
> [`docs/roadmap.md`](docs/roadmap.md).
|
||||
|
||||
## Read the design first
|
||||
|
||||
@@ -16,28 +17,34 @@ The [`docs/`](docs/) folder is the source of truth. Start at [`docs/README.md`](
|
||||
then `architecture` → `protocol` → `voice` → `security` → `tech-stack` → `deployment` →
|
||||
`roadmap`.
|
||||
|
||||
## Build the skeleton (no dependencies needed yet)
|
||||
## Build
|
||||
|
||||
The M0 skeleton builds with just a C++20 compiler + CMake + Ninja — **no vcpkg, no
|
||||
third-party libraries**, because every subsystem is currently a stub.
|
||||
The default development preset is **`dev`** — it builds everything (server + tools + tests)
|
||||
with real vcpkg deps. It works on Windows, Linux, and macOS (vcpkg triplet auto-resolved).
|
||||
|
||||
```bash
|
||||
# one-time vcpkg setup:
|
||||
git clone https://github.com/microsoft/vcpkg && ./vcpkg/bootstrap-vcpkg.sh # .bat on Windows
|
||||
export VCPKG_ROOT=/path/to/vcpkg # Linux/macOS; or $env:VCPKG_ROOT on PowerShell
|
||||
|
||||
# configure + build + test:
|
||||
cmake --preset dev
|
||||
cmake --build --preset dev
|
||||
ctest --preset dev # runs the smoke test (links the core, calls the C ABI)
|
||||
ctest --preset dev # 21 behavior tests
|
||||
```
|
||||
|
||||
Artifacts land in `build/dev/bin/` (`voicecat-server`, `vccli`).
|
||||
Artifacts land in `build/dev/bin/` (`voicecat-server`, `vccli`, `voicecat-admin`).
|
||||
|
||||
When you start implementing a subsystem that needs real libraries, build with vcpkg deps:
|
||||
The `skeleton` preset (no vcpkg deps, stubs only) is a fast smoke check that needs no
|
||||
third-party libraries:
|
||||
|
||||
```bash
|
||||
# one-time: git clone https://github.com/microsoft/vcpkg && ./vcpkg/bootstrap-vcpkg.sh
|
||||
export VCPKG_ROOT=/path/to/vcpkg # set VCPKG_ROOT (works on Linux/macOS/Windows)
|
||||
cmake --preset server-release # auto-installs deps from vcpkg.json
|
||||
cmake --build --preset server-release
|
||||
cmake --preset skeleton && cmake --build --preset skeleton && ctest --preset skeleton
|
||||
```
|
||||
|
||||
See [`docs/building.md`](docs/building.md) for the full preset matrix (including `release`,
|
||||
`server-release`, `windows-client`, and Apple platform scaffolding).
|
||||
|
||||
## Layout
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user