Define the deprecated VST<2.4 main entry point

This should allow @AVLinux to use yabridge under EnergyXT.
This commit is contained in:
Robbert van der Helm
2021-06-26 14:57:03 +02:00
parent e7366006df
commit e0713c5fe7
2 changed files with 12 additions and 5 deletions
+3
View File
@@ -23,6 +23,9 @@ Versioning](https://semver.org/spec/v2.0.0.html).
Linux plugin hosts. This should not be necessary in any normal situation since Linux plugin hosts. This should not be necessary in any normal situation since
Desktop Linux has been 64-bit only for a while now, but it could be useful in Desktop Linux has been 64-bit only for a while now, but it could be useful in
some very specific situations. some very specific situations.
- Defined the deprecated pre-VST2.4 `main` entry point for VST2 plugins. This
allows the above mentioned 32-bit version of yabridge to be used in EnergyXT,
allowing you to use both 32-bit and 64-bit Windows VST2 plugins there.
### Changed ### Changed
+9 -5
View File
@@ -25,10 +25,9 @@
#define VST_EXPORT __attribute__((visibility("default"))) #define VST_EXPORT __attribute__((visibility("default")))
// The main entry point for VST2 plugins should be called `VSTPluginMain``. The // The main entry point for VST2 plugins should be called `VSTPluginMain``. The
// other one exist for legacy reasons since some old hosts might still use them. // other one exist for legacy reasons since some old hosts might still use them
// There's also another possible legacy entry point just called `main`, but GCC // (EnergyXT being the only known host on Linux that uses the `main` entry
// will refuse to compile a function called `main` that's not a regular C++ main // point).
// function.
/** /**
* The main VST2 plugin entry point. We first set up a bridge that connects to a * The main VST2 plugin entry point. We first set up a bridge that connects to a
@@ -61,6 +60,11 @@ extern "C" VST_EXPORT AEffect* VSTPluginMain(
} }
} }
extern "C" VST_EXPORT AEffect* main_plugin(audioMasterCallback audioMaster) { // XXX: GCC doens't seem to have a clean way to let you define an arbitrary
// function called 'main'. Even JUCE does it this way, so it should be
// safe.
extern "C" VST_EXPORT AEffect* deprecated_main(
audioMasterCallback audioMaster) asm("main");
VST_EXPORT AEffect* deprecated_main(audioMasterCallback audioMaster) {
return VSTPluginMain(audioMaster); return VSTPluginMain(audioMaster);
} }