| @@ -241,7 +241,7 @@ EXPAND_ONLY_PREDEF = NO | |||
| SEARCH_INCLUDES = YES | |||
| INCLUDE_PATH = | |||
| INCLUDE_FILE_PATTERNS = | |||
| PREDEFINED = DOXYGEN BUILD_BRIDGE BUILD_BRIDGE_PLUGIN BUILD_BRIDGE_UI BRIDGE_LV2 BRIDGE_LV2_GTK2 BRIDGE_LV2_GTK3 BRIDGE_LV2_QT4 BRIDGE_LV2_X11 BRIDGE_VST BRIDGE_VST_HWND BRIDGE_VST_X11 | |||
| PREDEFINED = DOXYGEN BUILD_BRIDGE BUILD_BRIDGE_PLUGIN BUILD_BRIDGE_UI BRIDGE_GTK2 BRIDGE_GTK3 BRIDGE_QT4 BRIDGE_X11 | |||
| EXPAND_AS_DEFINED = | |||
| SKIP_FUNCTION_MACROS = YES | |||
| #--------------------------------------------------------------------------- | |||
| @@ -1,533 +0,0 @@ | |||
| /* | |||
| * Carla Bridge UI, VST version | |||
| * Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * 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 doc/GPL.txt file. | |||
| */ | |||
| #include "CarlaBridgeUI.hpp" | |||
| #include "CarlaVstUtils.hpp" | |||
| #include "CarlaMIDI.h" | |||
| CARLA_BRIDGE_START_NAMESPACE | |||
| // ------------------------------------------------------------------------- | |||
| // fake values | |||
| uint32_t bufferSize = 512; | |||
| double sampleRate = 44100.0; | |||
| class CarlaVstClient : public CarlaBridgeUI | |||
| { | |||
| public: | |||
| CarlaVstClient() | |||
| : CarlaBridgeUI(), | |||
| unique1(0), | |||
| effect(nullptr), | |||
| needIdle(false), | |||
| unique2(1), | |||
| leakDetector_CarlaVstClient() | |||
| { | |||
| // make client valid | |||
| srand((uint)(uintptr_t)uiTitle[0]); | |||
| unique1 = unique2 = rand(); | |||
| } | |||
| ~CarlaVstClient() override | |||
| { | |||
| // make client invalid | |||
| unique2 += 1; | |||
| } | |||
| // --------------------------------------------------------------------- | |||
| // ui initialization | |||
| bool uiInit(const char* binary, const char*, const char*) override | |||
| { | |||
| // ----------------------------------------------------------------- | |||
| // init | |||
| CarlaBridgeUI::uiInit(binary, nullptr, nullptr); | |||
| // ----------------------------------------------------------------- | |||
| // open DLL | |||
| if (! uiLibOpen(binary)) | |||
| { | |||
| carla_stderr("%s", uiLibError()); | |||
| return false; | |||
| } | |||
| // ----------------------------------------------------------------- | |||
| // get DLL main entry | |||
| VST_Function vstFn = uiLibSymbol<VST_Function>("VSTPluginMain"); | |||
| if (vstFn == nullptr) | |||
| vstFn = uiLibSymbol<VST_Function>("main"); | |||
| if (vstFn == nullptr) | |||
| return false; | |||
| // ----------------------------------------------------------------- | |||
| // initialize plugin | |||
| lastVstPlugin = this; | |||
| effect = vstFn(hostCallback); | |||
| lastVstPlugin = nullptr; | |||
| if (! (effect && effect->magic == kEffectMagic)) | |||
| return false; | |||
| // ----------------------------------------------------------------- | |||
| // initialize VST stuff | |||
| #ifdef VESTIGE_HEADER | |||
| effect->ptr1 = this; | |||
| #else | |||
| effect->resvd1 = ToVstPtr(this); | |||
| #endif | |||
| intptr_t value = 0; | |||
| #if defined(HAVE_X11) && defined(BRIDGE_X11) | |||
| value = (intptr_t)getContainerId2(); | |||
| #endif | |||
| effect->dispatcher(effect, effOpen, 0, 0, nullptr, 0.0f); | |||
| effect->dispatcher(effect, effMainsChanged, 0, 0, nullptr, 0.0f); | |||
| #if ! VST_FORCE_DEPRECATED | |||
| effect->dispatcher(effect, effSetBlockSizeAndSampleRate, 0, static_cast<intptr_t>(bufferSize), nullptr, static_cast<float>(sampleRate)); | |||
| #endif | |||
| effect->dispatcher(effect, effSetSampleRate, 0, 0, nullptr, static_cast<float>(sampleRate)); | |||
| effect->dispatcher(effect, effSetBlockSize, 0, static_cast<intptr_t>(bufferSize), nullptr, 0.0f); | |||
| effect->dispatcher(effect, effSetProcessPrecision, 0, kVstProcessPrecision32, nullptr, 0.0f); | |||
| if (effect->dispatcher(effect, effEditOpen, 0, value, getContainerId(), 0.0f) != 1) | |||
| { | |||
| //effect->dispatcher(effect, effClose, 0, 0, nullptr, 0.0f); | |||
| //return false; | |||
| carla_stderr("VST UI failed to open, trying to init anyway..."); | |||
| } | |||
| // ----------------------------------------------------------------- | |||
| // initialize gui stuff | |||
| ERect* vstRect = nullptr; | |||
| effect->dispatcher(effect, effEditGetRect, 0, 0, &vstRect, 0.0f); | |||
| if (vstRect) | |||
| { | |||
| int width = vstRect->right - vstRect->left; | |||
| int height = vstRect->bottom - vstRect->top; | |||
| if (width > 0 && height > 0) | |||
| toolkitResize(width, height); | |||
| } | |||
| return true; | |||
| } | |||
| void uiIdle() override | |||
| { | |||
| if (needIdle) | |||
| effect->dispatcher(effect, effIdle, 0, 0, nullptr, 0.0f); | |||
| effect->dispatcher(effect, effEditIdle, 0, 0, nullptr, 0.0f); | |||
| } | |||
| void uiClose() override | |||
| { | |||
| if (effect != nullptr) | |||
| { | |||
| effect->dispatcher(effect, effEditClose, 0, 0, nullptr, 0.0f); | |||
| effect->dispatcher(effect, effClose, 0, 0, nullptr, 0.0f); | |||
| effect = nullptr; | |||
| } | |||
| CarlaBridgeUI::uiClose(); | |||
| uiLibClose(); | |||
| } | |||
| // --------------------------------------------------------------------- | |||
| // ui management | |||
| void* getWidget() const override | |||
| { | |||
| return nullptr; // VST always uses reparent | |||
| } | |||
| bool isResizable() const override | |||
| { | |||
| return false; | |||
| } | |||
| // --------------------------------------------------------------------- | |||
| // ui processing | |||
| void setParameter(const int32_t rindex, const float value) override | |||
| { | |||
| if (effect != nullptr) | |||
| effect->setParameter(effect, rindex, value); | |||
| } | |||
| void setProgram(const uint32_t index) override | |||
| { | |||
| if (effect != nullptr) | |||
| effect->dispatcher(effect, effSetProgram, 0, static_cast<intptr_t>(index), nullptr, 0.0f); | |||
| } | |||
| void setMidiProgram(const uint32_t, const uint32_t) override | |||
| { | |||
| } | |||
| void noteOn(const uint8_t, const uint8_t, const uint8_t) override | |||
| { | |||
| } | |||
| void noteOff(const uint8_t, const uint8_t) override | |||
| { | |||
| } | |||
| // --------------------------------------------------------------------- | |||
| void handleAudioMasterAutomate(const uint32_t index, const float value) | |||
| { | |||
| effect->setParameter(effect, static_cast<int32_t>(index), value); | |||
| if (isOscControlRegistered()) | |||
| sendOscControl(static_cast<int32_t>(index), value); | |||
| } | |||
| void handleAudioMasterNeedIdle() | |||
| { | |||
| needIdle = true; | |||
| } | |||
| intptr_t handleAudioMasterProcessEvents(const VstEvents* const vstEvents) | |||
| { | |||
| if (isOscControlRegistered()) | |||
| return 1; | |||
| for (int32_t i=0; i < vstEvents->numEvents; ++i) | |||
| { | |||
| if (! vstEvents->events[i]) | |||
| break; | |||
| const VstMidiEvent* const vstMidiEvent = (const VstMidiEvent*)vstEvents->events[i]; | |||
| if (vstMidiEvent->type != kVstMidiType) | |||
| { | |||
| uint8_t status = uint8_t(vstMidiEvent->midiData[0]); | |||
| // Fix bad note-off | |||
| if (MIDI_IS_STATUS_NOTE_ON(status) && vstMidiEvent->midiData[2] == 0) | |||
| status = uint8_t(status - 0x10); | |||
| uint8_t midiBuf[4] = { 0, status, uint8_t(vstMidiEvent->midiData[1]), uint8_t(vstMidiEvent->midiData[2]) }; | |||
| sendOscMidi(midiBuf); | |||
| } | |||
| } | |||
| return 1; | |||
| } | |||
| intptr_t handleAdioMasterSizeWindow(int32_t width, int32_t height) | |||
| { | |||
| toolkitResize(width, height); | |||
| return 1; | |||
| } | |||
| void handleAudioMasterUpdateDisplay() | |||
| { | |||
| if (isOscControlRegistered()) | |||
| sendOscConfigure("reloadprograms", ""); | |||
| } | |||
| // --------------------------------------------------------------------- | |||
| static intptr_t hostCanDo(const char* const feature) | |||
| { | |||
| carla_debug("CarlaVstClient::hostCanDo(\"%s\")", feature); | |||
| if (std::strcmp(feature, "supplyIdle") == 0) | |||
| return 1; | |||
| if (std::strcmp(feature, "sendVstEvents") == 0) | |||
| return 1; | |||
| if (std::strcmp(feature, "sendVstMidiEvent") == 0) | |||
| return 1; | |||
| if (std::strcmp(feature, "sendVstMidiEventFlagIsRealtime") == 0) | |||
| return -1; | |||
| if (std::strcmp(feature, "sendVstTimeInfo") == 0) | |||
| return 1; | |||
| if (std::strcmp(feature, "receiveVstEvents") == 0) | |||
| return 1; | |||
| if (std::strcmp(feature, "receiveVstMidiEvent") == 0) | |||
| return 1; | |||
| if (std::strcmp(feature, "receiveVstTimeInfo") == 0) | |||
| return -1; | |||
| if (std::strcmp(feature, "reportConnectionChanges") == 0) | |||
| return -1; | |||
| if (std::strcmp(feature, "acceptIOChanges") == 0) | |||
| return 1; | |||
| if (std::strcmp(feature, "sizeWindow") == 0) | |||
| return 1; | |||
| if (std::strcmp(feature, "offline") == 0) | |||
| return -1; | |||
| if (std::strcmp(feature, "openFileSelector") == 0) | |||
| return -1; | |||
| if (std::strcmp(feature, "closeFileSelector") == 0) | |||
| return -1; | |||
| if (std::strcmp(feature, "startStopProcess") == 0) | |||
| return 1; | |||
| if (std::strcmp(feature, "supportShell") == 0) | |||
| return -1; | |||
| if (std::strcmp(feature, "shellCategory") == 0) | |||
| return -1; | |||
| // unimplemented | |||
| carla_stderr("CarlaVstClient::hostCanDo(\"%s\") - unknown feature", feature); | |||
| return 0; | |||
| } | |||
| static intptr_t VSTCALLBACK hostCallback(AEffect* const effect, const int32_t opcode, const int32_t index, const intptr_t value, void* const ptr, const float opt) | |||
| { | |||
| #ifdef DEBUG | |||
| carla_debug("CarlaVstClient::hostCallback(%p, %s, %i, " P_INTPTR ", %p, %f", effect, vstMasterOpcode2str(opcode), index, value, ptr, opt); | |||
| #endif | |||
| // Check if 'resvd1' points to this client, or register ourselfs if possible | |||
| CarlaVstClient* self = nullptr; | |||
| if (effect) | |||
| { | |||
| #ifdef VESTIGE_HEADER | |||
| if (effect && effect->ptr1) | |||
| { | |||
| self = (CarlaVstClient*)effect->ptr1; | |||
| #else | |||
| if (effect && effect->resvd1) | |||
| { | |||
| self = FromVstPtr<CarlaVstClient>(effect->resvd1); | |||
| #endif | |||
| if (self->unique1 != self->unique2) | |||
| self = nullptr; | |||
| } | |||
| if (self != nullptr) | |||
| { | |||
| if (! self->effect) | |||
| self->effect = effect; | |||
| CARLA_ASSERT(self->effect == effect); | |||
| if (self->effect != effect) | |||
| { | |||
| carla_stderr("CarlaVstClient::hostCallback() - host pointer mismatch: %p != %p", self->effect, effect); | |||
| self = nullptr; | |||
| } | |||
| } | |||
| else if (lastVstPlugin) | |||
| { | |||
| #ifdef VESTIGE_HEADER | |||
| effect->ptr1 = lastVstPlugin; | |||
| #else | |||
| effect->resvd1 = ToVstPtr(lastVstPlugin); | |||
| #endif | |||
| self = lastVstPlugin; | |||
| } | |||
| } | |||
| intptr_t ret = 0; | |||
| switch (opcode) | |||
| { | |||
| case audioMasterAutomate: | |||
| if (self != nullptr && index >= 0) | |||
| self->handleAudioMasterAutomate(static_cast<uint32_t>(index), opt); | |||
| break; | |||
| case audioMasterVersion: | |||
| ret = kVstVersion; | |||
| break; | |||
| case audioMasterCurrentId: | |||
| // TODO | |||
| break; | |||
| case audioMasterIdle: | |||
| //if (effect) | |||
| // effect->dispatcher(effect, effEditIdle, 0, 0, nullptr, 0.0f); | |||
| break; | |||
| case audioMasterGetTime: | |||
| static VstTimeInfo vstTimeInfo; | |||
| carla_zeroStruct(vstTimeInfo); | |||
| vstTimeInfo.sampleRate = sampleRate; | |||
| // Tempo | |||
| vstTimeInfo.tempo = 120.0; | |||
| vstTimeInfo.flags |= kVstTempoValid; | |||
| // Time Signature | |||
| vstTimeInfo.timeSigNumerator = 4; | |||
| vstTimeInfo.timeSigDenominator = 4; | |||
| vstTimeInfo.flags |= kVstTimeSigValid; | |||
| ret = (intptr_t)&vstTimeInfo; | |||
| break; | |||
| case audioMasterProcessEvents: | |||
| if (self != nullptr && ptr != nullptr) | |||
| ret = self->handleAudioMasterProcessEvents((const VstEvents*)ptr); | |||
| break; | |||
| #if ! VST_FORCE_DEPRECATED | |||
| case audioMasterTempoAt: | |||
| // Deprecated in VST SDK 2.4 | |||
| ret = 120 * 10000; | |||
| break; | |||
| #endif | |||
| case audioMasterSizeWindow: | |||
| if (self != nullptr && index > 0 && value > 0) | |||
| ret = self->handleAdioMasterSizeWindow(index, static_cast<int32_t>(value)); | |||
| break; | |||
| case audioMasterGetSampleRate: | |||
| ret = static_cast<intptr_t>(sampleRate); | |||
| break; | |||
| case audioMasterGetBlockSize: | |||
| ret = static_cast<intptr_t>(bufferSize); | |||
| break; | |||
| case audioMasterGetCurrentProcessLevel: | |||
| ret = kVstProcessLevelUser; | |||
| break; | |||
| case audioMasterGetAutomationState: | |||
| ret = kVstAutomationReadWrite; | |||
| break; | |||
| case audioMasterGetVendorString: | |||
| if (ptr != nullptr) | |||
| std::strcpy((char*)ptr, "falkTX"); | |||
| break; | |||
| case audioMasterGetProductString: | |||
| if (ptr != nullptr) | |||
| std::strcpy((char*)ptr, "Carla-Bridge"); | |||
| break; | |||
| case audioMasterGetVendorVersion: | |||
| ret = 0x110; // 1.1.0 | |||
| break; | |||
| case audioMasterCanDo: | |||
| if (ptr != nullptr) | |||
| ret = hostCanDo((const char*)ptr); | |||
| break; | |||
| case audioMasterGetLanguage: | |||
| ret = kVstLangEnglish; | |||
| break; | |||
| case audioMasterUpdateDisplay: | |||
| if (self != nullptr) | |||
| self->handleAudioMasterUpdateDisplay(); | |||
| break; | |||
| default: | |||
| #ifdef DEBUG | |||
| carla_debug("CarlaVstClient::hostCallback(%p, %s, %i, " P_INTPTR ", %p, %f", effect, vstMasterOpcode2str(opcode), index, value, ptr, opt); | |||
| #endif | |||
| break; | |||
| } | |||
| return ret; | |||
| } | |||
| private: | |||
| int unique1; | |||
| AEffect* effect; | |||
| bool needIdle; | |||
| static CarlaVstClient* lastVstPlugin; | |||
| int unique2; | |||
| CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaVstClient) | |||
| }; | |||
| CarlaVstClient* CarlaVstClient::lastVstPlugin = nullptr; | |||
| // ------------------------------------------------------------------------- | |||
| CARLA_BRIDGE_END_NAMESPACE | |||
| int main(int argc, char* argv[]) | |||
| { | |||
| CARLA_BRIDGE_USE_NAMESPACE | |||
| if (argc != 4) | |||
| { | |||
| carla_stderr("usage: %s <osc-url|\"null\"> <binary> <ui-title>", argv[0]); | |||
| return 1; | |||
| } | |||
| const char* oscUrl = argv[1]; | |||
| const char* binary = argv[2]; | |||
| const char* uiTitle = argv[3]; | |||
| const bool useOsc = std::strcmp(oscUrl, "null"); | |||
| // try to get sampleRate value | |||
| if (const char* const sampleRateStr = std::getenv("CARLA_SAMPLE_RATE")) | |||
| sampleRate = std::atof(sampleRateStr); | |||
| // Init VST client | |||
| CarlaVstClient client(uiTitle); | |||
| // Init OSC | |||
| if (useOsc) | |||
| { | |||
| client.oscInit(oscUrl); | |||
| client.sendOscUpdate(); | |||
| } | |||
| // Load UI | |||
| int ret; | |||
| if (client.uiInit(binary, nullptr, nullptr)) | |||
| { | |||
| client.toolkitExec(!useOsc); | |||
| ret = 0; | |||
| } | |||
| else | |||
| { | |||
| carla_stderr("Failed to load VST UI"); | |||
| ret = 1; | |||
| } | |||
| // Close OSC | |||
| if (useOsc) | |||
| client.oscClose(); | |||
| // Close VST client | |||
| client.uiClose(); | |||
| return ret; | |||
| } | |||
| @@ -20,11 +20,9 @@ | |||
| #include "CarlaBase64Utils.hpp" | |||
| #ifdef BRIDGE_LV2 | |||
| # undef NULL | |||
| # define NULL nullptr | |||
| # include "lv2/atom-util.h" | |||
| #endif | |||
| #undef NULL | |||
| #define NULL nullptr | |||
| #include "lv2/atom-util.h" | |||
| CARLA_BRIDGE_START_NAMESPACE | |||
| @@ -173,7 +171,6 @@ bool CarlaBridgeUI::msgReceived(const char* const msg) noexcept | |||
| dspNoteReceived(onOff, channel, note, velocity); | |||
| } | |||
| #ifdef BRIDGE_LV2 | |||
| if (std::strcmp(msg, "atom") == 0) | |||
| { | |||
| uint32_t index, size; | |||
| @@ -208,7 +205,6 @@ bool CarlaBridgeUI::msgReceived(const char* const msg) noexcept | |||
| delete[] uri; | |||
| return true; | |||
| } | |||
| #endif | |||
| if (std::strcmp(msg, "uiOptions") == 0) | |||
| { | |||
| @@ -23,10 +23,8 @@ | |||
| #include "CarlaPipeUtils.hpp" | |||
| #include "CarlaString.hpp" | |||
| #ifdef BRIDGE_LV2 | |||
| # include "lv2/atom.h" | |||
| # include "lv2/urid.h" | |||
| #endif | |||
| #include "lv2/atom.h" | |||
| #include "lv2/urid.h" | |||
| //#include "CarlaBridgeToolkit.hpp" | |||
| //#include "CarlaLibUtils.hpp" | |||
| @@ -70,10 +68,8 @@ protected: | |||
| virtual void dspStateChanged(const char* const key, const char* const value) = 0; | |||
| virtual void dspNoteReceived(const bool onOff, const uint8_t channel, const uint8_t note, const uint8_t velocity) = 0; | |||
| #ifdef BRIDGE_LV2 | |||
| virtual void dspAtomReceived(const uint32_t index, const LV2_Atom* const atom) = 0; | |||
| virtual void dspURIDReceived(const LV2_URID urid, const char* const uri) = 0; | |||
| #endif | |||
| virtual void uiOptionsChanged(const bool useTheme, const bool useThemeColors, const char* const windowTitle, uintptr_t transientWindowId) = 0; | |||
| @@ -22,47 +22,36 @@ endif | |||
| # ---------------------------------------------------------------------------------------------------------------------------- | |||
| BUILD_CXX_FLAGS += -DBUILD_BRIDGE -I. -I$(CWD)/backend -I$(CWD)/includes -I$(CWD)/utils -isystem $(CWD)/modules | |||
| BUILD_LV2_FLAGS = $(BUILD_CXX_FLAGS) -DBRIDGE_LV2 | |||
| BUILD_VST2_FLAGS = $(BUILD_CXX_FLAGS) -DBRIDGE_VST2 | |||
| ifeq ($(CARLA_VESTIGE_HEADER),true) | |||
| BUILD_VST2_FLAGS += -DVESTIGE_HEADER | |||
| endif | |||
| LINK_FLAGS += $(JUCE_CORE_LIBS) | |||
| BUILD_CXX_FLAGS += -DBUILD_BRIDGE -DBUILD_BRIDGE_UI -I. -I$(CWD)/backend -I$(CWD)/includes -I$(CWD)/utils -isystem $(CWD)/modules | |||
| LINK_FLAGS += $(JUCE_CORE_LIBS) | |||
| # ---------------------------------------------------------------------------------------------------------------------------- | |||
| BUILD_LV2_GTK2_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_GTK2 -DBRIDGE_LV2_GTK2 $(shell pkg-config --cflags gtk+-2.0) | |||
| LINK_LV2_GTK2_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs gtk+-2.0) -ldl | |||
| BUILD_GTK2_FLAGS = $(BUILD_CXX_FLAGS) -DBRIDGE_GTK2 $(shell pkg-config --cflags gtk+-2.0) | |||
| LINK_GTK2_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs gtk+-2.0) -ldl | |||
| BUILD_LV2_GTK3_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_GTK3 -DBRIDGE_LV2_GTK3 $(shell pkg-config --cflags gtk+-3.0) | |||
| LINK_LV2_GTK3_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs gtk+-3.0) -ldl | |||
| BUILD_GTK3_FLAGS = $(BUILD_CXX_FLAGS) -DBRIDGE_GTK3 $(shell pkg-config --cflags gtk+-3.0) | |||
| LINK_GTK3_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs gtk+-3.0) -ldl | |||
| BUILD_LV2_QT4_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_QT4 -DBRIDGE_LV2_QT4 $(shell pkg-config --cflags QtCore QtGui) -I$(OBJDIR) -I$(CWD)/theme | |||
| LINK_LV2_QT4_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs QtCore QtGui) -ldl | |||
| BUILD_QT4_FLAGS = $(BUILD_CXX_FLAGS) -DBRIDGE_QT4 $(shell pkg-config --cflags QtCore QtGui) -I$(OBJDIR) -I$(CWD)/theme | |||
| LINK_QT4_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs QtCore QtGui) -ldl | |||
| BUILD_LV2_QT5_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_QT5 -DBRIDGE_LV2_QT5 $(shell pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets) -I$(OBJDIR) -I$(CWD)/theme | |||
| LINK_LV2_QT5_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs Qt5Core Qt5Gui Qt5Widgets) -ldl | |||
| BUILD_QT5_FLAGS = $(BUILD_CXX_FLAGS) -DBRIDGE_QT5 $(shell pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets) -I$(OBJDIR) -I$(CWD)/theme | |||
| LINK_QT5_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs Qt5Core Qt5Gui Qt5Widgets) -ldl | |||
| BUILD_LV2_X11_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_X11 -DBRIDGE_LV2_X11 $(X11_FLAGS) | |||
| LINK_LV2_X11_FLAGS = $(LINK_FLAGS) $(X11_LIBS) -ldl | |||
| BUILD_X11_FLAGS = $(BUILD_CXX_FLAGS) -DBRIDGE_X11 $(X11_FLAGS) | |||
| LINK_X11_FLAGS = $(LINK_FLAGS) $(X11_LIBS) -ldl | |||
| BUILD_LV2_COCOA_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_COCOA -DBRIDGE_LV2_COCOA -ObjC++ | |||
| LINK_LV2_COCOA_FLAGS = $(LINK_FLAGS) -framework Cocoa -framework IOKit -framework QuartzCore -ldl | |||
| BUILD_COCOA_FLAGS = $(BUILD_CXX_FLAGS) -DBRIDGE_COCOA -ObjC++ | |||
| LINK_COCOA_FLAGS = $(LINK_FLAGS) -framework Cocoa -framework IOKit -framework QuartzCore -ldl | |||
| BUILD_LV2_WINDOWS_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_HWND -DBRIDGE_LV2_HWND | |||
| LINK_LV2_WINDOWS_FLAGS = $(LINK_FLAGS) -static -mwindows | |||
| BUILD_VST2_X11_FLAGS = $(BUILD_VST2_FLAGS) -DBRIDGE_X11 -DBRIDGE_VST2_X11 $(X11_FLAGS) | |||
| LINK_VST2_X11_FLAGS = $(LINK_FLAGS) $(X11_LIBS) -ldl | |||
| BUILD_WINDOWS_FLAGS = $(BUILD_CXX_FLAGS) -DBRIDGE_HWND | |||
| LINK_WINDOWS_FLAGS = $(LINK_FLAGS) -static -mwindows | |||
| ifeq ($(LINUX),true) | |||
| LINK_LV2_GTK2_FLAGS += -lX11 | |||
| LINK_LV2_GTK3_FLAGS += -lX11 | |||
| LINK_LV2_QT4_FLAGS += -lX11 | |||
| LINK_GTK2_FLAGS += -lX11 | |||
| LINK_GTK3_FLAGS += -lX11 | |||
| LINK_QT4_FLAGS += -lX11 | |||
| endif | |||
| # ---------------------------------------------------------------------------------------------------------------------------- | |||
| @@ -90,7 +79,6 @@ endif | |||
| ifeq ($(HAVE_X11),true) | |||
| TARGETS += ui_lv2-x11 | |||
| TARGETS += ui_vst2-x11 | |||
| endif | |||
| ifeq ($(MACOS),true) | |||
| @@ -109,7 +97,7 @@ all: $(TARGETS) | |||
| clean: | |||
| rm -f $(OBJDIR)/*.cpp $(OBJDIR)/*.moc $(OBJDIR)/*.o | |||
| rm -f $(BINDIR)/$(MODULENAME)-lv2-* $(BINDIR)/$(MODULENAME)-vst2-* | |||
| rm -f $(BINDIR)/$(MODULENAME)-lv2-* | |||
| debug: | |||
| $(MAKE) DEBUG=true | |||
| @@ -126,100 +114,91 @@ ui_lv2-qt5: $(BINDIR)/$(MODULENAME)-lv2-qt5 | |||
| ui_lv2-x11: $(BINDIR)/$(MODULENAME)-lv2-x11 | |||
| ui_lv2-cocoa: $(BINDIR)/$(MODULENAME)-lv2-cocoa | |||
| ui_lv2-windows: $(BINDIR)/$(MODULENAME)-lv2-windows.exe | |||
| ui_vst2-x11: #$(BINDIR)/$(MODULENAME)-vst2-x11 | |||
| # ---------------------------------------------------------------------------------------------------------------------------- | |||
| # Common libs | |||
| LIBS_LV2 = \ | |||
| LIBS = \ | |||
| $(MODULEDIR)/juce_core.a \ | |||
| $(MODULEDIR)/lilv.a | |||
| LIBS_LV2_JUCE = \ | |||
| $(LIBS_LV2) \ | |||
| LIBS_JUCE = \ | |||
| $(LIBS) \ | |||
| $(MODULEDIR)/juce_data_structures.a \ | |||
| $(MODULEDIR)/juce_events.a \ | |||
| $(MODULEDIR)/juce_graphics.a \ | |||
| $(MODULEDIR)/juce_gui_basics.a | |||
| ifeq ($(MACOS),true) | |||
| LIBS_LV2_JUCE += \ | |||
| LIBS_JUCE += \ | |||
| $(MODULEDIR)/juce_gui_extra.a | |||
| endif | |||
| LIBS_VST2 = \ | |||
| $(MODULEDIR)/juce_core.a | |||
| # ---------------------------------------------------------------------------------------------------------------------------- | |||
| # Common objects | |||
| $(OBJDIR)/%.cpp.lv2.o: %.cpp | |||
| -@mkdir -p $(OBJDIR) | |||
| @echo "Compiling $< (LV2)" | |||
| @$(CXX) $< $(BUILD_LV2_FLAGS) -c -o $@ | |||
| $(OBJDIR)/%.cpp.vst2.o: %.cpp | |||
| $(OBJDIR)/%.cpp.o: %.cpp | |||
| -@mkdir -p $(OBJDIR) | |||
| @echo "Compiling $< (VST2)" | |||
| @$(CXX) $< $(BUILD_VST2_FLAGS) -c -o $@ | |||
| @echo "Compiling $<" | |||
| @$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ | |||
| # ---------------------------------------------------------------------------------------------------------------------------- | |||
| # ui_lv2-gtk2 | |||
| OBJS_LV2_GTK2 = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.lv2.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-LV2.cpp.lv2-gtk2.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitGtk.cpp.lv2-gtk2.o | |||
| OBJS_GTK2 = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-LV2.cpp-gtk2.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitGtk.cpp-gtk2.o | |||
| $(BINDIR)/$(MODULENAME)-lv2-gtk2: $(OBJS_LV2_GTK2) $(LIBS_LV2) | |||
| $(BINDIR)/$(MODULENAME)-lv2-gtk2: $(OBJS_GTK2) $(LIBS) | |||
| -@mkdir -p $(BINDIR) | |||
| @echo "Linking $(MODULENAME)-lv2-gtk2" | |||
| @$(CXX) $(OBJS_LV2_GTK2) $(LIBS_START) $(LIBS_LV2) $(LIBS_END) $(LINK_LV2_GTK2_FLAGS) -o $@ | |||
| @$(CXX) $(OBJS_GTK2) $(LIBS_START) $(LIBS) $(LIBS_END) $(LINK_GTK2_FLAGS) -o $@ | |||
| $(OBJDIR)/%.cpp.lv2-gtk2.o: %.cpp | |||
| $(OBJDIR)/%.cpp-gtk2.o: %.cpp | |||
| -@mkdir -p $(OBJDIR) | |||
| @echo "Compiling $< (LV2-GTK2)" | |||
| @$(CXX) $< $(BUILD_LV2_GTK2_FLAGS) -c -o $@ | |||
| @echo "Compiling $< (GTK2)" | |||
| @$(CXX) $< $(BUILD_GTK2_FLAGS) -c -o $@ | |||
| -include $(OBJS_LV2_GTK2:%.o=%.d) | |||
| -include $(OBJS_GTK2:%.o=%.d) | |||
| # ---------------------------------------------------------------------------------------------------------------------------- | |||
| # ui_lv2-gtk3 | |||
| OBJS_LV2_GTK3 = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.lv2.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-LV2.cpp.lv2-gtk3.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitGtk.cpp.lv2-gtk3.o | |||
| OBJS_GTK3 = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-LV2.cpp-gtk3.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitGtk.cpp-gtk3.o | |||
| $(BINDIR)/$(MODULENAME)-lv2-gtk3: $(OBJS_LV2_GTK3) $(LIBS_LV2) | |||
| $(BINDIR)/$(MODULENAME)-lv2-gtk3: $(OBJS_GTK3) $(LIBS) | |||
| -@mkdir -p $(BINDIR) | |||
| @echo "Linking $(MODULENAME)-lv2-gtk3" | |||
| @$(CXX) $(OBJS_LV2_GTK3) $(LIBS_START) $(LIBS_LV2) $(LIBS_END) $(LINK_LV2_GTK3_FLAGS) -o $@ | |||
| @$(CXX) $(OBJS_GTK3) $(LIBS_START) $(LIBS) $(LIBS_END) $(LINK_GTK3_FLAGS) -o $@ | |||
| $(OBJDIR)/%.cpp.lv2-gtk3.o: %.cpp | |||
| $(OBJDIR)/%.cpp-gtk3.o: %.cpp | |||
| -@mkdir -p $(OBJDIR) | |||
| @echo "Compiling $< (LV2-GTK3)" | |||
| @$(CXX) $< $(BUILD_LV2_GTK3_FLAGS) -c -o $@ | |||
| @echo "Compiling $< (GTK3)" | |||
| @$(CXX) $< $(BUILD_GTK3_FLAGS) -c -o $@ | |||
| -include $(OBJS_LV2_GTK3:%.o=%.d) | |||
| -include $(OBJS_GTK3:%.o=%.d) | |||
| # ---------------------------------------------------------------------------------------------------------------------------- | |||
| # ui_lv2-qt4 | |||
| OBJS_LV2_QT4 = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.lv2.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-LV2.cpp.lv2-qt4.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitQt.cpp.lv2-qt4.o | |||
| OBJS_QT4 = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-LV2.cpp-qt4.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitQt.cpp-qt4.o | |||
| $(BINDIR)/$(MODULENAME)-lv2-qt4: $(OBJS_LV2_QT4) $(LIBS_LV2) $(MODULEDIR)/theme.qt4.a | |||
| $(BINDIR)/$(MODULENAME)-lv2-qt4: $(OBJS_QT4) $(LIBS) $(MODULEDIR)/theme.qt4.a | |||
| -@mkdir -p $(BINDIR) | |||
| @echo "Linking $(MODULENAME)-lv2-qt4" | |||
| @$(CXX) $(OBJS_LV2_QT4) $(LIBS_START) $(LIBS_LV2) $(MODULEDIR)/theme.qt4.a $(LIBS_END) $(LINK_LV2_QT4_FLAGS) -o $@ | |||
| @$(CXX) $(OBJS_QT4) $(LIBS_START) $(LIBS) $(MODULEDIR)/theme.qt4.a $(LIBS_END) $(LINK_QT4_FLAGS) -o $@ | |||
| $(OBJDIR)/%.cpp.lv2-qt4.o: %.cpp $(OBJDIR)/CarlaBridgeToolkitQt4.moc $(OBJDIR)/resources.qt4.cpp | |||
| $(OBJDIR)/%.cpp-qt4.o: %.cpp $(OBJDIR)/CarlaBridgeToolkitQt4.moc $(OBJDIR)/resources.qt4.cpp | |||
| -@mkdir -p $(OBJDIR) | |||
| @echo "Compiling $< (LV2-QT4)" | |||
| @$(CXX) $< $(BUILD_LV2_QT4_FLAGS) -c -o $@ | |||
| @echo "Compiling $< (QT4)" | |||
| @$(CXX) $< $(BUILD_QT4_FLAGS) -c -o $@ | |||
| $(OBJDIR)/CarlaBridgeToolkitQt4.moc: CarlaBridgeToolkitQt.cpp | |||
| -@mkdir -p $(OBJDIR) | |||
| @@ -231,25 +210,25 @@ $(OBJDIR)/resources.qt4.cpp: ../../resources/resources-theme.qrc | |||
| @echo "Generating resources.qt4.cpp" | |||
| @$(RCC_QT4) $< -o $@ | |||
| -include $(OBJS_LV2_QT4:%.o=%.d) | |||
| -include $(OBJS_QT4:%.o=%.d) | |||
| # ---------------------------------------------------------------------------------------------------------------------------- | |||
| # ui_lv2-qt5 | |||
| OBJS_LV2_QT5 = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.lv2.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-LV2.cpp.lv2-qt5.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitQt.cpp.lv2-qt5.o | |||
| OBJS_QT5 = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-LV2.cpp-qt5.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitQt.cpp-qt5.o | |||
| $(BINDIR)/$(MODULENAME)-lv2-qt5: $(OBJS_LV2_QT5) $(LIBS_LV2) $(MODULEDIR)/theme.qt5.a | |||
| $(BINDIR)/$(MODULENAME)-lv2-qt5: $(OBJS_QT5) $(LIBS) $(MODULEDIR)/theme.qt5.a | |||
| -@mkdir -p $(BINDIR) | |||
| @echo "Linking $(MODULENAME)-lv2-qt5" | |||
| @$(CXX) $(OBJS_LV2_QT5) $(LIBS_START) $(LIBS_LV2) $(MODULEDIR)/theme.qt5.a $(LIBS_END) $(LINK_LV2_QT5_FLAGS) -o $@ | |||
| @$(CXX) $(OBJS_QT5) $(LIBS_START) $(LIBS) $(MODULEDIR)/theme.qt5.a $(LIBS_END) $(LINK_QT5_FLAGS) -o $@ | |||
| $(OBJDIR)/%.cpp.lv2-qt5.o: %.cpp $(OBJDIR)/CarlaBridgeToolkitQt5.moc $(OBJDIR)/resources.qt5.cpp | |||
| $(OBJDIR)/%.cpp-qt5.o: %.cpp $(OBJDIR)/CarlaBridgeToolkitQt5.moc $(OBJDIR)/resources.qt5.cpp | |||
| -@mkdir -p $(OBJDIR) | |||
| @echo "Compiling $< (LV2-QT5)" | |||
| @$(CXX) $< $(BUILD_LV2_QT5_FLAGS) -c -o $@ | |||
| @echo "Compiling $< (QT5)" | |||
| @$(CXX) $< $(BUILD_QT5_FLAGS) -c -o $@ | |||
| $(OBJDIR)/CarlaBridgeToolkitQt5.moc: CarlaBridgeToolkitQt.cpp | |||
| -@mkdir -p $(OBJDIR) | |||
| @@ -261,86 +240,66 @@ $(OBJDIR)/resources.qt5.cpp: ../../resources/resources-theme.qrc | |||
| @echo "Generating resources.qt5.cpp" | |||
| @$(RCC_QT5) $< -o $@ | |||
| -include $(OBJS_LV2_QT5:%.o=%.d) | |||
| -include $(OBJS_QT5:%.o=%.d) | |||
| # ---------------------------------------------------------------------------------------------------------------------------- | |||
| # ui_lv2-x11 | |||
| OBJS_LV2_X11 = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.lv2.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-LV2.cpp.lv2-x11.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitPlugin.cpp.lv2-x11.o | |||
| OBJS_X11 = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-LV2.cpp-x11.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitPlugin.cpp-x11.o | |||
| $(BINDIR)/$(MODULENAME)-lv2-x11: $(OBJS_LV2_X11) $(LIBS_LV2) | |||
| $(BINDIR)/$(MODULENAME)-lv2-x11: $(OBJS_X11) $(LIBS) | |||
| -@mkdir -p $(BINDIR) | |||
| @echo "Linking $(MODULENAME)-lv2-x11" | |||
| @$(CXX) $(OBJS_LV2_X11) $(LIBS_START) $(LIBS_LV2) $(LIBS_END) $(LINK_LV2_X11_FLAGS) -o $@ | |||
| @$(CXX) $(OBJS_X11) $(LIBS_START) $(LIBS) $(LIBS_END) $(LINK_X11_FLAGS) -o $@ | |||
| $(OBJDIR)/%.cpp.lv2-x11.o: %.cpp | |||
| $(OBJDIR)/%.cpp-x11.o: %.cpp | |||
| -@mkdir -p $(OBJDIR) | |||
| @echo "Compiling $< (LV2-X11)" | |||
| @$(CXX) $< $(BUILD_LV2_X11_FLAGS) -c -o $@ | |||
| @echo "Compiling $< (X11)" | |||
| @$(CXX) $< $(BUILD_X11_FLAGS) -c -o $@ | |||
| -include $(OBJS_LV2_X11:%.o=%.d) | |||
| -include $(OBJS_X11:%.o=%.d) | |||
| # ---------------------------------------------------------------------------------------------------------------------------- | |||
| # ui_lv2-cocoa | |||
| OBJS_LV2_COCOA = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.lv2.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-LV2.cpp.lv2-cocoa.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitPlugin.cpp.lv2-cocoa.o | |||
| OBJS_COCOA = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-LV2.cpp-cocoa.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitPlugin.cpp-cocoa.o | |||
| $(BINDIR)/$(MODULENAME)-lv2-cocoa: $(OBJS_LV2_COCOA) $(LIBS_LV2_JUCE) | |||
| $(BINDIR)/$(MODULENAME)-lv2-cocoa: $(OBJS_COCOA) $(LIBS_JUCE) | |||
| -@mkdir -p $(BINDIR) | |||
| @echo "Linking $(MODULENAME)-lv2-cocoa" | |||
| @$(CXX) $(OBJS_LV2_COCOA) $(LIBS_START) $(LIBS_LV2_JUCE) $(LIBS_END) $(LINK_LV2_COCOA_FLAGS) -o $@ | |||
| @$(CXX) $(OBJS_COCOA) $(LIBS_START) $(LIBS_JUCE) $(LIBS_END) $(LINK_COCOA_FLAGS) -o $@ | |||
| $(OBJDIR)/%.cpp.lv2-cocoa.o: %.cpp | |||
| $(OBJDIR)/%.cpp-cocoa.o: %.cpp | |||
| -@mkdir -p $(OBJDIR) | |||
| @echo "Compiling $< (LV2-Cocoa)" | |||
| @$(CXX) $< $(BUILD_LV2_COCOA_FLAGS) -c -o $@ | |||
| @echo "Compiling $< (Cocoa)" | |||
| @$(CXX) $< $(BUILD_COCOA_FLAGS) -c -o $@ | |||
| -include $(OBJS_LV2_COCOA:%.o=%.d) | |||
| -include $(OBJS_COCOA:%.o=%.d) | |||
| # ---------------------------------------------------------------------------------------------------------------------------- | |||
| # ui_lv2-windows | |||
| OBJS_LV2_WINDOWS = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.lv2.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-LV2.cpp.lv2-windows.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitPlugin.cpp.lv2-windows.o | |||
| OBJS_WINDOWS = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-LV2.cpp-windows.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitPlugin.cpp-windows.o | |||
| $(BINDIR)/$(MODULENAME)-lv2-windows.exe: $(OBJS_LV2_WINDOWS) $(LIBS_LV2_JUCE) | |||
| $(BINDIR)/$(MODULENAME)-lv2-windows.exe: $(OBJS_WINDOWS) $(LIBS_JUCE) | |||
| -@mkdir -p $(BINDIR) | |||
| @echo "Linking $(MODULENAME)-lv2-windows.exe" | |||
| @$(CXX) $(OBJS_LV2_WINDOWS) $(LIBS_START) $(LIBS_LV2_JUCE) $(LIBS_END) $(LINK_LV2_WINDOWS_FLAGS) -o $@ | |||
| $(OBJDIR)/%.cpp.lv2-windows.o: %.cpp | |||
| -@mkdir -p $(OBJDIR) | |||
| @echo "Compiling $< (LV2-Windows)" | |||
| @$(CXX) $< $(BUILD_LV2_WINDOWS_FLAGS) -c -o $@ | |||
| -include $(OBJS_LV2_WINDOWS:%.o=%.d) | |||
| # ---------------------------------------------------------------------------------------------------------------------------- | |||
| # ui_vst2-x11 | |||
| OBJS_VST2_X11 = \ | |||
| $(OBJDIR)/CarlaBridgeUI.cpp.vst2.o \ | |||
| $(OBJDIR)/CarlaBridgeUI-VST2.cpp.vst2-x11.o \ | |||
| $(OBJDIR)/CarlaBridgeToolkitPlugin.cpp.vst2-x11.o | |||
| $(BINDIR)/$(MODULENAME)-vst2-x11: $(OBJS_VST2_X11) $(LIBS_VST2) | |||
| -@mkdir -p $(BINDIR) | |||
| @echo "Linking $(MODULENAME)-vst2-x11" | |||
| @$(CXX) $(OBJS_VST2_X11) $(LIBS_START) $(LIBS_VST2) $(LIBS_END) $(LINK_VST2_X11_FLAGS) -o $@ | |||
| @$(CXX) $(OBJS_WINDOWS) $(LIBS_START) $(LIBS_JUCE) $(LIBS_END) $(LINK_WINDOWS_FLAGS) -o $@ | |||
| $(OBJDIR)/%.cpp.vst2-x11.o: %.cpp | |||
| $(OBJDIR)/%.cpp-windows.o: %.cpp | |||
| -@mkdir -p $(OBJDIR) | |||
| @echo "Compiling $< (VST2-X11)" | |||
| @$(CXX) $< $(BUILD_VST2_X11_FLAGS) -c -o $@ | |||
| @echo "Compiling $< (Windows)" | |||
| @$(CXX) $< $(BUILD_WINDOWS_FLAGS) -c -o $@ | |||
| -include $(OBJS_VST2_X11:%.o=%.d) | |||
| -include $(OBJS_WINDOWS:%.o=%.d) | |||
| # ---------------------------------------------------------------------------------------------------------------------------- | |||
| @@ -38,6 +38,6 @@ LIBS = \ | |||
| DEFINES = QTCREATOR_TEST | |||
| DEFINES += DEBUG | |||
| DEFINES += BUILD_BRIDGE BUILD_BRIDGE_UI BRIDGE_LV2 BRIDGE_GTK2 BRIDGE_LV2_GTK2 | |||
| DEFINES += BUILD_BRIDGE BUILD_BRIDGE_UI BRIDGE_GTK2 | |||
| QMAKE_CXXFLAGS *= -std=c++0x | |||
| @@ -38,6 +38,6 @@ LIBS = \ | |||
| DEFINES = QTCREATOR_TEST | |||
| DEFINES += DEBUG | |||
| DEFINES += BUILD_BRIDGE BUILD_BRIDGE_UI BRIDGE_LV2 BRIDGE_GTK3 BRIDGE_LV2_GTK3 | |||
| DEFINES += BUILD_BRIDGE BUILD_BRIDGE_UI BRIDGE_GTK3 | |||
| QMAKE_CXXFLAGS *= -std=c++0x | |||
| @@ -16,9 +16,7 @@ DEFINES += QTCREATOR_TEST | |||
| DEFINES += BUILD_BRIDGE | |||
| DEFINES += BUILD_BRIDGE_UI | |||
| DEFINES += BRIDGE_LV2 | |||
| DEFINES += BRIDGE_QT4 | |||
| DEFINES += BRIDGE_LV2_QT4 | |||
| PKGCONFIG = liblo | |||
| @@ -38,6 +38,6 @@ LIBS = \ | |||
| DEFINES = QTCREATOR_TEST | |||
| DEFINES += DEBUG | |||
| DEFINES += BUILD_BRIDGE BUILD_BRIDGE_UI BRIDGE_LV2 BRIDGE_QT5 BRIDGE_LV2_QT5 | |||
| DEFINES += BUILD_BRIDGE BUILD_BRIDGE_UI BRIDGE_QT5 | |||
| QMAKE_CXXFLAGS *= -std=c++0x | |||
| @@ -42,6 +42,6 @@ LIBS = \ | |||
| DEFINES = QTCREATOR_TEST | |||
| DEFINES += DEBUG | |||
| DEFINES += BUILD_BRIDGE BUILD_BRIDGE_UI BRIDGE_LV2 BRIDGE_X11 BRIDGE_LV2_X11 | |||
| DEFINES += BUILD_BRIDGE BUILD_BRIDGE_UI BRIDGE_X11 | |||
| QMAKE_CXXFLAGS *= -std=c++0x | |||
| @@ -1,42 +0,0 @@ | |||
| # QtCreator project file | |||
| contains(QT_VERSION, ^5.*) { | |||
| QT = core widgets | |||
| } else { | |||
| QT = core gui | |||
| } | |||
| CONFIG = debug link_pkgconfig qt warn_on | |||
| PKGCONFIG = liblo | |||
| TARGET = carla-bridge-vst-x11 | |||
| TEMPLATE = app | |||
| VERSION = 0.5.0 | |||
| SOURCES = \ | |||
| ../carla_bridge_client.cpp \ | |||
| ../carla_bridge_osc.cpp \ | |||
| ../carla_bridge_toolkit.cpp \ | |||
| ../carla_bridge_toolkit-qt.cpp \ | |||
| ../carla_bridge_ui-vst.cpp | |||
| HEADERS = \ | |||
| ../carla_bridge.hpp \ | |||
| ../carla_bridge_client.hpp \ | |||
| ../carla_bridge_osc.hpp \ | |||
| ../carla_bridge_toolkit.hpp \ | |||
| ../../carla-includes/carla_defines.hpp \ | |||
| ../../carla-includes/carla_midi.h \ | |||
| ../../carla-utils/carla_lib_utils.hpp \ | |||
| ../../carla-utils/carla_osc_utils.hpp \ | |||
| ../../carla-utils/carla_vst_utils.hpp | |||
| INCLUDEPATH = .. \ | |||
| ../../carla-includes \ | |||
| ../../carla-utils | |||
| DEFINES = QTCREATOR_TEST | |||
| DEFINES += DEBUG | |||
| DEFINES += BUILD_BRIDGE BUILD_BRIDGE_UI BRIDGE_VST BRIDGE_X11 BRIDGE_VST_X11 | |||
| QMAKE_CXXFLAGS *= -std=c++0x | |||
| @@ -1503,7 +1503,7 @@ bool is_lv2_ui_feature_supported(const LV2_URI uri) noexcept | |||
| if (is_lv2_feature_supported(uri)) | |||
| return true; | |||
| #ifndef BRIDGE_LV2 | |||
| #ifndef BUILD_BRIDGE_UI | |||
| if (std::strcmp(uri, LV2_DATA_ACCESS_URI) == 0) | |||
| return true; | |||
| if (std::strcmp(uri, LV2_INSTANCE_ACCESS_URI) == 0) | |||