DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

commit c6c6900b8743550da7eb4f0f61a28ee85ac80966
parent 2208680d20cca0360d38043d65f050a51d2c5a02
Author: falkTX <falktx@falktx.com>
Date:   Wed,  8 Dec 2021 22:26:17 +0000

Add steps to create a plugin as shared library

The exported createSharedPlugin function will return a DPF Plugin

Signed-off-by: falkTX <falktx@falktx.com>

Diffstat:
MMakefile.plugins.mk | 20++++++++++++++++++++
Mdistrho/DistrhoPluginMain.cpp | 3+++
Mdistrho/DistrhoUIMain.cpp | 2++
Autils/symbols/shared.def | 2++
Autils/symbols/shared.exp | 1+
Autils/symbols/shared.version | 4++++
6 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/Makefile.plugins.mk b/Makefile.plugins.mk @@ -126,6 +126,7 @@ vst2 = $(TARGET_DIR)/$(VST2_FILENAME) ifneq ($(VST3_FILENAME),) vst3 = $(TARGET_DIR)/$(VST3_FILENAME) endif +shared = $(TARGET_DIR)/$(NAME)$(LIB_EXT) ifeq ($(MACOS),true) vst2files += $(TARGET_DIR)/$(VST2_CONTENTS)/Info.plist @@ -147,6 +148,7 @@ SYMBOLS_LV2UI = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/lv2-ui.exp SYMBOLS_LV2 = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/lv2.exp SYMBOLS_VST2 = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/vst2.exp SYMBOLS_VST3 = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/vst3.exp +SYMBOLS_SHARED = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/shared.exp else ifeq ($(WINDOWS),true) SYMBOLS_LADSPA = $(DPF_PATH)/utils/symbols/ladspa.def SYMBOLS_DSSI = $(DPF_PATH)/utils/symbols/dssi.def @@ -155,6 +157,7 @@ SYMBOLS_LV2UI = $(DPF_PATH)/utils/symbols/lv2-ui.def SYMBOLS_LV2 = $(DPF_PATH)/utils/symbols/lv2.def SYMBOLS_VST2 = $(DPF_PATH)/utils/symbols/vst2.def SYMBOLS_VST3 = $(DPF_PATH)/utils/symbols/vst3.def +SYMBOLS_SHARED = $(DPF_PATH)/utils/symbols/shared.def else ifneq ($(DEBUG),true) SYMBOLS_LADSPA = -Wl,--version-script=$(DPF_PATH)/utils/symbols/ladspa.version SYMBOLS_DSSI = -Wl,--version-script=$(DPF_PATH)/utils/symbols/dssi.version @@ -163,6 +166,7 @@ SYMBOLS_LV2UI = -Wl,--version-script=$(DPF_PATH)/utils/symbols/lv2-ui.version SYMBOLS_LV2 = -Wl,--version-script=$(DPF_PATH)/utils/symbols/lv2.version SYMBOLS_VST2 = -Wl,--version-script=$(DPF_PATH)/utils/symbols/vst2.version SYMBOLS_VST3 = -Wl,--version-script=$(DPF_PATH)/utils/symbols/vst3.version +SYMBOLS_SHARED = -Wl,--version-script=$(DPF_PATH)/utils/symbols/shared.version endif # --------------------------------------------------------------------------------------------------------------------- @@ -440,6 +444,20 @@ endif $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_VST3) -o $@ # --------------------------------------------------------------------------------------------------------------------- +# Shared + +shared: $(shared) + +ifeq ($(HAVE_DGL),true) +$(shared): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_SHARED.cpp.o $(BUILD_DIR)/DistrhoUIMain_SHARED.cpp.o $(DGL_LIB) +else +$(shared): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_SHARED.cpp.o +endif + -@mkdir -p $(shell dirname $@) + @echo "Creating shared library for $(NAME)" + $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_SHARED) -o $@ + +# --------------------------------------------------------------------------------------------------------------------- # macOS files $(TARGET_DIR)/%/Contents/Info.plist: $(DPF_PATH)/utils/plugin.vst/Contents/Info.plist @@ -467,11 +485,13 @@ endif -include $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.d -include $(BUILD_DIR)/DistrhoPluginMain_VST2.cpp.d -include $(BUILD_DIR)/DistrhoPluginMain_VST3.cpp.d +-include $(BUILD_DIR)/DistrhoPluginMain_SHARED.cpp.d -include $(BUILD_DIR)/DistrhoUIMain_JACK.cpp.d -include $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.d -include $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.d -include $(BUILD_DIR)/DistrhoUIMain_VST2.cpp.d -include $(BUILD_DIR)/DistrhoUIMain_VST3.cpp.d +-include $(BUILD_DIR)/DistrhoUIMain_SHARED.cpp.d # --------------------------------------------------------------------------------------------------------------------- diff --git a/distrho/DistrhoPluginMain.cpp b/distrho/DistrhoPluginMain.cpp @@ -29,6 +29,9 @@ # include "src/DistrhoPluginVST2.cpp" #elif defined(DISTRHO_PLUGIN_TARGET_VST3) # include "src/DistrhoPluginVST3.cpp" +#elif defined(DISTRHO_PLUGIN_TARGET_SHARED) +DISTRHO_PLUGIN_EXPORT DISTRHO_NAMESPACE::Plugin* createSharedPlugin(); +DISTRHO_PLUGIN_EXPORT DISTRHO_NAMESPACE::Plugin* createSharedPlugin() { return DISTRHO_NAMESPACE::createPlugin(); } #else # error unsupported format #endif diff --git a/distrho/DistrhoUIMain.cpp b/distrho/DistrhoUIMain.cpp @@ -28,6 +28,8 @@ // nothing #elif defined(DISTRHO_PLUGIN_TARGET_VST3) # include "src/DistrhoUIVST3.cpp" +#elif defined(DISTRHO_PLUGIN_TARGET_SHARED) +// nothing #else # error unsupported format #endif diff --git a/utils/symbols/shared.def b/utils/symbols/shared.def @@ -0,0 +1,2 @@ +EXPORTS +createSharedPlugin diff --git a/utils/symbols/shared.exp b/utils/symbols/shared.exp @@ -0,0 +1 @@ +_createSharedPlugin diff --git a/utils/symbols/shared.version b/utils/symbols/shared.version @@ -0,0 +1,4 @@ +{ + global: createSharedPlugin; + local: *; +};