xtc/third_party/README.md
2026-11-06 19:05:14 +01:00

3.1 KiB

Pinned plugin ABI headers

No plugin binaries or SDK runtime library are bundled. Updates are explicit, reviewed source changes; ordinary builds never fetch from the network.

Headers Upstream revision License Maintenance/build impact
clap/include free-audio/clap, a47f6badb49d948fd009998f28309cdab78979c9 MIT, clap/LICENSE Active CLAP header specification, pinned snapshot; C99 compile-time dependency only
vst3/vst3_c_api.h steinbergmedia/vst3_c_api, 93a116f7c6c52a317ec3aaee9b13789068b5234e BSD-3-Clause, vst3/LICENSE.txt Official generated C ABI; review compatibility when updating the SDK snapshot; no C++ runtime adapter

Files are unmodified upstream snapshots. The VST3 header's opening comment refers to its accompanying license; that upstream license is retained verbatim. Install and binary packages include both notices under the xtc license directory. These headers define interoperability ABIs, not a grant to redistribute user plugins.

src/plugin/vst2_abi.h is original minimal Linux compatibility declarations; no Steinberg VST2 SDK, implementation or VST2-wrapping SDK is copied or distributed. Legacy VST2 support does not grant SDK/trademark/plugin distribution rights. There is no VST2 plugin-building target for third-party SDKs. The original test fixture implements only the ABI subset needed to test this host.

Optional full-SDK examples in examples/steinberg compile from explicitly supplied external VST3/ASIO SDK roots. Normal builds do not fetch or link them; no external SDK source or ASIO runtime is included in source/binary packages. See SDK integration and licenses.

The optional examples/juce integration uses an external JUCE source root, not vendored headers. The inspected JUCE 9.0.4 revision is AGPLv3/commercial; a commercial licence may be required. Original example source does not relicense JUCE or its dependencies. JUCE-linked outputs stay outside normal install and package targets. See JUCE dependency/license details.

CMake integration

The root CMake target xtc-core uses the pinned CLAP/VST3 directories as private system include paths. No download step or SDK runtime is required. Configure optional full SDK builds explicitly:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \
  -DXTC_BUILD_STEINBERG=ON -DXTC_VST3_SDK_ROOT=/path/to/vst3sdk \
  -DXTC_BUILD_JUCE=ON -DXTC_JUCE_ROOT=/path/to/JUCE
cmake --build build --parallel 3
ctest --test-dir build --output-on-failure -R 'steinberg|juce'

Leave both options off for normal builds. ASIO's native Windows diagnostic retains its separate CMake configuration described in the Steinberg examples; the Linux core is not a Windows/ASIO backend. See BUILD.md for target options and RELEASING.md for staging. The owned install inventory retains the CLAP and VST3 C-header license notices; JUCE/official SDK plugin binaries are excluded from normal install/package targets.