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

@ -10,27 +10,34 @@ No SDK or linked binary is copied into normal xtc packages.
## Build and test (Linux)
Supply JUCE explicitly, for example in `/your/path/JUCE`. With CMake >= 3.25,
GNU Make, a C/C++17 toolchain and JUCE's Linux development prerequisites:
Ninja or another CMake backend, a C/C++17 toolchain and JUCE's Linux development
prerequisites, configure from the repository root:
```sh
make JUCE_ROOT=/your/path/JUCE juce-examples
make JUCE_ROOT=/your/path/JUCE test-juce
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \
-DXTC_BUILD_JUCE=ON -DXTC_JUCE_ROOT=/your/path/JUCE
cmake --build build --target juce-examples --parallel 3
cmake --build build --target test-juce
```
The build never downloads JUCE, installs dependencies or copies plugins into
user plugin directories. It builds its own C99 PIC archive with JACK/FLTK disabled
under `build/juce/c-core`. `test-juce` also requires Xvfb and runs the processor
and JUCE-host checks, then loads the built instrument through xtc's C VST3 host.
Normal `make`, `make gui` and `make test` remain JUCE-independent.
user plugin directories. The bridge links the root `xtc-core` PIC C99 target;
there is no recursive Make build or duplicate core archive. `test-juce` requires
Xvfb and runs the processor, JUCE-host, file/editor and xtc C-host checks.
Normal builds leave `XTC_BUILD_JUCE=OFF` and remain JUCE-independent.
Build products:
Build products (Release):
- `build/juce/XtcJuceSynth_artefacts/Release/VST3/xtc JUCE Synth.vst3`
- `build/juce/XtcJuceSynth_artefacts/Release/Standalone/xtc JUCE Synth`
- `build/juce/xtc-juce-render_artefacts/Release/xtc-juce-render`
Set `BUILD_DIR=...` to move the main build root, or `JUCE_BUILD_DIR=...` to select
only the SDK example build directory.
Use CMake's `-B` argument to select another binary directory. Debug builds use
`Debug` in place of `Release`. The examples can also be configured directly with
`cmake -S examples/juce -B build/juce-only -DXTC_JUCE_ROOT=/your/path/JUCE
-DCMAKE_BUILD_TYPE=Release`; that standalone path adds the same root CMake core
with GUI/JACK/tests disabled rather than invoking Make. Its artefacts are directly
under `build/juce-only`, without the additional `juce` directory.
## Play and shape Soft Keys
@ -84,7 +91,7 @@ VST3 host. These operations do not start an audio device.
## Regression checks and an actual editor image
```sh
xvfb-run -a ctest --test-dir build/juce --output-on-failure
ctest --test-dir build --output-on-failure -R juce
xvfb-run -a ./build/juce/xtc-juce-render_artefacts/Release/xtc-juce-render --snapshot /absolute/new-editor.png
```