| @@ -6,6 +6,7 @@ | |||
| *.a | |||
| *.o | |||
| *.dll | |||
| *.dll.def | |||
| *.exe | |||
| *.so | |||
| @@ -179,13 +179,21 @@ posix64: | |||
| $(MAKE) -C c++/carla-bridge posix64 | |||
| $(MAKE) -C c++/carla-discovery posix64 | |||
| win32: | |||
| $(MAKE) -C c++/carla-bridge win32 | |||
| $(MAKE) -C c++/carla-discovery win32 | |||
| win64: | |||
| $(MAKE) -C c++/carla-bridge win64 | |||
| $(MAKE) -C c++/carla-discovery win64 | |||
| wine32: | |||
| $(MAKE) -C c++/carla-bridge wine32 | |||
| $(MAKE) -C c++/carla-discovery wine32 | |||
| $(MAKE) -C c++/carla-jackbridge wine32 | |||
| cp c++/carla-jackbridge/libcarla-jackbridge-win32.dll.so c++/carla-bridge/libcarla-jackbridge-win32.dll | |||
| wine64: | |||
| $(MAKE) -C c++/carla-bridge wine64 | |||
| $(MAKE) -C c++/carla-discovery wine64 | |||
| $(MAKE) -C c++/carla-jackbridge wine64 | |||
| cp c++/carla-jackbridge/libcarla-jackbridge-win64.dll.so c++/carla-bridge/libcarla-jackbridge-win64.dll | |||
| # ------------------------------------------------------------------------------------------------------------------------------------------------------ | |||
| @@ -194,6 +202,7 @@ clean: | |||
| $(MAKE) clean -C c++/carla-bridge | |||
| $(MAKE) clean -C c++/carla-discovery | |||
| $(MAKE) clean -C c++/carla-lilv | |||
| $(MAKE) clean -C c++/carla-jackbridge | |||
| $(MAKE) clean -C c++/jackmeter | |||
| $(MAKE) clean -C c++/xycontroller | |||
| rm -f *~ src/*~ src/*.pyc src/ui_*.py src/resources_rc.py | |||
| @@ -13,7 +13,7 @@ HAVE_FLUIDSYNTH = $(shell pkg-config --exists fluidsynth && echo true) | |||
| HAVE_LINUXSAMPLER = $(shell pkg-config --exists linuxsampler && echo true) | |||
| HAVE_SUIL = $(shell pkg-config --exists suil-0 && echo true) | |||
| BASE_FLAGS = -O2 -ffast-math -fomit-frame-pointer -fPIC -mtune=generic -msse -mfpmath=sse -Wall -I. -I../carla-includes | |||
| BASE_FLAGS = -O2 -ffast-math -fomit-frame-pointer -fPIC -mtune=generic -msse -mfpmath=sse -Wall -I. -I../carla-includes -I../carla-jackbridge | |||
| CARLA_CXX_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | |||
| CARLA_CXX_FLAGS += $(shell pkg-config --cflags liblo QtCore QtGui) | |||
| @@ -65,10 +65,11 @@ OBJS = \ | |||
| carla_shared.o \ | |||
| carla_threads.o \ | |||
| ladspa.o dssi.o lv2.o vst.o fluidsynth.o linuxsampler.o \ | |||
| ../carla-jackbridge/carla_jackbridge.o \ | |||
| ../carla-lilv/carla_lilv.a | |||
| ifeq ($(WANT_RTAUDIO),true) | |||
| CARLA_CXX_FLAGS += -Irtaudio-4.0.11 -Irtmidi-2.0.0 -DCARLA_ENGINE_RTAUDIO -D_FORTIFY_SOURCE=2 -DHAVE_GETTIMEOFDAY | |||
| CARLA_CXX_FLAGS += -Irtaudio-4.0.11 -Irtmidi-2.0.0 -DCARLA_ENGINE_RTAUDIO -DHAVE_GETTIMEOFDAY -D_FORTIFY_SOURCE=2 | |||
| OBJS += rtaudio-4.0.11/RtAudio.o | |||
| OBJS += rtmidi-2.0.0/RtMidi.o | |||
| endif | |||
| @@ -68,8 +68,7 @@ OBJS = \ | |||
| ../carla-lilv/carla_lilv.a | |||
| ifeq ($(WANT_RTAUDIO),true) | |||
| CARLA_CXX_FLAGS += -Irtaudio-4.0.11 -Irtmidi-2.0.0 -DCARLA_ENGINE_RTAUDIO -DHAVE_GETTIMEOFDAY | |||
| CARLA_CXX_FLAGS += -D__RTAUDIO_DEBUG__ -D__RTMIDI_DEBUG__ | |||
| CARLA_CXX_FLAGS += -Irtaudio-4.0.11 -Irtmidi-2.0.0 -DCARLA_ENGINE_RTAUDIO -DHAVE_GETTIMEOFDAY -D__RTAUDIO_DEBUG__ -D__RTMIDI_DEBUG__ | |||
| OBJS += rtaudio-4.0.11/RtAudio.o | |||
| OBJS += rtmidi-2.0.0/RtMidi.o | |||
| endif | |||
| @@ -42,7 +42,8 @@ public: | |||
| m_type = ptype; | |||
| m_hints = PLUGIN_IS_BRIDGE; | |||
| initiated = saved = false; | |||
| m_initiated = false; | |||
| m_saved = false; | |||
| info.ains = 0; | |||
| info.aouts = 0; | |||
| @@ -59,7 +60,7 @@ public: | |||
| params = nullptr; | |||
| m_thread = new CarlaPluginThread(engine, this, CarlaPluginThread::PLUGIN_THREAD_BRIDGE); | |||
| osc.thread = new CarlaPluginThread(engine, this, CarlaPluginThread::PLUGIN_THREAD_BRIDGE); | |||
| } | |||
| ~BridgePlugin() | |||
| @@ -70,24 +71,20 @@ public: | |||
| { | |||
| osc_send_hide(&osc.data); | |||
| osc_send_quit(&osc.data); | |||
| osc_clear_data(&osc.data); | |||
| } | |||
| // Wait a bit first, try safe quit else force kill | |||
| if (m_thread->isRunning()) | |||
| if (osc.thread) | |||
| { | |||
| if (m_thread->wait(2000) == false) | |||
| m_thread->quit(); | |||
| if (m_thread->isRunning() && m_thread->wait(1000) == false) | |||
| // Wait a bit first, try safe quit, then force kill | |||
| if (osc.thread->isRunning() && ! osc.thread->wait(3000)) | |||
| { | |||
| qWarning("Failed to properly stop Bridge thread"); | |||
| m_thread->terminate(); | |||
| qWarning("Failed to properly stop Plugin Bridge thread"); | |||
| osc.thread->terminate(); | |||
| } | |||
| } | |||
| delete m_thread; | |||
| osc_clear_data(&osc.data); | |||
| delete osc.thread; | |||
| } | |||
| if (info.name) | |||
| free((void*)info.name); | |||
| @@ -159,7 +156,7 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Information (per-plugin data) | |||
| double getParameterValue(uint32_t parameterId) | |||
| double getParameterValue(const uint32_t parameterId) | |||
| { | |||
| Q_ASSERT(parameterId < param.count); | |||
| @@ -515,11 +512,11 @@ public: | |||
| // } | |||
| case PluginBridgeUpdateNow: | |||
| initiated = true; | |||
| m_initiated = true; | |||
| break; | |||
| case PluginBridgeSaved: | |||
| saved = true; | |||
| m_saved = true; | |||
| break; | |||
| } | |||
| @@ -535,9 +532,6 @@ public: | |||
| params[parameterId].value = fixParameterValue(value, param.ranges[parameterId]); | |||
| if (sendGui) | |||
| osc_send_control(&osc.data, param.data[parameterId].rindex, value); | |||
| CarlaPlugin::setParameterValue(parameterId, value, sendGui, sendOsc, sendCallback); | |||
| } | |||
| @@ -580,30 +574,10 @@ public: | |||
| } | |||
| } | |||
| void setProgram(int32_t index, bool sendGui, bool sendOsc, bool sendCallback, bool block) | |||
| { | |||
| Q_ASSERT(index < (int32_t)prog.count); | |||
| if (sendGui) | |||
| osc_send_program(&osc.data, index); | |||
| CarlaPlugin::setProgram(index, sendGui, sendOsc, sendCallback, block); | |||
| } | |||
| void setMidiProgram(int32_t index, bool sendGui, bool sendOsc, bool sendCallback, bool block) | |||
| { | |||
| Q_ASSERT(index < (int32_t)midiprog.count); | |||
| if (sendGui) | |||
| osc_send_midi_program(&osc.data, index); | |||
| CarlaPlugin::setMidiProgram(index, sendGui, sendOsc, sendCallback, block); | |||
| } | |||
| // ------------------------------------------------------------------- | |||
| // Set gui stuff | |||
| void showGui(bool yesNo) | |||
| void showGui(const bool yesNo) | |||
| { | |||
| if (yesNo) | |||
| osc_send_show(&osc.data); | |||
| @@ -614,26 +588,68 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| // Plugin state | |||
| void reload() | |||
| { | |||
| } | |||
| void prepareForSave() | |||
| { | |||
| saved = false; | |||
| m_saved = false; | |||
| osc_send_configure(&osc.data, CARLA_BRIDGE_MSG_SAVE_NOW, ""); | |||
| for (int i=0; i < 100; i++) | |||
| { | |||
| if (saved) | |||
| if (m_saved) | |||
| break; | |||
| carla_msleep(100); | |||
| } | |||
| if (! saved) | |||
| if (! m_saved) | |||
| qWarning("BridgePlugin::prepareForSave() - Timeout while requesting save state"); | |||
| else | |||
| qWarning("BridgePlugin::prepareForSave() - success!"); | |||
| qDebug("BridgePlugin::prepareForSave() - success!"); | |||
| } | |||
| // ------------------------------------------------------------------- | |||
| // Post-poned events | |||
| void uiParameterChange(const uint32_t index, const double value) | |||
| { | |||
| Q_ASSERT(index < param.count); | |||
| osc_send_control(&osc.data, param.data[index].rindex, value); | |||
| } | |||
| void uiProgramChange(const uint32_t index) | |||
| { | |||
| Q_ASSERT(index < prog.count); | |||
| osc_send_program(&osc.data, index); | |||
| } | |||
| void uiMidiProgramChange(const uint32_t index) | |||
| { | |||
| Q_ASSERT(index < midiprog.count); | |||
| osc_send_midi_program(&osc.data, index); | |||
| } | |||
| void uiNoteOn(const uint8_t channel, const uint8_t note, const uint8_t velo) | |||
| { | |||
| Q_ASSERT(channel < 16); | |||
| Q_ASSERT(note < 128); | |||
| Q_ASSERT(velo > 0 && velo < 128); | |||
| // TODO | |||
| Q_UNUSED(channel); | |||
| Q_UNUSED(note); | |||
| Q_UNUSED(velo); | |||
| } | |||
| void uiNoteOff(const uint8_t channel, const uint8_t note) | |||
| { | |||
| Q_ASSERT(channel < 16); | |||
| Q_ASSERT(note < 128); | |||
| // TODO | |||
| Q_UNUSED(channel); | |||
| Q_UNUSED(note); | |||
| } | |||
| // ------------------------------------------------------------------- | |||
| @@ -653,9 +669,9 @@ public: | |||
| // ------------------------------------------------------------------- | |||
| bool init(const char* filename, const char* const name, const char* label) | |||
| bool init(const char* const filename, const char* const name, const char* const label) | |||
| { | |||
| const char* bridgeBinary = getBinaryBidgePath(m_binary); | |||
| const char* const bridgeBinary = getBinaryBidgePath(m_binary); | |||
| if (! bridgeBinary) | |||
| { | |||
| @@ -671,22 +687,22 @@ public: | |||
| // register plugin now so we can receive OSC (and wait for it) | |||
| x_engine->__bridgePluginRegister(m_id, this); | |||
| m_thread->setOscData(bridgeBinary, label, getPluginTypeString(m_type)); | |||
| m_thread->start(); | |||
| osc.thread->setOscData(bridgeBinary, label, getPluginTypeString(m_type)); | |||
| osc.thread->start(); | |||
| for (int i=0; i < 100; i++) | |||
| for (int i=0; i < 200; i++) | |||
| { | |||
| if (initiated) | |||
| if (m_initiated) | |||
| break; | |||
| carla_msleep(50); | |||
| } | |||
| if (! initiated) | |||
| if (! m_initiated) | |||
| { | |||
| // unregister so it gets handled properly | |||
| x_engine->__bridgePluginRegister(m_id, nullptr); | |||
| m_thread->terminate(); | |||
| osc.thread->terminate(); | |||
| setLastError("Timeout while waiting for a response from plugin-bridge"); | |||
| return false; | |||
| } | |||
| @@ -695,11 +711,10 @@ public: | |||
| } | |||
| private: | |||
| bool initiated; | |||
| bool saved; | |||
| const BinaryType m_binary; | |||
| CarlaPluginThread* m_thread; | |||
| bool m_initiated; | |||
| bool m_saved; | |||
| struct { | |||
| uint32_t ains, aouts; | |||
| @@ -736,19 +751,7 @@ CarlaPlugin* CarlaPlugin::newBridge(const initializer& init, BinaryType btype, P | |||
| return nullptr; | |||
| } | |||
| plugin->reload(); | |||
| if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK) | |||
| { | |||
| if (/* inputs */ ((plugin->audioInCount() != 0 && plugin->audioInCount() != 2)) || /* outputs */ ((plugin->audioOutCount() != 0 && plugin->audioOutCount() != 2))) | |||
| { | |||
| setLastError("Carla Rack Mode can only work with Stereo bridged plugins, sorry!"); | |||
| delete plugin; | |||
| return nullptr; | |||
| } | |||
| } | |||
| //plugin->reload(); | |||
| plugin->registerToOsc(); | |||
| return plugin; | |||
| @@ -79,7 +79,7 @@ int CarlaEngine::maxClientNameSize() | |||
| # ifndef BUILD_BRIDGE | |||
| if (carlaOptions.processMode != PROCESS_MODE_CONTINUOUS_RACK) | |||
| # endif | |||
| return jack_client_name_size(); | |||
| return jackbridge_client_name_size(); | |||
| #endif | |||
| return STR_MAX/2; | |||
| } | |||
| @@ -90,7 +90,7 @@ int CarlaEngine::maxPortNameSize() | |||
| # ifndef BUILD_BRIDGE | |||
| if (carlaOptions.processMode != PROCESS_MODE_CONTINUOUS_RACK) | |||
| # endif | |||
| return jack_port_name_size(); | |||
| return jackbridge_port_name_size(); | |||
| #endif | |||
| return STR_MAX; | |||
| } | |||
| @@ -572,7 +572,7 @@ CarlaEngineClient::~CarlaEngineClient() | |||
| { | |||
| #ifdef CARLA_ENGINE_JACK | |||
| if (handle.jackClient) | |||
| jack_client_close(handle.jackClient); | |||
| jackbridge_client_close(handle.jackClient); | |||
| #endif | |||
| #ifdef CARLA_ENGINE_RTAUDIO | |||
| if (handle.rtAudioPtr) | |||
| @@ -594,7 +594,7 @@ void CarlaEngineClient::activate() | |||
| { | |||
| #ifdef CARLA_ENGINE_JACK | |||
| if (handle.jackClient) | |||
| jack_activate(handle.jackClient); | |||
| jackbridge_activate(handle.jackClient); | |||
| #endif | |||
| #ifdef CARLA_ENGINE_RTAUDIO | |||
| if (handle.rtAudioPtr) | |||
| @@ -619,7 +619,7 @@ void CarlaEngineClient::deactivate() | |||
| { | |||
| #ifdef CARLA_ENGINE_JACK | |||
| if (handle.jackClient) | |||
| jack_deactivate(handle.jackClient); | |||
| jackbridge_deactivate(handle.jackClient); | |||
| #endif | |||
| #ifdef CARLA_ENGINE_RTAUDIO | |||
| if (handle.rtAudioPtr) | |||
| @@ -672,11 +672,11 @@ const CarlaEngineBasePort* CarlaEngineClient::addPort(const CarlaEnginePortType | |||
| switch (type) | |||
| { | |||
| case CarlaEnginePortTypeAudio: | |||
| portHandle.jackPort = jack_port_register(handle.jackClient, name, JACK_DEFAULT_AUDIO_TYPE, isInput ? JackPortIsInput : JackPortIsOutput, 0); | |||
| portHandle.jackPort = jackbridge_port_register(handle.jackClient, name, JACK_DEFAULT_AUDIO_TYPE, isInput ? JackPortIsInput : JackPortIsOutput, 0); | |||
| break; | |||
| case CarlaEnginePortTypeControl: | |||
| case CarlaEnginePortTypeMIDI: | |||
| portHandle.jackPort = jack_port_register(handle.jackClient, name, JACK_DEFAULT_MIDI_TYPE, isInput ? JackPortIsInput : JackPortIsOutput, 0); | |||
| portHandle.jackPort = jackbridge_port_register(handle.jackClient, name, JACK_DEFAULT_MIDI_TYPE, isInput ? JackPortIsInput : JackPortIsOutput, 0); | |||
| break; | |||
| } | |||
| } | |||
| @@ -720,7 +720,7 @@ CarlaEngineBasePort::~CarlaEngineBasePort() | |||
| # endif | |||
| { | |||
| if (handle.jackClient && handle.jackPort) | |||
| jack_port_unregister(handle.jackClient, handle.jackPort); | |||
| jackbridge_port_unregister(handle.jackClient, handle.jackPort); | |||
| } | |||
| #endif | |||
| } | |||
| @@ -746,7 +746,7 @@ float* CarlaEngineAudioPort::getJackAudioBuffer(uint32_t nframes) | |||
| return nullptr; | |||
| # endif | |||
| Q_ASSERT(handle.jackPort); | |||
| return (float*)jack_port_get_buffer(handle.jackPort, nframes); | |||
| return (float*)jackbridge_port_get_buffer(handle.jackPort, nframes); | |||
| } | |||
| #endif | |||
| @@ -774,10 +774,10 @@ void CarlaEngineControlPort::initBuffer(CarlaEngine* const engine) | |||
| #ifdef CARLA_ENGINE_JACK | |||
| if (handle.jackPort) | |||
| { | |||
| buffer = jack_port_get_buffer(handle.jackPort, engine->getBufferSize()); | |||
| buffer = jackbridge_port_get_buffer(handle.jackPort, engine->getBufferSize()); | |||
| if (! isInput) | |||
| jack_midi_clear_buffer(buffer); | |||
| jackbridge_midi_clear_buffer(buffer); | |||
| } | |||
| #endif | |||
| } | |||
| @@ -808,7 +808,7 @@ uint32_t CarlaEngineControlPort::getEventCount() | |||
| #endif | |||
| #ifdef CARLA_ENGINE_JACK | |||
| return jack_midi_get_event_count(buffer); | |||
| return jackbridge_midi_get_event_count(buffer); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| @@ -835,10 +835,10 @@ const CarlaEngineControlEvent* CarlaEngineControlPort::getEvent(uint32_t index) | |||
| #endif | |||
| #ifdef CARLA_ENGINE_JACK | |||
| static jack_midi_event_t jackEvent; | |||
| static jackbridge_midi_event_t jackEvent; | |||
| static CarlaEngineControlEvent carlaEvent; | |||
| if (jack_midi_event_get(&jackEvent, buffer, index) != 0) | |||
| if (jackbridge_midi_event_get(&jackEvent, buffer, index) != 0) | |||
| return nullptr; | |||
| memset(&carlaEvent, 0, sizeof(CarlaEngineControlEvent)); | |||
| @@ -934,28 +934,28 @@ void CarlaEngineControlPort::writeEvent(CarlaEngineControlEventType type, uint32 | |||
| data[0] = MIDI_STATUS_CONTROL_CHANGE + channel; | |||
| data[1] = controller; | |||
| data[2] = value * 127; | |||
| jack_midi_event_write(buffer, time, data, 3); | |||
| jackbridge_midi_event_write(buffer, time, data, 3); | |||
| break; | |||
| case CarlaEngineEventMidiBankChange: | |||
| data[0] = MIDI_STATUS_CONTROL_CHANGE + channel; | |||
| data[1] = MIDI_CONTROL_BANK_SELECT; | |||
| data[2] = value; | |||
| jack_midi_event_write(buffer, time, data, 3); | |||
| jackbridge_midi_event_write(buffer, time, data, 3); | |||
| break; | |||
| case CarlaEngineEventMidiProgramChange: | |||
| data[0] = MIDI_STATUS_PROGRAM_CHANGE + channel; | |||
| data[1] = value; | |||
| jack_midi_event_write(buffer, time, data, 2); | |||
| jackbridge_midi_event_write(buffer, time, data, 2); | |||
| break; | |||
| case CarlaEngineEventAllSoundOff: | |||
| data[0] = MIDI_STATUS_CONTROL_CHANGE + channel; | |||
| data[1] = MIDI_CONTROL_ALL_SOUND_OFF; | |||
| jack_midi_event_write(buffer, time, data, 2); | |||
| jackbridge_midi_event_write(buffer, time, data, 2); | |||
| break; | |||
| case CarlaEngineEventAllNotesOff: | |||
| data[0] = MIDI_STATUS_CONTROL_CHANGE + channel; | |||
| data[1] = MIDI_CONTROL_ALL_NOTES_OFF; | |||
| jack_midi_event_write(buffer, time, data, 2); | |||
| jackbridge_midi_event_write(buffer, time, data, 2); | |||
| break; | |||
| } | |||
| #endif | |||
| @@ -985,10 +985,10 @@ void CarlaEngineMidiPort::initBuffer(CarlaEngine* const engine) | |||
| #ifdef CARLA_ENGINE_JACK | |||
| if (handle.jackPort) | |||
| { | |||
| buffer = jack_port_get_buffer(handle.jackPort, engine->getBufferSize()); | |||
| buffer = jackbridge_port_get_buffer(handle.jackPort, engine->getBufferSize()); | |||
| if (! isInput) | |||
| jack_midi_clear_buffer(buffer); | |||
| jackbridge_midi_clear_buffer(buffer); | |||
| } | |||
| #endif | |||
| } | |||
| @@ -1019,7 +1019,7 @@ uint32_t CarlaEngineMidiPort::getEventCount() | |||
| #endif | |||
| #ifdef CARLA_ENGINE_JACK | |||
| return jack_midi_get_event_count(buffer); | |||
| return jackbridge_midi_get_event_count(buffer); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| @@ -1047,10 +1047,10 @@ const CarlaEngineMidiEvent* CarlaEngineMidiPort::getEvent(uint32_t index) | |||
| #endif | |||
| #ifdef CARLA_ENGINE_JACK | |||
| static jack_midi_event_t jackEvent; | |||
| static jackbridge_midi_event_t jackEvent; | |||
| static CarlaEngineMidiEvent carlaEvent; | |||
| if (jack_midi_event_get(&jackEvent, buffer, index) == 0 && jackEvent.size <= 4) | |||
| if (jackbridge_midi_event_get(&jackEvent, buffer, index) == 0 && jackEvent.size <= 4) | |||
| { | |||
| carlaEvent.time = jackEvent.time; | |||
| carlaEvent.size = jackEvent.size; | |||
| @@ -1095,7 +1095,7 @@ void CarlaEngineMidiPort::writeEvent(uint32_t time, const uint8_t* data, uint8_t | |||
| #endif | |||
| #ifdef CARLA_ENGINE_JACK | |||
| jack_midi_event_write(buffer, time, data, size); | |||
| jackbridge_midi_event_write(buffer, time, data, size); | |||
| #endif | |||
| } | |||
| @@ -23,8 +23,7 @@ | |||
| #include "carla_threads.h" | |||
| #ifdef CARLA_ENGINE_JACK | |||
| #include <jack/jack.h> | |||
| #include <jack/midiport.h> | |||
| #include "carla_jackbridge.h" | |||
| #endif | |||
| #ifdef CARLA_ENGINE_RTAUDIO | |||
| @@ -110,41 +110,41 @@ bool CarlaEngineJack::init(const char* const clientName) | |||
| { | |||
| qDebug("CarlaEngineJack::init(\"%s\")", clientName); | |||
| client = jack_client_open(clientName, JackNullOption, nullptr); | |||
| client = jackbridge_client_open(clientName, JackNullOption, nullptr); | |||
| state = JackTransportStopped; | |||
| freewheel = false; | |||
| procThread = nullptr; | |||
| if (client) | |||
| { | |||
| sampleRate = jack_get_sample_rate(client); | |||
| bufferSize = jack_get_buffer_size(client); | |||
| sampleRate = jackbridge_get_sample_rate(client); | |||
| bufferSize = jackbridge_get_buffer_size(client); | |||
| jack_set_sample_rate_callback(client, carla_jack_srate_callback, this); | |||
| jack_set_buffer_size_callback(client, carla_jack_bufsize_callback, this); | |||
| jack_set_freewheel_callback(client, carla_jack_freewheel_callback, this); | |||
| jack_set_process_callback(client, carla_jack_process_callback, this); | |||
| jack_on_shutdown(client, carla_jack_shutdown_callback, this); | |||
| jackbridge_set_sample_rate_callback(client, carla_jack_srate_callback, this); | |||
| jackbridge_set_buffer_size_callback(client, carla_jack_bufsize_callback, this); | |||
| jackbridge_set_freewheel_callback(client, carla_jack_freewheel_callback, this); | |||
| jackbridge_set_process_callback(client, carla_jack_process_callback, this); | |||
| jackbridge_on_shutdown(client, carla_jack_shutdown_callback, this); | |||
| #ifndef BUILD_BRIDGE | |||
| if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK) | |||
| { | |||
| rackJackPorts[rackPortAudioIn1] = jack_port_register(client, "in1", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0); | |||
| rackJackPorts[rackPortAudioIn2] = jack_port_register(client, "in2", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0); | |||
| rackJackPorts[rackPortAudioOut1] = jack_port_register(client, "out1", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); | |||
| rackJackPorts[rackPortAudioOut2] = jack_port_register(client, "out2", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); | |||
| rackJackPorts[rackPortControlIn] = jack_port_register(client, "control-in", JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0); | |||
| rackJackPorts[rackPortControlOut] = jack_port_register(client, "control-out", JACK_DEFAULT_MIDI_TYPE, JackPortIsOutput, 0); | |||
| rackJackPorts[rackPortMidiIn] = jack_port_register(client, "midi-in", JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0); | |||
| rackJackPorts[rackPortMidiOut] = jack_port_register(client, "midi-out", JACK_DEFAULT_MIDI_TYPE, JackPortIsOutput, 0); | |||
| rackJackPorts[rackPortAudioIn1] = jackbridge_port_register(client, "in1", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0); | |||
| rackJackPorts[rackPortAudioIn2] = jackbridge_port_register(client, "in2", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0); | |||
| rackJackPorts[rackPortAudioOut1] = jackbridge_port_register(client, "out1", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); | |||
| rackJackPorts[rackPortAudioOut2] = jackbridge_port_register(client, "out2", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); | |||
| rackJackPorts[rackPortControlIn] = jackbridge_port_register(client, "control-in", JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0); | |||
| rackJackPorts[rackPortControlOut] = jackbridge_port_register(client, "control-out", JACK_DEFAULT_MIDI_TYPE, JackPortIsOutput, 0); | |||
| rackJackPorts[rackPortMidiIn] = jackbridge_port_register(client, "midi-in", JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0); | |||
| rackJackPorts[rackPortMidiOut] = jackbridge_port_register(client, "midi-out", JACK_DEFAULT_MIDI_TYPE, JackPortIsOutput, 0); | |||
| } | |||
| #endif | |||
| if (jack_activate(client) == 0) | |||
| if (jackbridge_activate(client) == 0) | |||
| { | |||
| // set client name, fixed for OSC usage | |||
| // FIXME - put this in shared? | |||
| char* fixedName = strdup(jack_get_client_name(client)); | |||
| char* fixedName = strdup(jackbridge_get_client_name(client)); | |||
| for (size_t i=0; i < strlen(fixedName); i++) | |||
| { | |||
| if (! (std::isalpha(fixedName[i]) || std::isdigit(fixedName[i]))) | |||
| @@ -181,23 +181,23 @@ bool CarlaEngineJack::close() | |||
| name = nullptr; | |||
| } | |||
| if (jack_deactivate(client) == 0) | |||
| if (jackbridge_deactivate(client) == 0) | |||
| { | |||
| #ifndef BUILD_BRIDGE | |||
| if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK) | |||
| { | |||
| jack_port_unregister(client, rackJackPorts[rackPortAudioIn1]); | |||
| jack_port_unregister(client, rackJackPorts[rackPortAudioIn2]); | |||
| jack_port_unregister(client, rackJackPorts[rackPortAudioOut1]); | |||
| jack_port_unregister(client, rackJackPorts[rackPortAudioOut2]); | |||
| jack_port_unregister(client, rackJackPorts[rackPortControlIn]); | |||
| jack_port_unregister(client, rackJackPorts[rackPortControlOut]); | |||
| jack_port_unregister(client, rackJackPorts[rackPortMidiIn]); | |||
| jack_port_unregister(client, rackJackPorts[rackPortMidiOut]); | |||
| jackbridge_port_unregister(client, rackJackPorts[rackPortAudioIn1]); | |||
| jackbridge_port_unregister(client, rackJackPorts[rackPortAudioIn2]); | |||
| jackbridge_port_unregister(client, rackJackPorts[rackPortAudioOut1]); | |||
| jackbridge_port_unregister(client, rackJackPorts[rackPortAudioOut2]); | |||
| jackbridge_port_unregister(client, rackJackPorts[rackPortControlIn]); | |||
| jackbridge_port_unregister(client, rackJackPorts[rackPortControlOut]); | |||
| jackbridge_port_unregister(client, rackJackPorts[rackPortMidiIn]); | |||
| jackbridge_port_unregister(client, rackJackPorts[rackPortMidiOut]); | |||
| } | |||
| #endif | |||
| if (jack_client_close(client) == 0) | |||
| if (jackbridge_client_close(client) == 0) | |||
| { | |||
| client = nullptr; | |||
| return true; | |||
| @@ -239,8 +239,8 @@ CarlaEngineClient* CarlaEngineJack::addClient(CarlaPlugin* const plugin) | |||
| else if (carlaOptions.processMode == PROCESS_MODE_MULTIPLE_CLIENTS) | |||
| #endif | |||
| { | |||
| handle.jackClient = jack_client_open(plugin->name(), JackNullOption, nullptr); | |||
| jack_set_process_callback(handle.jackClient, carla_jack_process_callback_plugin, plugin); | |||
| handle.jackClient = jackbridge_client_open(plugin->name(), JackNullOption, nullptr); | |||
| jackbridge_set_process_callback(handle.jackClient, carla_jack_process_callback_plugin, plugin); | |||
| } | |||
| //else if (carla_options.process_mode == PROCESS_MODE_CONTINUOUS_RACK) | |||
| //{ | |||
| @@ -279,7 +279,7 @@ void CarlaEngineJack::handleProcessCallback(uint32_t nframes) | |||
| if (maxPluginNumber == 0) | |||
| return; | |||
| state = jack_transport_query(client, &pos); | |||
| state = jackbridge_transport_query(client, &pos); | |||
| timeInfo.playing = (state != JackTransportStopped); | |||
| @@ -328,14 +328,14 @@ void CarlaEngineJack::handleProcessCallback(uint32_t nframes) | |||
| else if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK) | |||
| { | |||
| // get buffers from jack | |||
| float* audioIn1 = (float*)jack_port_get_buffer(rackJackPorts[rackPortAudioIn1], nframes); | |||
| float* audioIn2 = (float*)jack_port_get_buffer(rackJackPorts[rackPortAudioIn2], nframes); | |||
| float* audioOut1 = (float*)jack_port_get_buffer(rackJackPorts[rackPortAudioOut1], nframes); | |||
| float* audioOut2 = (float*)jack_port_get_buffer(rackJackPorts[rackPortAudioOut2], nframes); | |||
| void* controlIn = jack_port_get_buffer(rackJackPorts[rackPortControlIn], nframes); | |||
| void* controlOut = jack_port_get_buffer(rackJackPorts[rackPortControlOut], nframes); | |||
| void* midiIn = jack_port_get_buffer(rackJackPorts[rackPortMidiIn], nframes); | |||
| void* midiOut = jack_port_get_buffer(rackJackPorts[rackPortMidiOut], nframes); | |||
| float* audioIn1 = (float*)jackbridge_port_get_buffer(rackJackPorts[rackPortAudioIn1], nframes); | |||
| float* audioIn2 = (float*)jackbridge_port_get_buffer(rackJackPorts[rackPortAudioIn2], nframes); | |||
| float* audioOut1 = (float*)jackbridge_port_get_buffer(rackJackPorts[rackPortAudioOut1], nframes); | |||
| float* audioOut2 = (float*)jackbridge_port_get_buffer(rackJackPorts[rackPortAudioOut2], nframes); | |||
| void* controlIn = jackbridge_port_get_buffer(rackJackPorts[rackPortControlIn], nframes); | |||
| void* controlOut = jackbridge_port_get_buffer(rackJackPorts[rackPortControlOut], nframes); | |||
| void* midiIn = jackbridge_port_get_buffer(rackJackPorts[rackPortMidiIn], nframes); | |||
| void* midiOut = jackbridge_port_get_buffer(rackJackPorts[rackPortMidiOut], nframes); | |||
| // assert buffers | |||
| Q_ASSERT(audioIn1); | |||
| @@ -363,14 +363,14 @@ void CarlaEngineJack::handleProcessCallback(uint32_t nframes) | |||
| // initialize control input | |||
| memset(rackControlEventsIn, 0, sizeof(CarlaEngineControlEvent)*MAX_ENGINE_CONTROL_EVENTS); | |||
| { | |||
| jack_midi_event_t jackEvent; | |||
| const uint32_t jackEventCount = jack_midi_get_event_count(controlIn); | |||
| jackbridge_midi_event_t jackEvent; | |||
| const uint32_t jackEventCount = jackbridge_midi_get_event_count(controlIn); | |||
| uint32_t carlaEventIndex = 0; | |||
| for (uint32_t jackEventIndex=0; jackEventIndex < jackEventCount; jackEventIndex++) | |||
| { | |||
| if (jack_midi_event_get(&jackEvent, controlIn, jackEventIndex) != 0) | |||
| if (jackbridge_midi_event_get(&jackEvent, controlIn, jackEventIndex) != 0) | |||
| continue; | |||
| CarlaEngineControlEvent* const carlaEvent = &rackControlEventsIn[carlaEventIndex++]; | |||
| @@ -420,9 +420,9 @@ void CarlaEngineJack::handleProcessCallback(uint32_t nframes) | |||
| memset(rackMidiEventsIn, 0, sizeof(CarlaEngineMidiEvent)*MAX_ENGINE_MIDI_EVENTS); | |||
| { | |||
| uint32_t i = 0, j = 0; | |||
| jack_midi_event_t jackEvent; | |||
| jackbridge_midi_event_t jackEvent; | |||
| while (jack_midi_event_get(&jackEvent, midiIn, j++) == 0) | |||
| while (jackbridge_midi_event_get(&jackEvent, midiIn, j++) == 0) | |||
| { | |||
| if (i == MAX_ENGINE_MIDI_EVENTS) | |||
| break; | |||
| @@ -525,7 +525,7 @@ void CarlaEngineJack::handleProcessCallback(uint32_t nframes) | |||
| // output control | |||
| { | |||
| jack_midi_clear_buffer(controlOut); | |||
| jackbridge_midi_clear_buffer(controlOut); | |||
| for (unsigned short i=0; i < MAX_ENGINE_CONTROL_EVENTS; i++) | |||
| { | |||
| @@ -544,28 +544,28 @@ void CarlaEngineJack::handleProcessCallback(uint32_t nframes) | |||
| data[0] = MIDI_STATUS_CONTROL_CHANGE + event->channel; | |||
| data[1] = event->controller; | |||
| data[2] = event->value * 127; | |||
| jack_midi_event_write(controlOut, event->time, data, 3); | |||
| jackbridge_midi_event_write(controlOut, event->time, data, 3); | |||
| break; | |||
| case CarlaEngineEventMidiBankChange: | |||
| data[0] = MIDI_STATUS_CONTROL_CHANGE + event->channel; | |||
| data[1] = MIDI_CONTROL_BANK_SELECT; | |||
| data[2] = event->value; | |||
| jack_midi_event_write(controlOut, event->time, data, 3); | |||
| jackbridge_midi_event_write(controlOut, event->time, data, 3); | |||
| break; | |||
| case CarlaEngineEventMidiProgramChange: | |||
| data[0] = MIDI_STATUS_PROGRAM_CHANGE + event->channel; | |||
| data[1] = event->value; | |||
| jack_midi_event_write(controlOut, event->time, data, 2); | |||
| jackbridge_midi_event_write(controlOut, event->time, data, 2); | |||
| break; | |||
| case CarlaEngineEventAllSoundOff: | |||
| data[0] = MIDI_STATUS_CONTROL_CHANGE + event->channel; | |||
| data[1] = MIDI_CONTROL_ALL_SOUND_OFF; | |||
| jack_midi_event_write(controlOut, event->time, data, 2); | |||
| jackbridge_midi_event_write(controlOut, event->time, data, 2); | |||
| break; | |||
| case CarlaEngineEventAllNotesOff: | |||
| data[0] = MIDI_STATUS_CONTROL_CHANGE + event->channel; | |||
| data[1] = MIDI_CONTROL_ALL_NOTES_OFF; | |||
| jack_midi_event_write(controlOut, event->time, data, 2); | |||
| jackbridge_midi_event_write(controlOut, event->time, data, 2); | |||
| break; | |||
| } | |||
| } | |||
| @@ -573,14 +573,14 @@ void CarlaEngineJack::handleProcessCallback(uint32_t nframes) | |||
| // output midi | |||
| { | |||
| jack_midi_clear_buffer(midiOut); | |||
| jackbridge_midi_clear_buffer(midiOut); | |||
| for (unsigned short i=0; i < MAX_ENGINE_MIDI_EVENTS; i++) | |||
| { | |||
| if (rackMidiEventsOut[i].size == 0) | |||
| break; | |||
| jack_midi_event_write(midiOut, rackMidiEventsOut[i].time, rackMidiEventsOut[i].data, rackMidiEventsOut[i].size); | |||
| jackbridge_midi_event_write(midiOut, rackMidiEventsOut[i].time, rackMidiEventsOut[i].data, rackMidiEventsOut[i].size); | |||
| } | |||
| } | |||
| } | |||
| @@ -1654,7 +1654,7 @@ public: | |||
| if (sendGui) | |||
| { | |||
| if (note) | |||
| if (note > 0) | |||
| uiNoteOn(channel, note, velo); | |||
| else | |||
| uiNoteOff(channel, note); | |||
| @@ -1061,8 +1061,7 @@ public: | |||
| fluid_synth_noteoff(f_synth, channel, note); | |||
| if (channel == m_ctrlInChannel) | |||
| postponeEvent(PluginPostEventNoteOff, channel, note, 0.0); | |||
| postponeEvent(PluginPostEventNoteOff, channel, note, 0.0); | |||
| } | |||
| else if (MIDI_IS_STATUS_NOTE_ON(status)) | |||
| { | |||
| @@ -1071,8 +1070,7 @@ public: | |||
| fluid_synth_noteon(f_synth, channel, note, velo); | |||
| if (channel == m_ctrlInChannel) | |||
| postponeEvent(PluginPostEventNoteOn, channel, note, velo); | |||
| postponeEvent(PluginPostEventNoteOn, channel, note, velo); | |||
| } | |||
| else if (MIDI_IS_STATUS_AFTERTOUCH(status)) | |||
| { | |||
| @@ -341,8 +341,7 @@ public: | |||
| midiInputPort->DispatchNoteOff(note, 0, channel, time); | |||
| if (channel == m_ctrlInChannel) | |||
| postponeEvent(PluginPostEventNoteOff, channel, note, 0.0); | |||
| postponeEvent(PluginPostEventNoteOff, channel, note, 0.0); | |||
| } | |||
| else if (MIDI_IS_STATUS_NOTE_ON(status)) | |||
| { | |||
| @@ -351,8 +350,7 @@ public: | |||
| midiInputPort->DispatchNoteOn(note, velo, channel, time); | |||
| if (channel == m_ctrlInChannel) | |||
| postponeEvent(PluginPostEventNoteOn, channel, note, velo); | |||
| postponeEvent(PluginPostEventNoteOn, channel, note, velo); | |||
| } | |||
| else if (MIDI_IS_STATUS_AFTERTOUCH(status)) | |||
| { | |||
| @@ -29,6 +29,7 @@ SOURCES = \ | |||
| ../vst.cpp \ | |||
| ../fluidsynth.cpp \ | |||
| ../linuxsampler.cpp | |||
| # ../../carla-jackbridge/carla_jackbridge.cpp | |||
| HEADERS = \ | |||
| ../carla_backend.h \ | |||
| @@ -38,6 +39,7 @@ HEADERS = \ | |||
| ../carla_plugin.h \ | |||
| ../carla_shared.h \ | |||
| ../carla_threads.h \ | |||
| ../../carla-jackbridge/carla_jackbridge.h \ | |||
| ../../carla-includes/carla_includes.h \ | |||
| ../../carla-includes/carla_lib_includes.h \ | |||
| ../../carla-includes/carla_osc_includes.h \ | |||
| @@ -52,6 +54,7 @@ HEADERS = \ | |||
| ../../carla-includes/lv2_rdf.h | |||
| INCLUDEPATH = .. \ | |||
| ../../carla-jackbridge \ | |||
| ../../carla-includes | |||
| DEFINES = QTCREATOR_TEST | |||
| @@ -62,6 +65,7 @@ DEFINES += CARLA_ENGINE_LV2 | |||
| DEFINES += HAVE_SUIL | |||
| DEFINES += WANT_FLUIDSYNTH WANT_LINUXSAMPLER | |||
| LIBS = ../../carla-lilv/carla_lilv.a -ldl | |||
| LIBS += -L../../carla-jackbridge -lcarla-jackbridge-native | |||
| INCLUDEPATH += ../rtaudio-4.0.11 | |||
| INCLUDEPATH += ../rtmidi-2.0.0 | |||
| @@ -5,15 +5,13 @@ | |||
| # | |||
| CXX ?= g++ | |||
| WINECXX ?= wineg++ | |||
| STRIP ?= strip | |||
| BASE_FLAGS = -O2 -ffast-math -fomit-frame-pointer -mtune=generic -msse -mfpmath=sse -Wall | |||
| 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 #-DNDEBUG -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT | |||
| BUILD_FLAGS += -DBUILD_BRIDGE -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT # -DNDEBUG | |||
| BUILD_FLAGS += -DVESTIGE_HEADER -I../carla-includes/vestige # Comment this line to not use vestige header | |||
| 32BIT_FLAGS = -m32 | |||
| @@ -22,23 +20,18 @@ LINK_FLAGS = $(shell pkg-config --libs liblo QtCore) $(LDFLAGS) | |||
| # -------------------------------------------------------------- | |||
| BUILD_PLUGIN_FLAGS = $(BUILD_FLAGS) -DBUILD_BRIDGE_PLUGIN -DCARLA_ENGINE_JACK -I../carla-backend $(shell pkg-config --cflags jack) | |||
| LINK_PLUGIN_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs jack) | |||
| 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) $(shell pkg-config --cflags QtGui) | |||
| 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 QtGui) -ldl | |||
| 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) $(shell pkg-config --cflags QtGui) | |||
| WIN_32BIT_FLAGS = $(32BIT_FLAGS) | |||
| WIN_64BIT_FLAGS = $(64BIT_FLAGS) | |||
| WIN_LINK_FLAGS = $(LINK_PLUGIN_FLAGS) $(shell pkg-config --libs QtGui) -static -mwindows | |||
| WINE_BUILD_FLAGS = $(BUILD_PLUGIN_FLAGS) -DQTCREATOR_TEST # -fpermissive | |||
| WINE_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32/wine -L/usr/lib/i386-linux-gnu/wine | |||
| WINE_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64/wine -L/usr/lib/x86_64-linux-gnu/wine | |||
| WINE_LINK_FLAGS = $(LINK_PLUGIN_FLAGS) -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 | |||
| # -------------------------------------------------------------- | |||
| @@ -92,8 +85,6 @@ posix32: carla-bridge-posix32 | |||
| posix64: carla-bridge-posix64 | |||
| win32: carla-bridge-win32.exe | |||
| win64: carla-bridge-win64.exe | |||
| wine32: carla-bridge-win32.exe.so | |||
| wine64: carla-bridge-win64.exe.so | |||
| # -------------------------------------------------------------- | |||
| # ui_lv2-gtk2 | |||
| @@ -201,9 +192,9 @@ carla_bridge_osc__vst-x11.o: carla_bridge_osc.cpp | |||
| # posix32 | |||
| OBJS_POSIX32 = \ | |||
| carla_bridge_plugin__posix32.o carla_bridge_osc__posix32.o \ | |||
| 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_32bit.a | |||
| ladspa__posix32.o dssi__posix32.o lv2__posix32.o vst__posix32.o ../carla-lilv/carla_lilv_posix32.a | |||
| carla-bridge-posix32: $(OBJS_POSIX32) | |||
| $(CXX) $^ $(POSIX_LINK_FLAGS) $(POSIX_32BIT_FLAGS) -o $@ && $(STRIP) $@ | |||
| @@ -214,6 +205,9 @@ carla_bridge_plugin__posix32.o: carla_bridge_plugin.cpp | |||
| 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 $@ | |||
| @@ -242,9 +236,9 @@ vst__posix32.o: ../carla-backend/vst.cpp | |||
| # posix64 | |||
| OBJS_POSIX64 = \ | |||
| carla_bridge_plugin__posix64.o carla_bridge_osc__posix64.o \ | |||
| 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_64bit.a | |||
| ladspa__posix64.o dssi__posix64.o lv2__posix64.o vst__posix64.o ../carla-lilv/carla_lilv_posix64.a | |||
| carla-bridge-posix64: $(OBJS_POSIX64) | |||
| $(CXX) $^ $(POSIX_LINK_FLAGS) $(POSIX_64BIT_FLAGS) -o $@ && $(STRIP) $@ | |||
| @@ -255,6 +249,9 @@ carla_bridge_plugin__posix64.o: carla_bridge_plugin.cpp | |||
| 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 $@ | |||
| @@ -280,94 +277,106 @@ vst__posix64.o: ../carla-backend/vst.cpp | |||
| $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | |||
| # -------------------------------------------------------------- | |||
| # wine32 | |||
| # win32 | |||
| OBJS_WINE32 = \ | |||
| carla_bridge_plugin__wine32.o carla_bridge_osc__wine32.o \ | |||
| carla_engine__wine32.o carla_engine_jack__wine32.o carla_shared__wine32.o carla_threads__wine32.o \ | |||
| ladspa__wine32.o dssi__wine32.o lv2__wine32.o vst__wine32.o ../carla-lilv/carla_lilv_32bit.a | |||
| 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-bridge-win32.exe.so: $(OBJS_WINE32) | |||
| $(WINECXX) $^ $(WINE_LINK_FLAGS) $(WINE_32BIT_FLAGS) -o carla-bridge-win32 && $(STRIP) $@ | |||
| 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 $@ && $(STRIP) $@ | |||
| carla_bridge_plugin__wine32.o: carla_bridge_plugin.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||
| carla_bridge_plugin__win32.o: carla_bridge_plugin.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
| carla_bridge_osc__wine32.o: carla_bridge_osc.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||
| carla_bridge_osc__win32.o: carla_bridge_osc.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
| carla_engine__wine32.o: ../carla-backend/carla_engine.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_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__wine32.o: ../carla-backend/carla_engine_jack.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_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__wine32.o: ../carla-backend/carla_shared.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||
| carla_shared__win32.o: ../carla-backend/carla_shared.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
| carla_threads__wine32.o: ../carla-backend/carla_threads.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||
| carla_threads__win32.o: ../carla-backend/carla_threads.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
| ladspa__wine32.o: ../carla-backend/ladspa.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||
| ladspa__win32.o: ../carla-backend/ladspa.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
| dssi__wine32.o: ../carla-backend/dssi.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||
| dssi__win32.o: ../carla-backend/dssi.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
| lv2__wine32.o: ../carla-backend/lv2.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||
| lv2__win32.o: ../carla-backend/lv2.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
| vst__wine32.o: ../carla-backend/vst.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||
| vst__win32.o: ../carla-backend/vst.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
| # -------------------------------------------------------------- | |||
| # wine64 | |||
| # win64 | |||
| OBJS_WINE64 = \ | |||
| carla_bridge_plugin__wine64.o carla_bridge_osc__wine64.o \ | |||
| carla_engine__wine64.o carla_engine_jack__wine64.o carla_shared__wine64.o carla_threads__wine64.o \ | |||
| ladspa__wine64.o dssi__wine64.o lv2__wine64.o vst__wine64.o ../carla-lilv/carla_lilv_64bit.a | |||
| 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-bridge-win64.exe.so: $(OBJS_WINE64) | |||
| $(WINECXX) $^ $(WINE_LINK_FLAGS) $(WINE_64BIT_FLAGS) -o carla-bridge-win64 && $(STRIP) $@ | |||
| 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 $@ && $(STRIP) $@ | |||
| carla_bridge_plugin__wine64.o: carla_bridge_plugin.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||
| carla_bridge_plugin__win64.o: carla_bridge_plugin.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
| carla_bridge_osc__wine64.o: carla_bridge_osc.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||
| carla_bridge_osc__win64.o: carla_bridge_osc.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
| carla_engine__wine64.o: ../carla-backend/carla_engine.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_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__wine64.o: ../carla-backend/carla_engine_jack.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_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__wine64.o: ../carla-backend/carla_shared.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||
| carla_shared__win64.o: ../carla-backend/carla_shared.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
| carla_threads__wine64.o: ../carla-backend/carla_threads.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||
| carla_threads__win64.o: ../carla-backend/carla_threads.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
| ladspa__wine64.o: ../carla-backend/ladspa.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||
| ladspa__win64.o: ../carla-backend/ladspa.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
| dssi__wine64.o: ../carla-backend/dssi.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||
| dssi__win64.o: ../carla-backend/dssi.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
| lv2__wine64.o: ../carla-backend/lv2.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||
| lv2__win64.o: ../carla-backend/lv2.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
| vst__wine64.o: ../carla-backend/vst.cpp | |||
| $(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||
| vst__win64.o: ../carla-backend/vst.cpp | |||
| $(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
| # -------------------------------------------------------------- | |||
| ../carla-lilv/carla_lilv_32bit.a: | |||
| $(MAKE) -C ../carla-lilv 32bit | |||
| ../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-jackbridge/libcarla-jackbridge-win32.dll: | |||
| $(MAKE) -C ../carla-jackbridge win32 | |||
| ../carla-lilv/carla_lilv_64bit.a: | |||
| $(MAKE) -C ../carla-lilv 64bit | |||
| ../carla-jackbridge/libcarla-jackbridge-win64.dll: | |||
| $(MAKE) -C ../carla-jackbridge win64 | |||
| # -------------------------------------------------------------- | |||
| @@ -384,11 +384,16 @@ public: | |||
| Q_ASSERT(client); | |||
| m_client = client; | |||
| m_client->sendOscUpdate(); | |||
| m_client->sendOscBridgeUpdate(); | |||
| if (showGui) | |||
| { | |||
| show(); | |||
| } | |||
| else | |||
| { | |||
| m_client->sendOscUpdate(); | |||
| m_client->sendOscBridgeUpdate(); | |||
| } | |||
| #ifdef __WINE__ | |||
| Q_ASSERT(! closeNow); | |||
| @@ -710,6 +715,7 @@ int main(int argc, char* argv[]) | |||
| /// Init plugin | |||
| short id = engine.addPlugin(itype, filename, name, label); | |||
| int ret; | |||
| if (id >= 0 && id < CarlaBackend::MAX_PLUGINS) | |||
| { | |||
| @@ -727,14 +733,17 @@ int main(int argc, char* argv[]) | |||
| plugin->setActive(true, false, false); | |||
| plugin->showGui(true); | |||
| } | |||
| ret = 0; | |||
| } | |||
| else | |||
| { | |||
| qWarning("Plugin failed to load, error was:\n%s", CarlaBackend::getLastError()); | |||
| return 1; | |||
| ret = 1; | |||
| } | |||
| toolkit.exec(&client, !useOsc); | |||
| if (ret == 0) | |||
| toolkit.exec(&client, !useOsc); | |||
| engine.removeAllPlugins(); | |||
| engine.close(); | |||
| @@ -749,7 +758,7 @@ int main(int argc, char* argv[]) | |||
| // Close toolkit | |||
| toolkit.quit(); | |||
| return 0; | |||
| return ret; | |||
| } | |||
| #endif // BUILD_BRIDGE_PLUGIN | |||
| @@ -90,10 +90,10 @@ public: | |||
| g_timeout_add(50, gtk_ui_timeout, this); | |||
| g_signal_connect(window, "destroy", G_CALLBACK(gtk_ui_destroy), this); | |||
| m_client->sendOscUpdate(); | |||
| if (showGui) | |||
| show(); | |||
| else | |||
| m_client->sendOscUpdate(); | |||
| // Main loop | |||
| gtk_main(); | |||
| @@ -90,10 +90,10 @@ public: | |||
| g_timeout_add(50, gtk_ui_timeout, this); | |||
| g_signal_connect(window, "destroy", G_CALLBACK(gtk_ui_destroy), this); | |||
| m_client->sendOscUpdate(); | |||
| if (showGui) | |||
| show(); | |||
| else | |||
| m_client->sendOscUpdate(); | |||
| // Main loop | |||
| gtk_main(); | |||
| @@ -151,10 +151,10 @@ public: | |||
| app->connect(window, SIGNAL(finished(int)), app, SLOT(quit())); | |||
| m_client->sendOscUpdate(); | |||
| if (showGui) | |||
| show(); | |||
| else | |||
| m_client->sendOscUpdate(); | |||
| // Main loop | |||
| app->exec(client); | |||
| @@ -5,21 +5,19 @@ | |||
| # | |||
| CXX ?= g++ | |||
| WINECXX ?= wineg++ | |||
| STRIP ?= strip | |||
| BASE_FLAGS = -O2 -ffast-math -fomit-frame-pointer -mtune=generic -msse -mfpmath=sse | |||
| BASE_FLAGS += -Wall -I../carla-backend -I../carla-includes | |||
| BASE_FLAGS = -O2 -ffast-math -fomit-frame-pointer -mtune=generic -msse -mfpmath=sse -Wall | |||
| BASE_FLAGS += -I../carla-backend -I../carla-includes | |||
| BUILD_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | |||
| BUILD_FLAGS += $(shell pkg-config --cflags QtCore) | |||
| BUILD_FLAGS += -DNDEBUG -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT | |||
| BUILD_FLAGS += -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT # -DNDEBUG | |||
| BUILD_FLAGS += -DVESTIGE_HEADER # Comment this line to not use vestige header | |||
| 32BIT_FLAGS = -m32 | |||
| 64BIT_FLAGS = -m64 | |||
| LINK_FLAGS = $(LDFLAGS) | |||
| LINK_FLAGS += $(shell pkg-config --libs QtCore) | |||
| LINK_FLAGS = $(shell pkg-config --libs QtCore) $(LDFLAGS) | |||
| ifneq ($(NATIVE),) | |||
| BUILD_FLAGS += -DBUILD_NATIVE | |||
| @@ -45,11 +43,6 @@ WIN_32BIT_FLAGS = $(32BIT_FLAGS) | |||
| WIN_64BIT_FLAGS = $(64BIT_FLAGS) | |||
| WIN_LINK_FLAGS = $(LINK_FLAGS) -static -mwindows | |||
| WINE_BUILD_FLAGS = $(BUILD_FLAGS) # -fpermissive | |||
| WINE_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32/wine -L/usr/lib/i386-linux-gnu/wine | |||
| WINE_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64/wine -L/usr/lib/x86_64-linux-gnu/wine | |||
| WINE_LINK_FLAGS = $(LINK_FLAGS) -ldl | |||
| # -------------------------------------------------------------- | |||
| all: carla-discovery-native | |||
| @@ -58,43 +51,40 @@ posix32: carla-discovery-posix32 | |||
| posix64: carla-discovery-posix64 | |||
| win32: carla-discovery-win32.exe | |||
| win64: carla-discovery-win64.exe | |||
| wine32: carla-discovery-win32.exe.so | |||
| wine64: carla-discovery-win64.exe.so | |||
| # -------------------------------------------------------------- | |||
| 32BIT_OBJS = carla-discovery.cpp ../carla-lilv/carla_lilv_32bit.a | |||
| 64BIT_OBJS = carla-discovery.cpp ../carla-lilv/carla_lilv_64bit.a | |||
| OBJS = carla-discovery.cpp | |||
| carla-discovery-native: carla-discovery.cpp ../carla-lilv/carla_lilv.a | |||
| $(CXX) $^ $(BUILD_FLAGS) $(LINK_FLAGS) -o $@ && $(STRIP) $@ | |||
| carla-discovery-posix32: $(32BIT_OBJS) | |||
| carla-discovery-posix32: $(OBJS) ../carla-lilv/carla_lilv_posix32.a | |||
| $(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ && $(STRIP) $@ | |||
| carla-discovery-posix64: $(64BIT_OBJS) | |||
| carla-discovery-posix64: $(OBJS) ../carla-lilv/carla_lilv_posix64.a | |||
| $(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ && $(STRIP) $@ | |||
| carla-discovery-win32.exe: $(32BIT_OBJS) | |||
| carla-discovery-win32.exe: $(OBJS) ../carla-lilv/carla_lilv_win32.a | |||
| $(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) $(WIN_LINK_FLAGS) -o $@ && $(STRIP) $@ | |||
| carla-discovery-win64.exe: $(64BIT_OBJS) | |||
| carla-discovery-win64.exe: $(OBJS) ../carla-lilv/carla_lilv_win64.a | |||
| $(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) $(WIN_LINK_FLAGS) -o $@ && $(STRIP) $@ | |||
| carla-discovery-win32.exe.so: $(32BIT_OBJS) | |||
| $(WINECXX) $^ $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) $(WINE_LINK_FLAGS) -o carla-discovery-win32.exe && $(STRIP) $@ | |||
| carla-discovery-win64.exe.so: $(64BIT_OBJS) | |||
| $(WINECXX) $^ $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) $(WINE_LINK_FLAGS) -o carla-discovery-win64.exe && $(STRIP) $@ | |||
| ../carla-lilv/carla_lilv.a: | |||
| $(MAKE) -C ../carla-lilv | |||
| ../carla-lilv/carla_lilv_32bit.a: | |||
| $(MAKE) -C ../carla-lilv 32bit | |||
| ../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_64bit.a: | |||
| $(MAKE) -C ../carla-lilv 64bit | |||
| ../carla-lilv/carla_lilv_win64.a: | |||
| $(MAKE) -C ../carla-lilv win64 | |||
| # -------------------------------------------------------------- | |||
| @@ -5,11 +5,9 @@ | |||
| # | |||
| CXX ?= g++ | |||
| WINECXX ?= wineg++ | |||
| BASE_FLAGS = -O0 -g | |||
| BASE_FLAGS += -Wall -I../carla-backend -I../carla-includes | |||
| BASE_FLAGS = -O0 -g -Wall | |||
| BASE_FLAGS += -I../carla-backend -I../carla-includes | |||
| BUILD_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | |||
| BUILD_FLAGS += $(shell pkg-config --cflags QtCore) | |||
| @@ -18,8 +16,7 @@ BUILD_FLAGS += -DVESTIGE_HEADER # Comment this line to not use vestige header | |||
| 32BIT_FLAGS = -m32 | |||
| 64BIT_FLAGS = -m64 | |||
| LINK_FLAGS = $(LDFLAGS) | |||
| LINK_FLAGS += $(shell pkg-config --libs QtCore) | |||
| LINK_FLAGS = $(shell pkg-config --libs QtCore) $(LDFLAGS) | |||
| ifneq ($(NATIVE),) | |||
| BUILD_FLAGS += -DBUILD_NATIVE | |||
| @@ -45,11 +42,6 @@ WIN_32BIT_FLAGS = $(32BIT_FLAGS) | |||
| WIN_64BIT_FLAGS = $(64BIT_FLAGS) | |||
| WIN_LINK_FLAGS = $(LINK_FLAGS) -static -mwindows | |||
| WINE_BUILD_FLAGS = $(BUILD_FLAGS) # -fpermissive | |||
| WINE_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32/wine -L/usr/lib/i386-linux-gnu/wine | |||
| WINE_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64/wine -L/usr/lib/x86_64-linux-gnu/wine | |||
| WINE_LINK_FLAGS = $(LINK_FLAGS) -ldl | |||
| # -------------------------------------------------------------- | |||
| all: carla-discovery-native | |||
| @@ -58,43 +50,40 @@ posix32: carla-discovery-posix32 | |||
| posix64: carla-discovery-posix64 | |||
| win32: carla-discovery-win32.exe | |||
| win64: carla-discovery-win64.exe | |||
| wine32: carla-discovery-win32.exe.so | |||
| wine64: carla-discovery-win64.exe.so | |||
| # -------------------------------------------------------------- | |||
| 32BIT_OBJS = carla-discovery.cpp ../carla-lilv/carla_lilv_32bit.a | |||
| 64BIT_OBJS = carla-discovery.cpp ../carla-lilv/carla_lilv_64bit.a | |||
| OBJS = carla-discovery.cpp | |||
| carla-discovery-native: carla-discovery.cpp ../carla-lilv/carla_lilv.a | |||
| $(CXX) $^ $(BUILD_FLAGS) $(LINK_FLAGS) -o $@ | |||
| $(CXX) $^ $(BUILD_FLAGS) $(LINK_FLAGS) -o $@ && $(STRIP) $@ | |||
| carla-discovery-posix32: $(32BIT_OBJS) | |||
| carla-discovery-posix32: $(OBJS) ../carla-lilv/carla_lilv_posix32.a | |||
| $(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ | |||
| carla-discovery-posix64: $(64BIT_OBJS) | |||
| carla-discovery-posix64: $(OBJS) ../carla-lilv/carla_lilv_posix64.a | |||
| $(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ | |||
| carla-discovery-win32.exe: $(32BIT_OBJS) | |||
| carla-discovery-win32.exe: $(OBJS) ../carla-lilv/carla_lilv_win32.a | |||
| $(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) $(WIN_LINK_FLAGS) -o $@ | |||
| carla-discovery-win64.exe: $(64BIT_OBJS) | |||
| carla-discovery-win64.exe: $(OBJS) ../carla-lilv/carla_lilv_win64.a | |||
| $(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) $(WIN_LINK_FLAGS) -o $@ | |||
| carla-discovery-win32.exe.so: $(32BIT_OBJS) | |||
| $(WINECXX) $^ $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) $(WINE_LINK_FLAGS) -o carla-discovery-win32.exe | |||
| carla-discovery-win64.exe.so: $(64BIT_OBJS) | |||
| $(WINECXX) $^ $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) $(WINE_LINK_FLAGS) -o carla-discovery-win64.exe | |||
| ../carla-lilv/carla_lilv.a: | |||
| $(MAKE) -C ../carla-lilv | |||
| ../carla-lilv/carla_lilv_32bit.a: | |||
| $(MAKE) -C ../carla-lilv 32bit | |||
| ../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_64bit.a: | |||
| $(MAKE) -C ../carla-lilv 64bit | |||
| ../carla-lilv/carla_lilv_win64.a: | |||
| $(MAKE) -C ../carla-lilv win64 | |||
| # -------------------------------------------------------------- | |||
| @@ -93,7 +93,7 @@ | |||
| // export symbols if needed | |||
| #ifdef BUILD_BRIDGE | |||
| # define CARLA_EXPORT | |||
| # define CARLA_EXPORT extern "C" | |||
| #else | |||
| # if defined(Q_OS_WIN) && ! defined(__WINE__) | |||
| # define CARLA_EXPORT extern "C" __declspec (dllexport) | |||
| @@ -0,0 +1,61 @@ | |||
| #!/usr/bin/make -f | |||
| # Makefile for carla-jackbridge # | |||
| # ----------------------------------------- # | |||
| # Created by falkTX | |||
| # | |||
| CXX ?= g++ | |||
| WINECXX ?= wineg++ | |||
| STRIP ?= strip | |||
| BASE_FLAGS = -O2 -ffast-math -fomit-frame-pointer -fPIC -mtune=generic -msse -mfpmath=sse -Wall | |||
| BASE_FLAGS += -I../carla-includes | |||
| BUILD_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | |||
| BUILD_FLAGS += $(shell pkg-config --cflags jack QtCore) | |||
| BUILD_FLAGS += -DBUILD_BRIDGE -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT # -DNDEBUG | |||
| 32BIT_FLAGS = -m32 | |||
| 64BIT_FLAGS = -m64 | |||
| LINK_FLAGS = -shared $(LDFLAGS) | |||
| WIN_BUILD_FLAGS = $(BUILD_FLAGS) -DJACKBRIDGE_DUMMY -I. | |||
| WIN_32BIT_FLAGS = $(32BIT_FLAGS) | |||
| WIN_64BIT_FLAGS = $(64BIT_FLAGS) | |||
| WIN_LINK_FLAGS = $(LINK_FLAGS) | |||
| WINE_BUILD_FLAGS = $(BUILD_FLAGS) | |||
| WINE_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32/wine -L/usr/lib/i386-linux-gnu/wine | |||
| WINE_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64/wine -L/usr/lib/x86_64-linux-gnu/wine | |||
| WINE_LINK_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs jack) -ldl | |||
| # -------------------------------------------------------------- | |||
| all: | |||
| win32: libcarla-jackbridge-win32.dll | |||
| win64: libcarla-jackbridge-win64.dll | |||
| wine32: libcarla-jackbridge-win32.dll.so | |||
| wine64: libcarla-jackbridge-win64.dll.so | |||
| # -------------------------------------------------------------- | |||
| OBJS = carla_jackbridge.cpp | |||
| libcarla-jackbridge-win32.dll: $(OBJS) | |||
| $(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) $(WIN_LINK_FLAGS) -Wl,--output-def,$@.def,--out-implib,$@.a -o $@ && $(STRIP) $@ | |||
| libcarla-jackbridge-win64.dll: $(OBJS) | |||
| $(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) $(WIN_LINK_FLAGS) -Wl,--output-def,$@.def,--out-implib,$@.a -o $@ && $(STRIP) $@ | |||
| libcarla-jackbridge-win32.dll.so: $(OBJS) | |||
| $(WINECXX) $^ libcarla-jackbridge-win32.dll.def $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) $(WINE_LINK_FLAGS) -mno-cygwin -o $@ && $(STRIP) $@ | |||
| libcarla-jackbridge-win64.dll.so: $(OBJS) | |||
| $(WINECXX) $^ libcarla-jackbridge-win64.dll.def $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) $(WINE_LINK_FLAGS) -mno-cygwin -o $@ && $(STRIP) $@ | |||
| # -------------------------------------------------------------- | |||
| clean: | |||
| rm -f libcarla-jackbridge-* | |||
| @@ -0,0 +1,239 @@ | |||
| /* | |||
| * Carla JackBridge | |||
| * Copyright (C) 2012 Filipe Coelho <falktx@gmail.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 COPYING file | |||
| */ | |||
| #include "carla_jackbridge.h" | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| #include <jack/jack.h> | |||
| #include <jack/midiport.h> | |||
| #endif | |||
| jack_client_t* jackbridge_client_open(const char* client_name, jack_options_t options, jack_status_t* status) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_client_open(client_name, options, status); | |||
| #else | |||
| return nullptr; | |||
| #endif | |||
| } | |||
| int jackbridge_client_close(jack_client_t* client) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_client_close(client); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| int jackbridge_client_name_size() | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_client_name_size(); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| char* jackbridge_get_client_name(jack_client_t* client) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_get_client_name(client); | |||
| #else | |||
| return nullptr; | |||
| #endif | |||
| } | |||
| int jackbridge_port_name_size() | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_port_name_size(); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| int jackbridge_activate(jack_client_t* client) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_activate(client); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| int jackbridge_deactivate(jack_client_t* client) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_deactivate(client); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| int jackbridge_set_process_thread(jack_client_t* client, JackThreadCallback thread_callback, void *arg) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_set_process_thread(client, thread_callback, arg); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| void jackbridge_on_shutdown(jack_client_t* client, JackShutdownCallback shutdown_callback, void* arg) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| jack_on_shutdown(client, shutdown_callback, arg); | |||
| #endif | |||
| } | |||
| int jackbridge_set_process_callback(jack_client_t* client, JackProcessCallback process_callback, void* arg) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_set_process_callback(client, process_callback, arg); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| int jackbridge_set_freewheel_callback(jack_client_t* client, JackFreewheelCallback freewheel_callback, void* arg) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_set_freewheel_callback(client, freewheel_callback, arg); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| int jackbridge_set_buffer_size_callback(jack_client_t* client, JackBufferSizeCallback bufsize_callback, void* arg) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_set_buffer_size_callback(client, bufsize_callback, arg); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| int jackbridge_set_sample_rate_callback(jack_client_t* client, JackSampleRateCallback srate_callback, void* arg) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_set_sample_rate_callback(client, srate_callback, arg); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| jack_nframes_t jackbridge_get_sample_rate(jack_client_t* client) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_get_sample_rate(client); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| jack_nframes_t jackbridge_get_buffer_size(jack_client_t* client) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_get_buffer_size(client); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| jack_port_t* jackbridge_port_register(jack_client_t* client, const char* port_name, const char* port_type, unsigned long flags, unsigned long buffer_size) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_port_register(client, port_name, port_type, flags, buffer_size); | |||
| #else | |||
| return nullptr; | |||
| #endif | |||
| } | |||
| int jackbridge_port_unregister(jack_client_t* client, jack_port_t* port) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_port_unregister(client, port); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| void* jackbridge_port_get_buffer(jack_port_t* port, jack_nframes_t nframes) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_port_get_buffer(port, nframes); | |||
| #else | |||
| return nullptr; | |||
| #endif | |||
| } | |||
| // ----------------------------------------------------------------------------- | |||
| uint32_t jackbridge_midi_get_event_count(void* port_buffer) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_midi_get_event_count(port_buffer); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| int jackbridge_midi_event_get(jackbridge_midi_event_t* event, void* port_buffer, uint32_t event_index) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_midi_event_get((jack_midi_event_t*)event, port_buffer, event_index); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| void jackbridge_midi_clear_buffer(void* port_buffer) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| jack_midi_clear_buffer(port_buffer); | |||
| #endif | |||
| } | |||
| jackbridge_midi_data_t* jackbridge_midi_event_reserve(void* port_buffer, jack_nframes_t time, size_t data_size) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_midi_event_reserve(port_buffer, time, data_size); | |||
| #else | |||
| return nullptr; | |||
| #endif | |||
| } | |||
| int jackbridge_midi_event_write(void* port_buffer, jack_nframes_t time, const jackbridge_midi_data_t* data, size_t data_size) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_midi_event_write(port_buffer, time, (jack_midi_data_t*)data, data_size); | |||
| #else | |||
| return 0; | |||
| #endif | |||
| } | |||
| // ----------------------------------------------------------------------------- | |||
| jack_transport_state_t jackbridge_transport_query(const jack_client_t* client, jack_position_t* pos) | |||
| { | |||
| #ifndef JACKBRIDGE_DUMMY | |||
| return jack_transport_query(client, pos); | |||
| #else | |||
| return JackTransportStopped; | |||
| #endif | |||
| } | |||
| @@ -0,0 +1,61 @@ | |||
| /* | |||
| * Carla JackBridge | |||
| * Copyright (C) 2012 Filipe Coelho <falktx@gmail.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 COPYING file | |||
| */ | |||
| #ifndef CARLA_JACKBRIDGE_H | |||
| #define CARLA_JACKBRIDGE_H | |||
| #include "carla_includes.h" | |||
| #include <jack/types.h> | |||
| typedef unsigned char jackbridge_midi_data_t; | |||
| typedef struct _jackbridge_midi_event | |||
| { | |||
| jack_nframes_t time; | |||
| size_t size; | |||
| jackbridge_midi_data_t* buffer; | |||
| } jackbridge_midi_event_t; | |||
| CARLA_EXPORT jack_client_t* jackbridge_client_open(const char* client_name, jack_options_t options, jack_status_t* status); | |||
| CARLA_EXPORT int jackbridge_client_close(jack_client_t* client); | |||
| CARLA_EXPORT int jackbridge_client_name_size(); | |||
| CARLA_EXPORT char* jackbridge_get_client_name(jack_client_t* client); | |||
| CARLA_EXPORT int jackbridge_port_name_size(); | |||
| CARLA_EXPORT int jackbridge_activate(jack_client_t* client); | |||
| CARLA_EXPORT int jackbridge_deactivate(jack_client_t* client); | |||
| CARLA_EXPORT int jackbridge_set_process_thread(jack_client_t* client, JackThreadCallback thread_callback, void *arg); | |||
| CARLA_EXPORT void jackbridge_on_shutdown(jack_client_t* client, JackShutdownCallback shutdown_callback, void* arg); | |||
| CARLA_EXPORT int jackbridge_set_process_callback(jack_client_t* client, JackProcessCallback process_callback, void* arg); | |||
| CARLA_EXPORT int jackbridge_set_freewheel_callback(jack_client_t* client, JackFreewheelCallback freewheel_callback, void* arg); | |||
| CARLA_EXPORT int jackbridge_set_buffer_size_callback(jack_client_t* client, JackBufferSizeCallback bufsize_callback, void* arg); | |||
| CARLA_EXPORT int jackbridge_set_sample_rate_callback(jack_client_t* client, JackSampleRateCallback srate_callback, void* arg); | |||
| CARLA_EXPORT jack_nframes_t jackbridge_get_sample_rate(jack_client_t* client); | |||
| CARLA_EXPORT jack_nframes_t jackbridge_get_buffer_size(jack_client_t* client); | |||
| CARLA_EXPORT jack_port_t* jackbridge_port_register(jack_client_t* client, const char* port_name, const char* port_type, unsigned long flags, unsigned long buffer_size); | |||
| CARLA_EXPORT int jackbridge_port_unregister(jack_client_t* client, jack_port_t* port); | |||
| CARLA_EXPORT void* jackbridge_port_get_buffer(jack_port_t* port, jack_nframes_t nframes); | |||
| CARLA_EXPORT uint32_t jackbridge_midi_get_event_count(void* port_buffer); | |||
| CARLA_EXPORT int jackbridge_midi_event_get(jackbridge_midi_event_t* event, void* port_buffer, uint32_t event_index); | |||
| CARLA_EXPORT void jackbridge_midi_clear_buffer(void* port_buffer); | |||
| CARLA_EXPORT jackbridge_midi_data_t* jackbridge_midi_event_reserve(void* port_buffer, jack_nframes_t time, size_t data_size); | |||
| CARLA_EXPORT int jackbridge_midi_event_write(void* port_buffer, jack_nframes_t time, const jackbridge_midi_data_t* data, size_t data_size); | |||
| CARLA_EXPORT jack_transport_state_t jackbridge_transport_query(const jack_client_t* client, jack_position_t* pos); | |||
| #endif // CARLA_JACKBRIDGE_H | |||
| @@ -18,9 +18,11 @@ BUILD_FLAGS += -Iconfig -I../carla-includes | |||
| 32BIT_FLAGS = -m32 | |||
| 64BIT_FLAGS = -m64 | |||
| OBJS = serd.o sord.o sratom.o lilv.o | |||
| OBJS_32bit = serd_32bit.o sord_32bit.o sratom_32bit.o lilv_32bit.o | |||
| OBJS_64bit = serd_64bit.o sord_64bit.o sratom_64bit.o lilv_64bit.o | |||
| OBJS = serd.o sord.o sratom.o lilv.o | |||
| OBJS_posix32 = serd_posix32.o sord_posix32.o sratom_posix32.o lilv_posix32.o | |||
| OBJS_posix64 = serd_posix64.o sord_posix64.o sratom_posix64.o lilv_posix64.o | |||
| OBJS_win32 = serd_win32.o sord_win32.o sratom_win32.o lilv_win32.o | |||
| OBJS_win64 = serd_win64.o sord_win64.o sratom_win64.o lilv_win64.o | |||
| # -------------------------------------------------------------- | |||
| @@ -43,40 +45,78 @@ lilv.o: lilv.c | |||
| # -------------------------------------------------------------- | |||
| 32bit: carla_lilv_32bit.a | |||
| posix32: carla_lilv_posix32.a | |||
| carla_lilv_32bit.a: $(OBJS_32bit) | |||
| carla_lilv_posix32.a: $(OBJS_posix32) | |||
| $(AR) rs $@ $^ | |||
| serd_32bit.o: serd.c | |||
| serd_posix32.o: serd.c | |||
| $(CC) $< $(BUILD_FLAGS) $(32BIT_FLAGS) -c -o $@ | |||
| sord_32bit.o: sord.c | |||
| sord_posix32.o: sord.c | |||
| $(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src $(32BIT_FLAGS) -c -o $@ | |||
| sratom_32bit.o: sratom.c | |||
| sratom_posix32.o: sratom.c | |||
| $(CC) $< $(BUILD_FLAGS) $(32BIT_FLAGS) -c -o $@ | |||
| lilv_32bit.o: lilv.c | |||
| lilv_posix32.o: lilv.c | |||
| $(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src $(32BIT_FLAGS) -c -o $@ | |||
| # -------------------------------------------------------------- | |||
| 64bit: carla_lilv_64bit.a | |||
| posix64: carla_lilv_posix64.a | |||
| carla_lilv_64bit.a: $(OBJS_64bit) | |||
| carla_lilv_posix64.a: $(OBJS_posix64) | |||
| $(AR) rs $@ $^ | |||
| serd_64bit.o: serd.c | |||
| serd_posix64.o: serd.c | |||
| $(CC) $< $(BUILD_FLAGS) $(64BIT_FLAGS) -c -o $@ | |||
| sord_64bit.o: sord.c | |||
| sord_posix64.o: sord.c | |||
| $(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src $(64BIT_FLAGS) -c -o $@ | |||
| sratom_64bit.o: sratom.c | |||
| sratom_posix64.o: sratom.c | |||
| $(CC) $< $(BUILD_FLAGS) $(64BIT_FLAGS) -c -o $@ | |||
| lilv_64bit.o: lilv.c | |||
| lilv_posix64.o: lilv.c | |||
| $(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src $(64BIT_FLAGS) -c -o $@ | |||
| # -------------------------------------------------------------- | |||
| win32: carla_lilv_win32.a | |||
| carla_lilv_win32.a: $(OBJS_win32) | |||
| $(AR) rs $@ $^ | |||
| serd_win32.o: serd.c | |||
| $(CC) $< $(BUILD_FLAGS) $(32BIT_FLAGS) -c -o $@ | |||
| sord_win32.o: sord.c | |||
| $(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src $(32BIT_FLAGS) -c -o $@ | |||
| sratom_win32.o: sratom.c | |||
| $(CC) $< $(BUILD_FLAGS) $(32BIT_FLAGS) -c -o $@ | |||
| lilv_win32.o: lilv.c | |||
| $(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src $(32BIT_FLAGS) -c -o $@ | |||
| # -------------------------------------------------------------- | |||
| win64: carla_lilv_win64.a | |||
| carla_lilv_win64.a: $(OBJS_win64) | |||
| $(AR) rs $@ $^ | |||
| serd_win64.o: serd.c | |||
| $(CC) $< $(BUILD_FLAGS) $(64BIT_FLAGS) -c -o $@ | |||
| sord_win64.o: sord.c | |||
| $(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src $(64BIT_FLAGS) -c -o $@ | |||
| sratom_win64.o: sratom.c | |||
| $(CC) $< $(BUILD_FLAGS) $(64BIT_FLAGS) -c -o $@ | |||
| lilv_win64.o: lilv.c | |||
| $(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src $(64BIT_FLAGS) -c -o $@ | |||
| # -------------------------------------------------------------- | |||