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 110# TODO split dsp and ui object build flags 111BASE_FLAGS += $(DGL_FLAGS) 112 113# --------------------------------------------------------------------------------------------------------------------- 114# all needs to be first 115 116all: 117 118# --------------------------------------------------------------------------------------------------------------------- 119# Common 120 121$(BUILD_DIR)/%.c.o: %.c 122 -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" 123 @echo "Compiling $<" 124 $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@ 125 126$(BUILD_DIR)/%.cc.o: %.cc 127 -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" 128 @echo "Compiling $<" 129 $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ 130 131$(BUILD_DIR)/%.cpp.o: %.cpp 132 -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" 133 @echo "Compiling $<" 134 $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ 135 136clean: 137 rm -rf $(BUILD_DIR) 138 rm -rf $(TARGET_DIR)/$(NAME) $(TARGET_DIR)/$(NAME)-* $(TARGET_DIR)/$(NAME).lv2 139 140# --------------------------------------------------------------------------------------------------------------------- 141 142$(BUILD_DIR)/DistrhoPluginMain_%.cpp.o: $(DPF_PATH)/distrho/DistrhoPluginMain.cpp 143 -@mkdir -p $(BUILD_DIR) 144 @echo "Compiling DistrhoPluginMain.cpp ($*)" 145 $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -c -o $@ 146 147$(BUILD_DIR)/DistrhoUIMain_%.cpp.o: $(DPF_PATH)/distrho/DistrhoUIMain.cpp 148 -@mkdir -p $(BUILD_DIR) 149 @echo "Compiling DistrhoUIMain.cpp ($*)" 150 $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -c -o $@ 151 152$(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o: $(DPF_PATH)/distrho/DistrhoPluginMain.cpp 153 -@mkdir -p $(BUILD_DIR) 154 @echo "Compiling DistrhoPluginMain.cpp (JACK)" 155 $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(shell $(PKG_CONFIG) --cflags jack) -DDISTRHO_PLUGIN_TARGET_JACK -c -o $@ 156 157$(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o: $(DPF_PATH)/distrho/DistrhoUIMain.cpp 158 -@mkdir -p $(BUILD_DIR) 159 @echo "Compiling DistrhoUIMain.cpp (DSSI)" 160 $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(shell $(PKG_CONFIG) --cflags liblo) -DDISTRHO_PLUGIN_TARGET_DSSI -c -o $@ 161 162# --------------------------------------------------------------------------------------------------------------------- 163# JACK 164 165jack: $(jack) 166 167ifeq ($(HAVE_DGL),true) 168$(jack): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o $(BUILD_DIR)/DistrhoUIMain_JACK.cpp.o $(DGL_LIB) 169else 170$(jack): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o 171endif 172 -@mkdir -p $(shell dirname $@) 173 @echo "Creating JACK standalone for $(NAME)" 174 $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell $(PKG_CONFIG) --libs jack) -o $@ 175 176# --------------------------------------------------------------------------------------------------------------------- 177# LADSPA 178 179ladspa: $(ladspa_dsp) 180 181$(ladspa_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LADSPA.cpp.o 182 -@mkdir -p $(shell dirname $@) 183 @echo "Creating LADSPA plugin for $(NAME)" 184 $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@ 185 186# --------------------------------------------------------------------------------------------------------------------- 187# DSSI 188 189dssi: $(dssi_dsp) $(dssi_ui) 190dssi_dsp: $(dssi_dsp) 191dssi_ui: $(dssi_ui) 192 193$(dssi_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_DSSI.cpp.o 194 -@mkdir -p $(shell dirname $@) 195 @echo "Creating DSSI plugin library for $(NAME)" 196 $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@ 197 198$(dssi_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o $(DGL_LIB) 199 -@mkdir -p $(shell dirname $@) 200 @echo "Creating DSSI UI for $(NAME)" 201 $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell $(PKG_CONFIG) --libs liblo) -o $@ 202 203# --------------------------------------------------------------------------------------------------------------------- 204# LV2 205 206lv2: $(lv2) 207lv2_dsp: $(lv2_dsp) 208lv2_sep: $(lv2_dsp) $(lv2_ui) 209 210$(lv2): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o $(DGL_LIB) 211 -@mkdir -p $(shell dirname $@) 212 @echo "Creating LV2 plugin for $(NAME)" 213 $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@ 214 215$(lv2_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o 216 -@mkdir -p $(shell dirname $@) 217 @echo "Creating LV2 plugin library for $(NAME)" 218 $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@ 219 220$(lv2_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o $(DGL_LIB) 221 -@mkdir -p $(shell dirname $@) 222 @echo "Creating LV2 plugin UI for $(NAME)" 223 $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@ 224 225# --------------------------------------------------------------------------------------------------------------------- 226# VST 227 228vst: $(vst) 229 230ifeq ($(HAVE_DGL),true) 231$(vst): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_VST.cpp.o $(BUILD_DIR)/DistrhoUIMain_VST.cpp.o $(DGL_LIB) 232else 233$(vst): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_VST.cpp.o 234endif 235 -@mkdir -p $(shell dirname $@) 236 @echo "Creating VST plugin for $(NAME)" 237 $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@ 238 239# --------------------------------------------------------------------------------------------------------------------- 240 241-include $(OBJS_DSP:%.o=%.d) 242ifeq ($(HAVE_DGL),true) 243-include $(OBJS_UI:%.o=%.d) 244endif 245 246-include $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.d 247-include $(BUILD_DIR)/DistrhoPluginMain_LADSPA.cpp.d 248-include $(BUILD_DIR)/DistrhoPluginMain_DSSI.cpp.d 249-include $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.d 250-include $(BUILD_DIR)/DistrhoPluginMain_VST.cpp.d 251 252-include $(BUILD_DIR)/DistrhoUIMain_JACK.cpp.d 253-include $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.d 254-include $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.d 255-include $(BUILD_DIR)/DistrhoUIMain_VST.cpp.d 256 257# --------------------------------------------------------------------------------------------------------------------- 258