From a8f12e6b587173b6375f15a3b15d11d1126b0198 Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 26 Sep 2018 01:25:51 +0200 Subject: [PATCH] Add new files --- dpf/Makefile.base.mk | 236 ++++++++++++++++++++++++++++++++++++++++ dpf/Makefile.plugins.mk | 210 +++++++++++++++++++++++++++++++++++ get-plugins.sh | 3 + 3 files changed, 449 insertions(+) create mode 100644 dpf/Makefile.base.mk create mode 100644 dpf/Makefile.plugins.mk diff --git a/dpf/Makefile.base.mk b/dpf/Makefile.base.mk new file mode 100644 index 0000000..5e10d7d --- /dev/null +++ b/dpf/Makefile.base.mk @@ -0,0 +1,236 @@ +#!/usr/bin/make -f +# Makefile for DPF # +# ---------------- # +# Created by falkTX +# + +AR ?= ar +CC ?= gcc +CXX ?= g++ + +# --------------------------------------------------------------------------------------------------------------------- +# Auto-detect OS if not defined + +ifneq ($(BSD),true) +ifneq ($(HAIKU),true) +ifneq ($(HURD),true) +ifneq ($(LINUX),true) +ifneq ($(MACOS),true) +ifneq ($(WIN32),true) + +TARGET_MACHINE := $(shell $(CC) -dumpmachine) +ifneq (,$(findstring bsd,$(TARGET_MACHINE))) +BSD=true +endif +ifneq (,$(findstring haiku,$(TARGET_MACHINE))) +HAIKU=true +endif +ifneq (,$(findstring gnu,$(TARGET_MACHINE))) +HURD=true +endif +ifneq (,$(findstring linux,$(TARGET_MACHINE))) +LINUX=true +endif +ifneq (,$(findstring apple,$(TARGET_MACHINE))) +MACOS=true +endif +ifneq (,$(findstring mingw,$(TARGET_MACHINE))) +WIN32=true +endif + +endif +endif +endif +endif +endif +endif + +# --------------------------------------------------------------------------------------------------------------------- +# Set LINUX_OR_MACOS + +ifeq ($(LINUX),true) +LINUX_OR_MACOS=true +endif + +ifeq ($(MACOS),true) +LINUX_OR_MACOS=true +endif + +# --------------------------------------------------------------------------------------------------------------------- +# Set MACOS_OR_WIN32 + +ifeq ($(MACOS),true) +MACOS_OR_WIN32=true +endif + +ifeq ($(WIN32),true) +MACOS_OR_WIN32=true +endif + +# --------------------------------------------------------------------------------------------------------------------- +# Set UNIX + +ifeq ($(BSD),true) +UNIX=true +endif + +ifeq ($(HURD),true) +UNIX=true +endif + +ifeq ($(LINUX),true) +UNIX=true +endif + +ifeq ($(MACOS),true) +UNIX=true +endif + +# --------------------------------------------------------------------------------------------------------------------- +# Set build and link flags + +BASE_FLAGS = -Wall -Wextra -pipe -MD -MP +BASE_OPTS = -O3 -ffast-math -mtune=generic -msse -msse2 -fdata-sections -ffunction-sections + +ifeq ($(MACOS),true) +# MacOS linker flags +LINK_OPTS = -fdata-sections -ffunction-sections -Wl,-dead_strip -Wl,-dead_strip_dylibs +else +# Common linker flags +LINK_OPTS = -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-O1 -Wl,--as-needed +ifneq ($(SKIP_STRIPPING),true) +LINK_OPTS += -Wl,--strip-all +endif +endif + +ifeq ($(NOOPT),true) +# No CPU-specific optimization flags +BASE_OPTS = -O2 -ffast-math -fdata-sections -ffunction-sections +endif + +ifeq ($(WIN32),true) +# mingw has issues with this specific optimization +# See https://github.com/falkTX/Carla/issues/696 +BASE_OPTS += -fno-rerun-cse-after-loop +ifeq ($(BUILDING_FOR_WINDOWS),true) +BASE_FLAGS += -DBUILDING_CARLA_FOR_WINDOWS +endif +else +# Not needed for Windows +BASE_FLAGS += -fPIC -DPIC +endif + +ifeq ($(DEBUG),true) +BASE_FLAGS += -DDEBUG -O0 -g +LINK_OPTS = +else +BASE_FLAGS += -DNDEBUG $(BASE_OPTS) -fvisibility=hidden +CXXFLAGS += -fvisibility-inlines-hidden +endif + +BUILD_C_FLAGS = $(BASE_FLAGS) -std=gnu99 $(CFLAGS) +BUILD_CXX_FLAGS = $(BASE_FLAGS) -std=gnu++0x $(CXXFLAGS) +LINK_FLAGS = $(LINK_OPTS) $(LDFLAGS) + +ifneq ($(MACOS),true) +# Not available on MacOS +LINK_FLAGS += -Wl,--no-undefined +endif + +ifeq ($(MACOS_OLD),true) +BUILD_CXX_FLAGS = $(BASE_FLAGS) $(CXXFLAGS) -DHAVE_CPP11_SUPPORT=0 +endif + +ifeq ($(WIN32),true) +# Always build statically on windows +LINK_FLAGS += -static +endif + +# --------------------------------------------------------------------------------------------------------------------- +# Strict test build + +ifeq ($(TESTBUILD),true) +BASE_FLAGS += -Werror -Wcast-qual -Wconversion -Wformat -Wformat-security -Wredundant-decls -Wshadow -Wstrict-overflow -fstrict-overflow -Wundef -Wwrite-strings +BASE_FLAGS += -Wpointer-arith -Wabi -Winit-self -Wuninitialized -Wstrict-overflow=5 +# BASE_FLAGS += -Wfloat-equal +ifeq ($(CC),clang) +BASE_FLAGS += -Wdocumentation -Wdocumentation-unknown-command +BASE_FLAGS += -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-padded -Wno-exit-time-destructors -Wno-float-equal +else +BASE_FLAGS += -Wcast-align -Wunsafe-loop-optimizations +endif +ifneq ($(MACOS),true) +BASE_FLAGS += -Wmissing-declarations -Wsign-conversion +ifneq ($(CC),clang) +BASE_FLAGS += -Wlogical-op +endif +endif +CFLAGS += -Wold-style-definition -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes +CXXFLAGS += -Weffc++ -Wnon-virtual-dtor -Woverloaded-virtual +endif + +# --------------------------------------------------------------------------------------------------------------------- +# Check for optional libs + +ifeq ($(MACOS_OR_WIN32),true) +HAVE_DGL = true +else +HAVE_DGL = $(shell pkg-config --exists gl x11 && echo true) +HAVE_JACK = $(shell pkg-config --exists jack && echo true) +HAVE_LIBLO = $(shell pkg-config --exists liblo && echo true) +endif + +ifneq ($(HAVE_DGL),true) +$(error DGL missing 22) +endif + +# --------------------------------------------------------------------------------------------------------------------- +# Set libs stuff + +ifeq ($(HAVE_DGL),true) + +ifeq ($(MACOS),true) +DGL_LIBS = -framework OpenGL -framework Cocoa +endif + +ifeq ($(WIN32),true) +DGL_LIBS = -lopengl32 -lgdi32 +endif + +ifneq ($(MACOS_OR_WIN32),true) +DGL_FLAGS = $(shell pkg-config --cflags gl x11) +DGL_LIBS = $(shell pkg-config --libs gl x11) +endif + +endif # HAVE_DGL + +# --------------------------------------------------------------------------------------------------------------------- +# Set app extension + +ifeq ($(WIN32),true) +APP_EXT = .exe +endif + +# --------------------------------------------------------------------------------------------------------------------- +# Set shared lib extension + +LIB_EXT = .so + +ifeq ($(MACOS),true) +LIB_EXT = .dylib +endif + +ifeq ($(WIN32),true) +LIB_EXT = .dll +endif + +# --------------------------------------------------------------------------------------------------------------------- +# Set shared library CLI arg + +SHARED = -shared + +ifeq ($(MACOS),true) +SHARED = -dynamiclib +endif + +# --------------------------------------------------------------------------------------------------------------------- diff --git a/dpf/Makefile.plugins.mk b/dpf/Makefile.plugins.mk new file mode 100644 index 0000000..47c7fc7 --- /dev/null +++ b/dpf/Makefile.plugins.mk @@ -0,0 +1,210 @@ +#!/usr/bin/make -f +# Makefile for DPF Example Plugins # +# -------------------------------- # +# Created by falkTX +# + +# NOTE: NAME, FILES_DSP and FILES_UI must have been defined before including this file! + + +ifeq (,$(wildcard ../../Makefile.base.mk)) +DPF_PATH=../../dpf +else +DPF_PATH=../.. +endif + +include $(DPF_PATH)/Makefile.base.mk + +ifeq ($(FILES_UI),) +HAVE_DGL = false +endif + +# --------------------------------------------------------------------------------------------------------------------- +# Basic setup + +TARGET_DIR = ../../bin +BUILD_DIR = ../../build/$(NAME) + +BUILD_C_FLAGS += -I. +BUILD_CXX_FLAGS += -I. -I$(DPF_PATH)/distrho -I$(DPF_PATH)/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) + +# --------------------------------------------------------------------------------------------------------------------- +# Handle plugins without UI + +ifneq ($(HAVE_DGL),true) +dssi_ui = +lv2_ui = +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 + +# --------------------------------------------------------------------------------------------------------------------- + +$(BUILD_DIR)/DistrhoPluginMain_%.cpp.o: $(DPF_PATH)/distrho/DistrhoPluginMain.cpp + -@mkdir -p $(BUILD_DIR) + @echo "Compiling DistrhoPluginMain.cpp ($*)" + @$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -c -o $@ + +$(BUILD_DIR)/DistrhoUIMain_%.cpp.o: $(DPF_PATH)/distrho/DistrhoUIMain.cpp + -@mkdir -p $(BUILD_DIR) + @echo "Compiling DistrhoUIMain.cpp ($*)" + @$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -c -o $@ + +$(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o: $(DPF_PATH)/distrho/DistrhoPluginMain.cpp + -@mkdir -p $(BUILD_DIR) + @echo "Compiling DistrhoPluginMain.cpp (JACK)" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(shell pkg-config --cflags jack) -DDISTRHO_PLUGIN_TARGET_JACK -c -o $@ + +$(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o: $(DPF_PATH)/distrho/DistrhoUIMain.cpp + -@mkdir -p $(BUILD_DIR) + @echo "Compiling DistrhoUIMain.cpp (DSSI)" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(shell pkg-config --cflags liblo) -DDISTRHO_PLUGIN_TARGET_DSSI -c -o $@ + +# --------------------------------------------------------------------------------------------------------------------- +# JACK + +jack: $(jack) + +ifeq ($(HAVE_DGL),true) +$(jack): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o $(BUILD_DIR)/DistrhoUIMain_JACK.cpp.o $(DPF_PATH)/build/libdgl.a +else +$(jack): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o +endif + -@mkdir -p $(shell dirname $@) + @echo "Creating JACK standalone for $(NAME)" + @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell pkg-config --libs jack) -o $@ + +# --------------------------------------------------------------------------------------------------------------------- +# LADSPA + +ladspa: $(ladspa_dsp) + +$(ladspa_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LADSPA.cpp.o + -@mkdir -p $(shell dirname $@) + @echo "Creating LADSPA plugin for $(NAME)" + @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@ + +# --------------------------------------------------------------------------------------------------------------------- +# DSSI + +dssi: $(dssi_dsp) $(dssi_ui) +dssi_dsp: $(dssi_dsp) +dssi_ui: $(dssi_ui) + +$(dssi_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_DSSI.cpp.o + -@mkdir -p $(shell dirname $@) + @echo "Creating DSSI plugin library for $(NAME)" + @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@ + +$(dssi_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o $(DPF_PATH)/build/libdgl.a + -@mkdir -p $(shell dirname $@) + @echo "Creating DSSI UI for $(NAME)" + @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell pkg-config --libs liblo) -o $@ + +# --------------------------------------------------------------------------------------------------------------------- +# LV2 + +lv2: $(lv2) +lv2_dsp: $(lv2_dsp) +lv2_sep: $(lv2_dsp) $(lv2_ui) + +$(lv2): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o $(DPF_PATH)/build/libdgl.a + -@mkdir -p $(shell dirname $@) + @echo "Creating LV2 plugin for $(NAME)" + @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@ + +$(lv2_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o + -@mkdir -p $(shell dirname $@) + @echo "Creating LV2 plugin library for $(NAME)" + @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@ + +$(lv2_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o $(DPF_PATH)/build/libdgl.a + -@mkdir -p $(shell dirname $@) + @echo "Creating LV2 plugin UI for $(NAME)" + @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@ + +# --------------------------------------------------------------------------------------------------------------------- +# VST + +vst: $(vst) + +ifeq ($(HAVE_DGL),true) +$(vst): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_VST.cpp.o $(BUILD_DIR)/DistrhoUIMain_VST.cpp.o $(DPF_PATH)/build/libdgl.a +else +$(vst): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_VST.cpp.o +endif + -@mkdir -p $(shell dirname $@) + @echo "Creating VST plugin for $(NAME)" + @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@ + +# --------------------------------------------------------------------------------------------------------------------- + +-include $(OBJS_DSP:%.o=%.d) +ifeq ($(HAVE_DGL),true) +-include $(OBJS_UI:%.o=%.d) +endif + +-include $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.d +-include $(BUILD_DIR)/DistrhoPluginMain_LADSPA.cpp.d +-include $(BUILD_DIR)/DistrhoPluginMain_DSSI.cpp.d +-include $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.d +-include $(BUILD_DIR)/DistrhoPluginMain_VST.cpp.d + +-include $(BUILD_DIR)/DistrhoUIMain_JACK.cpp.d +-include $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.d +-include $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.d +-include $(BUILD_DIR)/DistrhoUIMain_VST.cpp.d + +# --------------------------------------------------------------------------------------------------------------------- diff --git a/get-plugins.sh b/get-plugins.sh index 0c5aa2f..4803948 100755 --- a/get-plugins.sh +++ b/get-plugins.sh @@ -28,6 +28,9 @@ mkdir plugins mv repos/DPF dpf rm -rf dpf/.git* +rm -rf dpf/.travis* +rm -rf dpf/examples +rm -f dpf/Makefile for PLUGIN in ${PLUGINS[@]}; do for f in $(ls repos/$PLUGIN/plugins/); do