From ffc1ffc68b7b5ab8e0eefb4b80ca3f87609a778b Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 14 Sep 2012 18:30:45 +0100 Subject: [PATCH] Add new files made in last commit --- c++/carla-bridge/Makefile.dbg | 420 ++++++++++++++++++ .../qtcreator/carla-bridge-lv2-gtk3.pro | 41 ++ c++/carla-includes/lv2_atom_queue.h | 190 ++++++++ 3 files changed, 651 insertions(+) create mode 100644 c++/carla-bridge/Makefile.dbg create mode 100644 c++/carla-bridge/qtcreator/carla-bridge-lv2-gtk3.pro create mode 100644 c++/carla-includes/lv2_atom_queue.h diff --git a/c++/carla-bridge/Makefile.dbg b/c++/carla-bridge/Makefile.dbg new file mode 100644 index 0000000..5447f84 --- /dev/null +++ b/c++/carla-bridge/Makefile.dbg @@ -0,0 +1,420 @@ +#!/usr/bin/make -f +# Makefile for carla-bridges # +# ---------------------------------------- # +# Created by falkTX +# + +CXX ?= g++ + +BASE_FLAGS = -O0 -g + +BUILD_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) +BUILD_FLAGS += -I. -I../carla-includes $(shell pkg-config --cflags liblo QtCore) +BUILD_FLAGS += -DBUILD_BRIDGE -DDEBUG +BUILD_FLAGS += -DVESTIGE_HEADER # Comment this line to not use vestige header + +32BIT_FLAGS = -m32 +64BIT_FLAGS = -m64 +LINK_FLAGS = $(shell pkg-config --libs liblo QtCore) $(LDFLAGS) + +# -------------------------------------------------------------- + +BUILD_PLUGIN_FLAGS = $(BUILD_FLAGS) -DBUILD_BRIDGE_PLUGIN -DCARLA_ENGINE_JACK -I../carla-backend -I../carla-jackbridge $(shell pkg-config --cflags jack QtGui) +LINK_PLUGIN_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs QtGui) + +POSIX_BUILD_FLAGS = $(BUILD_PLUGIN_FLAGS) +POSIX_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32 -L/usr/lib/i386-linux-gnu +POSIX_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu +POSIX_LINK_FLAGS = $(LINK_PLUGIN_FLAGS) $(shell pkg-config --libs jack) -ldl + +WIN_BUILD_FLAGS = $(BUILD_PLUGIN_FLAGS) +WIN_32BIT_FLAGS = $(32BIT_FLAGS) +WIN_64BIT_FLAGS = $(64BIT_FLAGS) +WIN_LINK_FLAGS = $(LINK_PLUGIN_FLAGS) -mwindows -L../carla-jackbridge + +# -------------------------------------------------------------- + +BUILD_UI_FLAGS = $(BUILD_FLAGS) -DBUILD_BRIDGE_UI +LINK_UI_FLAGS = $(LINK_FLAGS) -ldl + +BUILD_UI_LV2_GTK2_FLAGS = $(BUILD_UI_FLAGS) -DBRIDGE_LV2 -DBRIDGE_LV2_GTK2 $(shell pkg-config --cflags gtk+-2.0) +LINK_UI_LV2_GTK2_FLAGS = $(LINK_UI_FLAGS) $(shell pkg-config --libs gtk+-2.0) + +BUILD_UI_LV2_GTK3_FLAGS = $(BUILD_UI_FLAGS) -DBRIDGE_LV2 -DBRIDGE_LV2_GTK3 $(shell pkg-config --cflags gtk+-3.0) +LINK_UI_LV2_GTK3_FLAGS = $(LINK_UI_FLAGS) $(shell pkg-config --libs gtk+-3.0) + +BUILD_UI_LV2_QT4_FLAGS = $(BUILD_UI_FLAGS) -DBRIDGE_LV2 -DBRIDGE_LV2_QT4 $(shell pkg-config --cflags QtGui) +LINK_UI_LV2_QT4_FLAGS = $(LINK_UI_FLAGS) $(shell pkg-config --libs QtGui) + +BUILD_UI_LV2_X11_FLAGS = $(BUILD_UI_FLAGS) -DBRIDGE_LV2 -DBRIDGE_LV2_X11 $(shell pkg-config --cflags QtGui) +LINK_UI_LV2_X11_FLAGS = $(LINK_UI_FLAGS) $(shell pkg-config --libs QtGui) + +BUILD_UI_VST_HWND_FLAGS = $(BUILD_UI_FLAGS) -DBRIDGE_VST -DBRIDGE_VST_HWND $(shell pkg-config --cflags QtGui) +LINK_UI_VST_HWND_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs QtGui) -mwindows -static + +BUILD_UI_VST_X11_FLAGS = $(BUILD_UI_FLAGS) -DBRIDGE_VST -DBRIDGE_VST_X11 $(shell pkg-config --cflags QtGui) +LINK_UI_VST_X11_FLAGS = $(LINK_UI_FLAGS) $(shell pkg-config --libs QtGui) + +# -------------------------------------------------------------- + +all: ui + +ui: ui_lv2-gtk2 ui_lv2-gtk3 ui_lv2-qt4 ui_lv2-x11 ui_vst-x11 + +ifeq ($(shell pkg-config --exists gtk+-2.0 && echo true),true) +ui_lv2-gtk2: carla-bridge-lv2-gtk2 +else +ui_lv2-gtk2: +endif + +ifeq ($(shell pkg-config --exists gtk+-3.0 && echo true),true) +ui_lv2-gtk3: carla-bridge-lv2-gtk3 +else +ui_lv2-gtk3: +endif + +ui_lv2-qt4: carla-bridge-lv2-qt4 +ui_lv2-x11: carla-bridge-lv2-x11 +ui_vst-hwnd: carla-bridge-vst-hwnd.exe +ui_vst-x11: carla-bridge-vst-x11 + +# -------------------------------------------------------------- + +posix32: carla-bridge-posix32 +posix64: carla-bridge-posix64 +win32: carla-bridge-win32.exe +win64: carla-bridge-win64.exe + +# -------------------------------------------------------------- +# ui_lv2-gtk2 + +OBJS_UI_LV2_GTK2 = \ + carla_bridge_ui-lv2__lv2-gtk2.o carla_bridge_toolkit-gtk2__lv2-gtk2.o carla_bridge_osc__lv2-gtk2.o \ + ../carla-lilv/carla_lilv.a ../carla-rtmempool/carla_rtmempool.a + +carla-bridge-lv2-gtk2: $(OBJS_UI_LV2_GTK2) + $(CXX) $^ $(LINK_UI_LV2_GTK2_FLAGS) -o $@ + +carla_bridge_ui-lv2__lv2-gtk2.o: carla_bridge_ui-lv2.cpp + $(CXX) $< $(BUILD_UI_LV2_GTK2_FLAGS) -c -o $@ + +carla_bridge_toolkit-gtk2__lv2-gtk2.o: carla_bridge_toolkit-gtk2.cpp + $(CXX) $< $(BUILD_UI_LV2_GTK2_FLAGS) -c -o $@ + +carla_bridge_osc__lv2-gtk2.o: carla_bridge_osc.cpp + $(CXX) $< $(BUILD_UI_LV2_GTK2_FLAGS) -c -o $@ + +# -------------------------------------------------------------- +# ui_lv2-gtk3 + +OBJS_UI_LV2_GTK3 = \ + carla_bridge_ui-lv2__lv2-gtk3.o carla_bridge_toolkit-gtk3__lv2-gtk3.o carla_bridge_osc__lv2-gtk3.o \ + ../carla-lilv/carla_lilv.a ../carla-rtmempool/carla_rtmempool.a + +carla-bridge-lv2-gtk3: $(OBJS_UI_LV2_GTK3) + $(CXX) $^ $(LINK_UI_LV2_GTK3_FLAGS) -o $@ + +carla_bridge_ui-lv2__lv2-gtk3.o: carla_bridge_ui-lv2.cpp + $(CXX) $< $(BUILD_UI_LV2_GTK3_FLAGS) -c -o $@ + +carla_bridge_toolkit-gtk3__lv2-gtk3.o: carla_bridge_toolkit-gtk3.cpp + $(CXX) $< $(BUILD_UI_LV2_GTK3_FLAGS) -c -o $@ + +carla_bridge_osc__lv2-gtk3.o: carla_bridge_osc.cpp + $(CXX) $< $(BUILD_UI_LV2_GTK3_FLAGS) -c -o $@ + +# -------------------------------------------------------------- +# ui_lv2-qt4 + +OBJS_UI_LV2_QT4 = \ + carla_bridge_ui-lv2__lv2-qt4.o carla_bridge_toolkit-qt4__lv2-qt4.o carla_bridge_osc__lv2-qt4.o \ + ../carla-lilv/carla_lilv.a ../carla-rtmempool/carla_rtmempool.a + +carla-bridge-lv2-qt4: $(OBJS_UI_LV2_QT4) + $(CXX) $^ $(LINK_UI_LV2_QT4_FLAGS) -o $@ + +carla_bridge_ui-lv2__lv2-qt4.o: carla_bridge_ui-lv2.cpp + $(CXX) $< $(BUILD_UI_LV2_QT4_FLAGS) -c -o $@ + +carla_bridge_toolkit-qt4__lv2-qt4.o: carla_bridge_toolkit-qt4.cpp + $(CXX) $< $(BUILD_UI_LV2_QT4_FLAGS) -c -o $@ + +carla_bridge_osc__lv2-qt4.o: carla_bridge_osc.cpp + $(CXX) $< $(BUILD_UI_LV2_QT4_FLAGS) -c -o $@ + +# -------------------------------------------------------------- +# ui_lv2-x11 + +OBJS_UI_LV2_X11 = \ + carla_bridge_ui-lv2__lv2-x11.o carla_bridge_toolkit-qt4__lv2-x11.o carla_bridge_osc__lv2-x11.o \ + ../carla-lilv/carla_lilv.a ../carla-rtmempool/carla_rtmempool.a + +carla-bridge-lv2-x11: $(OBJS_UI_LV2_X11) + $(CXX) $^ $(LINK_UI_LV2_X11_FLAGS) -o $@ + +carla_bridge_ui-lv2__lv2-x11.o: carla_bridge_ui-lv2.cpp + $(CXX) $< $(BUILD_UI_LV2_X11_FLAGS) -c -o $@ + +carla_bridge_toolkit-qt4__lv2-x11.o: carla_bridge_toolkit-qt4.cpp + $(CXX) $< $(BUILD_UI_LV2_X11_FLAGS) -c -o $@ + +carla_bridge_osc__lv2-x11.o: carla_bridge_osc.cpp + $(CXX) $< $(BUILD_UI_LV2_X11_FLAGS) -c -o $@ + +# -------------------------------------------------------------- +# ui_vst-hwnd + +OBJS_UI_VST_HWND = \ + carla_bridge_ui-vst__vst-hwnd.o carla_bridge_toolkit-qt4__vst-hwnd.o carla_bridge_osc__vst-hwnd.o + +carla-bridge-vst-hwnd.exe: $(OBJS_UI_VST_HWND) + $(CXX) $^ $(LINK_UI_VST_HWND_FLAGS) -o $@ + +carla_bridge_ui-vst__vst-hwnd.o: carla_bridge_ui-vst.cpp + $(CXX) $< $(BUILD_UI_VST_HWND_FLAGS) -c -o $@ + +carla_bridge_toolkit-qt4__vst-hwnd.o: carla_bridge_toolkit-qt4.cpp + $(CXX) $< $(BUILD_UI_VST_HWND_FLAGS) -c -o $@ + +carla_bridge_osc__vst-hwnd.o: carla_bridge_osc.cpp + $(CXX) $< $(BUILD_UI_VST_HWND_FLAGS) -c -o $@ + +# -------------------------------------------------------------- +# ui_vst-x11 + +OBJS_UI_VST_X11 = \ + carla_bridge_ui-vst__vst-x11.o carla_bridge_toolkit-qt4__vst-x11.o carla_bridge_osc__vst-x11.o + +carla-bridge-vst-x11: $(OBJS_UI_VST_X11) + $(CXX) $^ $(LINK_UI_VST_X11_FLAGS) -o $@ + +carla_bridge_ui-vst__vst-x11.o: carla_bridge_ui-vst.cpp + $(CXX) $< $(BUILD_UI_VST_X11_FLAGS) -c -o $@ + +carla_bridge_toolkit-qt4__vst-x11.o: carla_bridge_toolkit-qt4.cpp + $(CXX) $< $(BUILD_UI_VST_X11_FLAGS) -c -o $@ + +carla_bridge_osc__vst-x11.o: carla_bridge_osc.cpp + $(CXX) $< $(BUILD_UI_VST_X11_FLAGS) -c -o $@ + +# -------------------------------------------------------------- +# posix32 + +OBJS_POSIX32 = \ + carla_bridge_plugin__posix32.o carla_bridge_osc__posix32.o carla_jackbridge__posix32.o \ + carla_engine__posix32.o carla_engine_jack__posix32.o carla_shared__posix32.o carla_threads__posix32.o \ + ladspa__posix32.o dssi__posix32.o lv2__posix32.o vst__posix32.o \ + ../carla-lilv/carla_lilv_posix32.a ../carla-rtmempool/carla_rtmempool_posix32.a + +carla-bridge-posix32: $(OBJS_POSIX32) + $(CXX) $^ $(POSIX_LINK_FLAGS) $(POSIX_32BIT_FLAGS) -o $@ + +carla_bridge_plugin__posix32.o: carla_bridge_plugin.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ + +carla_bridge_osc__posix32.o: carla_bridge_osc.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ + +carla_jackbridge__posix32.o: ../carla-jackbridge/carla_jackbridge.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ + +carla_engine__posix32.o: ../carla-backend/carla_engine.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ + +carla_engine_jack__posix32.o: ../carla-backend/carla_engine_jack.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ + +carla_shared__posix32.o: ../carla-backend/carla_shared.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ + +carla_threads__posix32.o: ../carla-backend/carla_threads.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ + +ladspa__posix32.o: ../carla-backend/ladspa.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ + +dssi__posix32.o: ../carla-backend/dssi.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ + +lv2__posix32.o: ../carla-backend/lv2.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ + +vst__posix32.o: ../carla-backend/vst.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ + +# -------------------------------------------------------------- +# posix64 + +OBJS_POSIX64 = \ + carla_bridge_plugin__posix64.o carla_bridge_osc__posix64.o carla_jackbridge__posix64.o \ + carla_engine__posix64.o carla_engine_jack__posix64.o carla_shared__posix64.o carla_threads__posix64.o \ + ladspa__posix64.o dssi__posix64.o lv2__posix64.o vst__posix64.o \ + ../carla-lilv/carla_lilv_posix64.a ../carla-rtmempool/carla_rtmempool_posix64.a + +carla-bridge-posix64: $(OBJS_POSIX64) + $(CXX) $^ $(POSIX_LINK_FLAGS) $(POSIX_64BIT_FLAGS) -o $@ + +carla_bridge_plugin__posix64.o: carla_bridge_plugin.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ + +carla_bridge_osc__posix64.o: carla_bridge_osc.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ + +carla_jackbridge__posix64.o: ../carla-jackbridge/carla_jackbridge.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ + +carla_engine__posix64.o: ../carla-backend/carla_engine.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ + +carla_engine_jack__posix64.o: ../carla-backend/carla_engine_jack.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ + +carla_shared__posix64.o: ../carla-backend/carla_shared.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ + +carla_threads__posix64.o: ../carla-backend/carla_threads.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ + +ladspa__posix64.o: ../carla-backend/ladspa.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ + +dssi__posix64.o: ../carla-backend/dssi.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ + +lv2__posix64.o: ../carla-backend/lv2.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ + +vst__posix64.o: ../carla-backend/vst.cpp + $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ + +# -------------------------------------------------------------- +# win32 + +OBJS_WIN32 = \ + carla_bridge_plugin__win32.o carla_bridge_osc__win32.o \ + carla_engine__win32.o carla_engine_jack__win32.o carla_shared__win32.o carla_threads__win32.o \ + ladspa__win32.o dssi__win32.o lv2__win32.o vst__win32.o \ + ../carla-lilv/carla_lilv_win32.a ../carla-rtmempool/carla_rtmempool_win32.a + +carla-bridge-win32.exe: $(OBJS_WIN32) ../carla-jackbridge/libcarla-jackbridge-win32.dll + $(CXX) $(OBJS_WIN32) $(WIN_LINK_FLAGS) $(WIN_32BIT_FLAGS) -lcarla-jackbridge-win32 -o $@ + +carla_bridge_plugin__win32.o: carla_bridge_plugin.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ + +carla_bridge_osc__win32.o: carla_bridge_osc.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ + +carla_engine__win32.o: ../carla-backend/carla_engine.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ + +carla_engine_jack__win32.o: ../carla-backend/carla_engine_jack.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ + +carla_shared__win32.o: ../carla-backend/carla_shared.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ + +carla_threads__win32.o: ../carla-backend/carla_threads.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ + +ladspa__win32.o: ../carla-backend/ladspa.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ + +dssi__win32.o: ../carla-backend/dssi.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ + +lv2__win32.o: ../carla-backend/lv2.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ + +vst__win32.o: ../carla-backend/vst.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ + +# -------------------------------------------------------------- +# win64 + +OBJS_WIN64 = \ + carla_bridge_plugin__win64.o carla_bridge_osc__win64.o \ + carla_engine__win64.o carla_engine_jack__win64.o carla_shared__win64.o carla_threads__win64.o \ + ladspa__win64.o dssi__win64.o lv2__win64.o vst__win64.o \ + ../carla-lilv/carla_lilv_win64.a ../carla-rtmempool/carla_rtmempool_win64.a + +carla-bridge-win64.exe: $(OBJS_WIN64) ../carla-jackbridge/libcarla-jackbridge-win64.dll + $(CXX) $(OBJS_WIN64) $(WIN_LINK_FLAGS) $(WIN_64BIT_FLAGS) -lcarla-jackbridge-win64 -o $@ + +carla_bridge_plugin__win64.o: carla_bridge_plugin.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ + +carla_bridge_osc__win64.o: carla_bridge_osc.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ + +carla_engine__win64.o: ../carla-backend/carla_engine.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ + +carla_engine_jack__win64.o: ../carla-backend/carla_engine_jack.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ + +carla_shared__win64.o: ../carla-backend/carla_shared.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ + +carla_threads__win64.o: ../carla-backend/carla_threads.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ + +ladspa__win64.o: ../carla-backend/ladspa.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ + +dssi__win64.o: ../carla-backend/dssi.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ + +lv2__win64.o: ../carla-backend/lv2.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ + +vst__win64.o: ../carla-backend/vst.cpp + $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ + +# -------------------------------------------------------------- + +../carla-lilv/carla_lilv.a: + $(MAKE) -C ../carla-lilv + +../carla-lilv/carla_lilv_posix32.a: + $(MAKE) -C ../carla-lilv posix32 + +../carla-lilv/carla_lilv_posix64.a: + $(MAKE) -C ../carla-lilv posix64 + +../carla-lilv/carla_lilv_win32.a: + $(MAKE) -C ../carla-lilv win32 + +../carla-lilv/carla_lilv_win64.a: + $(MAKE) -C ../carla-lilv win64 + +../carla-rtmempool/carla_rtmempool.a: + $(MAKE) -C ../carla-rtmempool + +../carla-rtmempool/carla_rtmempool_posix32.a: + $(MAKE) -C ../carla-rtmempool posix32 + +../carla-rtmempool/carla_rtmempool_posix64.a: + $(MAKE) -C ../carla-rtmempool posix64 + +../carla-rtmempool/carla_rtmempool_win32.a: + $(MAKE) -C ../carla-rtmempool win32 + +../carla-rtmempool/carla_rtmempool_win64.a: + $(MAKE) -C ../carla-rtmempool win64 + +../carla-jackbridge/libcarla-jackbridge-win32.dll: + $(MAKE) -C ../carla-jackbridge win32 + +../carla-jackbridge/libcarla-jackbridge-win64.dll: + $(MAKE) -C ../carla-jackbridge win64 + +# -------------------------------------------------------------- + +doc: carla_bridge.doxygen + doxygen $< + +clean: + rm -f *.o *.dll *.so *.exe + rm -f carla-bridge-lv2-gtk2 carla-bridge-lv2-gtk3 carla-bridge-lv2-qt4 carla-bridge-lv2-x11 carla-bridge-vst-x11 + rm -f carla-bridge-posix32 carla-bridge-posix64 diff --git a/c++/carla-bridge/qtcreator/carla-bridge-lv2-gtk3.pro b/c++/carla-bridge/qtcreator/carla-bridge-lv2-gtk3.pro new file mode 100644 index 0000000..0b579ac --- /dev/null +++ b/c++/carla-bridge/qtcreator/carla-bridge-lv2-gtk3.pro @@ -0,0 +1,41 @@ +# QtCreator project file + +QT = core + +CONFIG = debug link_pkgconfig qt warn_on +PKGCONFIG = liblo gtk+-3.0 + +TARGET = carla-bridge-lv2-gtk3 +TEMPLATE = app +VERSION = 0.5.0 + +SOURCES = \ + ../carla_bridge_osc.cpp \ + ../carla_bridge_ui-lv2.cpp \ + ../carla_bridge_toolkit-gtk3.cpp + +HEADERS = \ + ../carla_bridge.h \ + ../carla_bridge_client.h \ + ../carla_bridge_osc.h \ + ../carla_bridge_toolkit.h \ + ../../carla-includes/carla_includes.h \ + ../../carla-includes/carla_lib_includes.h \ + ../../carla-includes/carla_osc_includes.h \ + ../../carla-includes/carla_lv2.h \ + ../../carla-includes/carla_midi.h \ + ../../carla-includes/lv2_rdf.h + +INCLUDEPATH = .. \ + ../../carla-includes + +LIBS = \ + ../../carla-lilv/carla_lilv.a \ + ../../carla-rtmempool/carla_rtmempool.a + +DEFINES = QTCREATOR_TEST +DEFINES += BUILD_BRIDGE BUILD_BRIDGE_UI BRIDGE_LV2 BRIDGE_LV2_GTK3 +DEFINES += DEBUG + + +QMAKE_CXXFLAGS *= -std=c++0x diff --git a/c++/carla-includes/lv2_atom_queue.h b/c++/carla-includes/lv2_atom_queue.h new file mode 100644 index 0000000..7a6379f --- /dev/null +++ b/c++/carla-includes/lv2_atom_queue.h @@ -0,0 +1,190 @@ +/* + * Simple Queue, specially developed for Atom types + * Copyright (C) 2012 Filipe Coelho + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * For a full copy of the GNU General Public License see the COPYING file + */ + +#ifndef LV2_ATOM_QUEUE_H +#define LV2_ATOM_QUEUE_H + +#include "lv2/atom.h" + +#include + +class Lv2AtomQueue +{ +public: + Lv2AtomQueue() + { + index = indexPool = 0; + empty = true; + full = false; + + memset(dataPool, 0, sizeof(unsigned char)*MAX_POOL_SIZE); + } + + void copyDataFrom(Lv2AtomQueue* const queue) + { + // lock mutexes + queue->mutex.lock(); + mutex.lock(); + + // copy data from queue + memcpy(data, queue->data, sizeof(datatype)*MAX_SIZE); + memcpy(dataPool, queue->dataPool, sizeof(unsigned char)*MAX_POOL_SIZE); + index = queue->index; + indexPool = queue->indexPool; + empty = queue->empty; + full = queue->full; + + // unlock our mutex, no longer needed + mutex.unlock(); + + // reset queque + memset(queue->data, 0, sizeof(datatype)*MAX_SIZE); + memset(queue->dataPool, 0, sizeof(unsigned char)*MAX_POOL_SIZE); + queue->index = queue->indexPool = 0; + queue->empty = true; + queue->full = false; + + // unlock queque mutex + queue->mutex.unlock(); + } + + bool isEmpty() + { + return empty; + } + + bool isFull() + { + return full; + } + + void lock() + { + mutex.lock(); + } + + void unlock() + { + mutex.unlock(); + } + + void put(const uint32_t portIndex, const LV2_Atom* const atom, const bool lock = true) + { + Q_ASSERT(atom && atom->size > 0); + Q_ASSERT(indexPool + atom->size < MAX_POOL_SIZE); // overflow + + if (full || atom->size == 0 || indexPool + atom->size >= MAX_POOL_SIZE) + return; + + if (lock) + mutex.lock(); + + for (unsigned short i=0; i < MAX_SIZE; i++) + { + if (data[i].size == 0) + { + data[i].portIndex = portIndex; + data[i].size = atom->size; + data[i].type = atom->type; + data[i].poolOffset = indexPool; + memcpy(dataPool + indexPool, (const unsigned char*)LV2_ATOM_BODY_CONST(atom), atom->size); + empty = false; + full = (i == MAX_SIZE-1); + indexPool += atom->size; + break; + } + } + + if (lock) + mutex.unlock(); + } + + bool get(uint32_t* const portIndex, const LV2_Atom** const atom, const bool lock = true) + { + Q_ASSERT(portIndex && atom); + + if (empty || ! (portIndex && atom)) + return false; + + if (lock) + mutex.lock(); + + full = false; + + if (data[index].size == 0) + { + index = indexPool = 0; + empty = true; + + if (lock) + mutex.lock(); + + return false; + } + + retAtom.atom.size = data[index].size; + retAtom.atom.type = data[index].type; + memcpy(retAtom.data, dataPool + data[index].poolOffset, data[index].size); + + *portIndex = data[index].portIndex; + *atom = (LV2_Atom*)&retAtom; + + data[index].portIndex = 0; + data[index].size = 0; + data[index].type = 0; + data[index].poolOffset = 0; + index++; + empty = false; + + if (lock) + mutex.unlock(); + + return true; + } + +private: + struct datatype { + size_t size; + uint32_t type; + uint32_t portIndex; + uint32_t poolOffset; + + datatype() + : size(0), + type(0), + portIndex(0), + poolOffset(0) {} + }; + + static const unsigned short MAX_SIZE = 128; + static const unsigned short MAX_POOL_SIZE = 8192; + + datatype data[MAX_SIZE]; + unsigned char dataPool[MAX_POOL_SIZE]; + + struct { + LV2_Atom atom; + unsigned char data[MAX_POOL_SIZE]; + } retAtom; + + unsigned short index, indexPool; + bool empty, full; + + QMutex mutex; +}; + +#endif // LV2_ATOM_QUEUE_H