1
0
Fork 0
forked from hanez/xtc
xtc/docs/LINUX.md

58 lines
3 KiB
Markdown

# Linux setup and installation
Use a C99 compiler, C++17 compiler for the GUI, GNU Make, binutils and pkg-config.
The core needs only the C/math runtime. FLTK 1.4 development files enable the GUI;
JACK-compatible development files enable the optional audio/MIDI backend.
Packaging/install tests additionally use Python 3.12+ (standard library only).
No command starts a server, installs dependencies or changes system settings.
```sh
make all test
make gui
./build/xtc
```
Start/configure a JACK or PipeWire JACK-compatible server through your existing
system setup first. xtc opens without starting one and requires reconnect after
server loss/rate changes. In a separate JACK routing tool connect desired MIDI
to `midi_in`, audio capture to `input`, and `output`/`output_right` to left/right
playback ports. No physical routes are automatic. Input/recording remain mono.
See GUI.md, AUDIO_FILES.md, MIDI.md and MIXER.md for composing/recording/editing.
`xtc --help` and `xtc --version` work without a display/server. `xtc project.xtc`
opens one project; no-file startup retains FLTK options such as `-display`.
`xtc-check --validate project.xtc` validates metadata only; native graphs cannot
be serialized. See RECOVERY.md before replacing damaged files.
## Staged installation
Core-only installation retains the original `make install` behavior and now
adds xtc-check, pkg-config metadata, license and documentation. install-gui adds
the GUI executable and desktop launcher. Defaults to PREFIX=/usr/local:
```sh
make install-gui DESTDIR="$PWD/build/stage" PREFIX=/usr
make uninstall DESTDIR="$PWD/build/stage" PREFIX=/usr
```
Review staged contents before using a package manager or choosing a writable
live prefix. For a user installation, use an absolute PREFIX such as
`$HOME/.local` and ensure its bin is in PATH. Prefixes containing spaces are
tested; shell metacharacters/newlines, quotes, dollar signs and backslashes are
not supported. No root installation is performed by tests. Uninstall from the
same source version and prefix: it removes only known files, keeps unrelated
files and removes directories only if empty. It is idempotent. It is not a
system package manager and cannot undo replacement of another installation.
Installed files: bin/xtc-check, optional bin/xtc, include/xtc/*.h, lib/libxtc.a,
lib/pkgconfig/xtc.pc, share/doc/xtc, share/licenses/xtc/LICENSE and optional
share/applications/xtc.desktop. No daemon, service, bundled library or MIME
registration is installed. Desktop caches are left to the packager/environment.
The launcher uses the system audio icon and can open a single file argument.
C/C++ consumers use `pkg-config --cflags --libs --static xtc` plus the chosen
compiler; expose PREFIX/lib/pkgconfig through PKG_CONFIG_PATH when needed.
Static backend consumers need JACK if that optional backend was built; the pc
file records its private dependency. Public headers contain no JACK/FLTK types.
To build without optional libraries, set PKG_CONFIG=false FLTK_CONFIG=false.
Python is not needed to run the installed executables or library.