Story: Build stabilisation 3
Table of Contents
This page documents a story in Sprint 03. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
Bring the build environment to a state where Windows, Linux, and macOS all build cleanly and CI has a real Postgres for integration tests.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 03 |
| Now | Story closed; Windows clang-cl preset in place, dynamic-library build healthy, vcpkg patches apply on Windows, Postgres available in CI. |
| Waiting on | None. |
| Next | None. |
| Last touched | 2025-11-15 |
Acceptance
windows-msvc-clang-clpreset configures and builds.- The build produces dynamic libraries by default.
- vcpkg ports apply patches successfully on Windows.
- CI runs against a Postgres instance.
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Add support for windows-msvc-clang-cl | DONE | 2025-11-15 | 2025-11-15 | Add a CMake preset and toolchain wiring for clang-cl on Windows alongside MSVC. |
| Build using dynamic libraries | DONE | 2025-11-15 | 2025-11-15 | Switch the build to produce dynamic libraries to reduce link times and binary footprint. |
| Fix vcpkg patch application on Windows | DONE | 2025-11-15 | 2025-11-15 | Diagnose and work around vcpkg failing to apply a port patch on Windows. |
Decisions
- Dynamic libraries by default
- cut link times across the board and let plugin-style components (Qt-side widgets, codegen outputs) load incrementally.
- clang-cl as a first-class Windows toolchain
- lets us share most warnings / sanitisers with the Linux clang build.
Out of scope
- macOS notarisation, Windows code signing (deferred).
- ASan / TSan runs (deferred to a logging/observability story).
See also
- CMake setup — preset menu (the new
windows-msvc-clang-cl-debug-ninjapreset this story landed sits here). - How do I configure the project? / How do I build the system? — recipes that exercise the stabilised build paths.
- Build quality (sprint 01) and Build stabilisation (sprint 02) — predecessor stories in the same thread.