diff --git a/CHANGELOG.md b/CHANGELOG.md index b6a6de01..31ff4b77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,15 @@ Versioning](https://semver.org/spec/v2.0.0.html). instead of patching the SDK using sed. This makes it easier to use older (but still API-compatible) VST3 SDK versions with yabridge and it makes the patching less brittle. The patches can be found in `tools/vst3-sdk-patches`. +- Since the workarounds from yabridge 5.0.1 and 5.0.2 have been reverted, the + Meson build will now throw an error when trying to build against Wine 7.21, + 7.22, or 8.0-rc1. Yabridge binaries built against these Wine versions will not + work correctly. +- Yabridge built against Wine 8.0-rc2 will also work with older Wine versions, + including the aforementioned ones that previously required workarounds. + Yabridge built against older Wine versions will not work with Wine 8.0-rc2 or + later. +- Unity builds can safely be re-enabled again. ## [5.0.2] - 2022-11-28 diff --git a/meson.build b/meson.build index 951a44a0..397365d4 100644 --- a/meson.build +++ b/meson.build @@ -151,51 +151,53 @@ endif # # https://bugs.winehq.org/show_bug.cgi?id=49138 wine_version = run_command( - 'sh', '-c', '''wine --version | grep --only-matching -E '[0-9]+\.[0-9]+' | head -n1''', + 'sh', '-c', '''wine --version | grep --only-matching -E '[0-9]+\.[0-9]+(rc[0-9]+)?' | head -n1''', check : false ) if wine_version.returncode() == 0 - message('Targetting Wine @0@'.format(wine_version.stdout())) - if wine_version.stdout().version_compare('>=5.7') and \ - wine_version.stdout().version_compare('<6.0') + wine_version = wine_version.stdout() + message('Targetting Wine @0@'.format(wine_version)) + + # Wine versions below 5.7 will segfault in `CoCreateGuid` which gets called + # during static initialization. I'm not exactly sure why this is happening, + # but to prevent this from causing more headaches and confusion in the future + # we should just immediately error out when building yabridge's VST3 support + # with these older Wine versions. + if wine_version.version_compare('<5.7') and with_vst3 + error('Because of a bug in Wine < 5.7\n' + + 'you cannot build yabridge with VST3 support using these older Wine versions.\n' + + 'Use the \'-Dvst3=false\' build option to disable VST3 support.\n\n' + + 'https://github.com/robbert-vdh/yabridge/issues/63#issuecomment-757369645') + endif + # This version of yabridge will not work when built against Wine 7.21, 7.22, + # or 8.0-rc1 because of https://bugs.winehq.org/show_bug.cgi?id=53912. We'll + # outright prevent building yabridge with these versions to avoid broken + # yabridge builds. If anyone's reading this because you ran into the error + # below, either build with Wine 8.0-rc2+, or stick with yabridge 5.0.2 if + # you're stuck with Wine 7.22. + if wine_version.version_compare('>=7.21') and \ + wine_version.version_compare('<8.0rc2') + error('Building this version of yabridge against Wine ' + wine_version + + 'would result in nonfunctional binaries. Either build yabridge 5.0.2 ' + + 'with Wine 7.22, or switch to Wine 8.0-rc2+. Yabridge built with 8.0-rc2+ ' + + 'will also work with older Wine versions, but yabridge built against older ' + + 'Wine versions will not work with Wine 7.21+.\n\n' + + 'https://bugs.winehq.org/show_bug.cgi?id=53912') + endif + + if wine_version.version_compare('>=5.7') and \ + wine_version.version_compare('<6.0') message('- Using the cdecl calling convention') compiler_options += '-DWINE_USE_CDECL' endif - if wine_version.stdout().version_compare('<6.23') and with_winedbg + if wine_version.version_compare('<6.23') and with_winedbg message('- Using legacy winedbg argument quoting') compiler_options += '-DWINEDBG_LEGACY_ARGUMENT_QUOTING' endif - # If the bug is not fixed in time for Wine 7.23, which is probably won't be, - # then this conditional won't be effective anymore for already released - # yabridge builds. But it may prevent some incorrectly packaged yabridge - # builds in the meantime. - if wine_version.stdout().version_compare('>=7.21') and \ - wine_version.stdout().version_compare('<7.23') and \ - get_option('unity') == 'on' - error('This version of Wine contains a bug that may cause yabridge to freeze ' + - 'or crash on startup when the --unity=true option is enabled. ' + - 'Remove this error from the meson.build file at your own risk if you ' + - 'want to keep using unity builds.\n\n' + - 'https://bugs.winehq.org/show_bug.cgi?id=53912') - endif else warning('Unable to determine the current Wine version') endif -# Wine versions below 5.7 will segfault in `CoCreateGuid` which gets called -# during static initialization. I'm not exactly sure why this is happening, but -# to prevent this from causing more headaches and confusion in the future we -# should just immediately error out when building yabridge's VST3 support with -# these older Wine versions. -if wine_version.returncode() == 0 and \ - wine_version.stdout().version_compare('<5.7') and \ - with_vst3 - error('Because of a bug in Wine < 5.7\n' + - 'you cannot build yabridge with VST3 support using these older Wine versions.\n' + - 'Use the \'-Dvst3=false\' build option to disable VST3 support.\n\n' + - 'https://github.com/robbert-vdh/yabridge/issues/63#issuecomment-757369645') -endif - # # Dependencies #