@@ -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 $@ | |||
# -------------------------------------------------------------- | |||