Migrated from Make to CMake.
This commit is contained in:
parent
cda05294f5
commit
b6ba093000
52 changed files with 1276 additions and 1210 deletions
62
README.md
62
README.md
|
|
@ -40,23 +40,37 @@ hosting supports the compatible mono processors documented in
|
|||
|
||||
## Build
|
||||
|
||||
Requirements: a C compiler, a C++ compiler, GNU Make, and `pkg-config`. FLTK is optional for the core and tests.
|
||||
Requirements: CMake 3.25+, a C99 compiler, Python 3.12+ and a build backend
|
||||
such as Ninja or Unix Makefiles. The optional GUI needs C++17 and FLTK; JACK and
|
||||
LADSPA development files enable their optional integrations.
|
||||
|
||||
```sh
|
||||
make
|
||||
make test
|
||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
|
||||
cmake --build build --parallel
|
||||
ctest --test-dir build --output-on-failure
|
||||
```
|
||||
|
||||
`make` also builds `build/xtc-check`, a headless core startup/shutdown
|
||||
check. Use `make debug` for a separate debug build and test run. See
|
||||
[docs/BUILD.md](docs/BUILD.md) for the inspected toolchain and baseline limits.
|
||||
|
||||
Build the optional FLTK GUI if FLTK is installed:
|
||||
For quick development, the optional Make wrapper provides the same workflow:
|
||||
|
||||
```sh
|
||||
make gui
|
||||
make # configure and build
|
||||
make test # build and run CTest
|
||||
make gui # build just the FLTK application
|
||||
make run # build and launch it
|
||||
make clean # clean products; keep the CMake cache
|
||||
```
|
||||
|
||||
Override `BUILD_DIR`, `BUILD_TYPE` or `JOBS` as needed, for example
|
||||
`make BUILD_DIR=build/release BUILD_TYPE=Release JOBS=8`. Pass additional options
|
||||
with `CMAKE_ARGS` and `CTEST_ARGS`. CMake remains the authoritative build system.
|
||||
|
||||
This builds `libxtc.a`, the headless `xtc-check`, tests, examples and the FLTK
|
||||
application when available. Live JACK tests are opt-in. Use `-DXTC_BUILD_GUI=OFF`
|
||||
for the C-only build, or the `debug`, `release`, `minimal` and `sanitize` presets
|
||||
for separate configurations. See [docs/BUILD.md](docs/BUILD.md) for options,
|
||||
focused tests, installation and IDE setup. [Phase 108](docs/ROADMAP.md#phase-108--complete-cmake-build-migration) records
|
||||
the CMake migration.
|
||||
|
||||
Run the GUI:
|
||||
|
||||
```sh
|
||||
|
|
@ -93,24 +107,24 @@ active graph intact; queued changes are labeled until the engine adopts them.
|
|||
See [GUI documentation](docs/GUI.md).
|
||||
For Linux installation, routing and CLI options see [LINUX.md](docs/LINUX.md);
|
||||
for native effects/instruments see [NATIVE_API.md](docs/NATIVE_API.md).
|
||||
`make release`, `make dist`, `make test-install` and `make test-release` provide
|
||||
release preparation; see [RELEASING.md](docs/RELEASING.md) for exact guarantees.
|
||||
With JACK development files and an existing JACK-compatible server, run the
|
||||
isolated software-loopback test with `make test-jack` and the record/reopen/play
|
||||
acceptance test with `make test-jack-audio` and MIDI acceptance with
|
||||
`make test-jack-midi`. It connects only test
|
||||
clients. See [engine documentation](docs/AUDIO_ENGINE.md) for configuration,
|
||||
routing, ownership and recovery.
|
||||
The release preset and CMake’s `dist`, `test-install`, `test-release` and
|
||||
`test-package` targets provide release preparation; see
|
||||
[RELEASING.md](docs/RELEASING.md) for exact guarantees.
|
||||
With JACK development files and an existing JACK-compatible server, configure
|
||||
with `-DXTC_ENABLE_LIVE_TESTS=ON`, build, and run
|
||||
`ctest --test-dir build --output-on-failure -L live`. These software-loopback
|
||||
checks connect only test clients. See [engine documentation](docs/AUDIO_ENGINE.md)
|
||||
for configuration, routing, ownership and recovery.
|
||||
|
||||
Clean generated files:
|
||||
|
||||
```sh
|
||||
make clean
|
||||
cmake --build build --target clean
|
||||
```
|
||||
|
||||
## Suggested first agent task
|
||||
|
||||
Read `AGENT.md` and `docs/ARCHITECTURE.md`. Inspect the existing implementation, run `make test`, and report gaps before adding the next feature. Do not jump directly to plugin hosting or a full sequencer.
|
||||
Read `AGENT.md` and `docs/ARCHITECTURE.md`. Inspect the existing implementation, run `cmake --build build --target check`, and report gaps before adding the next feature. Do not jump directly to plugin hosting or a full sequencer.
|
||||
|
||||
## License
|
||||
|
||||
|
|
@ -128,19 +142,19 @@ See [RECOVERY.md](docs/RECOVERY.md), [NATIVE_API.md](docs/NATIVE_API.md) and
|
|||
For everyday use see [USER_MANUAL.md](docs/USER_MANUAL.md),
|
||||
[KNOWN_LIMITATIONS.md](docs/KNOWN_LIMITATIONS.md) and
|
||||
[MAINTENANCE.md](docs/MAINTENANCE.md). `xtc-check --diagnose` reports build features;
|
||||
`make test-package` checks a local system-linked Linux binary archive.
|
||||
`cmake --build build --target test-package` checks a local system-linked Linux binary archive.
|
||||
Effect automation/controllers, editing commands, v7 project-folder media paths,
|
||||
performance baselines and release/installation checks are also supported.
|
||||
|
||||
Non-destructive audio splitting, clip gain/fades and cached timeline waveforms
|
||||
are supported, with undo and v8 persistence (reading v1–v7). See
|
||||
[AUDIO_FILES.md](docs/AUDIO_FILES.md#non-destructive-clip-editing).
|
||||
`make test-audio-editing` checks source preservation and exact boundary output.
|
||||
`cmake --build build --target test-audio-editing` checks source preservation and exact boundary output.
|
||||
Time stretching and independent pitch shifting remain deferred.
|
||||
|
||||
Signal-flow graph layout, routing diagnostics, direction/role indicators and
|
||||
atomic unity-gain insertion into a wire are supported. See
|
||||
[ROUTING.md](docs/ROUTING.md); `make test-routing` verifies the C routing contract.
|
||||
[ROUTING.md](docs/ROUTING.md); `cmake --build build --target test-routing` verifies the C routing contract.
|
||||
|
||||
One-level mix buses, routing, coherent track/bus peaks and master clipping
|
||||
indicators are supported, persisted in v9 (reading v1–v8). See [MIXER.md](docs/MIXER.md).
|
||||
|
|
@ -198,12 +212,12 @@ for file support, routing and persistence details.
|
|||
|
||||
[Steinberg SDK integration (Phase 106)](docs/STEINBERG.md) adds conventional Linux
|
||||
VST3 bundle loading, transport context, official-SDK gain/synth examples and
|
||||
validator checks. Run `make VST3_SDK_ROOT=/path/to/vst3sdk test-steinberg-sdk`
|
||||
validator checks. Run `cmake -S . -B build -DXTC_VST3_SDK_ROOT=/path/to/vst3sdk -DXTC_BUILD_STEINBERG=ON && cmake --build build --target test-steinberg-sdk`
|
||||
for optional SDK qualification. A Windows ASIO device diagnostic is provided;
|
||||
a native ASIO playback/capture backend remains planned.
|
||||
|
||||
[JUCE integration (Phase 107)](docs/JUCE.md) provides an optional VST3/standalone
|
||||
Soft Keys instrument with a native editor, DSP effects, presets, MIDI-to-WAV
|
||||
rendering and VST3 hosting examples. Build and qualify it with
|
||||
`make JUCE_ROOT=/path/to/JUCE test-juce`; review JUCE’s AGPLv3/commercial licence
|
||||
`cmake -S . -B build -DXTC_JUCE_ROOT=/path/to/JUCE -DXTC_BUILD_JUCE=ON && cmake --build build --target test-juce`; review JUCE’s AGPLv3/commercial licence
|
||||
before distributing linked binaries. See [the examples](examples/juce/README.md).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue