2.5 KiB
Build baseline
Phase 0 retains the existing layout: public C headers in include/xtc,
C implementation modules under src, optional C++ GUI under src/gui, and
tests under tests. src/main.c is a minimal headless startup/shutdown check;
it does not initialize audio devices or open a GUI.
Commands
make clean all test
./build/xtc-check
make debug
make gui
all builds the static C library and startup check. test runs the existing
core test and startup check. debug builds and tests separately in
build/debug. gui builds the existing placeholder shell; it does not produce
audio. Generated files remain under build and header changes trigger rebuilds.
Compiler, flags, BUILD_DIR, PKG_CONFIG, FLTK_CONFIG, and installation
PREFIX can be overridden through Make variables. C uses C99; GUI uses C++17.
Inspected Linux toolchain (2026-10-26)
| Component | Available version | Role |
|---|---|---|
| GCC / G++ | 16.2.1 | C core and optional C++ GUI |
| GNU Make | 4.4.1 | Build and test driver |
| pkg-config | 3.0.10 | Development package discovery |
| FLTK | 1.4.5 | Optional GUI; discovered through fltk-config |
| JACK | 3.1609.0 (pkg-config) | Candidate backend; not linked yet |
| ALSA | 1.2.16.1 (pkg-config) | Future MIDI candidate; not linked yet |
| Clang | 23.1.3 | Alternative compiler / diagnostics |
Valgrind is also available. The core tests use a small in-tree C test harness
and require no external test framework. FLTK has no fltk.pc on this host;
the Makefile tries pkg-config first, then fltk-config.
Dependencies and licensing
No new dependencies are introduced. The core needs the C runtime and math library. The repository is MIT licensed. The optional GUI uses maintained FLTK 1.4 (LGPL with FLTK's static-linking exception); its platform link flags come from the installed package. Distribution still requires review of all linked dependencies and notices. JACK and ALSA remain candidates only; backend selection and license review belong to Phase 2. No packages or system settings are changed by these build commands.
Next milestone
Phase 1 must replace insertion-order gain processing with a validated, topologically scheduled offline plan, preallocated buffers, oscillator, gain, meter and output nodes, and deterministic routing tests. The current gain prototype is not a real-time engine. Public project persistence declarations also remain unimplemented. Hardware playback and interactive GUI behavior are outside this baseline.