Browse Source

Carla: Allow to build without specific plugin support

tags/v0.9.0
falkTX 13 years ago
parent
commit
d522786587
11 changed files with 154 additions and 79 deletions
  1. +5
    -3
      c++/carla-backend/Makefile
  2. +4
    -2
      c++/carla-backend/Makefile.dbg
  3. +1
    -1
      c++/carla-backend/carla_backend_standalone.cpp
  4. +2
    -0
      c++/carla-backend/carla_osc.cpp
  5. +2
    -0
      c++/carla-backend/carla_osc.h
  6. +18
    -2
      c++/carla-backend/dssi.cpp
  7. +12
    -8
      c++/carla-backend/fluidsynth.cpp
  8. +18
    -2
      c++/carla-backend/ladspa.cpp
  9. +14
    -15
      c++/carla-backend/linuxsampler.cpp
  10. +59
    -43
      c++/carla-backend/lv2.cpp
  11. +19
    -3
      c++/carla-backend/vst.cpp

+ 5
- 3
c++/carla-backend/Makefile View File

@@ -16,11 +16,13 @@ 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 -I../carla-jackbridge

# CARLA_C_FLAGS = $(BASE_FLAGS) -std=c99 $(CFLAGS)
CARLA_C_FLAGS = $(BASE_FLAGS) -std=c99 $(CFLAGS)

CARLA_CXX_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS)
CARLA_CXX_FLAGS += $(shell pkg-config --cflags liblo QtCore QtGui)
CARLA_CXX_FLAGS += -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT -DNDEBUG

CARLA_CXX_FLAGS += WANT_LADSPA WANT_DSSI WANT_LV2 WANT_VST
CARLA_CXX_FLAGS += -DVESTIGE_HEADER # Comment this line to not use vestige header

CARLA_LD_FLAGS = -shared -ldl -lm -fPIC $(LDFLAGS)
@@ -90,8 +92,8 @@ carla_backend.so: $(OBJS)

# --------------------------------------------------------------

# .c.o:
# $(CC) -c $< $(CARLA_C_FLAGS) -o $@
.c.o:
$(CC) -c $< $(CARLA_C_FLAGS) -o $@

.cpp.o:
$(CXX) -c $< $(CARLA_CXX_FLAGS) -o $@


+ 4
- 2
c++/carla-backend/Makefile.dbg View File

@@ -21,6 +21,8 @@ CARLA_C_FLAGS = $(BASE_FLAGS) -std=c99 $(CFLAGS)
CARLA_CXX_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS)
CARLA_CXX_FLAGS += $(shell pkg-config --cflags liblo QtCore QtGui)
CARLA_CXX_FLAGS += -DDEBUG

CARLA_CXX_FLAGS += WANT_LADSPA WANT_DSSI WANT_LV2 WANT_VST
CARLA_CXX_FLAGS += -DVESTIGE_HEADER # Comment this line to not use vestige header

CARLA_LD_FLAGS = -shared -ldl -lm -fPIC $(LDFLAGS)
@@ -90,8 +92,8 @@ carla_backend.so: $(OBJS)

# --------------------------------------------------------------

# .c.o:
# $(CC) -c $< $(CARLA_C_FLAGS) -o $@
.c.o:
$(CC) -c $< $(CARLA_C_FLAGS) -o $@

.cpp.o:
$(CXX) -c $< $(CARLA_CXX_FLAGS) -o $@


+ 1
- 1
c++/carla-backend/carla_backend_standalone.cpp View File

@@ -1424,7 +1424,7 @@ void run_tests_standalone(short idMax)
qDebug("------------------- TEST @%i: set extra data --------------------", id);
set_custom_data(id, CarlaBackend::CUSTOM_DATA_STRING, "", "");
set_chunk_data(id, nullptr);
set_gui_data(id, (uintptr_t)1);
set_gui_container(id, (uintptr_t)1);

qDebug("------------------- TEST @%i: gui stuff --------------------", id);
show_gui(id, false);


+ 2
- 0
c++/carla-backend/carla_osc.cpp View File

@@ -190,10 +190,12 @@ int CarlaOsc::handleMessage(const char* const path, const int argc, const lo_arg
return handle_note_off(plugin, argc, argv, types);

// Plugin-specific methods
#ifdef WANT_LV2
if (strcmp(method, "/lv2_atom_transfer") == 0)
return handle_lv2_atom_transfer(plugin, argc, argv, types);
if (strcmp(method, "/lv2_event_transfer") == 0)
return handle_lv2_event_transfer(plugin, argc, argv, types);
#endif

// Plugin Bridges
if (plugin->hints() & PLUGIN_IS_BRIDGE)


+ 2
- 0
c++/carla-backend/carla_osc.h View File

@@ -118,8 +118,10 @@ private:
int handle_note_on(CARLA_OSC_HANDLE_ARGS2);
int handle_note_off(CARLA_OSC_HANDLE_ARGS2);

#ifdef WANT_LV2
int handle_lv2_atom_transfer(CARLA_OSC_HANDLE_ARGS2);
int handle_lv2_event_transfer(CARLA_OSC_HANDLE_ARGS2);
#endif

int handle_bridge_set_input_peak_value(CARLA_OSC_HANDLE_ARGS2);
int handle_bridge_set_output_peak_value(CARLA_OSC_HANDLE_ARGS2);


+ 18
- 2
c++/carla-backend/dssi.cpp View File

@@ -16,6 +16,9 @@
*/

#include "carla_plugin.h"

#ifdef WANT_DSSI

#include "carla_dssi.h"

CARLA_BACKEND_START_NAMESPACE
@@ -1511,10 +1514,21 @@ private:
float* paramBuffers;
};

/**@}*/

CARLA_BACKEND_END_NAMESPACE

#else // WANT_DSSI
# warning Building without DSSI support
#endif

CARLA_BACKEND_START_NAMESPACE

CarlaPlugin* CarlaPlugin::newDSSI(const initializer& init, const void* const extra)
{
qDebug("CarlaPlugin::newDSSI(%p, \"%s\", \"%s\", \"%s\", %p)", init.engine, init.filename, init.name, init.label, extra);

#ifdef WANT_DSSI
short id = init.engine->getNewPluginId();

if (id < 0 || id > CarlaEngine::maxPluginNumber())
@@ -1551,8 +1565,10 @@ CarlaPlugin* CarlaPlugin::newDSSI(const initializer& init, const void* const ext
plugin->registerToOsc();

return plugin;
#else
setLastError("DSSI support not available");
return nullptr;
#endif
}

/**@}*/

CARLA_BACKEND_END_NAMESPACE

+ 12
- 8
c++/carla-backend/fluidsynth.cpp View File

@@ -16,20 +16,17 @@
*/

#ifdef BUILD_BRIDGE
#error Should not use fluidsynth for bridges!
# error Should not use fluidsynth for bridges!
#endif

#include "carla_plugin.h"

#ifdef WANT_FLUIDSYNTH

#include "carla_fluidsynth.h"
#else
#warning fluidsynth not available (no SF2 support)
#endif

CARLA_BACKEND_START_NAMESPACE

#ifdef WANT_FLUIDSYNTH

/*!
* @defgroup CarlaBackendFluidSynthPlugin Carla Backend FluidSynth Plugin
@@ -1315,7 +1312,16 @@ private:

const char* m_label;
};
#endif // WANT_FLUIDSYNTH

/**@}*/

CARLA_BACKEND_END_NAMESPACE

#else // WANT_FLUIDSYNTH
# warning fluidsynth not available (no SF2 support)
#endif

CARLA_BACKEND_START_NAMESPACE

CarlaPlugin* CarlaPlugin::newSF2(const initializer& init)
{
@@ -1354,6 +1360,4 @@ CarlaPlugin* CarlaPlugin::newSF2(const initializer& init)
#endif
}

/**@}*/

CARLA_BACKEND_END_NAMESPACE

+ 18
- 2
c++/carla-backend/ladspa.cpp View File

@@ -16,6 +16,9 @@
*/

#include "carla_plugin.h"

#ifdef WANT_LADSPA

#include "carla_ladspa.h"

CARLA_BACKEND_START_NAMESPACE
@@ -1119,10 +1122,21 @@ private:
float* paramBuffers;
};

/**@}*/

CARLA_BACKEND_END_NAMESPACE

#else // WANT_LADSPA
# warning Building without LADSPA support
#endif

CARLA_BACKEND_START_NAMESPACE

CarlaPlugin* CarlaPlugin::newLADSPA(const initializer& init, const void* const extra)
{
qDebug("CarlaPlugin::newLADSPA(%p, \"%s\", \"%s\", \"%s\", %p)", init.engine, init.filename, init.name, init.label, extra);

#ifdef WANT_LADSPA
short id = init.engine->getNewPluginId();

if (id < 0 || id > CarlaEngine::maxPluginNumber())
@@ -1159,8 +1173,10 @@ CarlaPlugin* CarlaPlugin::newLADSPA(const initializer& init, const void* const e
plugin->registerToOsc();

return plugin;
#else
setLastError("LADSPA support not available");
return nullptr;
#endif
}

/**@}*/

CARLA_BACKEND_END_NAMESPACE

+ 14
- 15
c++/carla-backend/linuxsampler.cpp View File

@@ -15,30 +15,22 @@
* For a full copy of the GNU General Public License see the COPYING file
*/

// TODO - setMidiProgram()

#ifdef BUILD_BRIDGE
#error Should not use linuxsampler for bridges!
# error Should not use linuxsampler for bridges!
#endif

// TODO - setMidiProgram()

#include "carla_plugin.h"

#ifdef WANT_LINUXSAMPLER

#include "carla_linuxsampler.h"
#else
#warning linuxsampler not available (no GIG and SFZ support)
#endif

#include <QtCore/QFileInfo>

CARLA_BACKEND_START_NAMESPACE

#if 0
} /* adjust editor indent */
#endif

#ifdef WANT_LINUXSAMPLER

/*!
* @defgroup CarlaBackendLinuxSamplerPlugin Carla Backend LinuxSampler Plugin
*
@@ -618,7 +610,16 @@ CarlaPlugin* LinuxSamplerPlugin::newLinuxSampler(const initializer& init, bool i

return plugin;
}
#endif // WANT_LINUXSAMPLER

/**@}*/

CARLA_BACKEND_END_NAMESPACE

#else // WANT_LINUXSAMPLER
# warning linuxsampler not available (no GIG and SFZ support)
#endif

CARLA_BACKEND_START_NAMESPACE

CarlaPlugin* CarlaPlugin::newGIG(const initializer& init)
{
@@ -642,6 +643,4 @@ CarlaPlugin* CarlaPlugin::newSFZ(const initializer& init)
#endif
}

/**@}*/

CARLA_BACKEND_END_NAMESPACE

+ 59
- 43
c++/carla-backend/lv2.cpp View File

@@ -16,6 +16,9 @@
*/

#include "carla_plugin.h"

#ifdef WANT_LV2

#include "carla_lv2.h"

#include "lv2_atom_queue.h"
@@ -4410,49 +4413,6 @@ private:
uint32_t lastTimePosFrame;
};

CarlaPlugin* CarlaPlugin::newLV2(const initializer& init)
{
qDebug("CarlaPlugin::newLV2(%p, \"%s\", \"%s\", \"%s\")", init.engine, init.filename, init.name, init.label);

short id = init.engine->getNewPluginId();

if (id < 0 || id > CarlaEngine::maxPluginNumber())
{
setLastError("Maximum number of plugins reached");
return nullptr;
}

Lv2Plugin* const plugin = new Lv2Plugin(init.engine, id);

if (! plugin->init(init.filename, init.name, init.label))
{
delete plugin;
return nullptr;
}

plugin->reload();

#ifndef BUILD_BRIDGE
if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK)
{
const uint32_t ins = plugin->audioInCount();
const uint32_t outs = plugin->audioOutCount();

if (ins > 2 || outs > 2 || (ins != outs && ins != 0 && outs != 0))
{
setLastError("Carla's rack mode can only work with Mono or Stereo LV2 plugins, sorry!");
delete plugin;
return nullptr;
}
}
#endif

plugin->registerToOsc();
plugin->updateUi();

return plugin;
}

/**@}*/

// -------------------------------------------------------------------------------------------------------------------
@@ -4500,3 +4460,59 @@ int CarlaOsc::handle_lv2_event_transfer(CARLA_OSC_HANDLE_ARGS2)
}

CARLA_BACKEND_END_NAMESPACE

#else // WANT_LV2
# warning Building without LV2 support
#endif

CARLA_BACKEND_START_NAMESPACE

CarlaPlugin* CarlaPlugin::newLV2(const initializer& init)
{
qDebug("CarlaPlugin::newLV2(%p, \"%s\", \"%s\", \"%s\")", init.engine, init.filename, init.name, init.label);

#ifdef WANT_LV2
short id = init.engine->getNewPluginId();

if (id < 0 || id > CarlaEngine::maxPluginNumber())
{
setLastError("Maximum number of plugins reached");
return nullptr;
}

Lv2Plugin* const plugin = new Lv2Plugin(init.engine, id);

if (! plugin->init(init.filename, init.name, init.label))
{
delete plugin;
return nullptr;
}

plugin->reload();

#ifndef BUILD_BRIDGE
if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK)
{
const uint32_t ins = plugin->audioInCount();
const uint32_t outs = plugin->audioOutCount();

if (ins > 2 || outs > 2 || (ins != outs && ins != 0 && outs != 0))
{
setLastError("Carla's rack mode can only work with Mono or Stereo LV2 plugins, sorry!");
delete plugin;
return nullptr;
}
}
#endif

plugin->registerToOsc();
plugin->updateUi();

return plugin;
#else
setLastError("LV2 support not available");
return nullptr;
#endif
}

CARLA_BACKEND_END_NAMESPACE

+ 19
- 3
c++/carla-backend/vst.cpp View File

@@ -16,10 +16,13 @@
*/

#include "carla_plugin.h"

#ifdef WANT_VST

#include "carla_vst.h"

#ifdef Q_WS_X11
#include <QtGui/QX11Info>
# include <QtGui/QX11Info>
#endif

CARLA_BACKEND_START_NAMESPACE
@@ -2225,10 +2228,21 @@ private:
int unique2;
};

/**@}*/

CARLA_BACKEND_END_NAMESPACE

#else // WANT_VST
# warning Building without VST support
#endif

CARLA_BACKEND_START_NAMESPACE

CarlaPlugin* CarlaPlugin::newVST(const initializer& init)
{
qDebug("CarlaPlugin::newVST(%p, \"%s\", \"%s\", \"%s\")", init.engine, init.filename, init.name, init.label);

#ifdef WANT_VST
short id = init.engine->getNewPluginId();

if (id < 0 || id > CarlaEngine::maxPluginNumber())
@@ -2268,8 +2282,10 @@ CarlaPlugin* CarlaPlugin::newVST(const initializer& init)
plugin->registerToOsc();

return plugin;
#else
setLastError("VST support not available");
return nullptr;
#endif
}

/**@}*/

CARLA_BACKEND_END_NAMESPACE

Loading…
Cancel
Save