From 33e5d2bd560bbde936bd58a95a9a5414f281b3f7 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Mon, 11 May 2020 18:11:44 +0200 Subject: [PATCH] Add a workaround for compilation with Wine 5.7+ --- CHANGELOG.md | 5 +++++ README.md | 11 ++++------- src/wine-host/vst-host.cpp | 5 ++++- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aefc8003..22e44e90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,11 @@ Versioning](https://semver.org/spec/v2.0.0.html). initialization process without telling the host. This fixes the Roland Cloud plugins. +### Fixed + +- Added a workaround for the compilation issues under Wine 5.7 and above as + caused by [Wine bug 49138](https://bugs.winehq.org/show_bug.cgi?id=49138). + ## [1.1.2] - 2020-05-09 ### Fixed diff --git a/README.md b/README.md index 7f4877b8..f65e3b83 100644 --- a/README.md +++ b/README.md @@ -204,13 +204,10 @@ To compile yabridge, you'll need [Meson](https://mesonbuild.com/index.html) and the following dependencies: - gcc (tested using GCC 9.2) -- A Wine installation with `winegcc` and the development headers. At the moment - there's a regression in **Wine 5.7+** causing compiled winelib applications to - break. I've created an issue for this on WineHQ's [bug - tracker](https://bugs.winehq.org/show_bug.cgi?id=49138). You'll have to - temporarily downgrade to an earlier version of Wine if you've got Wine 5.7 - installed and you're trying to compile yabridge. -- Boost +- A Wine installation with `winegcc` and the development headers. The latest + commits contain a workaround for a winelib [compilation + issue](https://bugs.winehq.org/show_bug.cgi?id=49138) with Wine 5.7+. +- Boost with at least `libboost_filesystem.a` - xcb The following dependencies are included in the repository as a Meson wrap: diff --git a/src/wine-host/vst-host.cpp b/src/wine-host/vst-host.cpp index 44c947bd..2d6e059c 100644 --- a/src/wine-host/vst-host.cpp +++ b/src/wine-host/vst-host.cpp @@ -22,7 +22,10 @@ #include "wine-bridge.h" -int main(int argc, char* argv[]) { +// This explicit calling convention is needed to work around a bug introduced in +// Wine 5.7 +// https://bugs.winehq.org/show_bug.cgi?id=49138 +int __cdecl main(int argc, char* argv[]) { // We pass the name of the VST plugin .dll file to load and the Unix domain // socket to connect to in plugin/bridge.cpp as the first two arguments of // this process.