1#!/usr/bin/make -f
2# Makefile for DPF Example Plugins #
3# -------------------------------- #
4# Created by falkTX
5#
6
7# NOTE: NAME, FILES_DSP and FILES_UI must have been defined before including this file!
8
9
10ifeq (,$(wildcard ../../Makefile.base.mk))
11DPF_PATH=../../dpf
12else
13DPF_PATH=../..
14endif
15
16include $(DPF_PATH)/Makefile.base.mk
17
18# ---------------------------------------------------------------------------------------------------------------------
19# Basic setup
20
21TARGET_DIR = ../../bin
22BUILD_DIR = ../../build/$(NAME)
23
24BUILD_C_FLAGS   += -I.
25BUILD_CXX_FLAGS += -I. -I$(DPF_PATH)/distrho -I$(DPF_PATH)/dgl
26
27ifeq ($(HAVE_CAIRO),true)
28DGL_FLAGS += -DHAVE_CAIRO
29endif
30
31ifeq ($(HAVE_OPENGL),true)
32DGL_FLAGS += -DHAVE_OPENGL
33endif
34
35ifeq ($(HAVE_JACK),true)
36BASE_FLAGS += -DHAVE_JACK
37endif
38
39ifeq ($(HAVE_LIBLO),true)
40BASE_FLAGS += -DHAVE_LIBLO
41endif
42
43# ---------------------------------------------------------------------------------------------------------------------
44# Set files to build
45
46OBJS_DSP = $(FILES_DSP:%=$(BUILD_DIR)/%.o)
47OBJS_UI  = $(FILES_UI:%=$(BUILD_DIR)/%.o)
48
49# ---------------------------------------------------------------------------------------------------------------------
50# Set plugin binary file targets
51
52jack       = $(TARGET_DIR)/$(NAME)$(APP_EXT)
53ladspa_dsp = $(TARGET_DIR)/$(NAME)-ladspa$(LIB_EXT)
54dssi_dsp   = $(TARGET_DIR)/$(NAME)-dssi$(LIB_EXT)
55dssi_ui    = $(TARGET_DIR)/$(NAME)-dssi/$(NAME)_ui$(APP_EXT)
56lv2        = $(TARGET_DIR)/$(NAME).lv2/$(NAME)$(LIB_EXT)
57lv2_dsp    = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_dsp$(LIB_EXT)
58lv2_ui     = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_ui$(LIB_EXT)
59vst        = $(TARGET_DIR)/$(NAME)-vst$(LIB_EXT)
60
61# ---------------------------------------------------------------------------------------------------------------------
62# Handle UI stuff, disable UI support automatically
63
64ifeq ($(FILES_UI),)
65UI_TYPE = none
66endif
67
68ifeq ($(UI_TYPE),)
69UI_TYPE = opengl
70endif
71
72ifeq ($(UI_TYPE),cairo)
73DGL_FLAGS += -DDGL_CAIRO
74ifeq ($(HAVE_CAIRO),true)
75DGL_FLAGS += $(CAIRO_FLAGS)
76DGL_LIBS  += $(CAIRO_LIBS)
77DGL_LIB    = $(DPF_PATH)/build/libdgl-cairo.a
78HAVE_DGL   = true
79else
80HAVE_DGL   = false
81endif
82endif
83
84ifeq ($(UI_TYPE),opengl)
85DGL_FLAGS += -DDGL_OPENGL
86ifeq ($(HAVE_OPENGL),true)
87DGL_FLAGS += $(OPENGL_FLAGS)
88DGL_LIBS  += $(OPENGL_LIBS)
89DGL_LIB    = $(DPF_PATH)/build/libdgl-opengl.a
90HAVE_DGL   = true
91else
92HAVE_DGL   = false
93endif
94endif
95
96ifeq ($(UI_TYPE),external)
97DGL_FLAGS += -DDGL_EXTERNAL
98HAVE_DGL   = true
99endif
100
101DGL_LIBS += $(DGL_SYSTEM_LIBS)
102
103ifneq ($(HAVE_DGL),true)
104dssi_ui =
105lv2_ui =
106DGL_LIBS =
107OBJS_UI =
108endif
109
110ifneq ($(HAVE_LIBLO),true)
111dssi_ui =
112endif
113
114# TODO split dsp and ui object build flags
115BASE_FLAGS += $(DGL_FLAGS)
116
117# ---------------------------------------------------------------------------------------------------------------------
118# all needs to be first
119
120all:
121
122# ---------------------------------------------------------------------------------------------------------------------
123# Common
124
125$(BUILD_DIR)/%.c.o: %.c
126	-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
127	@echo "Compiling $<"
128	$(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@
129
130$(BUILD_DIR)/%.cc.o: %.cc
131	-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
132	@echo "Compiling $<"
133	$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
134
135$(BUILD_DIR)/%.cpp.o: %.cpp
136	-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
137	@echo "Compiling $<"
138	$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
139
140clean:
141	rm -rf $(BUILD_DIR)
142	rm -rf $(TARGET_DIR)/$(NAME) $(TARGET_DIR)/$(NAME)-* $(TARGET_DIR)/$(NAME).lv2
143
144# ---------------------------------------------------------------------------------------------------------------------
145
146$(BUILD_DIR)/DistrhoPluginMain_%.cpp.o: $(DPF_PATH)/distrho/DistrhoPluginMain.cpp
147	-@mkdir -p $(BUILD_DIR)
148	@echo "Compiling DistrhoPluginMain.cpp ($*)"
149	$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -c -o $@
150
151$(BUILD_DIR)/DistrhoUIMain_%.cpp.o: $(DPF_PATH)/distrho/DistrhoUIMain.cpp
152	-@mkdir -p $(BUILD_DIR)
153	@echo "Compiling DistrhoUIMain.cpp ($*)"
154	$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -c -o $@
155
156$(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o: $(DPF_PATH)/distrho/DistrhoPluginMain.cpp
157	-@mkdir -p $(BUILD_DIR)
158	@echo "Compiling DistrhoPluginMain.cpp (JACK)"
159	$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(shell $(PKG_CONFIG) --cflags jack) -DDISTRHO_PLUGIN_TARGET_JACK -c -o $@
160
161$(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o: $(DPF_PATH)/distrho/DistrhoUIMain.cpp
162	-@mkdir -p $(BUILD_DIR)
163	@echo "Compiling DistrhoUIMain.cpp (DSSI)"
164	$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(shell $(PKG_CONFIG) --cflags liblo) -DDISTRHO_PLUGIN_TARGET_DSSI -c -o $@
165
166# ---------------------------------------------------------------------------------------------------------------------
167# JACK
168
169jack: $(jack)
170
171ifeq ($(HAVE_DGL),true)
172$(jack): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o $(BUILD_DIR)/DistrhoUIMain_JACK.cpp.o $(DGL_LIB)
173else
174$(jack): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o
175endif
176	-@mkdir -p $(shell dirname $@)
177	@echo "Creating JACK standalone for $(NAME)"
178	$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell $(PKG_CONFIG) --libs jack) -o $@
179
180# ---------------------------------------------------------------------------------------------------------------------
181# LADSPA
182
183ladspa: $(ladspa_dsp)
184
185$(ladspa_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LADSPA.cpp.o
186	-@mkdir -p $(shell dirname $@)
187	@echo "Creating LADSPA plugin for $(NAME)"
188	$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@
189
190# ---------------------------------------------------------------------------------------------------------------------
191# DSSI
192
193dssi:     $(dssi_dsp) $(dssi_ui)
194dssi_dsp: $(dssi_dsp)
195dssi_ui:  $(dssi_ui)
196
197$(dssi_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_DSSI.cpp.o
198	-@mkdir -p $(shell dirname $@)
199	@echo "Creating DSSI plugin library for $(NAME)"
200	$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@
201
202$(dssi_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o $(DGL_LIB)
203	-@mkdir -p $(shell dirname $@)
204	@echo "Creating DSSI UI for $(NAME)"
205	$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell $(PKG_CONFIG) --libs liblo) -o $@
206
207# ---------------------------------------------------------------------------------------------------------------------
208# LV2
209
210lv2: $(lv2)
211lv2_dsp: $(lv2_dsp)
212lv2_sep: $(lv2_dsp) $(lv2_ui)
213
214$(lv2): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o $(DGL_LIB)
215	-@mkdir -p $(shell dirname $@)
216	@echo "Creating LV2 plugin for $(NAME)"
217	$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@
218
219$(lv2_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o
220	-@mkdir -p $(shell dirname $@)
221	@echo "Creating LV2 plugin library for $(NAME)"
222	$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@
223
224$(lv2_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o $(DGL_LIB)
225	-@mkdir -p $(shell dirname $@)
226	@echo "Creating LV2 plugin UI for $(NAME)"
227	$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@
228
229# ---------------------------------------------------------------------------------------------------------------------
230# VST
231
232vst: $(vst)
233
234ifeq ($(HAVE_DGL),true)
235$(vst): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_VST.cpp.o $(BUILD_DIR)/DistrhoUIMain_VST.cpp.o $(DGL_LIB)
236else
237$(vst): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_VST.cpp.o
238endif
239	-@mkdir -p $(shell dirname $@)
240	@echo "Creating VST plugin for $(NAME)"
241	$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@
242
243# ---------------------------------------------------------------------------------------------------------------------
244
245-include $(OBJS_DSP:%.o=%.d)
246ifeq ($(HAVE_DGL),true)
247-include $(OBJS_UI:%.o=%.d)
248endif
249
250-include $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.d
251-include $(BUILD_DIR)/DistrhoPluginMain_LADSPA.cpp.d
252-include $(BUILD_DIR)/DistrhoPluginMain_DSSI.cpp.d
253-include $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.d
254-include $(BUILD_DIR)/DistrhoPluginMain_VST.cpp.d
255
256-include $(BUILD_DIR)/DistrhoUIMain_JACK.cpp.d
257-include $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.d
258-include $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.d
259-include $(BUILD_DIR)/DistrhoUIMain_VST.cpp.d
260
261# ---------------------------------------------------------------------------------------------------------------------
262