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