56 lines
2.5 KiB
Markdown
56 lines
2.5 KiB
Markdown
# 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
|
|
|
|
```sh
|
|
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 and offline graph tests plus the 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 implements compiled offline plans, preallocated buffers, oscillator,
|
|
gain, meter/output nodes and routing tests; see AUDIO_ENGINE.md. Phase 2 adds
|
|
a hardware backend and safe cross-thread plan publication/retirement. Public
|
|
project persistence declarations remain unimplemented. Hardware playback and
|
|
interactive GUI behavior are not verified by the offline tests.
|