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