diff --git a/c++/carla-bridge/Makefile b/c++/carla-bridge/Makefile index 15cc91d..5dc18e9 100644 --- a/c++/carla-bridge/Makefile +++ b/c++/carla-bridge/Makefile @@ -28,7 +28,7 @@ endif # -------------------------------------------------------------- # Plugin bridges -BUILD_PLUGIN_FLAGS = $(BUILD_CXX_FLAGS) -DBUILD_BRIDGE_PLUGIN +BUILD_PLUGIN_FLAGS = $(BUILD_CXX_FLAGS) -DBUILD_BRIDGE_PLUGIN -DBRIDGE_PLUGIN BUILD_PLUGIN_FLAGS += -DCARLA_ENGINE_JACK -I../carla-backend -I../carla-engine -I../carla-jackbridge -I../carla-plugin BUILD_PLUGIN_FLAGS += $(shell pkg-config --cflags jack) $(QT_UI_FLAGS) @@ -123,21 +123,24 @@ win64: carla-bridge-win64.exe # -------------------------------------------------------------- # UI common -carla_bridge_osc__lv2.o: carla_bridge_osc.cpp +%__lv2.o: %.cpp $(CXX) $< $(BUILD_UI_LV2_FLAGS) -c -o $@ -carla_bridge_osc__vst.o: carla_bridge_osc.cpp +%__vst.o: %.cpp $(CXX) $< $(BUILD_UI_VST_FLAGS) -c -o $@ +OBJS_UI_LV2_LIBS = \ + ../carla-lilv/carla_lilv.a \ + ../carla-rtmempool/carla_rtmempool.a + # -------------------------------------------------------------- # ui_lv2-gtk2 OBJS_UI_LV2_GTK2 = carla_bridge_ui-lv2__lv2-gtk2.o \ - carla_bridge_client__lv2-gtk2.o carla_bridge_osc__lv2.o \ - carla_bridge_toolkit__lv2-gtk2.o carla_bridge_toolkit-gtk__lv2-gtk2.o \ - ../carla-lilv/carla_lilv.a ../carla-rtmempool/carla_rtmempool.a + carla_bridge_client__lv2.o carla_bridge_osc__lv2.o \ + carla_bridge_toolkit__lv2.o carla_bridge_toolkit-gtk__lv2-gtk2.o -carla-bridge-lv2-gtk2: $(OBJS_UI_LV2_GTK2) +carla-bridge-lv2-gtk2: $(OBJS_UI_LV2_GTK2) $(OBJS_UI_LV2_LIBS) $(CXX) $^ $(LINK_UI_LV2_GTK2_FLAGS) -o $@ && $(STRIP) $@ %__lv2-gtk2.o: %.cpp @@ -147,11 +150,10 @@ carla-bridge-lv2-gtk2: $(OBJS_UI_LV2_GTK2) # ui_lv2-gtk3 OBJS_UI_LV2_GTK3 = carla_bridge_ui-lv2__lv2-gtk3.o \ - carla_bridge_client__lv2-gtk3.o carla_bridge_osc__lv2.o \ - carla_bridge_toolkit__lv2-gtk3.o carla_bridge_toolkit-gtk__lv2-gtk3.o \ - ../carla-lilv/carla_lilv.a ../carla-rtmempool/carla_rtmempool.a + carla_bridge_client__lv2.o carla_bridge_osc__lv2.o \ + carla_bridge_toolkit__lv2.o carla_bridge_toolkit-gtk__lv2-gtk3.o -carla-bridge-lv2-gtk3: $(OBJS_UI_LV2_GTK3) +carla-bridge-lv2-gtk3: $(OBJS_UI_LV2_GTK3) $(OBJS_UI_LV2_LIBS) $(CXX) $^ $(LINK_UI_LV2_GTK3_FLAGS) -o $@ && $(STRIP) $@ %__lv2-gtk3.o: %.cpp @@ -161,11 +163,10 @@ carla-bridge-lv2-gtk3: $(OBJS_UI_LV2_GTK3) # ui_lv2-qt4 OBJS_UI_LV2_QT4 = carla_bridge_ui-lv2__lv2-qt4.o \ - carla_bridge_client__lv2-qt4.o carla_bridge_osc__lv2.o \ - carla_bridge_toolkit__lv2-qt4.o carla_bridge_toolkit-qt__lv2-qt4.o \ - ../carla-lilv/carla_lilv.a ../carla-rtmempool/carla_rtmempool.a + carla_bridge_client__lv2.o carla_bridge_osc__lv2.o \ + carla_bridge_toolkit__lv2.o carla_bridge_toolkit-qt__lv2-qt4.o -carla-bridge-lv2-qt4: $(OBJS_UI_LV2_QT4) +carla-bridge-lv2-qt4: $(OBJS_UI_LV2_QT4) $(OBJS_UI_LV2_LIBS) $(CXX) $^ $(LINK_UI_LV2_QT4_FLAGS) -o $@ && $(STRIP) $@ %__lv2-qt4.o: %.cpp @@ -175,11 +176,10 @@ carla-bridge-lv2-qt4: $(OBJS_UI_LV2_QT4) # ui_lv2-qt5 OBJS_UI_LV2_QT5 = carla_bridge_ui-lv2__lv2-qt5.o \ - carla_bridge_client__lv2-qt5.o carla_bridge_osc__lv2.o \ - carla_bridge_toolkit__lv2-qt5.o carla_bridge_toolkit-qt__lv2-qt5.o \ - ../carla-lilv/carla_lilv.a ../carla-rtmempool/carla_rtmempool.a + carla_bridge_client__lv2.o carla_bridge_osc__lv2.o \ + carla_bridge_toolkit__lv2.o carla_bridge_toolkit-qt__lv2-qt5.o -carla-bridge-lv2-qt5: $(OBJS_UI_LV2_QT5) +carla-bridge-lv2-qt5: $(OBJS_UI_LV2_QT5) $(OBJS_UI_LV2_LIBS) $(CXX) $^ $(LINK_UI_LV2_QT5_FLAGS) -o $@ && $(STRIP) $@ %__lv2-qt5.o: %.cpp @@ -189,11 +189,10 @@ carla-bridge-lv2-qt5: $(OBJS_UI_LV2_QT5) # ui_lv2-x11 OBJS_UI_LV2_X11 = carla_bridge_ui-lv2__lv2-x11.o \ - carla_bridge_client__lv2-x11.o carla_bridge_osc__lv2.o \ - carla_bridge_toolkit__lv2-x11.o carla_bridge_toolkit-qt__lv2-x11.o \ - ../carla-lilv/carla_lilv.a ../carla-rtmempool/carla_rtmempool.a + carla_bridge_client__lv2.o carla_bridge_osc__lv2.o \ + carla_bridge_toolkit__lv2.o carla_bridge_toolkit-qt__lv2-x11.o -carla-bridge-lv2-x11: $(OBJS_UI_LV2_X11) +carla-bridge-lv2-x11: $(OBJS_UI_LV2_X11) $(OBJS_UI_LV2_LIBS) $(CXX) $^ $(LINK_UI_LV2_X11_FLAGS) -o $@ && $(STRIP) $@ %__lv2-x11.o: %.cpp @@ -203,8 +202,8 @@ carla-bridge-lv2-x11: $(OBJS_UI_LV2_X11) # ui_vst-hwnd OBJS_UI_VST_HWND = carla_bridge_ui-vst__vst-hwnd.o \ - carla_bridge_client__vst-hwnd.o carla_bridge_osc__vst.o \ - carla_bridge_toolkit__vst-hwnd.o carla_bridge_toolkit-qt__vst-hwnd.o + carla_bridge_client__vst.o carla_bridge_osc__vst.o \ + carla_bridge_toolkit__vst.o carla_bridge_toolkit-qt__vst-hwnd.o carla-bridge-vst-hwnd.exe: $(OBJS_UI_VST_HWND) $(CXX) $^ $(LINK_UI_VST_HWND_FLAGS) -o $@ && $(STRIP) $@ @@ -216,8 +215,8 @@ carla-bridge-vst-hwnd.exe: $(OBJS_UI_VST_HWND) # ui_vst-x11 OBJS_UI_VST_X11 = carla_bridge_ui-vst__vst-x11.o \ - carla_bridge_client__vst-x11.o carla_bridge_osc__vst.o \ - carla_bridge_toolkit__vst-x11.o carla_bridge_toolkit-qt__vst-x11.o + carla_bridge_client__vst.o carla_bridge_osc__vst.o \ + carla_bridge_toolkit__vst.o carla_bridge_toolkit-qt__vst-x11.o carla-bridge-vst-x11: $(OBJS_UI_VST_X11) $(CXX) $^ $(LINK_UI_VST_X11_FLAGS) -o $@ && $(STRIP) $@ @@ -228,193 +227,137 @@ carla-bridge-vst-x11: $(OBJS_UI_VST_X11) # -------------------------------------------------------------- # posix32 -OBJS_POSIX32 = \ - carla_bridge_plugin__posix32.o carla_bridge_osc__posix32.o \ - carla_engine__posix32.o carla_engine_osc__posix32.o carla_engine_thread__posix32.o carla_engine_jack__posix32.o \ - carla_plugin__posix32.o carla_plugin_thread__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 +OBJS_POSIX32 = carla_bridge_plugin__posix32.o \ + carla_bridge_client__posix32.o carla_bridge_osc__posix32.o \ + carla_bridge_toolkit__posix32.o + +# carla-engine +OBJS_POSIX32 += \ + ../carla-engine/carla_engine__posix32.o \ + ../carla-engine/carla_engine_osc__posix32.o \ + ../carla-engine/carla_engine_thread__posix32.o \ + ../carla-engine/jack__posix32.o + +# carla-plugin +OBJS_POSIX32 += \ + ../carla-plugin/carla_plugin__posix32.o \ + ../carla-plugin/carla_plugin_thread__posix32.o \ + ../carla-plugin/ladspa__posix32.o \ + ../carla-plugin/dssi__posix32.o \ + ../carla-plugin/lv2__posix32.o \ + ../carla-plugin/vst__posix32.o + +# libs +OBJS_POSIX32 += \ + ../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 $@ && $(STRIP) $@ -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_engine__posix32.o: ../carla-engine/carla_engine.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ - -carla_engine_osc__posix32.o: ../carla-engine/carla_engine_osc.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ - -carla_engine_thread__posix32.o: ../carla-engine/carla_engine_thread.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ - -carla_engine_jack__posix32.o: ../carla-engine/jack.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ - -carla_plugin__posix32.o: ../carla-plugin/carla_plugin.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ - -carla_plugin_thread__posix32.o: ../carla-plugin/carla_plugin_thread.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ - -ladspa__posix32.o: ../carla-plugin/ladspa.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ - -dssi__posix32.o: ../carla-plugin/dssi.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ - -lv2__posix32.o: ../carla-plugin/lv2.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ - -vst__posix32.o: ../carla-plugin/vst.cpp +%__posix32.o: %.cpp $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ # -------------------------------------------------------------- # posix64 -OBJS_POSIX64 = \ - carla_bridge_plugin__posix64.o carla_bridge_osc__posix64.o \ - carla_engine__posix64.o carla_engine_osc__posix64.o carla_engine_thread__posix64.o carla_engine_jack__posix64.o \ - carla_plugin__posix64.o carla_plugin_thread__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 +OBJS_POSIX64 = carla_bridge_plugin__posix64.o \ + carla_bridge_client__posix64.o carla_bridge_osc__posix64.o \ + carla_bridge_toolkit__posix64.o + +# carla-engine +OBJS_POSIX64 += \ + ../carla-engine/carla_engine__posix64.o \ + ../carla-engine/carla_engine_osc__posix64.o \ + ../carla-engine/carla_engine_thread__posix64.o \ + ../carla-engine/jack__posix64.o + +# carla-plugin +OBJS_POSIX64 += \ + ../carla-plugin/carla_plugin__posix64.o \ + ../carla-plugin/carla_plugin_thread__posix64.o \ + ../carla-plugin/ladspa__posix64.o \ + ../carla-plugin/dssi__posix64.o \ + ../carla-plugin/lv2__posix64.o \ + ../carla-plugin/vst__posix64.o + +# libs +OBJS_POSIX64 += \ + ../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 $@ && $(STRIP) $@ -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_engine__posix64.o: ../carla-engine/carla_engine.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ - -carla_engine_osc__posix64.o: ../carla-engine/carla_engine_osc.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ - -carla_engine_thread__posix64.o: ../carla-engine/carla_engine_thread.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ - -carla_engine_jack__posix64.o: ../carla-engine/jack.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ - -carla_plugin__posix64.o: ../carla-plugin/carla_plugin.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ - -carla_plugin_thread__posix64.o: ../carla-plugin/carla_plugin_thread.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ - -ladspa__posix64.o: ../carla-plugin/ladspa.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ - -dssi__posix64.o: ../carla-plugin/dssi.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ - -lv2__posix64.o: ../carla-plugin/lv2.cpp - $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ - -vst__posix64.o: ../carla-plugin/vst.cpp +%__posix64.o: %.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_osc__win32.o carla_engine_thread__win32.o carla_engine_jack__win32.o \ - carla_plugin__win32.o carla_plugin_thread__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 +OBJS_WIN32 = carla_bridge_plugin__win32.o \ + carla_bridge_client__win32.o carla_bridge_osc__win32.o \ + carla_bridge_toolkit__win32.o + +# carla-engine +OBJS_WIN32 += \ + ../carla-engine/carla_engine__win32.o \ + ../carla-engine/carla_engine_osc__win32.o \ + ../carla-engine/carla_engine_thread__win32.o \ + ../carla-engine/jack__win32.o + +# carla-plugin +OBJS_WIN32 += \ + ../carla-plugin/carla_plugin__win32.o \ + ../carla-plugin/carla_plugin_thread__win32.o \ + ../carla-plugin/ladspa__win32.o \ + ../carla-plugin/dssi__win32.o \ + ../carla-plugin/lv2__win32.o \ + ../carla-plugin/vst__win32.o + +# libs +OBJS_WIN32 += \ + ../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_32BIT_FLAGS) $(WIN_LINK_FLAGS) -lcarla-jackbridge-win32 -o $@ && $(STRIP) $@ -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-engine/carla_engine.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ - -carla_engine_osc__win32.o: ../carla-engine/carla_engine_osc.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ - -carla_engine_thread__win32.o: ../carla-engine/carla_engine_thread.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ - -carla_engine_jack__win32.o: ../carla-engine/jack.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ - -carla_plugin__win32.o: ../carla-plugin/carla_plugin.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ - -carla_plugin_thread__win32.o: ../carla-plugin/carla_plugin_thread.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ - -ladspa__win32.o: ../carla-plugin/ladspa.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ - -dssi__win32.o: ../carla-plugin/dssi.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ - -lv2__win32.o: ../carla-plugin/lv2.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ - -vst__win32.o: ../carla-plugin/vst.cpp +%__win32.o: %.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_osc__win64.o carla_engine_thread__win64.o carla_engine_jack__win64.o \ - carla_plugin__win64.o carla_plugin_thread__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 +OBJS_WIN64 = carla_bridge_plugin__win64.o \ + carla_bridge_client__win64.o carla_bridge_osc__win64.o \ + carla_bridge_toolkit__win64.o + +# carla-engine +OBJS_WIN64 += \ + ../carla-engine/carla_engine__win64.o \ + ../carla-engine/carla_engine_osc__win64.o \ + ../carla-engine/carla_engine_thread__win64.o \ + ../carla-engine/jack__win64.o + +# carla-plugin +OBJS_WIN64 += \ + ../carla-plugin/carla_plugin__win64.o \ + ../carla-plugin/carla_plugin_thread__win64.o \ + ../carla-plugin/ladspa__win64.o \ + ../carla-plugin/dssi__win64.o \ + ../carla-plugin/lv2__win64.o \ + ../carla-plugin/vst__win64.o + +# libs +OBJS_WIN64 += \ + ../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_64BIT_FLAGS) $(WIN_LINK_FLAGS) -lcarla-jackbridge-win64 -o $@ && $(STRIP) $@ -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-engine/carla_engine.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ - -carla_engine_osc__win64.o: ../carla-engine/carla_engine_osc.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ - -carla_engine_thread__win64.o: ../carla-engine/carla_engine_thread.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ - -carla_engine_jack__win64.o: ../carla-engine/jack.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ - -carla_plugin__win64.o: ../carla-plugin/carla_plugin.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ - -carla_plugin_thread__win64.o: ../carla-plugin/carla_plugin_thread.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ - -ladspa__win64.o: ../carla-plugin/ladspa.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ - -dssi__win64.o: ../carla-plugin/dssi.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ - -lv2__win64.o: ../carla-plugin/lv2.cpp - $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ - -vst__win64.o: ../carla-plugin/vst.cpp +%__win64.o: %.cpp $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ # -------------------------------------------------------------- @@ -464,3 +407,4 @@ clean: rm -f *.o *.dll *.so *.exe rm -f carla-bridge-lv2-gtk2 carla-bridge-lv2-gtk3 carla-bridge-lv2-qt4 carla-bridge-lv2-qt5 carla-bridge-lv2-x11 carla-bridge-vst-x11 rm -f carla-bridge-posix32 carla-bridge-posix64 + rm -f $(OBJS_POSIX32) $(OBJS_POSIX64) $(OBJS_WIN32) $(OBJS_WIN64) diff --git a/c++/carla-bridge/carla_bridge_client.cpp b/c++/carla-bridge/carla_bridge_client.cpp index 08e1c50..524fd0b 100644 --- a/c++/carla-bridge/carla_bridge_client.cpp +++ b/c++/carla-bridge/carla_bridge_client.cpp @@ -142,13 +142,14 @@ void CarlaBridgeClient::sendOscUpdate() } #ifdef BUILD_BRIDGE_PLUGIN -void CarlaBridgeClient::registerOscEngine(CarlaBackend::CarlaEngine* const engine) +void CarlaBridgeClient::sendOscBridgeUpdate() { - qDebug("CarlaBridgeClient::registerOscEngine(%p)", engine); - CARLA_ASSERT(engine); + qDebug("CarlaBridgeClient::sendOscBridgeUpdate()"); + CARLA_ASSERT(m_oscData); + CARLA_ASSERT(m_oscData->target && m_oscData->path); - if (engine) - engine->setOscBridgeData(m_oscData); + if (m_oscData && m_oscData->target && m_oscData->path) + osc_send_bridge_update(m_oscData, m_oscData->path); } void CarlaBridgeClient::sendOscBridgeError(const char* const error) @@ -279,18 +280,6 @@ void CarlaBridgeClient::sendOscLv2TransferEvent(const int32_t portIndex, const c } #endif -#ifdef BUILD_BRIDGE_PLUGIN -void CarlaBridgeClient::sendOscBridgeUpdate() -{ - qDebug("CarlaBridgeClient::sendOscBridgeUpdate()"); - CARLA_ASSERT(m_oscData); - CARLA_ASSERT(m_oscData->target && m_osc.m_serverPath); - - if (m_oscData && m_oscData->target && m_osc.m_serverPath) - osc_send_bridge_update(m_oscData, m_osc.m_serverPath); -} -#endif - // --------------------------------------------------------------------- #ifdef BUILD_BRIDGE_UI diff --git a/c++/carla-bridge/carla_bridge_client.hpp b/c++/carla-bridge/carla_bridge_client.hpp index 5278246..03f5083 100644 --- a/c++/carla-bridge/carla_bridge_client.hpp +++ b/c++/carla-bridge/carla_bridge_client.hpp @@ -20,12 +20,6 @@ #include "carla_bridge_osc.hpp" -#ifdef BUILD_BRIDGE_PLUGIN -namespace CarlaBackend { -class CarlaEngine; -} -#endif - CARLA_BRIDGE_START_NAMESPACE #if 0 @@ -96,7 +90,7 @@ public: void sendOscUpdate(); #ifdef BUILD_BRIDGE_PLUGIN - void registerOscEngine(CarlaBackend::CarlaEngine* const engine); + void sendOscBridgeUpdate(); void sendOscBridgeError(const char* const error); #endif @@ -124,10 +118,6 @@ protected: void sendOscLv2TransferEvent(const int32_t portIndex, const char* const typeStr, const char* const atomBuf); #endif -#ifdef BUILD_BRIDGE_PLUGIN - void sendOscBridgeUpdate(); -#endif - // --------------------------------------------------------------------- #ifdef BUILD_BRIDGE_UI @@ -150,6 +140,8 @@ private: char* m_uiFilename; void* m_uiLib; bool m_uiQuit; +#else + friend class CarlaPluginClient; #endif }; diff --git a/c++/carla-bridge/carla_bridge_plugin.cpp b/c++/carla-bridge/carla_bridge_plugin.cpp index 58a3767..ec4d1cb 100644 --- a/c++/carla-bridge/carla_bridge_plugin.cpp +++ b/c++/carla-bridge/carla_bridge_plugin.cpp @@ -15,25 +15,29 @@ * For a full copy of the GNU General Public License see the COPYING file */ -#ifdef BUILD_BRIDGE_PLUGIN +#ifdef BRIDGE_PLUGIN #include "carla_bridge_client.hpp" -#include "carla_backend_utils.hpp" +#include "carla_bridge_toolkit.hpp" #include "carla_plugin.hpp" -#include +//#include #include #include #include -#include -#include -#include -#include + +#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) +# include +#else +# include +#endif #ifdef Q_OS_UNIX # include #endif +// ------------------------------------------------------------------------- + static int qargc = 0; static char** qargv = nullptr; static bool qCloseNow = false; @@ -94,307 +98,261 @@ CARLA_BRIDGE_START_NAMESPACE // ------------------------------------------------------------------------- -class BridgePluginGUI : public QMainWindow +class CarlaBridgeToolkitPlugin : public CarlaBridgeToolkit, + public CarlaBackend::CarlaPluginGUI::Callback { public: - class Callback - { - public: - virtual ~Callback() {} - virtual void guiClosedCallback() = 0; - }; - - BridgePluginGUI(QWidget* const parent, Callback* const callback_) - : QMainWindow(parent), - callback(callback_) + CarlaBridgeToolkitPlugin(CarlaBridgeClient* const client, const char* const uiTitle) + : CarlaBridgeToolkit(client, uiTitle) { - qDebug("BridgePluginGUI::BridgePluginGUI(%p, %p", parent, callback); - CARLA_ASSERT(callback); - - m_firstShow = true; - m_resizable = true; + qDebug("CarlaBridgeToolkitPlugin::CarlaBridgeToolkitPlugin(%p, \"%s\")", client, uiTitle); - container = new GuiContainer(this); - setCentralWidget(container); + app = nullptr; + gui = nullptr; - setNewSize(50, 50); - } - - ~BridgePluginGUI() - { - qDebug("BridgePluginGUI::~BridgePluginGUI()"); - CARLA_ASSERT(container); + m_uiQuit = false; + m_uiShow = true; - delete container; + init(); } - GuiContainer* getContainer() + ~CarlaBridgeToolkitPlugin() { - return container; + qDebug("CarlaBridgeToolkitPlugin::~CarlaBridgeToolkitPlugin()"); + CARLA_ASSERT(! app); + CARLA_ASSERT(! gui); } - void setResizable(bool resizable) + void init() { - m_resizable = resizable; - setNewSize(width(), height()); + qDebug("CarlaBridgeToolkitPlugin::init()"); + CARLA_ASSERT(! app); + CARLA_ASSERT(! gui); -#ifdef Q_OS_WIN - if (! resizable) - setWindowFlags(windowFlags() | Qt::MSWindowsFixedSizeDialogHint); -#endif - } + app = new QApplication(qargc, qargv); - void setTitle(const char* title) - { - CARLA_ASSERT(title); - setWindowTitle(QString("%1 (GUI)").arg(title)); + gui = new CarlaBackend::CarlaPluginGUI(nullptr, this); } - void setNewSize(int width, int height) + void exec(const bool showGui) { - qDebug("BridgePluginGUI::setNewSize(%i, %i)", width, height); + qDebug("CarlaBridgeToolkitPlugin::exec(%s)", bool2str(showGui)); + CARLA_ASSERT(app); + CARLA_ASSERT(gui); + CARLA_ASSERT(client); - if (width < 30) - width = 30; - if (height < 30) - height = 30; - - if (m_resizable) + if (showGui) { - resize(width, height); + if (m_uiShow) + show(); } else { - setFixedSize(width, height); - container->setFixedSize(width, height); + app->setQuitOnLastWindowClosed(false); + client->sendOscUpdate(); + client->sendOscBridgeUpdate(); } + + m_uiQuit = showGui; + + // Main loop + app->exec(); } - void setVisible(const bool yesNo) + void quit() { - qDebug("BridgePluginGUI::setVisible(%s)", bool2str(yesNo)); + qDebug("CarlaBridgeToolkitPlugin::quit()"); + CARLA_ASSERT(app); - if (yesNo) + if (gui) { - if (m_firstShow) - { - m_firstShow = false; - restoreGeometry(QByteArray()); - } - else if (! m_geometry.isNull()) - restoreGeometry(m_geometry); + gui->close(); + + delete gui; + gui = nullptr; } - else - m_geometry = saveGeometry(); - QMainWindow::setVisible(yesNo); + if (app) + { + if (! app->closingDown()) + app->quit(); + + delete app; + app = nullptr; + } } -protected: - void hideEvent(QHideEvent* const event) + void show() { - qDebug("BridgePluginGUI::hideEvent(%p)", event); + qDebug("CarlaBridgeToolkitPlugin::show()"); + CARLA_ASSERT(gui); - event->accept(); - close(); + if (gui && m_uiShow) + gui->setVisible(true); } - void closeEvent(QCloseEvent* const event) + void hide() { - qDebug("BridgePluginGUI::closeEvent(%p)", event); + qDebug("CarlaBridgeToolkitPlugin::hide()"); + CARLA_ASSERT(gui); - if (event->spontaneous()) - { - callback->guiClosedCallback(); - QMainWindow::closeEvent(event); - return; - } + if (gui && m_uiShow) + gui->setVisible(false); + } + + void resize(const int width, const int height) + { + qDebug("CarlaBridgeToolkitPlugin::resize(%i, %i)", width, height); + CARLA_ASSERT(gui); - event->ignore(); + if (gui) + gui->setNewSize(width, height); } -private: - Callback* const callback; + GuiContainer* getContainer() const + { + CARLA_ASSERT(gui); + + if (gui) + return gui->getContainer(); + + return nullptr; + } - GuiContainer* container; + void* getContainerId() + { + CARLA_ASSERT(gui); + + if (gui) + return (void*)gui->getWinId(); + + return nullptr; + } - bool m_firstShow; - bool m_resizable; - QByteArray m_geometry; + void hasUI(const bool yesNo) + { + m_uiShow = yesNo; + } + +protected: + QApplication* app; + CarlaBackend::CarlaPluginGUI* gui; + + void guiClosedCallback(); + +private: + bool m_uiQuit; + bool m_uiShow; }; +CarlaBridgeToolkit* CarlaBridgeToolkit::createNew(CarlaBridgeClient* const client, const char* const uiTitle) +{ + return new CarlaBridgeToolkitPlugin(client, uiTitle); +} + // ------------------------------------------------------------------------- -class BridgePluginClient : public CarlaBridgeToolkit, - public CarlaBridgeClient, - public BridgePluginGUI::Callback, - public QApplication +class CarlaPluginClient : public CarlaBridgeClient, + public QObject { public: - BridgePluginClient() - : CarlaBridgeToolkit("carla-bridge-plugin"), - CarlaBridgeClient("ui title"), - QApplication(qargc, qargv, true) + CarlaPluginClient() + : CarlaBridgeClient(""), + QObject(nullptr) { - qDebug("BridgePluginClient::BridgePluginClient()"); + qDebug("CarlaPluginClient::CarlaPluginClient()"); msgTimerGUI = 0; msgTimerOSC = 0; - engine = nullptr; - plugin = nullptr; - pluginGui = nullptr; - - m_client = this; - m_doQuit = false; - m_hasUI = false; - m_qt4UI = false; - - m_needsResize = false; - m_nextSize[0] = 0; - m_nextSize[1] = 0; + engine = nullptr; + plugin = nullptr; } - ~BridgePluginClient() + ~CarlaPluginClient() { - qDebug("BridgePluginClient::~BridgePluginClient()"); + qDebug("CarlaPluginClient::~CarlaPluginClient()"); CARLA_ASSERT(msgTimerGUI == 0); CARLA_ASSERT(msgTimerOSC == 0); - CARLA_ASSERT(! pluginGui); - } - - void setStuff(CarlaBackend::CarlaEngine* const engine, CarlaBackend::CarlaPlugin* const plugin) - { - qDebug("BridgePluginClient::setStuff(%p, %p)", engine, plugin); - CARLA_ASSERT(engine); - CARLA_ASSERT(plugin); - - this->engine = engine; - this->plugin = plugin; } // --------------------------------------------------------------------- - // toolkit void init() { - qDebug("BridgePluginClient::init()"); - - pluginGui = new BridgePluginGUI(nullptr, this); - pluginGui->hide(); - } + CARLA_ASSERT(plugin); - void exec(CarlaClient* const, const bool showGui) - { - qDebug("BridgePluginClient::exec()"); + msgTimerGUI = startTimer(50); + msgTimerOSC = startTimer(25); - if (showGui) - { - if (m_hasUI) - show(); + if (! plugin) + return; - m_doQuit = true; - } - else - { - CarlaClient::sendOscUpdate(); - CarlaClient::sendOscBridgeUpdate(); - QApplication::setQuitOnLastWindowClosed(false); - } + // create window if needed + bool guiResizable; + CarlaBackend::GuiType guiType; + plugin->getGuiInfo(&guiType, &guiResizable); - msgTimerGUI = startTimer(50); - msgTimerOSC = startTimer(25); + CarlaBridgeToolkitPlugin* const plugToolkit = (CarlaBridgeToolkitPlugin*)m_toolkit; + plugToolkit->hasUI(guiType != CarlaBackend::GUI_NONE); - QApplication::exec(); + if (guiType == CarlaBackend::GUI_INTERNAL_QT4 || guiType == CarlaBackend::GUI_INTERNAL_COCOA || guiType == CarlaBackend::GUI_INTERNAL_HWND || guiType == CarlaBackend::GUI_INTERNAL_X11) + plugin->setGuiContainer(plugToolkit->getContainer()); } void quit() { - qDebug("BridgePluginClient::quit()"); - if (msgTimerGUI != 0) { - QApplication::killTimer(msgTimerGUI); + killTimer(msgTimerGUI); msgTimerGUI = 0; } if (msgTimerOSC != 0) { - QApplication::killTimer(msgTimerOSC); + killTimer(msgTimerOSC); msgTimerOSC = 0; } - - if (pluginGui) - { - if (pluginGui->isVisible()) - hide(); - - pluginGui->close(); - - delete pluginGui; - pluginGui = nullptr; - } - - if (! QApplication::closingDown()) - QApplication::quit(); } - void show() - { - qDebug("BridgePluginClient::show()"); - CARLA_ASSERT(pluginGui); - - if (plugin) - plugin->showGui(true); - - if (pluginGui && m_qt4UI) - pluginGui->show(); - } + // --------------------------------------------------------------------- - void hide() + void setEngine(CarlaBackend::CarlaEngine* const engine) { - qDebug("BridgePluginClient::hide()"); - CARLA_ASSERT(pluginGui); + qDebug("CarlaPluginClient::setEngine(%p)", engine); + CARLA_ASSERT(engine); - if (pluginGui && m_qt4UI) - pluginGui->hide(); + this->engine = engine; - if (plugin) - plugin->showGui(false); + engine->setOscBridgeData(m_oscData); } - void resize(int width, int height) + void setPlugin(CarlaBackend::CarlaPlugin* const plugin) { - qDebug("BridgePluginClient::resize(%i, %i)", width, height); - CARLA_ASSERT(pluginGui); + qDebug("CarlaPluginClient::setPlugin(%p)", plugin); + CARLA_ASSERT(plugin); - if (pluginGui) - pluginGui->setNewSize(width, height); + this->plugin = plugin; } // --------------------------------------------------------------------- - void createWindow(const bool resizable) + void guiClosed() { - qDebug("BridgePluginClient::createWindow(%s)", bool2str(resizable)); - CARLA_ASSERT(plugin); - CARLA_ASSERT(pluginGui); - - if (! (plugin && pluginGui)) - return; - - m_hasUI = true; - m_qt4UI = true; - - pluginGui->setResizable(resizable); - pluginGui->setTitle(plugin->name()); + CARLA_ASSERT(engine); - plugin->setGuiContainer(pluginGui->getContainer()); + if (engine) + engine->osc_send_bridge_configure(CarlaBackend::CARLA_BRIDGE_MSG_HIDE_GUI, ""); } - void enableUI() + // --------------------------------------------------------------------- + + static void callback(void* const ptr, CarlaBackend::CallbackType const action, const unsigned short, const int value1, const int value2, const double value3, const char* const valueStr) { - m_hasUI = true; + CARLA_ASSERT(ptr); + + if (CarlaPluginClient* const _this_ = (CarlaPluginClient*)ptr) + _this_->handleCallback(action, value1, value2, value3, valueStr); } // --------------------------------------------------------------------- @@ -405,10 +363,8 @@ public: qDebug("CarlaPluginClient::setParameter(%i, %g)", rindex, value); CARLA_ASSERT(plugin); - if (! plugin) - return; - - plugin->setParameterValueByRIndex(rindex, value, true, true, false); + if (plugin) + plugin->setParameterValueByRIndex(rindex, value, true, true, false); } void setProgram(const uint32_t index) @@ -571,7 +527,12 @@ public: } // --------------------------------------------------------------------- - // callback + +protected: + int msgTimerGUI, msgTimerOSC; + + CarlaBackend::CarlaEngine* engine; + CarlaBackend::CarlaPlugin* plugin; void handleCallback(const CarlaBackend::CallbackType action, const int value1, const int value2, const double value3, const char* const valueStr) { @@ -579,167 +540,99 @@ public: if (! engine) return; + } - switch (action) - { - case CarlaBackend::CALLBACK_PARAMETER_VALUE_CHANGED: -#if 0 - parametersToUpdate.insert(value1); -#endif - engine->osc_send_bridge_set_parameter_value(value1, value3); - break; - - case CarlaBackend::CALLBACK_PROGRAM_CHANGED: - engine->osc_send_bridge_set_program(value1); - break; - - case CarlaBackend::CALLBACK_MIDI_PROGRAM_CHANGED: - engine->osc_send_bridge_set_midi_program(value1); - break; + void timerEvent(QTimerEvent* const event) + { + if (qCloseNow) + return toolkitQuit(); - case CarlaBackend::CALLBACK_NOTE_ON: + if (qSaveNow) { - //uint8_t mdata[4] = { 0, MIDI_STATUS_NOTE_ON, (uint8_t)value1, (uint8_t)value2 }; - //osc_send_midi(mdata); - break; + // TODO + qSaveNow = false; } - case CarlaBackend::CALLBACK_NOTE_OFF: + if (event->timerId() == msgTimerGUI) { - //uint8_t mdata[4] = { 0, MIDI_STATUS_NOTE_OFF, (uint8_t)value1, (uint8_t)value2 }; - //osc_send_midi(mdata); - break; + if (plugin) + plugin->idleGui(); + } + else if (event->timerId() == msgTimerOSC) + { + if (isOscControlRegistered()) + oscIdle(); } - case CarlaBackend::CALLBACK_SHOW_GUI: - if (value1 == 0) - { - engine->osc_send_bridge_configure(CarlaBackend::CARLA_BRIDGE_MSG_HIDE_GUI, ""); - - if (m_doQuit) - qCloseNow = true; - } - break; - - case CarlaBackend::CALLBACK_RESIZE_GUI: - CARLA_ASSERT(value1 > 0 && value2 > 0); - CARLA_ASSERT(pluginGui); - - if (value1 > 0 && value2 > 0 && pluginGui) - { - m_needsResize = true; - m_nextSize[0] = value1; - m_nextSize[1] = value2; - } - - break; + QObject::timerEvent(event); + } +}; - case CarlaBackend::CALLBACK_RELOAD_PARAMETERS: - //if (CARLA_PLUGIN) - //{ - // for (uint32_t i=0; i < CARLA_PLUGIN->parameterCount(); i++) - // { - // osc_send_control(i, CARLA_PLUGIN->getParameterValue(i)); - // } - //} - break; +// ------------------------------------------------------------------------- - case CarlaBackend::CALLBACK_QUIT: - //QApplication::quit(); - break; +void CarlaBridgeToolkitPlugin::guiClosedCallback() +{ + CarlaPluginClient* const plugClient = (CarlaPluginClient*)client; - default: - break; - } + if (m_uiQuit) + { + plugClient->quit(); + quit(); } - - // --------------------------------------------------------------------- - - static void callback(void* const ptr, CarlaBackend::CallbackType const action, const unsigned short, const int value1, const int value2, const double value3, const char* const valueStr) + else { - CARLA_ASSERT(ptr); + plugClient->guiClosed(); + } +} - if (! ptr) - return; +// ------------------------------------------------------------------------- - BridgePluginClient* const _this_ = (BridgePluginClient*)ptr; - _this_->handleCallback(action, value1, value2, value3, valueStr); - } +int CarlaBridgeOsc::handleMsgPluginSaveNow() +{ + qDebug("CarlaBridgeOsc::handleMsgPluginSaveNow()"); -protected: - void guiClosedCallback() - { - if (engine) - engine->osc_send_bridge_configure(CarlaBackend::CARLA_BRIDGE_MSG_HIDE_GUI, ""); - } + if (! client) + return 1; - void timerEvent(QTimerEvent* const event) - { - if (qCloseNow) - return quit(); + CarlaPluginClient* const plugClient = (CarlaPluginClient*)client; + plugClient->saveNow(); - if (qSaveNow) - { - // TODO - qSaveNow = false; - } + return 0; +} - if (event->timerId() == msgTimerGUI) - { -#if 0 - if (parametersToUpdate.size() > 0) - { - for (auto it = parametersToUpdate.begin(); it != parametersToUpdate.end(); it++) - { - const int32_t paramId(*it); - engine->osc_send_bridge_set_parameter_value(paramId, plugin->getParameterValue(paramId)); - } +int CarlaBridgeOsc::handleMsgPluginSetChunk(CARLA_BRIDGE_OSC_HANDLE_ARGS) +{ + qDebug("CarlaBridgeOsc::handleMsgPluginSaveNow()"); + CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(1, "s"); - parametersToUpdate.clear(); - } -#endif + if (! client) + return 1; - if (plugin) - plugin->idleGui(); + const char* const chunkFile = (const char*)&argv[0]->s; - if (pluginGui && m_needsResize) - { - pluginGui->setNewSize(m_nextSize[0], m_nextSize[1]); - m_needsResize = false; - } - } - else if (event->timerId() == msgTimerOSC) - { - if (! CarlaClient::oscIdle()) - { - CARLA_ASSERT(msgTimerOSC == 0); - msgTimerOSC = 0; - return; - } - } + CarlaPluginClient* const plugClient = (CarlaPluginClient*)client; + plugClient->setChunkData(chunkFile); - QApplication::timerEvent(event); - } + return 0; +} - // --------------------------------------------------------------------- +int CarlaBridgeOsc::handleMsgPluginSetCustomData(CARLA_BRIDGE_OSC_HANDLE_ARGS) +{ + qDebug("CarlaBridgeOsc::handleMsgPluginSaveNow()"); + CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(3, "sss"); -private: - int msgTimerGUI, msgTimerOSC; -#if 0 - std::set parametersToUpdate; -#endif + if (! client) + return 1; - bool m_doQuit; - bool m_hasUI; - bool m_qt4UI; - bool m_needsResize; - int m_nextSize[2]; + const char* const type = (const char*)&argv[0]->s; + const char* const key = (const char*)&argv[1]->s; + const char* const value = (const char*)&argv[2]->s; - CarlaBackend::CarlaEngine* engine; - CarlaBackend::CarlaPlugin* plugin; + CarlaPluginClient* const plugClient = (CarlaPluginClient*)client; + plugClient->setCustomData(type, key, value); - BridgePluginGUI* pluginGui; -}; + return 0; +} // ------------------------------------------------------------------------- @@ -747,15 +640,14 @@ CARLA_BRIDGE_END_NAMESPACE int main(int argc, char* argv[]) { + CARLA_BRIDGE_USE_NAMESPACE + if (argc != 6) { qWarning("usage: %s