diff --git a/Makefile.mk b/Makefile.mk new file mode 100644 index 0000000..909b502 --- /dev/null +++ b/Makefile.mk @@ -0,0 +1,149 @@ +#!/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 & required libs + +ifeq ($(LINUX),true) +HAVE_DGL = $(shell pkg-config --exists gl x11 && echo true) +HAVE_JACK = $(shell pkg-config --exists jack && echo true) +endif + +ifeq ($(MACOS),true) +HAVE_DGL = true +endif + +ifeq ($(WIN32),true) +HAVE_DGL = true +endif + +ifneq ($(HAVE_DGL),true) +$(error OpenGL missing, cannot continue) +endif + +# -------------------------------------------------------------- +# Set libs stuff + +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 + +# -------------------------------------------------------------- +# 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/README.md b/README.md index c662919..27885ed 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # DISTRHO glBars This is an OpenGL bars visualization plugin (as seen in XMMS and XBMC/Kodi).
-It work as a JACK standalone and audio plugin (LV2 or VST).
+Adapted from the jack_glbars project by Nedko Arnaudov.
+It works as a JACK standalone and audio plugin (LV2 or VST).
## Screenshot (in jalv.gtk) ![glBars](https://raw.githubusercontent.com/DISTRHO/glBars/master/plugins/glBars/Screenshot.png "glBars")
diff --git a/plugins/Makefile.mk b/plugins/Makefile.mk new file mode 100644 index 0000000..12c3a68 --- /dev/null +++ b/plugins/Makefile.mk @@ -0,0 +1,95 @@ +#!/usr/bin/make -f +# Makefile for DISTRHO Plugins # +# ---------------------------- # +# Created by falkTX +# + +# NAME, OBJS_DSP and OBJS_UI have been defined before + +include ../../Makefile.mk + +# -------------------------------------------------------------- +# Set which plugin formats to build + +BUILD_JACK = true +BUILD_LV2 = true +BUILD_VST2 = true + +# -------------------------------------------------------------- +# Basic setup + +TARGET_DIR = ../../bin + +BUILD_C_FLAGS += -I. +BUILD_CXX_FLAGS += -I. -I../../dpf/distrho -I../../dpf/dgl + +BASE_FLAGS += -DHAVE_DGL + +ifeq ($(HAVE_JACK),true) +BASE_FLAGS += -DHAVE_JACK +endif + +# -------------------------------------------------------------- +# Set plugin binary file targets + +jack = $(TARGET_DIR)/$(NAME)$(APP_EXT) +lv2 = $(TARGET_DIR)/$(NAME).lv2/$(NAME)$(LIB_EXT) +vst = $(TARGET_DIR)/$(NAME)-vst$(LIB_EXT) + +# -------------------------------------------------------------- +# Set distrho code files + +DISTRHO_PLUGIN_FILES = ../../dpf/distrho/DistrhoPluginMain.cpp +DISTRHO_UI_FILES = ../../dpf/distrho/DistrhoUIMain.cpp ../../dpf/libdgl.a + +# -------------------------------------------------------------- +# 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) -lpthread -DDISTRHO_PLUGIN_TARGET_JACK -o $@ + +# -------------------------------------------------------------- +# LV2 + +lv2: $(lv2) + +$(lv2): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES) + mkdir -p $(shell dirname $@) + $(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) -lpthread $(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) -lpthread $(SHARED) -DDISTRHO_PLUGIN_TARGET_VST -o $@ + +# -------------------------------------------------------------- + +-include $(OBJS_DSP:%.o=%.d) +-include $(OBJS_UI:%.o=%.d) + +# -------------------------------------------------------------- diff --git a/plugins/glBars/Makefile b/plugins/glBars/Makefile index b5a5bfb..63b1fb4 100644 --- a/plugins/glBars/Makefile +++ b/plugins/glBars/Makefile @@ -31,11 +31,19 @@ LINK_FLAGS += -lpthread # -------------------------------------------------------------- # Enable all possible plugin types +ifeq ($(BUILD_JACK),true) ifeq ($(HAVE_JACK),true) TARGETS += jack endif +endif + +ifeq ($(BUILD_LV2),true) TARGETS += lv2 +endif + +ifeq ($(BUILD_VST2),true) TARGETS += vst +endif all: $(TARGETS)