Browse Source

Linux: load/init static+shared modules (=> works in vst2_debug_host)

pull/1639/head
bsp2 6 years ago
parent
commit
e41fc9d46c
9 changed files with 259 additions and 178 deletions
  1. +5
    -3
      include/plugin.hpp
  2. +2
    -1
      make.objects
  3. +5
    -1
      makefile_lib.linux
  4. +8
    -0
      plugins/build_shared_plugin_pre_linux.mk
  5. +1
    -1
      src/Core/Core.hpp
  6. +7
    -0
      src/asset.cpp
  7. +9
    -171
      src/plugin.cpp
  8. +218
    -0
      src/plugin_static.cpp
  9. +4
    -1
      vst2_common_linux.mk

+ 5
- 3
include/plugin.hpp View File

@@ -13,6 +13,8 @@

namespace rack {
struct Plugin;

typedef void (*InitCallback)(Plugin *);
}

typedef void (*vst2_handle_ui_param_fxn_t) (int uniqueParamId, float normValue);
@@ -30,7 +32,7 @@ extern void vst2_queue_param_sync (int _uniqueParamId, float _value, bool _bNorm
#ifdef _MSC_VER
#define RACK_PLUGIN_INIT(pluginname) extern "C" void init_plugin_##pluginname##(rack::Plugin *p)
#else
#define RACK_PLUGIN_INIT(pluginname) extern "C" void CONCAT(init_plugin_, pluginname) (rack::Plugin *p)
#define RACK_PLUGIN_INIT(pluginname) static void loc_init_plugin(rack::Plugin *p); extern "C" { void CONCAT(init_plugin_, pluginname) (rack::Plugin *p) { loc_init_plugin(p); } } static void loc_init_plugin(rack::Plugin *p)
#endif // _MSC_VER
#define RACK_PLUGIN_INIT_ID() RACK_PLUGIN_INIT_ID_INTERNAL

@@ -80,7 +82,7 @@ namespace rack { \
seed_initialized = p->json.seed_initialized; \
} \
} \
RACK_PLUGIN_EXPORT void init_plugin(rack::Plugin *p)
static void loc_init_plugin(rack::Plugin *p); extern "C" { RACK_PLUGIN_EXPORT void init_plugin(rack::Plugin *p) { loc_init_plugin(p); } } static void loc_init_plugin(rack::Plugin *p)
#define RACK_PLUGIN_INIT_ID() \
rack::plugin = p; \
rack::plugin->set_tls_globals_fxn = &rack::loc_set_tls_globals; \
@@ -95,7 +97,7 @@ RACK_PLUGIN_EXPORT void init_plugin(rack::Plugin *p)
#ifdef _MSC_VER
#define RACK_PLUGIN_INIT(pluginname) extern "C" void init_plugin_##pluginname##(rack::Plugin *p)
#else
#define RACK_PLUGIN_INIT(pluginname) extern "C" void CONCAT(init_plugin_, pluginname) (rack::Plugin *p)
#define RACK_PLUGIN_INIT(pluginname) static void loc_init_plugin(rack::Plugin *p); extern "C" { void CONCAT(init_plugin_, pluginname) (rack::Plugin *p) { loc_init_plugin(p); } } static void loc_init_plugin(rack::Plugin *p)
#endif
#define RACK_PLUGIN_INIT_ID() RACK_PLUGIN_INIT_ID_INTERNAL
#endif // RACK_PLUGIN_SHARED


+ 2
- 1
make.objects View File

@@ -106,7 +106,8 @@ LIB_OBJ_WIN= \
src/util/dirent_win32/dirent.o \
dep/lglw/lglw_windows.o \
dep/lglw/lglw_windows_cpp.o \
dep/osdialog/osdialog_win.o
dep/osdialog/osdialog_win.o \
src/plugin_static.o

LIB_OBJ_LINUX= \
dep/lglw/lglw_linux.o \


+ 5
- 1
makefile_lib.linux View File

@@ -8,7 +8,7 @@ include dep/yac/install_linux.mk
TARGET_BASENAME=Rack

EXTRAFLAGS= -DVERSION=0.6.1 -DARCH_LIN -D_USE_MATH_DEFINES -DRACK_HOST -DUSE_VST2 -Iinclude/ -Idep/include -Idep/
EXTRAFLAGS+= -DSKIP_STATIC_MODULES
#EXTRAFLAGS+= -DSKIP_STATIC_MODULES

# for osdialog:
EXTRAFLAGS+= `pkg-config gtk+-2.0 --cflags`
@@ -22,6 +22,10 @@ PLAF_OBJ=

include make.objects

# compile but link this one in a different order than the other objects
# (the GNU linker is very unforgiving in this regard)
BIN_RULES+= src/plugin_static.o

ALL_OBJ=$(LIB_OBJ) $(LIB_OBJ_LINUX)

include dep/yac/staticlib_linux.mk

+ 8
- 0
plugins/build_shared_plugin_pre_linux.mk View File

@@ -10,6 +10,14 @@ EXTRAFLAGS+=
EXTRALIBS+= ../../../Rack_shared.a
# ../../../../dep/lib/linux_gcc/

ifeq ($(BUILD_64),y)
EXTRALIBS_DEP= $(VSVR_BASE_DIR)/dep/lib/linux_gcc/x64
else
EXTRALIBS_DEP= $(VSVR_BASE_DIR)/dep/lib/linux_gcc/x86
endif

EXTRALIBS+= $(EXTRALIBS_DEP)/libspeexdsp.a $(EXTRALIBS_DEP)/glew.a $(EXTRALIBS_DEP)/jansson.a `pkg-config gtk+-2.0 --libs` -lGL

PLAF_OBJ+=

EXTRAFLAGS+= -DARCH_LIN


+ 1
- 1
src/Core/Core.hpp View File

@@ -3,7 +3,7 @@
#ifndef RACK_PLUGIN_SHARED
using namespace rack;

RACK_PLUGIN_INIT(Core);
// // RACK_PLUGIN_INIT(Core);

struct GridChoice : LedDisplayChoice {
virtual void setId(int id) {}


+ 7
- 0
src/asset.cpp View File

@@ -26,12 +26,14 @@ namespace rack {


void assetInit(bool devMode) {
#ifndef USE_VST2
if (devMode) {
// Use current working directory if running in development mode
global->asset.globalDir = ".";
global->asset.localDir = ".";
return;
}
#endif // USE_VST2

#if ARCH_MAC
CFBundleRef bundle = CFBundleGetMainBundle();
@@ -69,6 +71,7 @@ void assetInit(bool devMode) {

#endif
#if ARCH_LIN
#ifndef USE_VST2
// TODO For now, users should launch Rack from their terminal in the global directory
global->asset.globalDir = ".";

@@ -81,6 +84,10 @@ void assetInit(bool devMode) {
}
global->asset.localDir = homeBuf;
global->asset.localDir += "/.Rack";
#else
global->asset.globalDir = global->vst2.program_dir;
global->asset.localDir = global->vst2.program_dir;
#endif // USE_VST2
#endif
systemCreateDirectory(global->asset.localDir);
}


+ 9
- 171
src/plugin.cpp View File

@@ -42,14 +42,14 @@
#endif


namespace rack {
extern "C" { extern void init_plugin_Core (rack::Plugin *p); }

namespace rack {

typedef void (*InitCallback)(Plugin *);

#ifdef USE_VST2
#ifndef RACK_PLUGIN
static void vst2_load_static_rack_plugins(void);
extern void vst2_load_static_rack_plugins(void);
#endif // RACK_PLUGIN
#endif // USE_VST2

@@ -74,18 +74,21 @@ static bool loadPlugin(std::string path, bool _bFX) {
#ifdef RACK_HOST
std::string libraryFilename;
#if ARCH_LIN
libraryFilename = path + "/" + "plugin.so";
libraryFilename = path + "/" + "plugin.so" + (_bFX ? ".fx" : ".instr");
#elif ARCH_WIN
libraryFilename = path + "/" + "plugin.dll" + (_bFX ? ".fx" : ".instr");
#elif ARCH_MAC
libraryFilename = path + "/" + "plugin.dylib";
libraryFilename = path + "/" + "plugin.dylib" + (_bFX ? ".fx" : ".instr");
#endif

// Check file existence
if (!systemIsFile(libraryFilename)) {
warn("Plugin file %s does not exist", libraryFilename.c_str());
// warn("Plugin file %s does not exist", libraryFilename.c_str());
return false;
}
else {
info("trying to load shared plugin file %s", libraryFilename.c_str());
}

// Load dynamic/shared library
#if ARCH_WIN
@@ -600,171 +603,6 @@ Model *pluginGetModel(std::string pluginSlug, std::string modelSlug) {
}



#ifdef USE_VST2
#ifndef RACK_PLUGIN
#ifndef SKIP_STATIC_MODULES
extern "C" {
extern void init_plugin_21kHz (rack::Plugin *p);
extern void init_plugin_AmalgamatedHarmonics (rack::Plugin *p);
extern void init_plugin_Alikins (rack::Plugin *p);
extern void init_plugin_alto777_LFSR (rack::Plugin *p);
extern void init_plugin_AS (rack::Plugin *p);
extern void init_plugin_AudibleInstruments (rack::Plugin *p);
extern void init_plugin_Autodafe (rack::Plugin *p);
extern void init_plugin_BaconMusic (rack::Plugin *p);
extern void init_plugin_Befaco (rack::Plugin *p);
extern void init_plugin_Bidoo (rack::Plugin *p);
extern void init_plugin_Bogaudio (rack::Plugin *p);
// extern void init_plugin_bsp (rack::Plugin *p); // contains GPLv3 code from Ob-Xd (Obxd_VCF)
// extern void init_plugin_BOKONTEPByteBeatMachine (rack::Plugin *p); // unstable
extern void init_plugin_CastleRocktronics (rack::Plugin *p);
extern void init_plugin_cf (rack::Plugin *p);
extern void init_plugin_com_soundchasing_stochasm (rack::Plugin *p);
extern void init_plugin_computerscare (rack::Plugin *p);
//extern void init_plugin_dBiz (rack::Plugin *p); // now a DLL (13Jul2018)
extern void init_plugin_DHE_Modules (rack::Plugin *p);
extern void init_plugin_DrumKit (rack::Plugin *p);
extern void init_plugin_ErraticInstruments (rack::Plugin *p);
extern void init_plugin_ESeries (rack::Plugin *p);
extern void init_plugin_FrankBussFormula (rack::Plugin *p);
extern void init_plugin_FrozenWasteland (rack::Plugin *p);
extern void init_plugin_Fundamental (rack::Plugin *p);
extern void init_plugin_Geodesics (rack::Plugin *p);
extern void init_plugin_Gratrix (rack::Plugin *p);
extern void init_plugin_HetrickCV (rack::Plugin *p);
extern void init_plugin_huaba (rack::Plugin *p);
extern void init_plugin_ImpromptuModular (rack::Plugin *p);
extern void init_plugin_JE (rack::Plugin *p);
extern void init_plugin_JW_Modules (rack::Plugin *p);
extern void init_plugin_Koralfx (rack::Plugin *p);
extern void init_plugin_LindenbergResearch (rack::Plugin *p);
extern void init_plugin_LOGinstruments (rack::Plugin *p);
extern void init_plugin_mental (rack::Plugin *p);
extern void init_plugin_ML_modules (rack::Plugin *p);
extern void init_plugin_moDllz (rack::Plugin *p);
extern void init_plugin_modular80 (rack::Plugin *p);
extern void init_plugin_mscHack (rack::Plugin *p);
extern void init_plugin_mtsch_plugins (rack::Plugin *p);
extern void init_plugin_NauModular (rack::Plugin *p);
extern void init_plugin_Nohmad (rack::Plugin *p);
extern void init_plugin_Ohmer (rack::Plugin *p);
// extern void init_plugin_ParableInstruments (rack::Plugin *p); // alternative "Clouds" module (crashes)
extern void init_plugin_PG_Instruments (rack::Plugin *p);
extern void init_plugin_PvC (rack::Plugin *p);
extern void init_plugin_Qwelk (rack::Plugin *p);
extern void init_plugin_RJModules (rack::Plugin *p);
extern void init_plugin_SerialRacker (rack::Plugin *p);
extern void init_plugin_SonusModular (rack::Plugin *p);
extern void init_plugin_Southpole (rack::Plugin *p);
extern void init_plugin_Southpole_parasites (rack::Plugin *p);
extern void init_plugin_squinkylabs_plug1 (rack::Plugin *p);
extern void init_plugin_SubmarineFree (rack::Plugin *p);
extern void init_plugin_SynthKit (rack::Plugin *p);
extern void init_plugin_Template (rack::Plugin *p);
extern void init_plugin_TheXOR (rack::Plugin *p);
extern void init_plugin_trowaSoft (rack::Plugin *p);
extern void init_plugin_unless_modules (rack::Plugin *p);
extern void init_plugin_Valley (rack::Plugin *p);
// extern void init_plugin_VultModules (rack::Plugin *p);
}
#endif // SKIP_STATIC_MODULES

static void vst2_load_static_rack_plugin(const char *_name, InitCallback _initCallback) {

std::string path = assetStaticPlugin(_name);
// Construct and initialize Plugin instance
Plugin *plugin = new Plugin();
plugin->path = path;
plugin->handle = NULL;
_initCallback(plugin);

#if 0
// Reject plugin if slug already exists
Plugin *oldPlugin = pluginGetPlugin(plugin->slug);
if (oldPlugin) {
warn("Plugin \"%s\" is already loaded, not attempting to load it again", plugin->slug.c_str());
// TODO
// Fix memory leak with `plugin` here
return false;
}
#endif

// Add plugin to list
global->plugin.gPlugins.push_back(plugin);
info("vcvrack: Loaded static plugin %s %s", plugin->slug.c_str(), plugin->version.c_str());
}

void vst2_load_static_rack_plugins(void) {
#ifndef SKIP_STATIC_MODULES
vst2_load_static_rack_plugin("21kHz", &init_plugin_21kHz);
vst2_load_static_rack_plugin("AmalgamatedHarmonics", &init_plugin_AmalgamatedHarmonics);
vst2_load_static_rack_plugin("Alikins", &init_plugin_Alikins);
vst2_load_static_rack_plugin("alto777_LFSR", &init_plugin_alto777_LFSR);
vst2_load_static_rack_plugin("AS", &init_plugin_AS);
vst2_load_static_rack_plugin("AudibleInstruments", &init_plugin_AudibleInstruments);
vst2_load_static_rack_plugin("Autodafe", &init_plugin_Autodafe);
vst2_load_static_rack_plugin("BaconMusic", &init_plugin_BaconMusic);
vst2_load_static_rack_plugin("Befaco", &init_plugin_Befaco);
vst2_load_static_rack_plugin("Bidoo", &init_plugin_Bidoo);
vst2_load_static_rack_plugin("Bogaudio", &init_plugin_Bogaudio);
// vst2_load_static_rack_plugin("bsp", &init_plugin_bsp); // contains GPLv3 code from Ob-Xd (Obxd_VCF)
// vst2_load_static_rack_plugin("BOKONTEPByteBeatMachine", &init_plugin_BOKONTEPByteBeatMachine);
vst2_load_static_rack_plugin("CastleRocktronics", &init_plugin_CastleRocktronics);
vst2_load_static_rack_plugin("cf", &init_plugin_cf);
vst2_load_static_rack_plugin("com_soundchasing_stochasm", &init_plugin_com_soundchasing_stochasm);
vst2_load_static_rack_plugin("computerscare", &init_plugin_computerscare);
// vst2_load_static_rack_plugin("dBiz", &init_plugin_dBiz); // now a DLL (13Jul2018)
vst2_load_static_rack_plugin("DHE-Modules", &init_plugin_DHE_Modules);
vst2_load_static_rack_plugin("DrumKit", &init_plugin_DrumKit);
vst2_load_static_rack_plugin("ErraticInstruments", &init_plugin_ErraticInstruments);
vst2_load_static_rack_plugin("ESeries", &init_plugin_ESeries);
vst2_load_static_rack_plugin("FrankBussFormula", &init_plugin_FrankBussFormula);
vst2_load_static_rack_plugin("FrozenWasteland", &init_plugin_FrozenWasteland);
vst2_load_static_rack_plugin("Fundamental", &init_plugin_Fundamental);
vst2_load_static_rack_plugin("Geodesics", &init_plugin_Geodesics);
vst2_load_static_rack_plugin("Gratrix", &init_plugin_Gratrix);
vst2_load_static_rack_plugin("HetrickCV", &init_plugin_HetrickCV);
vst2_load_static_rack_plugin("huaba", &init_plugin_huaba);
vst2_load_static_rack_plugin("ImpromptuModular", &init_plugin_ImpromptuModular);
vst2_load_static_rack_plugin("JE", &init_plugin_JE);
vst2_load_static_rack_plugin("JW_Modules", &init_plugin_JW_Modules);
vst2_load_static_rack_plugin("Koralfx-Modules", &init_plugin_Koralfx);
vst2_load_static_rack_plugin("LindenbergResearch", &init_plugin_LindenbergResearch);
vst2_load_static_rack_plugin("LOGinstruments", &init_plugin_LOGinstruments);
vst2_load_static_rack_plugin("mental", &init_plugin_mental);
vst2_load_static_rack_plugin("ML_modules", &init_plugin_ML_modules);
vst2_load_static_rack_plugin("moDllz", &init_plugin_moDllz);
vst2_load_static_rack_plugin("modular80", &init_plugin_modular80);
vst2_load_static_rack_plugin("mscHack", &init_plugin_mscHack);
vst2_load_static_rack_plugin("mtsch_plugins", &init_plugin_mtsch_plugins);
vst2_load_static_rack_plugin("NauModular", &init_plugin_NauModular);
vst2_load_static_rack_plugin("Nohmad", &init_plugin_Nohmad);
vst2_load_static_rack_plugin("Ohmer", &init_plugin_Ohmer);
// vst2_load_static_rack_plugin("ParableInstruments", &init_plugin_ParableInstruments);
vst2_load_static_rack_plugin("PG_Instruments", &init_plugin_PG_Instruments);
vst2_load_static_rack_plugin("PvC", &init_plugin_PvC);
vst2_load_static_rack_plugin("Qwelk", &init_plugin_Qwelk);
vst2_load_static_rack_plugin("RJModules", &init_plugin_RJModules);
vst2_load_static_rack_plugin("SerialRacker", &init_plugin_SerialRacker);
vst2_load_static_rack_plugin("SonusModular", &init_plugin_SonusModular);
vst2_load_static_rack_plugin("Southpole", &init_plugin_Southpole);
vst2_load_static_rack_plugin("Southpole_parasites", &init_plugin_Southpole_parasites);
vst2_load_static_rack_plugin("squinkylabs-plug1", &init_plugin_squinkylabs_plug1);
vst2_load_static_rack_plugin("SubmarineFree", &init_plugin_SubmarineFree);
vst2_load_static_rack_plugin("SynthKit", &init_plugin_SynthKit);
vst2_load_static_rack_plugin("Template", &init_plugin_Template);
vst2_load_static_rack_plugin("TheXOR", &init_plugin_TheXOR);
vst2_load_static_rack_plugin("trowaSoft", &init_plugin_trowaSoft);
vst2_load_static_rack_plugin("unless_modules", &init_plugin_unless_modules);
vst2_load_static_rack_plugin("Valley", &init_plugin_Valley);
// vst2_load_static_rack_plugin("VultModules", &init_plugin_VultModules);
#endif // SKIP_STATIC_MODULES
}
#endif // RACK_PLUGIN
#endif // USE_VST2

} // namespace rack

using namespace rack;


+ 218
- 0
src/plugin_static.cpp View File

@@ -0,0 +1,218 @@
#include "global_pre.hpp"
#include "plugin.hpp"
#include "Core/Core.hpp"
#include "app.hpp"
#include "asset.hpp"
#include "util/request.hpp"
#include "osdialog.h"

#include <stdio.h>
#include <assert.h>
#include <string.h>

#ifdef YAC_POSIX
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/param.h> // for MAXPATHLEN
#include <fcntl.h>
#include <dirent.h>
#else
#include "util/dirent_win32/dirent.h"
#endif // YAC_POSIX

#include <thread>
#include <stdexcept>

#include "global.hpp"
#include "global_ui.hpp"

#ifndef USE_VST2
#define ZIP_STATIC
#include <zip.h>
#endif // USE_VST2
#include <jansson.h>

#if ARCH_WIN
#include <windows.h>
#include <direct.h>
#define mkdir(_dir, _perms) _mkdir(_dir)
#else
#include <dlfcn.h>
#endif


namespace rack {

extern Plugin *pluginGetPlugin (std::string pluginSlug);

#ifdef USE_VST2
#ifndef RACK_PLUGIN
#ifndef SKIP_STATIC_MODULES
extern "C" {
extern void init_plugin_21kHz (rack::Plugin *p);
extern void init_plugin_AmalgamatedHarmonics (rack::Plugin *p);
extern void init_plugin_Alikins (rack::Plugin *p);
extern void init_plugin_alto777_LFSR (rack::Plugin *p);
extern void init_plugin_AS (rack::Plugin *p);
extern void init_plugin_AudibleInstruments (rack::Plugin *p);
extern void init_plugin_Autodafe (rack::Plugin *p);
extern void init_plugin_BaconMusic (rack::Plugin *p);
extern void init_plugin_Befaco (rack::Plugin *p);
extern void init_plugin_Bidoo (rack::Plugin *p);
extern void init_plugin_Bogaudio (rack::Plugin *p);
// extern void init_plugin_bsp (rack::Plugin *p); // contains GPLv3 code from Ob-Xd (Obxd_VCF)
// extern void init_plugin_BOKONTEPByteBeatMachine (rack::Plugin *p); // unstable
extern void init_plugin_CastleRocktronics (rack::Plugin *p);
extern void init_plugin_cf (rack::Plugin *p);
extern void init_plugin_com_soundchasing_stochasm (rack::Plugin *p);
extern void init_plugin_computerscare (rack::Plugin *p);
//extern void init_plugin_dBiz (rack::Plugin *p); // now a DLL (13Jul2018)
extern void init_plugin_DHE_Modules (rack::Plugin *p);
extern void init_plugin_DrumKit (rack::Plugin *p);
extern void init_plugin_ErraticInstruments (rack::Plugin *p);
extern void init_plugin_ESeries (rack::Plugin *p);
extern void init_plugin_FrankBussFormula (rack::Plugin *p);
extern void init_plugin_FrozenWasteland (rack::Plugin *p);
extern void init_plugin_Fundamental (rack::Plugin *p);
extern void init_plugin_Geodesics (rack::Plugin *p);
extern void init_plugin_Gratrix (rack::Plugin *p);
extern void init_plugin_HetrickCV (rack::Plugin *p);
extern void init_plugin_huaba (rack::Plugin *p);
extern void init_plugin_ImpromptuModular (rack::Plugin *p);
extern void init_plugin_JE (rack::Plugin *p);
extern void init_plugin_JW_Modules (rack::Plugin *p);
extern void init_plugin_Koralfx (rack::Plugin *p);
extern void init_plugin_LindenbergResearch (rack::Plugin *p);
extern void init_plugin_LOGinstruments (rack::Plugin *p);
extern void init_plugin_mental (rack::Plugin *p);
extern void init_plugin_ML_modules (rack::Plugin *p);
extern void init_plugin_moDllz (rack::Plugin *p);
extern void init_plugin_modular80 (rack::Plugin *p);
extern void init_plugin_mscHack (rack::Plugin *p);
extern void init_plugin_mtsch_plugins (rack::Plugin *p);
extern void init_plugin_NauModular (rack::Plugin *p);
extern void init_plugin_Nohmad (rack::Plugin *p);
extern void init_plugin_Ohmer (rack::Plugin *p);
// extern void init_plugin_ParableInstruments (rack::Plugin *p); // alternative "Clouds" module (crashes)
extern void init_plugin_PG_Instruments (rack::Plugin *p);
extern void init_plugin_PvC (rack::Plugin *p);
extern void init_plugin_Qwelk (rack::Plugin *p);
extern void init_plugin_RJModules (rack::Plugin *p);
extern void init_plugin_SerialRacker (rack::Plugin *p);
extern void init_plugin_SonusModular (rack::Plugin *p);
extern void init_plugin_Southpole (rack::Plugin *p);
extern void init_plugin_Southpole_parasites (rack::Plugin *p);
extern void init_plugin_squinkylabs_plug1 (rack::Plugin *p);
extern void init_plugin_SubmarineFree (rack::Plugin *p);
extern void init_plugin_SynthKit (rack::Plugin *p);
extern void init_plugin_Template (rack::Plugin *p);
extern void init_plugin_TheXOR (rack::Plugin *p);
extern void init_plugin_trowaSoft (rack::Plugin *p);
extern void init_plugin_unless_modules (rack::Plugin *p);
extern void init_plugin_Valley (rack::Plugin *p);
// extern void init_plugin_VultModules (rack::Plugin *p);
}
#endif // SKIP_STATIC_MODULES

static void vst2_load_static_rack_plugin(const char *_name, InitCallback _initCallback) {

std::string path = assetStaticPlugin(_name);
// Construct and initialize Plugin instance
Plugin *plugin = new Plugin();
plugin->path = path;
plugin->handle = NULL;
_initCallback(plugin);

#if 0
// Reject plugin if slug already exists
Plugin *oldPlugin = pluginGetPlugin(plugin->slug);
if (oldPlugin) {
warn("Plugin \"%s\" is already loaded, not attempting to load it again", plugin->slug.c_str());
// TODO
// Fix memory leak with `plugin` here
return false;
}
#endif

// Add plugin to list
global->plugin.gPlugins.push_back(plugin);
info("vcvrack: Loaded static plugin %s %s", plugin->slug.c_str(), plugin->version.c_str());
}

void vst2_load_static_rack_plugins(void) {
#ifndef SKIP_STATIC_MODULES
printf("[dbg] vst2_load_static_rack_plugins: ENTER\n");
#if 1
vst2_load_static_rack_plugin("21kHz", &init_plugin_21kHz);
vst2_load_static_rack_plugin("AmalgamatedHarmonics", &init_plugin_AmalgamatedHarmonics);
vst2_load_static_rack_plugin("Alikins", &init_plugin_Alikins);
vst2_load_static_rack_plugin("alto777_LFSR", &init_plugin_alto777_LFSR);
vst2_load_static_rack_plugin("AS", &init_plugin_AS);
vst2_load_static_rack_plugin("AudibleInstruments", &init_plugin_AudibleInstruments);
vst2_load_static_rack_plugin("Autodafe", &init_plugin_Autodafe);
vst2_load_static_rack_plugin("BaconMusic", &init_plugin_BaconMusic);
vst2_load_static_rack_plugin("Befaco", &init_plugin_Befaco);
vst2_load_static_rack_plugin("Bidoo", &init_plugin_Bidoo);
vst2_load_static_rack_plugin("Bogaudio", &init_plugin_Bogaudio);
// vst2_load_static_rack_plugin("bsp", &init_plugin_bsp); // contains GPLv3 code from Ob-Xd (Obxd_VCF)
// vst2_load_static_rack_plugin("BOKONTEPByteBeatMachine", &init_plugin_BOKONTEPByteBeatMachine);
vst2_load_static_rack_plugin("CastleRocktronics", &init_plugin_CastleRocktronics);
vst2_load_static_rack_plugin("cf", &init_plugin_cf);
vst2_load_static_rack_plugin("com_soundchasing_stochasm", &init_plugin_com_soundchasing_stochasm);
vst2_load_static_rack_plugin("computerscare", &init_plugin_computerscare);
// vst2_load_static_rack_plugin("dBiz", &init_plugin_dBiz); // now a DLL (13Jul2018)
vst2_load_static_rack_plugin("DHE-Modules", &init_plugin_DHE_Modules);
vst2_load_static_rack_plugin("DrumKit", &init_plugin_DrumKit);
vst2_load_static_rack_plugin("ErraticInstruments", &init_plugin_ErraticInstruments);
vst2_load_static_rack_plugin("ESeries", &init_plugin_ESeries);
vst2_load_static_rack_plugin("FrankBussFormula", &init_plugin_FrankBussFormula);
vst2_load_static_rack_plugin("FrozenWasteland", &init_plugin_FrozenWasteland);
vst2_load_static_rack_plugin("Fundamental", &init_plugin_Fundamental);
vst2_load_static_rack_plugin("Geodesics", &init_plugin_Geodesics);
vst2_load_static_rack_plugin("Gratrix", &init_plugin_Gratrix);
vst2_load_static_rack_plugin("HetrickCV", &init_plugin_HetrickCV);
vst2_load_static_rack_plugin("huaba", &init_plugin_huaba);
vst2_load_static_rack_plugin("ImpromptuModular", &init_plugin_ImpromptuModular);
vst2_load_static_rack_plugin("JE", &init_plugin_JE);
vst2_load_static_rack_plugin("JW_Modules", &init_plugin_JW_Modules);
vst2_load_static_rack_plugin("Koralfx-Modules", &init_plugin_Koralfx);
vst2_load_static_rack_plugin("LindenbergResearch", &init_plugin_LindenbergResearch);
vst2_load_static_rack_plugin("LOGinstruments", &init_plugin_LOGinstruments);
vst2_load_static_rack_plugin("mental", &init_plugin_mental);
vst2_load_static_rack_plugin("ML_modules", &init_plugin_ML_modules);
vst2_load_static_rack_plugin("moDllz", &init_plugin_moDllz);
vst2_load_static_rack_plugin("modular80", &init_plugin_modular80);
vst2_load_static_rack_plugin("mscHack", &init_plugin_mscHack);
vst2_load_static_rack_plugin("mtsch_plugins", &init_plugin_mtsch_plugins);
vst2_load_static_rack_plugin("NauModular", &init_plugin_NauModular);
vst2_load_static_rack_plugin("Nohmad", &init_plugin_Nohmad);
vst2_load_static_rack_plugin("Ohmer", &init_plugin_Ohmer);
// vst2_load_static_rack_plugin("ParableInstruments", &init_plugin_ParableInstruments);
vst2_load_static_rack_plugin("PG_Instruments", &init_plugin_PG_Instruments);
vst2_load_static_rack_plugin("PvC", &init_plugin_PvC);
vst2_load_static_rack_plugin("Qwelk", &init_plugin_Qwelk);
vst2_load_static_rack_plugin("RJModules", &init_plugin_RJModules);
vst2_load_static_rack_plugin("SerialRacker", &init_plugin_SerialRacker);
vst2_load_static_rack_plugin("SonusModular", &init_plugin_SonusModular);
vst2_load_static_rack_plugin("Southpole", &init_plugin_Southpole);
vst2_load_static_rack_plugin("Southpole_parasites", &init_plugin_Southpole_parasites);
vst2_load_static_rack_plugin("squinkylabs-plug1", &init_plugin_squinkylabs_plug1);
vst2_load_static_rack_plugin("SubmarineFree", &init_plugin_SubmarineFree);
vst2_load_static_rack_plugin("SynthKit", &init_plugin_SynthKit);
vst2_load_static_rack_plugin("Template", &init_plugin_Template);
vst2_load_static_rack_plugin("TheXOR", &init_plugin_TheXOR);
vst2_load_static_rack_plugin("trowaSoft", &init_plugin_trowaSoft);
vst2_load_static_rack_plugin("unless_modules", &init_plugin_unless_modules);
vst2_load_static_rack_plugin("Valley", &init_plugin_Valley);
// vst2_load_static_rack_plugin("VultModules", &init_plugin_VultModules);
#else
vst2_load_static_rack_plugin("Template", &init_plugin_Template);
#endif
printf("[dbg] vst2_load_static_rack_plugins: LEAVE\n");
#endif // SKIP_STATIC_MODULES
}
#endif // RACK_PLUGIN
#endif // USE_VST2
}

+ 4
- 1
vst2_common_linux.mk View File

@@ -5,8 +5,11 @@

EXTRAFLAGS+= -DVERSION=0.6.1 -D_USE_MATH_DEFINES -Iinclude/ -Idep/include -Idep/ -DUSE_VST2

EXTRALIBS+= src/plugin_static.o

## note: remove -DSKIP_STATIC_MODULES in makefile_lib.linux and uncomment the following line to link the add-on modules
#include vst2_common_staticlibs.mk
include vst2_common_staticlibs.mk
##EXTRALIBS+= $(call plugin_lib,Template)

EXTRALIBS+= Rack.a



Loading…
Cancel
Save