602 lines
30 KiB
Makefile
602 lines
30 KiB
Makefile
.DEFAULT_GOAL := all
|
|
|
|
CC ?= cc
|
|
CXX ?= c++
|
|
PKG_CONFIG ?= pkg-config
|
|
FLTK_CONFIG ?= fltk-config
|
|
BUILD_DIR ?= build
|
|
PREFIX ?= /usr/local
|
|
exec_prefix ?= $(PREFIX)
|
|
bindir ?= $(exec_prefix)/bin
|
|
libdir ?= $(exec_prefix)/lib
|
|
includedir ?= $(PREFIX)/include
|
|
datarootdir ?= $(PREFIX)/share
|
|
datadir ?= $(datarootdir)
|
|
docdir ?= $(datarootdir)/doc/xtc
|
|
licensedir ?= $(datarootdir)/licenses/xtc
|
|
examplesdir ?= $(datadir)/xtc/examples
|
|
desktopdir ?= $(datadir)/applications
|
|
pkgconfigdir ?= $(libdir)/pkgconfig
|
|
INSTALL_LAYOUT = --prefix "$(PREFIX)" --destdir "$(DESTDIR)" --bindir "$(bindir)" --libdir "$(libdir)" --includedir "$(includedir)" --docdir "$(docdir)" --licensedir "$(licensedir)" --examplesdir "$(examplesdir)" --desktopdir "$(desktopdir)" --pkgconfigdir "$(pkgconfigdir)"
|
|
PYTHON ?= python3
|
|
VERSION := $(shell sed -n 's/^\#define XTC_VERSION_STRING "\([^"]*\)"/\1/p' include/xtc/xtc_version.h)
|
|
|
|
CFLAGS ?= -O2 -g
|
|
CFLAGS += -std=c99 -Wall -Wextra -Wpedantic -Wconversion -Wshadow -Iinclude
|
|
CXXFLAGS ?= -O2 -g
|
|
CXXFLAGS += -std=c++17 -Wall -Wextra -Wpedantic -Iinclude
|
|
LDFLAGS ?=
|
|
|
|
CORE_SOURCES := src/midi/output.c src/project/crossfade.c src/control/tempo.c src/project/chain_tools.c src/project/chain_preset.c src/mixer/track_fx.c src/audio/sample.c src/persistence/collect.c src/audio/normalize.c src/project/sections.c src/project/editing.c src/audio/export.c src/plugin/builtin.c src/settings/settings.c src/control/model.c src/audio/waveform.c src/plugin/ladspa.c src/plugin/host.c src/plugin/modern.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)
|
|
JACK_LIBS := $(shell $(PKG_CONFIG) --libs jack)
|
|
BACKEND_TEST := $(BUILD_DIR)/test_backend
|
|
$(BUILD_DIR)/tests/unit/test_backend.o: CPPFLAGS += $(JACK_CFLAGS)
|
|
$(BUILD_DIR)/src/core/xtc.o: CPPFLAGS += -DXTC_HAVE_JACK
|
|
$(BUILD_DIR)/src/backend/jack_backend.o: CPPFLAGS += -DXTC_HAVE_JACK $(JACK_CFLAGS)
|
|
endif
|
|
CORE_OBJECTS := $(CORE_SOURCES:%.c=$(BUILD_DIR)/%.o)
|
|
TEST_OBJECT := $(BUILD_DIR)/tests/unit/test_core.o
|
|
ifeq ($(shell $(PKG_CONFIG) --exists fltk 2>/dev/null && echo yes),yes)
|
|
FLTK_CXXFLAGS := $(shell $(PKG_CONFIG) --cflags fltk)
|
|
FLTK_LIBS := $(shell $(PKG_CONFIG) --libs fltk)
|
|
GUI_AVAILABLE := yes
|
|
else ifeq ($(shell $(FLTK_CONFIG) --version >/dev/null 2>&1 && echo yes),yes)
|
|
FLTK_CXXFLAGS := $(shell $(FLTK_CONFIG) --cxxflags)
|
|
FLTK_LIBS := $(shell $(FLTK_CONFIG) --ldflags)
|
|
GUI_AVAILABLE := yes
|
|
endif
|
|
|
|
.PHONY: all clean test test-jack-midi test-jack-audio test-jack test-gui test-gui-jack debug gui install
|
|
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 -ldl
|
|
|
|
$(BUILD_DIR)/libxtc.a: $(CORE_OBJECTS)
|
|
@mkdir -p $(@D)
|
|
$(AR) rcsD $@ $^
|
|
|
|
$(BUILD_DIR)/%.o: %.c
|
|
@mkdir -p $(@D)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -MMD -MP -c $< -o $@
|
|
|
|
$(BUILD_DIR)/%.o: %.cpp
|
|
@mkdir -p $(@D)
|
|
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(FLTK_CXXFLAGS) -MMD -MP -c $< -o $@
|
|
|
|
$(TEST_OBJECT): tests/unit/test_core.c
|
|
@mkdir -p $(@D)
|
|
$(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 -ldl
|
|
|
|
$(BUILD_DIR)/test_offline: $(BUILD_DIR)/tests/unit/test_offline.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
|
|
$(BUILD_DIR)/test_realtime: $(BUILD_DIR)/tests/unit/test_realtime.o $(BUILD_DIR)/libxtc.a
|
|
$(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 -ldl
|
|
|
|
$(BUILD_DIR)/test_graph_edits: $(BUILD_DIR)/tests/unit/test_graph_edits.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
|
|
$(BUILD_DIR)/test_project: $(BUILD_DIR)/tests/unit/test_project.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
|
|
$(BUILD_DIR)/test_audio: $(BUILD_DIR)/tests/unit/test_audio.o $(BUILD_DIR)/libxtc.a
|
|
$(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 -ldl
|
|
|
|
$(BUILD_DIR)/test_mixer: $(BUILD_DIR)/tests/unit/test_mixer.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
|
|
$(BUILD_DIR)/test_native: $(BUILD_DIR)/tests/unit/test_native.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
|
|
$(BUILD_DIR)/native-gain: $(BUILD_DIR)/examples/native_gain.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
|
|
test: test-modern-editing $(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")
|
|
./$(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
|
|
./$(BUILD_DIR)/test_realtime
|
|
./$(BUILD_DIR)/test_core
|
|
./$(BUILD_DIR)/test_offline
|
|
./$(BUILD_DIR)/xtc-check
|
|
|
|
debug:
|
|
$(MAKE) BUILD_DIR="$(BUILD_DIR)/debug" CFLAGS="$(CFLAGS) -O0 -g3" CXXFLAGS="$(CXXFLAGS) -O0 -g3" all test
|
|
|
|
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 -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 -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 -ldl
|
|
|
|
test-jack: $(BUILD_DIR)/test_jack
|
|
./$(BUILD_DIR)/test_jack
|
|
else
|
|
test-jack-midi test-jack-audio test-jack:
|
|
@echo "JACK development files are required for the live integration test."
|
|
@exit 1
|
|
endif
|
|
|
|
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)/src/gui/plugin_dialog.o $(BUILD_DIR)/src/gui/sample_editor.o $(BUILD_DIR)/libxtc.a
|
|
$(CXX) $(LDFLAGS) -o $@ $^ $(FLTK_LIBS) -lm -ldl -Wl,--wrap=xtc_history_reserve
|
|
|
|
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)/src/gui/plugin_dialog.o $(BUILD_DIR)/src/gui/sample_editor.o $(BUILD_DIR)/libxtc.a
|
|
$(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
|
|
else
|
|
test-gui-jack:
|
|
@echo "JACK development files are required for the live GUI test."
|
|
@exit 1
|
|
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)/src/gui/plugin_dialog.o $(BUILD_DIR)/src/gui/sample_editor.o $(BUILD_DIR)/libxtc.a
|
|
$(CXX) $(LDFLAGS) -o $@ $^ $(FLTK_LIBS) $(JACK_LIBS) -lm -ldl
|
|
else
|
|
test-gui-jack test-gui:
|
|
@echo "FLTK development files are required for GUI tests."
|
|
@exit 1
|
|
|
|
gui:
|
|
@echo "FLTK was not found by pkg-config or fltk-config. GUI requires FLTK development files."
|
|
@exit 1
|
|
endif
|
|
|
|
# install retains the core-only behavior; install-gui adds the application.
|
|
.PHONY: install uninstall install-gui dist release test-install test-release test-performance
|
|
$(BUILD_DIR)/xtc.pc: packaging/xtc.pc.in tools/pkgconfig.py tools/dist.py include/xtc/xtc_version.h FORCE
|
|
$(PYTHON) tools/pkgconfig.py --prefix "$(PREFIX)" --exec-prefix "$(exec_prefix)" --libdir "$(libdir)" --includedir "$(includedir)" --jack "$(if $(JACK_AVAILABLE),jack)" --output "$@"
|
|
.PHONY: FORCE
|
|
FORCE:
|
|
|
|
install: all $(BUILD_DIR)/xtc.pc
|
|
$(PYTHON) tools/install.py $(INSTALL_LAYOUT) --build-dir "$(BUILD_DIR)"
|
|
|
|
install-gui: install gui
|
|
$(PYTHON) tools/install.py $(INSTALL_LAYOUT) --build-dir "$(BUILD_DIR)" --gui
|
|
|
|
uninstall:
|
|
$(PYTHON) tools/uninstall.py $(INSTALL_LAYOUT)
|
|
|
|
dist:
|
|
$(PYTHON) tools/dist.py --output "$(BUILD_DIR)/xtc-$(VERSION).tar.gz"
|
|
|
|
release:
|
|
$(MAKE) BUILD_DIR="$(BUILD_DIR)/release" CFLAGS="-O2 -g0 -std=c99 -Wall -Wextra -Wpedantic -Wconversion -Wshadow -Iinclude -ffile-prefix-map=$(CURDIR)=." CXXFLAGS="-O2 -g0 -std=c++17 -Wall -Wextra -Wpedantic -Iinclude -ffile-prefix-map=$(CURDIR)=." FLTK_CXXFLAGS="$(filter -I% -D% -pthread,$(FLTK_CXXFLAGS))" all test $(if $(GUI_AVAILABLE),gui)
|
|
|
|
test-install: all $(if $(GUI_AVAILABLE),gui)
|
|
$(PYTHON) tests/integration/test_install.py --build-dir "$(abspath $(BUILD_DIR))" $(if $(GUI_AVAILABLE),--gui)
|
|
|
|
test-release: dist
|
|
$(PYTHON) tests/integration/test_release.py "$(BUILD_DIR)/xtc-$(VERSION).tar.gz" $(if $(GUI_AVAILABLE),--gui)
|
|
|
|
clean:
|
|
rm -rf "$(BUILD_DIR)"
|
|
|
|
-include $(CORE_OBJECTS:.o=.d) $(TEST_OBJECT:.o=.d) $(BUILD_DIR)/src/main.d $(BUILD_DIR)/tests/unit/test_offline.d $(BUILD_DIR)/tests/unit/test_realtime.d $(BUILD_DIR)/tests/unit/test_backend.d $(BUILD_DIR)/tests/unit/test_graph_edits.d \
|
|
$(BUILD_DIR)/src/gui/main.d $(BUILD_DIR)/src/gui/main_window.d $(BUILD_DIR)/src/gui/graph_widget.d $(BUILD_DIR)/src/gui/sequencer_widget.d $(BUILD_DIR)/src/gui/piano_roll.d $(BUILD_DIR)/tests/integration/test_jack.d $(BUILD_DIR)/tests/integration/test_gui.d $(BUILD_DIR)/tests/integration/test_gui_jack.d
|
|
|
|
-include $(BUILD_DIR)/tests/unit/test_project.d
|
|
|
|
-include $(BUILD_DIR)/tests/unit/test_audio.d
|
|
|
|
-include $(BUILD_DIR)/tests/integration/test_jack_audio.d
|
|
|
|
-include $(BUILD_DIR)/tests/unit/test_midi.d
|
|
|
|
-include $(BUILD_DIR)/tests/integration/test_jack_midi.d
|
|
|
|
-include $(BUILD_DIR)/src/gui/mixer_widget.d
|
|
|
|
-include $(BUILD_DIR)/tests/unit/test_mixer.d
|
|
|
|
-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 -ldl
|
|
|
|
$(BUILD_DIR)/test_recovery: $(BUILD_DIR)/tests/integration/test_recovery.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
|
|
.PHONY: test-recovery
|
|
test-performance: $(BUILD_DIR)/test_performance
|
|
./$(BUILD_DIR)/test_performance
|
|
|
|
test-recovery: $(BUILD_DIR)/test_recovery
|
|
./$(BUILD_DIR)/test_recovery
|
|
|
|
-include $(BUILD_DIR)/tests/integration/test_performance.d $(BUILD_DIR)/tests/integration/test_recovery.d
|
|
|
|
# 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 -ldl -Wl,--wrap=malloc,--wrap=calloc,--wrap=realloc,--wrap=free,--wrap=fopen,--wrap=fread,--wrap=fwrite,--wrap=read,--wrap=write,--wrap=pthread_mutex_lock,--wrap=pthread_cond_wait -pthread
|
|
|
|
.PHONY: test-reliability test-sanitize analyze
|
|
test-reliability: test $(BUILD_DIR)/test_reliability
|
|
./$(BUILD_DIR)/test_reliability
|
|
|
|
test-sanitize:
|
|
ASAN_OPTIONS=detect_leaks=1:halt_on_error=1 UBSAN_OPTIONS=halt_on_error=1 $(MAKE) BUILD_DIR="$(BUILD_DIR)/sanitize" CC=clang CFLAGS="-O1 -g -std=c99 -Wall -Wextra -Wpedantic -Wconversion -Wshadow -Iinclude -fsanitize=address,undefined -fno-omit-frame-pointer" LDFLAGS="-fsanitize=address,undefined" test-reliability test-recovery test-scale test-soak
|
|
|
|
analyze:
|
|
$(PYTHON) tools/analyze.py $(CORE_SOURCES)
|
|
|
|
-include $(BUILD_DIR)/tests/integration/test_reliability.d
|
|
|
|
.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)/src/gui/plugin_dialog.o $(BUILD_DIR)/src/gui/sample_editor.o $(BUILD_DIR)/libxtc.a
|
|
$(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
|
|
else
|
|
test-workflow:
|
|
@echo "FLTK and JACK development files are required for the workflow test."
|
|
@exit 1
|
|
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 -ldl
|
|
.PHONY: test-quality
|
|
test-quality: $(BUILD_DIR)/test_quality
|
|
./$(BUILD_DIR)/test_quality
|
|
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 -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 -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 -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
|
|
|
|
$(BUILD_DIR)/test_control: $(BUILD_DIR)/tests/unit/test_control.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: test-control
|
|
test-control: $(BUILD_DIR)/test_control
|
|
./$(BUILD_DIR)/test_control
|
|
test: test-control
|
|
-include $(BUILD_DIR)/tests/unit/test_control.d
|
|
|
|
$(BUILD_DIR)/test_editing: $(BUILD_DIR)/tests/unit/test_editing.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: test-editing
|
|
test-editing: $(BUILD_DIR)/test_editing
|
|
./$(BUILD_DIR)/test_editing
|
|
test: test-editing
|
|
-include $(BUILD_DIR)/tests/unit/test_editing.d
|
|
|
|
$(BUILD_DIR)/test_portability: $(BUILD_DIR)/tests/integration/test_portability.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: test-portability
|
|
test-portability: $(BUILD_DIR)/test_portability
|
|
./$(BUILD_DIR)/test_portability
|
|
test: test-portability
|
|
-include $(BUILD_DIR)/tests/integration/test_portability.d
|
|
|
|
$(BUILD_DIR)/benchmark_graph: $(BUILD_DIR)/tests/integration/benchmark_graph.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: benchmark
|
|
benchmark: $(BUILD_DIR)/benchmark_graph
|
|
$(PYTHON) tools/benchmark.py --binary "$(BUILD_DIR)/benchmark_graph" --output "$(BUILD_DIR)/performance.json" --compiler "$(CC)" --flags "$(CFLAGS)" --blocks "$(BENCHMARK_BLOCKS)"
|
|
-include $(BUILD_DIR)/tests/integration/benchmark_graph.d
|
|
|
|
$(BUILD_DIR)/test_scale: $(BUILD_DIR)/tests/integration/test_scale.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: test-scale test-stress
|
|
test-scale: $(BUILD_DIR)/test_scale
|
|
./$(BUILD_DIR)/test_scale
|
|
test-stress: $(BUILD_DIR)/test_realtime $(BUILD_DIR)/test_reliability $(BUILD_DIR)/test_scale $(if $(GUI_AVAILABLE),$(BUILD_DIR)/test_gui)
|
|
$(PYTHON) tools/stress.py --build-dir "$(BUILD_DIR)" --rounds "$(STRESS_ROUNDS)" $(if $(GUI_AVAILABLE),--gui)
|
|
-include $(BUILD_DIR)/tests/integration/test_scale.d
|
|
|
|
BENCHMARK_BLOCKS ?= 300
|
|
BENCHMARK_BASELINE ?= docs/performance-baseline.json
|
|
BENCHMARK_MAX_REGRESSION ?= 1.5
|
|
.PHONY: benchmark-compare
|
|
benchmark-compare: $(BUILD_DIR)/benchmark_graph
|
|
$(PYTHON) tools/benchmark.py --binary "$(BUILD_DIR)/benchmark_graph" --output "$(BUILD_DIR)/performance.json" --compiler "$(CC)" --flags "$(CFLAGS)" --blocks "$(BENCHMARK_BLOCKS)" --baseline "$(BENCHMARK_BASELINE)" --max-regression "$(BENCHMARK_MAX_REGRESSION)"
|
|
|
|
PACKAGE_ARCH := $(shell uname -m)
|
|
PACKAGE_FILE := $(BUILD_DIR)/xtc-$(VERSION)-linux-$(PACKAGE_ARCH).tar.gz
|
|
.PHONY: package test-package
|
|
package: release
|
|
$(PYTHON) tools/package.py --build-dir "$(BUILD_DIR)/release" --output "$(PACKAGE_FILE)" $(if $(GUI_AVAILABLE),--gui)
|
|
test-package: package
|
|
$(PYTHON) tests/integration/test_package.py "$(PACKAGE_FILE)" --build-dir "$(BUILD_DIR)/release"
|
|
|
|
$(BUILD_DIR)/test_composition: $(BUILD_DIR)/tests/unit/test_composition.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: test-composition
|
|
test-composition: $(BUILD_DIR)/test_composition
|
|
./$(BUILD_DIR)/test_composition
|
|
test: test-composition
|
|
-include $(BUILD_DIR)/tests/unit/test_composition.d
|
|
|
|
$(BUILD_DIR)/test_audio_editing: $(BUILD_DIR)/tests/unit/test_audio_editing.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: test-audio-editing
|
|
test-audio-editing: $(BUILD_DIR)/test_audio_editing
|
|
./$(BUILD_DIR)/test_audio_editing
|
|
test: test-audio-editing
|
|
-include $(BUILD_DIR)/tests/unit/test_audio_editing.d
|
|
|
|
$(BUILD_DIR)/test_routing: $(BUILD_DIR)/tests/unit/test_routing.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: test-routing
|
|
test-routing: $(BUILD_DIR)/test_routing
|
|
./$(BUILD_DIR)/test_routing
|
|
test: test-routing
|
|
-include $(BUILD_DIR)/tests/unit/test_routing.d
|
|
|
|
$(BUILD_DIR)/test_buses: $(BUILD_DIR)/tests/unit/test_buses.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: test-buses
|
|
test-buses: $(BUILD_DIR)/test_buses
|
|
./$(BUILD_DIR)/test_buses
|
|
test: test-buses
|
|
-include $(BUILD_DIR)/tests/unit/test_buses.d
|
|
|
|
-include $(BUILD_DIR)/src/gui/plugin_dialog.d
|
|
|
|
$(BUILD_DIR)/test_parameters: $(BUILD_DIR)/tests/unit/test_parameters.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: test-parameters
|
|
test-parameters: $(BUILD_DIR)/test_parameters
|
|
./$(BUILD_DIR)/test_parameters
|
|
test: test-parameters
|
|
-include $(BUILD_DIR)/tests/unit/test_parameters.d
|
|
|
|
$(BUILD_DIR)/test_project_diagnostics: $(BUILD_DIR)/tests/unit/test_project_diagnostics.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl -Wl,--wrap=fflush,--wrap=fclose,--wrap=fsync,--wrap=rename
|
|
.PHONY: test-project-diagnostics
|
|
test-project-diagnostics: $(BUILD_DIR)/test_project_diagnostics
|
|
./$(BUILD_DIR)/test_project_diagnostics
|
|
test: test-project-diagnostics
|
|
-include $(BUILD_DIR)/tests/unit/test_project_diagnostics.d
|
|
|
|
.PHONY: test-project-inspection
|
|
test-project-inspection: $(BUILD_DIR)/xtc-check
|
|
$(PYTHON) tests/integration/test_project_inspection.py $(BUILD_DIR)/xtc-check
|
|
test: test-project-inspection
|
|
|
|
$(BUILD_DIR)/test_soak: $(BUILD_DIR)/tests/integration/test_soak.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: test-soak benchmark-project benchmark-project-compare check-development
|
|
test-soak: $(BUILD_DIR)/test_soak
|
|
./$(BUILD_DIR)/test_soak
|
|
PROJECT_BENCHMARK_BASELINE ?= docs/project-performance-baseline.json
|
|
STRESS_ROUNDS ?= 3
|
|
test-stress: $(BUILD_DIR)/test_portability $(BUILD_DIR)/test_project_diagnostics $(BUILD_DIR)/test_soak $(BACKEND_TEST)
|
|
benchmark-project: $(BUILD_DIR)/test_performance
|
|
$(PYTHON) tools/benchmark.py --workload project --binary "$(BUILD_DIR)/test_performance" --output "$(BUILD_DIR)/project-performance.json" --compiler "$(CC)" --flags "$(CFLAGS)" --blocks "$(BENCHMARK_BLOCKS)"
|
|
benchmark-project-compare: $(BUILD_DIR)/test_performance
|
|
$(PYTHON) tools/benchmark.py --workload project --binary "$(BUILD_DIR)/test_performance" --output "$(BUILD_DIR)/project-performance.json" --compiler "$(CC)" --flags "$(CFLAGS)" --blocks "$(BENCHMARK_BLOCKS)" --baseline "$(PROJECT_BENCHMARK_BASELINE)" --max-regression "$(BENCHMARK_MAX_REGRESSION)"
|
|
check-development: all test-reliability test-scale test-soak analyze test-sanitize
|
|
-include $(BUILD_DIR)/tests/integration/test_soak.d
|
|
.PHONY: test-benchmark-tools
|
|
test-benchmark-tools:
|
|
$(PYTHON) tests/tools/test_benchmark.py
|
|
check-development: test-benchmark-tools
|
|
|
|
.PHONY: test-stress-plugins
|
|
test-stress-plugins: $(BUILD_DIR)/test_realtime $(BUILD_DIR)/test_reliability $(BUILD_DIR)/test_scale $(BUILD_DIR)/test_portability $(BUILD_DIR)/test_project_diagnostics $(BUILD_DIR)/test_soak $(BACKEND_TEST) $(BUILD_DIR)/test_plugins $(BUILD_DIR)/plugin-fixture.so
|
|
$(PYTHON) tools/stress.py --build-dir "$(BUILD_DIR)" --rounds "$(STRESS_ROUNDS)" --plugin "$(BUILD_DIR)/plugin-fixture.so"
|
|
|
|
.PHONY: test-install-layout
|
|
test-install-layout: all $(if $(GUI_AVAILABLE),gui)
|
|
$(PYTHON) tests/integration/test_install.py --build-dir "$(abspath $(BUILD_DIR))" --custom-layout $(if $(GUI_AVAILABLE),--gui)
|
|
|
|
$(BUILD_DIR)/src/plugin/modern.o: override CPPFLAGS += -isystem third_party/clap/include -isystem third_party/vst3
|
|
|
|
$(BUILD_DIR)/clap-fixture.clap: tests/plugins/clap_fixture.c
|
|
@mkdir -p $(@D)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -isystem third_party/clap/include $(LDFLAGS) -fPIC -shared -o $@ $<
|
|
$(BUILD_DIR)/vst2-fixture.so: tests/plugins/vst2_fixture.c src/plugin/vst2_abi.h
|
|
@mkdir -p $(@D)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -fPIC -shared -o $@ $<
|
|
$(BUILD_DIR)/vst3-fixture.so: tests/plugins/vst3_fixture.c
|
|
@mkdir -p $(@D)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -isystem third_party/vst3 $(LDFLAGS) -fPIC -shared -o $@ $<
|
|
$(BUILD_DIR)/test_modern_plugins: $(BUILD_DIR)/tests/integration/test_modern_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-modern-plugins
|
|
test-modern-plugins: $(BUILD_DIR)/test_modern_plugins $(BUILD_DIR)/clap-fixture.clap $(BUILD_DIR)/vst2-fixture.so $(BUILD_DIR)/vst3-fixture.so
|
|
./$(BUILD_DIR)/test_modern_plugins "$(abspath $(BUILD_DIR))/clap-fixture.clap" "$(abspath $(BUILD_DIR))/vst2-fixture.so" "$(abspath $(BUILD_DIR))/vst3-fixture.so"
|
|
test: test-modern-plugins
|
|
-include $(BUILD_DIR)/tests/integration/test_modern_plugins.d
|
|
|
|
.PHONY: test-gui-modern-plugins
|
|
ifeq ($(GUI_AVAILABLE),yes)
|
|
test-gui-modern-plugins: $(BUILD_DIR)/test_gui $(BUILD_DIR)/clap-fixture.clap $(BUILD_DIR)/vst2-fixture.so $(BUILD_DIR)/vst3-fixture.so
|
|
XTC_TEST_CLAP="$(abspath $(BUILD_DIR))/clap-fixture.clap" XTC_TEST_VST2="$(abspath $(BUILD_DIR))/vst2-fixture.so" XTC_TEST_VST3="$(abspath $(BUILD_DIR))/vst3-fixture.so" xvfb-run -a -s "-screen 0 1280x800x24" ./$(BUILD_DIR)/test_gui
|
|
else
|
|
test-gui-modern-plugins:
|
|
@echo "FLTK development files are required for modern plugin GUI tests."
|
|
@exit 1
|
|
endif
|
|
|
|
$(BUILD_DIR)/clap-synth-fixture.clap: tests/plugins/clap_synth_fixture.c
|
|
@mkdir -p $(@D)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -isystem third_party/clap/include $(LDFLAGS) -fPIC -shared -o $@ $<
|
|
$(BUILD_DIR)/vst2-synth-fixture.so: tests/plugins/vst2_synth_fixture.c src/plugin/vst2_abi.h
|
|
@mkdir -p $(@D)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -fPIC -shared -o $@ $<
|
|
$(BUILD_DIR)/vst3-synth-fixture.so: tests/plugins/vst3_synth_fixture.c
|
|
@mkdir -p $(@D)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -isystem third_party/vst3 $(LDFLAGS) -fPIC -shared -o $@ $<
|
|
$(BUILD_DIR)/test_instruments: $(BUILD_DIR)/tests/integration/test_instruments.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-instruments
|
|
test-instruments: $(BUILD_DIR)/test_instruments $(BUILD_DIR)/clap-synth-fixture.clap $(BUILD_DIR)/vst2-synth-fixture.so $(BUILD_DIR)/vst3-synth-fixture.so
|
|
./$(BUILD_DIR)/test_instruments "$(abspath $(BUILD_DIR))/clap-synth-fixture.clap" "$(abspath $(BUILD_DIR))/vst2-synth-fixture.so" "$(abspath $(BUILD_DIR))/vst3-synth-fixture.so"
|
|
test: test-instruments
|
|
-include $(BUILD_DIR)/tests/integration/test_instruments.d
|
|
|
|
.PHONY: test-gui-instruments
|
|
test-gui-instruments: $(BUILD_DIR)/test_gui $(BUILD_DIR)/clap-synth-fixture.clap $(BUILD_DIR)/vst2-synth-fixture.so $(BUILD_DIR)/vst3-synth-fixture.so
|
|
XTC_TEST_SYNTH_CLAP="$(abspath $(BUILD_DIR))/clap-synth-fixture.clap" XTC_TEST_SYNTH_VST2="$(abspath $(BUILD_DIR))/vst2-synth-fixture.so" XTC_TEST_SYNTH_VST3="$(abspath $(BUILD_DIR))/vst3-synth-fixture.so" xvfb-run -a -s "-screen 0 1280x800x24" ./$(BUILD_DIR)/test_gui
|
|
|
|
$(BUILD_DIR)/test_settings: $(BUILD_DIR)/tests/unit/test_settings.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: test-settings
|
|
test-settings: $(BUILD_DIR)/test_settings
|
|
./$(BUILD_DIR)/test_settings
|
|
test: test-settings
|
|
|
|
-include $(BUILD_DIR)/tests/unit/test_settings.d
|
|
|
|
$(BUILD_DIR)/test_builtin: tests/unit/test_builtin.c $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $< $(BUILD_DIR)/libxtc.a -lm -ldl
|
|
.PHONY: test-builtins
|
|
test: test-builtins
|
|
test-builtins: $(BUILD_DIR)/test_builtin
|
|
./$(BUILD_DIR)/test_builtin
|
|
|
|
$(BUILD_DIR)/builtin-preview: $(BUILD_DIR)/examples/builtin_preview.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: builtin-preview
|
|
builtin-preview: $(BUILD_DIR)/builtin-preview
|
|
./$(BUILD_DIR)/builtin-preview "$(abspath $(BUILD_DIR))/builtin"
|
|
-include $(BUILD_DIR)/examples/builtin_preview.d
|
|
|
|
$(BUILD_DIR)/test_modern_editing: tests/unit/test_modern_editing.c $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $< $(BUILD_DIR)/libxtc.a -lm -ldl
|
|
|
|
.PHONY: test-modern-editing
|
|
test-modern-editing: $(BUILD_DIR)/test_modern_editing
|
|
./$(BUILD_DIR)/test_modern_editing
|
|
|
|
.PHONY: test-gui-modern-editing
|
|
test-gui-modern-editing: $(BUILD_DIR)/test_gui
|
|
XTC_TEST_MODERN_EDITING_ONLY=1 xvfb-run -a -s "-screen 0 1280x800x24" ./$(BUILD_DIR)/test_gui
|
|
|
|
$(BUILD_DIR)/test_next_daw: tests/unit/test_next_daw.c $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $< $(BUILD_DIR)/libxtc.a -lm -ldl
|
|
.PHONY: test-next-daw test-gui-next-daw
|
|
test-next-daw: $(BUILD_DIR)/test_next_daw
|
|
./$(BUILD_DIR)/test_next_daw
|
|
test: test-next-daw
|
|
test-gui-next-daw: $(BUILD_DIR)/test_gui
|
|
XTC_TEST_MODERN_EDITING_ONLY=1 XTC_TEST_NEXT_DAW_ONLY=1 xvfb-run -a -s "-screen 0 1280x800x24" ./$(BUILD_DIR)/test_gui
|
|
|
|
# Optional documentation capture; requires Xvfb, ImageMagick import and xdotool.
|
|
$(BUILD_DIR)/capture_screenshots: $(BUILD_DIR)/tools/capture_screenshots.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)/src/gui/plugin_dialog.o $(BUILD_DIR)/src/gui/sample_editor.o $(BUILD_DIR)/libxtc.a
|
|
$(CXX) $(LDFLAGS) -o $@ $^ $(FLTK_LIBS) $(JACK_LIBS) -lm -ldl
|
|
|
|
.PHONY: screenshots
|
|
screenshots: $(BUILD_DIR)/capture_screenshots $(BUILD_DIR)/plugin-fixture.so $(BUILD_DIR)/clap-synth-fixture.clap $(BUILD_DIR)/vst2-synth-fixture.so $(BUILD_DIR)/vst3-synth-fixture.so
|
|
xvfb-run -a -s "-screen 0 1440x960x24" ./$(BUILD_DIR)/capture_screenshots "$(CURDIR)/screenshots"
|
|
|
|
-include $(BUILD_DIR)/tools/capture_screenshots.d
|
|
|
|
$(BUILD_DIR)/test_sample: $(BUILD_DIR)/tests/unit/test_sample.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: test-sample test-gui-sample
|
|
test-sample: $(BUILD_DIR)/test_sample
|
|
./$(BUILD_DIR)/test_sample
|
|
test: test-sample
|
|
test-gui-sample: $(BUILD_DIR)/test_gui
|
|
XTC_TEST_SAMPLE_EDITOR_ONLY=1 xvfb-run -a -s "-screen 0 1280x900x24" ./$(BUILD_DIR)/test_gui
|
|
-include $(BUILD_DIR)/src/gui/sample_editor.d $(BUILD_DIR)/tests/unit/test_sample.d
|
|
|
|
$(BUILD_DIR)/test_track_fx: $(BUILD_DIR)/tests/unit/test_track_fx.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: test-track-fx
|
|
test-track-fx: $(BUILD_DIR)/test_track_fx
|
|
./$(BUILD_DIR)/test_track_fx
|
|
test: test-track-fx
|
|
-include $(BUILD_DIR)/tests/unit/test_track_fx.d
|
|
|
|
.PHONY: test-gui-track-fx
|
|
test-gui-track-fx: $(BUILD_DIR)/test_gui $(BUILD_DIR)/plugin-fixture.so $(BUILD_DIR)/clap-fixture.clap $(BUILD_DIR)/vst2-fixture.so $(BUILD_DIR)/vst3-fixture.so
|
|
XTC_TEST_TRACK_FX_ONLY=1 XTC_TEST_PLUGIN="$(abspath $(BUILD_DIR))/plugin-fixture.so" XTC_TEST_CLAP="$(abspath $(BUILD_DIR))/clap-fixture.clap" XTC_TEST_VST2="$(abspath $(BUILD_DIR))/vst2-fixture.so" XTC_TEST_VST3="$(abspath $(BUILD_DIR))/vst3-fixture.so" xvfb-run -a -s "-screen 0 1280x900x24" ./$(BUILD_DIR)/test_gui
|
|
|
|
$(BUILD_DIR)/test_creative: $(BUILD_DIR)/tests/unit/test_creative.o $(BUILD_DIR)/libxtc.a
|
|
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
|
.PHONY: test-creative test-gui-creative
|
|
test-creative: $(BUILD_DIR)/test_creative
|
|
./$(BUILD_DIR)/test_creative
|
|
test: test-creative
|
|
test-gui-creative: $(BUILD_DIR)/test_gui
|
|
XTC_TEST_CREATIVE_ONLY=1 xvfb-run -a -s "-screen 0 1280x900x24" ./$(BUILD_DIR)/test_gui
|
|
-include $(BUILD_DIR)/tests/unit/test_creative.d
|
|
|
|
.PHONY: test-gui-midi-workflows
|
|
test-gui-midi-workflows: $(BUILD_DIR)/test_gui
|
|
XTC_TEST_MIDI_WORKFLOWS_ONLY=1 xvfb-run -a -s "-screen 0 1440x960x24" ./$(BUILD_DIR)/test_gui
|