Migrated from Make to CMake.

This commit is contained in:
Johannes Findeisen 2026-11-06 19:05:14 +01:00
commit b6ba093000
52 changed files with 1276 additions and 1210 deletions

View file

@ -41,7 +41,7 @@ termination remain unqualified.
## Matrix, Capacity and Contention Checks
`make benchmark` records 24 warmed graph cases: 2/16/64/256 nodes, mono/stereo,
`cmake --build build --target benchmark` records 24 warmed graph cases: 2/16/64/256 nodes, mono/stereo,
44.1k/31, 48k/128 and 96k/1024. Each reports control-thread compile time
separately from 300 process calls, mean/p99/max, block deadline, mean load, and
paired graph buffer bytes. Timing, sorting, allocation and logging happen
@ -51,10 +51,10 @@ CPU/compiler/flags/kernel and all measurements. Copy a new run only after
reviewing changes and conditions.
```sh
make benchmark test-performance test-scale test-stress
make benchmark-compare BENCHMARK_MAX_REGRESSION=1.5
cmake --build build --target benchmark test-performance test-scale test-stress
cmake -S . -B build -DXTC_BENCHMARK_MAX_REGRESSION=1.5 && cmake --build build --target benchmark-compare
# Select a baseline from this same host/compiler/flags:
make benchmark-compare BENCHMARK_BASELINE=/path/to/performance.json
cmake -S . -B build -DXTC_BENCHMARK_BASELINE=/path/to/performance.json && cmake --build build --target benchmark-compare
```
Comparison rejects mismatched CPU/architecture/compiler/flags or missing cases.
@ -64,7 +64,7 @@ Repeat surprising results under comparable load; do not silently replace the
baseline to make a regression disappear. Scheduling, clocks, thermal state and
shared-machine contention still affect results. No real-time scheduling/pinning
or external profiler is required. CPU-pressure runs are correctness checks, not
comparable timing baselines. Tests/benchmark outputs live below BUILD_DIR.
comparable timing baselines. Tests/benchmark outputs live below the selected binary directory.
Initial matrix (Threadripper 1920X, GCC 16.2.1, -O2, 300 blocks): 256-node
stereo 48k/128 mean 353.214 us, p99 396.495 us, load .132; 96k/1024 mean
@ -118,13 +118,13 @@ graph matrix separately scales nodes and chain connections from 2 to 256. These
synthetic cases do not qualify every possible dense graph or plugin chain.
```sh
make benchmark benchmark-project
make benchmark-compare
make benchmark-project-compare
cmake --build build --target benchmark benchmark-project
cmake --build build --target benchmark-compare
cmake --build build --target benchmark-project-compare
# Baselines must match the current CPU/compiler/flags and workload.
make benchmark-project-compare PROJECT_BENCHMARK_BASELINE=/path/to/report.json
cmake -S . -B build -DXTC_PROJECT_BENCHMARK_BASELINE=/path/to/report.json && cmake --build build --target benchmark-project-compare
./build/test_performance 10000 64 128
make test-benchmark-tools
cmake --build build --target test-benchmark-tools
```
Both matrices report wall-clock mean/p99/max processing duration and the count
@ -154,10 +154,10 @@ on machine timing. Do not replace a failing baseline without investigating.
## Endurance, Faults and Callback Audit
```sh
make test-soak test-stress test-stress-plugins
make test-stress STRESS_ROUNDS=10
cmake --build build --target test-soak test-stress test-stress-plugins
cmake -S . -B build -DXTC_STRESS_ROUNDS=10 && cmake --build build --target test-stress
./build/test_soak 10000000
make check-development
cmake --build build --target check-development
```
`test-soak` renders exactly 1,000,000 alternating 31/128/1,024-frame stereo
@ -210,7 +210,7 @@ introduced without a separate correctness/performance justification.
Reproduce in an isolated build (GNU gprof must already be installed):
```sh
make BUILD_DIR=build/profile CFLAGS='-O2 -g -pg -std=c99 -Iinclude' LDFLAGS=-pg build/profile/test_performance
cmake -S . -B build/profile -DCMAKE_C_FLAGS='-O2 -g -pg -std=c99 -Iinclude' -DCMAKE_EXE_LINKER_FLAGS=-pg && cmake --build build/profile --target test_performance
GMON_OUT_PREFIX="$PWD/build/profile/gmon" ./build/profile/test_performance 10000 64 128
gprof build/profile/test_performance build/profile/gmon.* > build/profile/profile.txt
```