summaryrefslogtreecommitdiff
path: root/examples/Makefile.mk
diff options
context:
space:
mode:
Diffstat (limited to 'examples/Makefile.mk')
-rw-r--r--examples/Makefile.mk172
1 files changed, 172 insertions, 0 deletions
diff --git a/examples/Makefile.mk b/examples/Makefile.mk
new file mode 100644
index 00000000..2d917e41
--- /dev/null
+++ b/examples/Makefile.mk
@@ -0,0 +1,172 @@
+#!/usr/bin/make -f
+# Makefile for DPF Example Plugins #
+# -------------------------------- #
+# Created by falkTX
+#
+
+# NAME, FILES_DSP and FILES_UI have been defined before
+
+include ../../Makefile.mk
+
+ifeq ($(OBJS_UI),)
+HAVE_DGL = false
+endif
+
+# ---------------------------------------------------------------------------------------------------------------------
+# Basic setup
+
+TARGET_DIR = ../../bin
+BUILD_DIR = ../../build/$(NAME)
+
+BUILD_C_FLAGS += -I.
+BUILD_CXX_FLAGS += -I. -I../../distrho -I../../dgl
+
+ifeq ($(HAVE_DGL),true)
+BASE_FLAGS += -DHAVE_DGL
+endif
+
+ifeq ($(HAVE_JACK),true)
+BASE_FLAGS += -DHAVE_JACK
+endif
+
+ifeq ($(HAVE_LIBLO),true)
+BASE_FLAGS += -DHAVE_LIBLO
+endif
+
+# ---------------------------------------------------------------------------------------------------------------------
+# Set files to build
+
+OBJS_DSP = $(FILES_DSP:%=$(BUILD_DIR)/%.o)
+OBJS_UI = $(FILES_UI:%=$(BUILD_DIR)/%.o)
+
+# ---------------------------------------------------------------------------------------------------------------------
+# Set plugin binary file targets
+
+jack = $(TARGET_DIR)/$(NAME)$(APP_EXT)
+ladspa_dsp = $(TARGET_DIR)/$(NAME)-ladspa$(LIB_EXT)
+dssi_dsp = $(TARGET_DIR)/$(NAME)-dssi$(LIB_EXT)
+dssi_ui = $(TARGET_DIR)/$(NAME)-dssi/$(NAME)_ui$(APP_EXT)
+lv2 = $(TARGET_DIR)/$(NAME).lv2/$(NAME)$(LIB_EXT)
+lv2_dsp = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_dsp$(LIB_EXT)
+lv2_ui = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_ui$(LIB_EXT)
+vst = $(TARGET_DIR)/$(NAME)-vst$(LIB_EXT)
+
+# ---------------------------------------------------------------------------------------------------------------------
+# Set distrho code files
+
+DISTRHO_PLUGIN_FILES = ../../distrho/DistrhoPluginMain.cpp
+
+ifeq ($(HAVE_DGL),true)
+DISTRHO_UI_FILES = ../../distrho/DistrhoUIMain.cpp ../../build/libdgl.a
+endif
+
+# ---------------------------------------------------------------------------------------------------------------------
+# Handle plugins without UI
+
+ifneq ($(HAVE_DGL),true)
+dssi_ui =
+lv2_ui =
+DISTRHO_UI_FILES =
+DGL_LIBS =
+OBJS_UI =
+endif
+
+# ---------------------------------------------------------------------------------------------------------------------
+# all needs to be first
+
+all:
+
+# ---------------------------------------------------------------------------------------------------------------------
+# Common
+
+$(BUILD_DIR)/%.c.o: %.c
+ -@mkdir -p $(BUILD_DIR)
+ @echo "Compiling $<"
+ @$(CC) $< $(BUILD_C_FLAGS) -c -o $@
+
+$(BUILD_DIR)/%.cpp.o: %.cpp
+ -@mkdir -p $(BUILD_DIR)
+ @echo "Compiling $<"
+ @$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
+
+clean:
+ rm -rf $(BUILD_DIR)
+ rm -rf $(TARGET_DIR)/$(NAME) $(TARGET_DIR)/$(NAME)-* $(TARGET_DIR)/$(NAME).lv2
+
+# ---------------------------------------------------------------------------------------------------------------------
+# JACK
+
+jack: $(jack)
+
+$(jack): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES)
+ -@mkdir -p $(shell dirname $@)
+ @echo "Creating JACK standalone for $(NAME)"
+ @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell pkg-config --cflags --libs jack) -DDISTRHO_PLUGIN_TARGET_JACK -o $@
+
+# ---------------------------------------------------------------------------------------------------------------------
+# LADSPA
+
+ladspa: $(ladspa_dsp)
+
+$(ladspa_dsp): $(OBJS_DSP) $(DISTRHO_PLUGIN_FILES)
+ -@mkdir -p $(shell dirname $@)
+ @echo "Creating LADSPA plugin for $(NAME)"
+ @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_LADSPA -o $@
+
+# ---------------------------------------------------------------------------------------------------------------------
+# DSSI
+
+dssi: $(dssi_dsp) $(dssi_ui)
+dssi_dsp: $(dssi_dsp)
+dssi_ui: $(dssi_ui)
+
+$(dssi_dsp): $(OBJS_DSP) $(DISTRHO_PLUGIN_FILES)
+ -@mkdir -p $(shell dirname $@)
+ @echo "Creating DSSI plugin library for $(NAME)"
+ @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_DSSI -o $@
+
+$(dssi_ui): $(OBJS_UI) $(DISTRHO_UI_FILES)
+ -@mkdir -p $(shell dirname $@)
+ @echo "Creating DSSI UI for $(NAME)"
+ @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell pkg-config --cflags --libs liblo) -DDISTRHO_PLUGIN_TARGET_DSSI -o $@
+
+# ---------------------------------------------------------------------------------------------------------------------
+# LV2
+
+lv2_one: $(lv2)
+lv2_dsp: $(lv2_dsp)
+lv2_sep: $(lv2_dsp) $(lv2_ui)
+
+$(lv2): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES)
+ -@mkdir -p $(shell dirname $@)
+ @echo "Creating LV2 plugin for $(NAME)"
+ @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_LV2 -o $@
+
+$(lv2_dsp): $(OBJS_DSP) $(DISTRHO_PLUGIN_FILES)
+ -@mkdir -p $(shell dirname $@)
+ @echo "Creating LV2 plugin library for $(NAME)"
+ @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_LV2 -o $@
+
+$(lv2_ui): $(OBJS_UI) $(DISTRHO_UI_FILES)
+ -@mkdir -p $(shell dirname $@)
+ @echo "Creating LV2 plugin UI for $(NAME)"
+ @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_LV2 -o $@
+
+# ---------------------------------------------------------------------------------------------------------------------
+# VST
+
+vst: $(vst)
+
+$(vst): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES)
+ -@mkdir -p $(shell dirname $@)
+ @echo "Creating VST plugin for $(NAME)"
+ @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_VST -o $@
+
+# ---------------------------------------------------------------------------------------------------------------------
+
+-include $(OBJS_DSP:%.o=%.d)
+ifeq ($(HAVE_DGL),true)
+-include $(OBJS_UI:%.o=%.d)
+endif
+
+# ---------------------------------------------------------------------------------------------------------------------