Phase 15: host trusted LADSPA processors with persisted graph state
This commit is contained in:
parent
c3eadee891
commit
f72314b5a3
24 changed files with 1046 additions and 70 deletions
72
Makefile
72
Makefile
|
|
@ -15,7 +15,7 @@ CXXFLAGS ?= -O2 -g
|
|||
CXXFLAGS += -std=c++17 -Wall -Wextra -Wpedantic -Iinclude
|
||||
LDFLAGS ?=
|
||||
|
||||
CORE_SOURCES := src/native/processor.c src/audio/recovery.c src/dsp/ramp.c src/native/native.c src/mixer/model.c src/mixer/render.c src/project/history.c src/midi/model.c src/midi/instrument.c src/audio/wave.c src/audio/arrangement.c src/audio/recorder.c src/core/xtc.c src/project/project.c src/persistence/project_file.c src/graph/graph.c src/dsp/gain.c src/engine/offline_engine.c src/engine/realtime.c src/backend/jack_backend.c
|
||||
CORE_SOURCES := src/plugin/ladspa.c src/native/processor.c src/audio/recovery.c src/dsp/ramp.c src/native/native.c src/mixer/model.c src/mixer/render.c src/project/history.c src/midi/model.c src/midi/instrument.c src/audio/wave.c src/audio/arrangement.c src/audio/recorder.c src/core/xtc.c src/project/project.c src/persistence/project_file.c src/graph/graph.c src/dsp/gain.c src/engine/offline_engine.c src/engine/realtime.c src/backend/jack_backend.c
|
||||
JACK_AVAILABLE := $(shell $(PKG_CONFIG) --exists jack 2>/dev/null && echo yes)
|
||||
ifeq ($(JACK_AVAILABLE),yes)
|
||||
JACK_CFLAGS := $(shell $(PKG_CONFIG) --cflags jack)
|
||||
|
|
@ -40,7 +40,7 @@ endif
|
|||
all: $(BUILD_DIR)/libxtc.a $(BUILD_DIR)/xtc-check
|
||||
|
||||
$(BUILD_DIR)/xtc-check: $(BUILD_DIR)/src/main.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
|
||||
$(BUILD_DIR)/libxtc.a: $(CORE_OBJECTS)
|
||||
@mkdir -p $(@D)
|
||||
|
|
@ -59,37 +59,37 @@ $(TEST_OBJECT): tests/unit/test_core.c
|
|||
$(CC) $(CPPFLAGS) $(CFLAGS) -MMD -MP -c $< -o $@
|
||||
|
||||
$(BUILD_DIR)/test_core: $(TEST_OBJECT) $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $(TEST_OBJECT) $(BUILD_DIR)/libxtc.a -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $(TEST_OBJECT) $(BUILD_DIR)/libxtc.a -lm -ldl
|
||||
|
||||
$(BUILD_DIR)/test_offline: $(BUILD_DIR)/tests/unit/test_offline.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
|
||||
$(BUILD_DIR)/test_realtime: $(BUILD_DIR)/tests/unit/test_realtime.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -pthread
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl -pthread
|
||||
|
||||
$(BUILD_DIR)/test_backend: $(BUILD_DIR)/tests/unit/test_backend.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
|
||||
$(BUILD_DIR)/test_graph_edits: $(BUILD_DIR)/tests/unit/test_graph_edits.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
|
||||
$(BUILD_DIR)/test_project: $(BUILD_DIR)/tests/unit/test_project.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
|
||||
$(BUILD_DIR)/test_audio: $(BUILD_DIR)/tests/unit/test_audio.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -pthread
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl -pthread
|
||||
|
||||
$(BUILD_DIR)/test_midi: $(BUILD_DIR)/tests/unit/test_midi.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
|
||||
$(BUILD_DIR)/test_mixer: $(BUILD_DIR)/tests/unit/test_mixer.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
|
||||
$(BUILD_DIR)/test_native: $(BUILD_DIR)/tests/unit/test_native.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
|
||||
$(BUILD_DIR)/native-gain: $(BUILD_DIR)/examples/native_gain.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
|
||||
test: $(BUILD_DIR)/test_native $(BUILD_DIR)/native-gain $(BUILD_DIR)/test_mixer $(BUILD_DIR)/test_midi $(BUILD_DIR)/test_audio $(BUILD_DIR)/test_project $(BUILD_DIR)/test_graph_edits $(BACKEND_TEST) $(BUILD_DIR)/test_realtime $(BUILD_DIR)/test_core $(BUILD_DIR)/test_offline $(BUILD_DIR)/xtc-check
|
||||
$(if $(BACKEND_TEST),./$(BACKEND_TEST),@echo "JACK fault tests skipped: JACK development files unavailable")
|
||||
|
|
@ -111,21 +111,21 @@ debug:
|
|||
ifeq ($(JACK_AVAILABLE),yes)
|
||||
$(BUILD_DIR)/tests/integration/test_jack_midi.o: CPPFLAGS += $(JACK_CFLAGS)
|
||||
$(BUILD_DIR)/test_jack_midi: $(BUILD_DIR)/tests/integration/test_jack_midi.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ $(JACK_LIBS) -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ $(JACK_LIBS) -lm -ldl
|
||||
|
||||
test-jack-midi: $(BUILD_DIR)/test_jack_midi
|
||||
./$(BUILD_DIR)/test_jack_midi
|
||||
|
||||
$(BUILD_DIR)/tests/integration/test_jack_audio.o: CPPFLAGS += $(JACK_CFLAGS)
|
||||
$(BUILD_DIR)/test_jack_audio: $(BUILD_DIR)/tests/integration/test_jack_audio.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ $(JACK_LIBS) -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ $(JACK_LIBS) -lm -ldl
|
||||
|
||||
test-jack-audio: $(BUILD_DIR)/test_jack_audio
|
||||
./$(BUILD_DIR)/test_jack_audio
|
||||
|
||||
$(BUILD_DIR)/tests/integration/test_jack.o: CPPFLAGS += $(JACK_CFLAGS)
|
||||
$(BUILD_DIR)/test_jack: $(BUILD_DIR)/tests/integration/test_jack.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ $(JACK_LIBS) -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ $(JACK_LIBS) -lm -ldl
|
||||
|
||||
test-jack: $(BUILD_DIR)/test_jack
|
||||
./$(BUILD_DIR)/test_jack
|
||||
|
|
@ -139,14 +139,14 @@ ifeq ($(GUI_AVAILABLE),yes)
|
|||
gui: $(BUILD_DIR)/xtc
|
||||
|
||||
$(BUILD_DIR)/test_gui: $(BUILD_DIR)/tests/integration/test_gui.o $(BUILD_DIR)/src/gui/main_window.o $(BUILD_DIR)/src/gui/graph_widget.o $(BUILD_DIR)/src/gui/sequencer_widget.o $(BUILD_DIR)/src/gui/piano_roll.o $(BUILD_DIR)/src/gui/mixer_widget.o $(BUILD_DIR)/libxtc.a
|
||||
$(CXX) $(LDFLAGS) -o $@ $^ $(FLTK_LIBS) -lm
|
||||
$(CXX) $(LDFLAGS) -o $@ $^ $(FLTK_LIBS) -lm -ldl
|
||||
|
||||
test-gui: $(BUILD_DIR)/test_gui
|
||||
xvfb-run -a -s "-screen 0 1280x800x24" ./$(BUILD_DIR)/test_gui
|
||||
|
||||
ifeq ($(JACK_AVAILABLE),yes)
|
||||
$(BUILD_DIR)/test_gui_jack: $(BUILD_DIR)/tests/integration/test_gui_jack.o $(BUILD_DIR)/src/gui/main_window.o $(BUILD_DIR)/src/gui/graph_widget.o $(BUILD_DIR)/src/gui/sequencer_widget.o $(BUILD_DIR)/src/gui/piano_roll.o $(BUILD_DIR)/src/gui/mixer_widget.o $(BUILD_DIR)/libxtc.a
|
||||
$(CXX) $(LDFLAGS) -o $@ $^ $(FLTK_LIBS) $(JACK_LIBS) -lm
|
||||
$(CXX) $(LDFLAGS) -o $@ $^ $(FLTK_LIBS) $(JACK_LIBS) -lm -ldl
|
||||
|
||||
test-gui-jack: $(BUILD_DIR)/test_gui_jack
|
||||
xvfb-run -a -s "-screen 0 1280x800x24" ./$(BUILD_DIR)/test_gui_jack
|
||||
|
|
@ -157,7 +157,7 @@ test-gui-jack:
|
|||
endif
|
||||
|
||||
$(BUILD_DIR)/xtc: $(BUILD_DIR)/src/gui/main.o $(BUILD_DIR)/src/gui/main_window.o $(BUILD_DIR)/src/gui/graph_widget.o $(BUILD_DIR)/src/gui/sequencer_widget.o $(BUILD_DIR)/src/gui/piano_roll.o $(BUILD_DIR)/src/gui/mixer_widget.o $(BUILD_DIR)/libxtc.a
|
||||
$(CXX) $(LDFLAGS) -o $@ $^ $(FLTK_LIBS) $(JACK_LIBS) -lm
|
||||
$(CXX) $(LDFLAGS) -o $@ $^ $(FLTK_LIBS) $(JACK_LIBS) -lm -ldl
|
||||
else
|
||||
test-gui-jack test-gui:
|
||||
@echo "FLTK development files are required for GUI tests."
|
||||
|
|
@ -228,10 +228,10 @@ clean:
|
|||
-include $(BUILD_DIR)/tests/unit/test_native.d $(BUILD_DIR)/examples/native_gain.d
|
||||
|
||||
$(BUILD_DIR)/test_performance: $(BUILD_DIR)/tests/integration/test_performance.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
|
||||
$(BUILD_DIR)/test_recovery: $(BUILD_DIR)/tests/integration/test_recovery.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
|
||||
.PHONY: test-recovery
|
||||
test-performance: $(BUILD_DIR)/test_performance
|
||||
|
|
@ -244,7 +244,7 @@ test-recovery: $(BUILD_DIR)/test_recovery
|
|||
|
||||
# Linux/GNU-compatible linker test; no instrumentation in production objects.
|
||||
$(BUILD_DIR)/test_reliability: $(BUILD_DIR)/tests/integration/test_reliability.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -Wl,--wrap=malloc,--wrap=calloc,--wrap=realloc,--wrap=free
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl -Wl,--wrap=malloc,--wrap=calloc,--wrap=realloc,--wrap=free
|
||||
|
||||
.PHONY: test-reliability test-sanitize analyze
|
||||
test-reliability: test $(BUILD_DIR)/test_reliability
|
||||
|
|
@ -261,7 +261,7 @@ analyze:
|
|||
.PHONY: test-workflow
|
||||
ifeq ($(GUI_AVAILABLE)$(JACK_AVAILABLE),yesyes)
|
||||
$(BUILD_DIR)/test_workflow: $(BUILD_DIR)/tests/integration/test_workflow.o $(BUILD_DIR)/src/gui/main_window.o $(BUILD_DIR)/src/gui/graph_widget.o $(BUILD_DIR)/src/gui/sequencer_widget.o $(BUILD_DIR)/src/gui/piano_roll.o $(BUILD_DIR)/src/gui/mixer_widget.o $(BUILD_DIR)/libxtc.a
|
||||
$(CXX) $(LDFLAGS) -o $@ $^ $(FLTK_LIBS) $(JACK_LIBS) -lm
|
||||
$(CXX) $(LDFLAGS) -o $@ $^ $(FLTK_LIBS) $(JACK_LIBS) -lm -ldl
|
||||
|
||||
test-workflow: $(BUILD_DIR)/test_workflow
|
||||
xvfb-run -a -s "-screen 0 1280x800x24" ./$(BUILD_DIR)/test_workflow
|
||||
|
|
@ -274,7 +274,7 @@ endif
|
|||
-include $(BUILD_DIR)/tests/integration/test_workflow.d
|
||||
|
||||
$(BUILD_DIR)/test_quality: $(BUILD_DIR)/tests/unit/test_quality.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
.PHONY: test-quality
|
||||
test-quality: $(BUILD_DIR)/test_quality
|
||||
./$(BUILD_DIR)/test_quality
|
||||
|
|
@ -282,23 +282,41 @@ test: test-quality
|
|||
-include $(BUILD_DIR)/tests/unit/test_quality.d
|
||||
|
||||
$(BUILD_DIR)/quality-preview: $(BUILD_DIR)/examples/quality_preview.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
.PHONY: quality-preview
|
||||
quality-preview: $(BUILD_DIR)/quality-preview
|
||||
./$(BUILD_DIR)/quality-preview "$(abspath $(BUILD_DIR))/quality"
|
||||
-include $(BUILD_DIR)/examples/quality_preview.d
|
||||
|
||||
$(BUILD_DIR)/test_recording: $(BUILD_DIR)/tests/integration/test_recording.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
.PHONY: test-recording
|
||||
test-recording: $(BUILD_DIR)/test_recording
|
||||
./$(BUILD_DIR)/test_recording
|
||||
-include $(BUILD_DIR)/tests/integration/test_recording.d
|
||||
|
||||
$(BUILD_DIR)/test_processor: $(BUILD_DIR)/tests/unit/test_processor.o $(BUILD_DIR)/examples/processors.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
.PHONY: test-processor
|
||||
test-processor: $(BUILD_DIR)/test_processor
|
||||
./$(BUILD_DIR)/test_processor
|
||||
test: test-processor
|
||||
-include $(BUILD_DIR)/tests/unit/test_processor.d $(BUILD_DIR)/examples/processors.d
|
||||
|
||||
$(BUILD_DIR)/plugin-fixture.so: tests/plugins/fixture.c
|
||||
@mkdir -p $(@D)
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) -fPIC -shared -o $@ $<
|
||||
$(BUILD_DIR)/test_plugins: $(BUILD_DIR)/tests/integration/test_plugins.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl -Wl,--wrap=malloc,--wrap=calloc,--wrap=realloc,--wrap=free,--wrap=dlopen,--wrap=dlclose
|
||||
.PHONY: test-plugins test-plugins-real
|
||||
test-plugins: $(BUILD_DIR)/test_plugins $(BUILD_DIR)/plugin-fixture.so
|
||||
./$(BUILD_DIR)/test_plugins "$(abspath $(BUILD_DIR))/plugin-fixture.so" fixture
|
||||
test-plugins-real: $(BUILD_DIR)/test_plugins
|
||||
./$(BUILD_DIR)/test_plugins /usr/lib/ladspa/amp.so
|
||||
./$(BUILD_DIR)/test_plugins /usr/lib/ladspa/inv_1429.so
|
||||
./$(BUILD_DIR)/test_plugins /usr/lib/ladspa/sine.so 3
|
||||
-include $(BUILD_DIR)/tests/integration/test_plugins.d
|
||||
|
||||
.PHONY: test-gui-plugins
|
||||
test-gui-plugins: $(BUILD_DIR)/test_gui $(BUILD_DIR)/plugin-fixture.so
|
||||
XTC_TEST_PLUGIN="$(abspath $(BUILD_DIR))/plugin-fixture.so" xvfb-run -a -s "-screen 0 1280x800x24" ./$(BUILD_DIR)/test_gui
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue