Skip to content

Commit

Permalink
Implement yabridge_version for all plugin bridges
Browse files Browse the repository at this point in the history
The host can use this to query the yabridge version in use.
  • Loading branch information
robbert-vdh committed Dec 10, 2023
1 parent d39d3a6 commit f1a7ad4
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 6 deletions.
4 changes: 2 additions & 2 deletions src/chainloader/clap-chainloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ const void* (*yabridge_module_get_factory)(ClapPluginBridge* instance,
// This bridges the `yabridge_version()` call from the plugin library. This
// function was added later, so through weird version mixing it may be missing
// on the yabridge library.
char* (*remote_yabridge_version)() = nullptr;
const char* (*remote_yabridge_version)() = nullptr;

/**
* The bridge instance for this chainloader. This is initialized when
Expand Down Expand Up @@ -181,7 +181,7 @@ CLAP_EXPORT const clap_plugin_entry_t clap_entry = {
* wouldn't be very useful, and that would also cause the chainloader to be
* rebuilt on every git commit in development.
*/
extern "C" YABRIDGE_EXPORT char* yabridge_version() {
extern "C" YABRIDGE_EXPORT const char* yabridge_version() {
if (!initialize_library() || !remote_yabridge_version) {
return nullptr;
}
Expand Down
4 changes: 2 additions & 2 deletions src/chainloader/vst2-chainloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ AEffect* (*yabridge_plugin_init)(audioMasterCallback host_callback,
// This bridges the `yabridge_version()` call from the plugin library. This
// function was added later, so through weird version mixing it may be missing
// on the yabridge library.
char* (*remote_yabridge_version)() = nullptr;
const char* (*remote_yabridge_version)() = nullptr;

/**
* The first time one of the exported functions from this library gets called,
Expand Down Expand Up @@ -127,7 +127,7 @@ YABRIDGE_EXPORT AEffect* deprecated_main(audioMasterCallback audioMaster) {
* wouldn't be very useful, and that would also cause the chainloader to be
* rebuilt on every git commit in development.
*/
extern "C" YABRIDGE_EXPORT char* yabridge_version() {
extern "C" YABRIDGE_EXPORT const char* yabridge_version() {
if (!initialize_library() || !remote_yabridge_version) {
return nullptr;
}
Expand Down
4 changes: 2 additions & 2 deletions src/chainloader/vst3-chainloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ PluginFactory* (*yabridge_module_get_plugin_factory)(
// This bridges the `yabridge_version()` call from the plugin library. This
// function was added later, so through weird version mixing it may be missing
// on the yabridge library.
char* (*remote_yabridge_version)() = nullptr;
const char* (*remote_yabridge_version)() = nullptr;

/**
* The bridge instance for this chainloader. This is initialized when
Expand Down Expand Up @@ -164,7 +164,7 @@ extern "C" YABRIDGE_EXPORT PluginFactory* GetPluginFactory() {
* wouldn't be very useful, and that would also cause the chainloader to be
* rebuilt on every git commit in development.
*/
extern "C" YABRIDGE_EXPORT char* yabridge_version() {
extern "C" YABRIDGE_EXPORT const char* yabridge_version() {
if (!initialize_library() || !remote_yabridge_version) {
return nullptr;
}
Expand Down
11 changes: 11 additions & 0 deletions src/plugin/clap-plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@

#include <clap/entry.h>

// Generated inside of the build directory
#include <version.h>

#include "bridges/clap.h"

using namespace std::literals::string_literals;
Expand Down Expand Up @@ -167,3 +170,11 @@ extern "C" YABRIDGE_EXPORT const void* yabridge_module_get_factory(

return instance->get_factory(factory_id);
}

/**
* Returns the yabridge version in use. Can be queried by hosts through the
* chainloader. Both functions have the same name and signature.
*/
extern "C" YABRIDGE_EXPORT const char* yabridge_version() {
return yabridge_git_version;
}
11 changes: 11 additions & 0 deletions src/plugin/vst2-plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@

#include <vestige/aeffectx.h>

// Generated inside of the build directory
#include <version.h>

#include "../common/linking.h"
#include "bridges/vst2.h"

Expand Down Expand Up @@ -130,3 +133,11 @@ extern "C" YABRIDGE_EXPORT AEffect* yabridge_plugin_init(
return nullptr;
}
}

/**
* Returns the yabridge version in use. Can be queried by hosts through the
* chainloader. Both functions have the same name and signature.
*/
extern "C" YABRIDGE_EXPORT const char* yabridge_version() {
return yabridge_git_version;
}
11 changes: 11 additions & 0 deletions src/plugin/vst3-plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.

// Generated inside of the build directory
#include <version.h>

#include "../common/linking.h"
#include "bridges/vst3.h"

Expand Down Expand Up @@ -165,3 +168,11 @@ yabridge_module_get_plugin_factory(Vst3PluginBridge* instance) {

return instance->get_plugin_factory();
}

/**
* Returns the yabridge version in use. Can be queried by hosts through the
* chainloader. Both functions have the same name and signature.
*/
extern "C" YABRIDGE_EXPORT const char* yabridge_version() {
return yabridge_git_version;
}

0 comments on commit f1a7ad4

Please sign in to comment.