@@ -0,0 +1,150 @@ | |||||
#!/usr/bin/make -f | |||||
# Makefile for DISTRHO Plugins # | |||||
# ---------------------------- # | |||||
# Created by falkTX | |||||
# | |||||
AR ?= ar | |||||
CC ?= gcc | |||||
CXX ?= g++ | |||||
# -------------------------------------------------------------- | |||||
# Fallback to Linux if no other OS defined | |||||
ifneq ($(HAIKU),true) | |||||
ifneq ($(MACOS),true) | |||||
ifneq ($(WIN32),true) | |||||
LINUX=true | |||||
endif | |||||
endif | |||||
endif | |||||
# -------------------------------------------------------------- | |||||
# Set build and link flags | |||||
BASE_FLAGS = -Wall -Wextra -pipe | |||||
BASE_OPTS = -O2 -ffast-math -mtune=generic -msse -msse2 -fdata-sections -ffunction-sections | |||||
ifneq ($(MACOS),true) | |||||
# MacOS doesn't support this | |||||
BASE_OPTS += -mfpmath=sse | |||||
endif | |||||
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 ($(RASPPI),true) | |||||
# Raspberry-Pi optimization flags | |||||
BASE_OPTS = -O2 -ffast-math -march=armv6 -mfpu=vfp -mfloat-abi=hard | |||||
LINK_OPTS = -Wl,-O1 -Wl,--as-needed -Wl,--strip-all | |||||
endif | |||||
ifeq ($(PANDORA),true) | |||||
# OpenPandora optimization flags | |||||
BASE_OPTS = -O2 -ffast-math -march=armv7-a -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp | |||||
LINK_OPTS = -Wl,-O1 -Wl,--as-needed -Wl,--strip-all | |||||
endif | |||||
ifeq ($(NOOPT),true) | |||||
# No optimization flags | |||||
BASE_OPTS = -O2 -ffast-math -fdata-sections -ffunction-sections | |||||
endif | |||||
ifneq ($(WIN32),true) | |||||
# 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=c99 -std=gnu99 $(CFLAGS) | |||||
BUILD_CXX_FLAGS = $(BASE_FLAGS) -std=c++0x -std=gnu++0x $(CXXFLAGS) $(CPPFLAGS) | |||||
LINK_FLAGS = $(LINK_OPTS) -Wl,--no-undefined $(LDFLAGS) | |||||
ifeq ($(MACOS),true) | |||||
# No C++11 support | |||||
BUILD_CXX_FLAGS = $(BASE_FLAGS) $(CXXFLAGS) $(CPPFLAGS) | |||||
LINK_FLAGS = $(LINK_OPTS) $(LDFLAGS) | |||||
endif | |||||
# -------------------------------------------------------------- | |||||
# Check for optional libs | |||||
ifeq ($(LINUX),true) | |||||
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 | |||||
ifeq ($(MACOS),true) | |||||
HAVE_DGL = true | |||||
endif | |||||
ifeq ($(WIN32),true) | |||||
HAVE_DGL = true | |||||
endif | |||||
# -------------------------------------------------------------- | |||||
# Set libs stuff | |||||
ifeq ($(HAVE_DGL),true) | |||||
ifeq ($(LINUX),true) | |||||
DGL_FLAGS = $(shell pkg-config --cflags gl x11) | |||||
DGL_LIBS = $(shell pkg-config --libs gl x11) | |||||
endif | |||||
ifeq ($(MACOS),true) | |||||
DGL_LIBS = -framework OpenGL -framework Cocoa | |||||
endif | |||||
ifeq ($(WIN32),true) | |||||
DGL_LIBS = -lopengl32 -lgdi32 | |||||
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 | |||||
# -------------------------------------------------------------- |
@@ -3,3 +3,5 @@ | |||||
An experiment with Max generated code and DPF. | An experiment with Max generated code and DPF. | ||||
Based on https://github.com/Cycling74/gen-plugin-export. | Based on https://github.com/Cycling74/gen-plugin-export. | ||||
If you want to build your own plugins use https://github.com/moddevices/max-gen-skeleton instead, which provides a base skeleton and scripts to facilitate the creating of such plugins. |
@@ -0,0 +1,164 @@ | |||||
#!/usr/bin/make -f | |||||
# Makefile for DISTRHO Plugins # | |||||
# ---------------------------- # | |||||
# Created by falkTX | |||||
# | |||||
# NAME, OBJS_DSP and OBJS_UI have been defined before | |||||
include ../../Makefile.mk | |||||
ifeq ($(OBJS_UI),) | |||||
HAVE_DGL = false | |||||
endif | |||||
# -------------------------------------------------------------- | |||||
# Set which plugin formats to build | |||||
BUILD_JACK = true | |||||
ifeq ($(LINUX),true) | |||||
BUILD_LADSPA = true | |||||
BUILD_DSSI = true | |||||
endif | |||||
BUILD_LV2 = true | |||||
BUILD_VST2 = true | |||||
# -------------------------------------------------------------- | |||||
# Basic setup | |||||
TARGET_DIR = ../../bin | |||||
BUILD_C_FLAGS += -I. | |||||
BUILD_CXX_FLAGS += -I. -I../common -I../common/gen_dsp -I../../dpf/distrho -I../../dpf/dgl -Wno-unused-parameter | |||||
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 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) | |||||
# -------------------------------------------------------------- | |||||
# Set distrho code files | |||||
DISTRHO_PLUGIN_FILES = ../../dpf/distrho/DistrhoPluginMain.cpp | |||||
ifeq ($(HAVE_DGL),true) | |||||
DISTRHO_UI_FILES = ../../dpf/distrho/DistrhoUIMain.cpp ../../dpf/libdgl.a | |||||
endif | |||||
# -------------------------------------------------------------- | |||||
# Handle plugins without UI | |||||
ifneq ($(HAVE_DGL),true) | |||||
dssi_ui = | |||||
lv2_ui = | |||||
DISTRHO_UI_FILES = | |||||
DGL_LIBS = | |||||
OBJS_UI = | |||||
endif | |||||
# -------------------------------------------------------------- | |||||
# all needs to be first | |||||
all: | |||||
# -------------------------------------------------------------- | |||||
# Common | |||||
%.c.o: %.c | |||||
$(CC) $< $(BUILD_C_FLAGS) -MD -MP -c -o $@ | |||||
%.cpp.o: %.cpp | |||||
$(CXX) $< $(BUILD_CXX_FLAGS) -MD -MP -c -o $@ | |||||
clean: | |||||
rm -f *.d *.o | |||||
rm -rf $(TARGET_DIR)/$(NAME) $(TARGET_DIR)/$(NAME)-* $(TARGET_DIR)/$(NAME).lv2/ | |||||
# -------------------------------------------------------------- | |||||
# JACK | |||||
jack: $(jack) | |||||
$(jack): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES) | |||||
mkdir -p $(shell dirname $@) | |||||
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell pkg-config --cflags --libs jack) -DDISTRHO_PLUGIN_TARGET_JACK -o $@ | |||||
# -------------------------------------------------------------- | |||||
# LADSPA | |||||
ladspa: $(ladspa_dsp) | |||||
$(ladspa_dsp): $(OBJS_DSP) $(DISTRHO_PLUGIN_FILES) | |||||
mkdir -p $(shell dirname $@) | |||||
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_LADSPA -o $@ | |||||
# -------------------------------------------------------------- | |||||
# DSSI | |||||
dssi: $(dssi_dsp) $(dssi_ui) | |||||
dssi_dsp: $(dssi_dsp) | |||||
dssi_ui: $(dssi_ui) | |||||
$(dssi_dsp): $(OBJS_DSP) $(DISTRHO_PLUGIN_FILES) | |||||
mkdir -p $(shell dirname $@) | |||||
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_DSSI -o $@ | |||||
$(dssi_ui): $(OBJS_UI) $(DISTRHO_UI_FILES) | |||||
mkdir -p $(shell dirname $@) | |||||
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell pkg-config --cflags --libs liblo) -DDISTRHO_PLUGIN_TARGET_DSSI -o $@ | |||||
# -------------------------------------------------------------- | |||||
# LV2 | |||||
lv2_one: $(lv2) | |||||
lv2_dsp: $(lv2_dsp) | |||||
lv2_sep: $(lv2_dsp) $(lv2_ui) | |||||
$(lv2): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES) | |||||
mkdir -p $(shell dirname $@) | |||||
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_LV2 -o $@ | |||||
$(lv2_dsp): $(OBJS_DSP) $(DISTRHO_PLUGIN_FILES) | |||||
mkdir -p $(shell dirname $@) | |||||
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_LV2 -o $@ | |||||
$(lv2_ui): $(OBJS_UI) $(DISTRHO_UI_FILES) | |||||
mkdir -p $(shell dirname $@) | |||||
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_LV2 -o $@ | |||||
# -------------------------------------------------------------- | |||||
# VST | |||||
vst: $(vst) | |||||
$(vst): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES) | |||||
mkdir -p $(shell dirname $@) | |||||
$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_VST -o $@ | |||||
# -------------------------------------------------------------- | |||||
-include $(OBJS_DSP:%.o=%.d) | |||||
ifeq ($(HAVE_DGL),true) | |||||
-include $(OBJS_UI:%.o=%.d) | |||||
endif | |||||
# -------------------------------------------------------------- |
@@ -28,13 +28,27 @@ BUILD_CXX_FLAGS += -I../common -I../common/gen_dsp | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
# Enable all possible plugin types | # Enable all possible plugin types | ||||
ifeq ($(BUILD_JACK),true) | |||||
ifeq ($(HAVE_JACK),true) | ifeq ($(HAVE_JACK),true) | ||||
TARGETS += jack | TARGETS += jack | ||||
endif | endif | ||||
endif | |||||
<<<<<<< HEAD | |||||
TARGETS += ladspa | |||||
======= | |||||
ifeq ($(BUILD_LADSPA),true) | |||||
TARGETS += ladspa | TARGETS += ladspa | ||||
endif | |||||
ifeq ($(BUILD_LV2),true) | |||||
>>>>>>> 32c2796b78396662fcc5bfce3bd6a02e8958a44a | |||||
TARGETS += lv2_dsp | TARGETS += lv2_dsp | ||||
endif | |||||
ifeq ($(BUILD_VST2),true) | |||||
TARGETS += vst | TARGETS += vst | ||||
endif | |||||
all: $(TARGETS) | all: $(TARGETS) | ||||
@@ -28,13 +28,27 @@ BUILD_CXX_FLAGS += -I../common -I../common/gen_dsp | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
# Enable all possible plugin types | # Enable all possible plugin types | ||||
ifeq ($(BUILD_JACK),true) | |||||
ifeq ($(HAVE_JACK),true) | ifeq ($(HAVE_JACK),true) | ||||
TARGETS += jack | TARGETS += jack | ||||
endif | endif | ||||
endif | |||||
<<<<<<< HEAD | |||||
TARGETS += ladspa | |||||
======= | |||||
ifeq ($(BUILD_LADSPA),true) | |||||
TARGETS += ladspa | TARGETS += ladspa | ||||
endif | |||||
ifeq ($(BUILD_LV2),true) | |||||
>>>>>>> 32c2796b78396662fcc5bfce3bd6a02e8958a44a | |||||
TARGETS += lv2_dsp | TARGETS += lv2_dsp | ||||
endif | |||||
ifeq ($(BUILD_VST2),true) | |||||
TARGETS += vst | TARGETS += vst | ||||
endif | |||||
all: $(TARGETS) | all: $(TARGETS) | ||||
@@ -28,13 +28,27 @@ BUILD_CXX_FLAGS += -I../common -I../common/gen_dsp | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
# Enable all possible plugin types | # Enable all possible plugin types | ||||
ifeq ($(BUILD_JACK),true) | |||||
ifeq ($(HAVE_JACK),true) | ifeq ($(HAVE_JACK),true) | ||||
TARGETS += jack | TARGETS += jack | ||||
endif | endif | ||||
endif | |||||
<<<<<<< HEAD | |||||
TARGETS += ladspa | |||||
======= | |||||
ifeq ($(BUILD_LADSPA),true) | |||||
TARGETS += ladspa | TARGETS += ladspa | ||||
endif | |||||
ifeq ($(BUILD_LV2),true) | |||||
>>>>>>> 32c2796b78396662fcc5bfce3bd6a02e8958a44a | |||||
TARGETS += lv2_dsp | TARGETS += lv2_dsp | ||||
endif | |||||
ifeq ($(BUILD_VST2),true) | |||||
TARGETS += vst | TARGETS += vst | ||||
endif | |||||
all: $(TARGETS) | all: $(TARGETS) | ||||
@@ -28,13 +28,27 @@ BUILD_CXX_FLAGS += -I../common -I../common/gen_dsp | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
# Enable all possible plugin types | # Enable all possible plugin types | ||||
ifeq ($(BUILD_JACK),true) | |||||
ifeq ($(HAVE_JACK),true) | ifeq ($(HAVE_JACK),true) | ||||
TARGETS += jack | TARGETS += jack | ||||
endif | endif | ||||
endif | |||||
<<<<<<< HEAD | |||||
TARGETS += ladspa | |||||
======= | |||||
ifeq ($(BUILD_LADSPA),true) | |||||
TARGETS += ladspa | TARGETS += ladspa | ||||
endif | |||||
ifeq ($(BUILD_LV2),true) | |||||
>>>>>>> 32c2796b78396662fcc5bfce3bd6a02e8958a44a | |||||
TARGETS += lv2_dsp | TARGETS += lv2_dsp | ||||
endif | |||||
ifeq ($(BUILD_VST2),true) | |||||
TARGETS += vst | TARGETS += vst | ||||
endif | |||||
all: $(TARGETS) | all: $(TARGETS) | ||||