Migrated from Make to CMake.
This commit is contained in:
parent
cda05294f5
commit
b6ba093000
52 changed files with 1276 additions and 1210 deletions
|
|
@ -1,5 +1,9 @@
|
|||
# Roadmap
|
||||
|
||||
Build commands in Phases 0–107 are historical qualification records from the
|
||||
Makefile era. The current supported commands are in [BUILD.md](BUILD.md);
|
||||
Phase 108 replaces that build with CMake and CTest.
|
||||
|
||||
## Phase 0 — Baseline
|
||||
|
||||
### Goal
|
||||
|
|
@ -3500,6 +3504,77 @@ building JUCE's standalone wrapper does not establish hardware acceptance.
|
|||
|
||||
---
|
||||
|
||||
## Phase 108 — Complete CMake Build Migration
|
||||
|
||||
### Goal
|
||||
|
||||
Replace the hand-written root Makefile with a full CMake project and CTest,
|
||||
preserving C99/C++17 boundaries, optional dependencies, SDK examples, fixtures,
|
||||
developer tools and the audited installation/release workflows. This explicitly
|
||||
requested build migration can proceed alongside remaining hardware/platform
|
||||
qualification in earlier phases.
|
||||
|
||||
### Tasks and acceptance criteria
|
||||
|
||||
- [x] Define target-based core, CLI, GUI, example and plugin-fixture builds with
|
||||
warnings, generated dependencies and optional JACK/FLTK/LADSPA discovery.
|
||||
- [x] Register offline/unit/integration and GUI checks with CTest; keep live
|
||||
JACK workflows opt-in and retain linker-based fault injection.
|
||||
- [x] Provide separate debug/release/minimal/sanitizer presets, screenshot,
|
||||
analysis, benchmark, stress and focused test targets.
|
||||
- [x] Build optional Steinberg/JUCE SDK examples through root CMake; eliminate
|
||||
JUCE's recursive Make dependency while retaining standalone SDK entry points.
|
||||
- [x] Preserve staged install/uninstall, configurable layouts, pkg-config,
|
||||
license inventory, reproducible source exports and binary-package checks.
|
||||
- [x] Remove the root Makefile and update current documentation, examples,
|
||||
third-party build guidance and agent instructions to use CMake/CTest.
|
||||
- [x] Validate GNU Makefiles and Ninja, a minimal C-only build, GUI checks,
|
||||
sanitizer tests, SDK interoperability and release/install/package workflows.
|
||||
|
||||
### Implementation status
|
||||
|
||||
Completed on 2026-11-06 with CMake 4.4.5, GCC 16.2.1, Clang 23.1.4 and
|
||||
both Unix Makefiles and Ninja. The original build-rule Makefile was removed; see
|
||||
[BUILD.md](BUILD.md), [RELEASING.md](RELEASING.md) and
|
||||
[third-party guidance](../third_party/README.md).
|
||||
|
||||
Validation:
|
||||
|
||||
- Debug CMake build with JACK/FLTK: all 55 registered offline/GUI tests passed.
|
||||
- Ninja Release build with GUI/JACK/LADSPA disabled: all 41 tests passed; the
|
||||
configuration enabled only C, and `BUILD_TESTING=OFF` also built successfully.
|
||||
- Clang ASan/UBSan: all 42 offline tests passed, including one million virtual
|
||||
playback blocks. Clang static analysis passed for all C core sources.
|
||||
- Default/custom staged install and removal, C/C++ installed pkg-config consumers,
|
||||
symlink protection, prefix spaces and minimal/no-JACK installation passed.
|
||||
Binary archive contents, hashes, relocation and repeat packaging passed.
|
||||
- Two independent source-export Release builds (including the GUI and CTest)
|
||||
produced byte-identical `libxtc.a`, `xtc-check`, `xtc` and repacked archives.
|
||||
The check used an isolated temporary Git index to include the new CMake files
|
||||
without staging the user's working index; normal `dist` still exports indexed
|
||||
files as documented.
|
||||
- Root Steinberg SDK build: host interoperability and official validator CTests
|
||||
passed. Root JUCE build: all four C-host, file/editor, processor and JUCE-host
|
||||
CTests passed. The standalone JUCE entry point also configured and built its
|
||||
CMake core target successfully. The bridge does not invoke Make.
|
||||
- CMake screenshot capture produced four actual creative-workflow images in the
|
||||
ignored binary tree. Preview targets wrote the expected WAV files; graph and
|
||||
project benchmark drivers ran successfully (timings were not used as a gate
|
||||
while compilation was running). Three minimal-build CPU stress rounds passed.
|
||||
- Five opt-in live JACK/workflow tests were registered and inspected; they were
|
||||
not rerun as hardware acceptance. External SDK sources can emit upstream
|
||||
warnings; the normal project builds were warning-free.
|
||||
|
||||
A subsequent user-requested convenience Makefile forwards configure/build,
|
||||
CTest, GUI/run and clean commands to CMake. It has no compilation rules or source
|
||||
inventory; CMake remains authoritative. See [quick shortcuts](BUILD.md#quick-make-shortcuts).
|
||||
|
||||
Historical validation above remains as recorded. This migration adds no
|
||||
Windows/macOS, physical-device, native ASIO, or additional plugin-format
|
||||
qualification.
|
||||
|
||||
---
|
||||
|
||||
## Recommended Execution Order
|
||||
|
||||
Reorder the phases when the audit reveals a blocking dependency. Do not mark a
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue