From 4e80e23cc09afe9296c913e8ab9569788139eaf0 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Sun, 17 May 2020 16:36:09 +0200 Subject: [PATCH] Revert "Don't link the winelibs with libboost_filesystem" This reverts commit e728dbe5a2262d9df931c93c651b053d7a80b5e5. `std::filesystem` is broken on wineg++, at least with Wine 5.8. Any path operations will throw a `std::filesystem::__cxx11::filesystem_error`: what(): filesystem error: Cannot convert character sequence: Invalid or incomplete multibyte or wide character --- CHANGELOG.md | 1 - README.md | 2 +- meson.build | 14 +++++++++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0f5ab69..e0c72541 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,6 @@ Versioning](https://semver.org/spec/v2.0.0.html). ### Changed - Changed architecture to use one less socket. -- Removed dependency on 32-bit Boost.Filesystem. ### Fixed diff --git a/README.md b/README.md index 68e03ae2..0580ff21 100644 --- a/README.md +++ b/README.md @@ -244,7 +244,7 @@ It is also possible to compile a host application for yabridge that's compatible with 32-bit plugins such as old SynthEdit plugins. This will allow yabridge to act as a bitbirdge, allowing you to run old 32-bit only Windows VST2 plugins in a modern 64-bit Linux VST host. For this you'll need to have installed the 32 -bit version of the XCB library. This can then be set up as follows: +bit versions of the Boost and XCB libraries. This can then be set up as follows: ```shell # Enable the bitbridge on an existing build diff --git a/meson.build b/meson.build index 81b87057..d69a9925 100644 --- a/meson.build +++ b/meson.build @@ -41,9 +41,8 @@ endif # and the name of the host binary subdir('src/common/config') -# Statically link against Boost.Filesystem, otherwise it becomes impossible to -# distribute a prebuilt version of yabridge. For the Wine host applications we -# only use the headers only libraries. +# Statically link against Boost.Filesystem, otherwise it would become impossible +# to distribute a prebuilt version of yabridge boost_dep = dependency('boost', version : '>=1.66', static : true) boost_filesystem_dep = dependency('boost', version : '>=1.66', modules : ['filesystem'], static : true) bitsery_dep = subproject('bitsery').get_variable('bitsery_dep') @@ -104,6 +103,7 @@ executable( include_directories : include_dir, dependencies : [ boost_dep, + boost_filesystem_dep, bitsery_dep, tomlplusplus_dep, wine_threads_dep, @@ -120,6 +120,7 @@ executable( include_directories : include_dir, dependencies : [ boost_dep, + boost_filesystem_dep, bitsery_dep, tomlplusplus_dep, wine_threads_dep, @@ -135,6 +136,11 @@ if get_option('use-bitbridge') # I honestly have no idea what the correct way to have `find_dependency()` use # `/usr/lib32` instead of `/usr/lib` is. If anyone does know, please tell me! winegcc = meson.get_compiler('cpp', native : false) + boost_filesystem_dep = winegcc.find_library( + 'boost_filesystem', + static : true, + dirs : ['/usr/lib', '/usr/local/lib'] + ) xcb_dep = winegcc.find_library('xcb') executable( @@ -144,6 +150,7 @@ if get_option('use-bitbridge') include_directories : include_dir, dependencies : [ boost_dep, + boost_filesystem_dep, bitsery_dep, tomlplusplus_dep, wine_threads_dep, @@ -167,6 +174,7 @@ if get_option('use-bitbridge') include_directories : include_dir, dependencies : [ boost_dep, + boost_filesystem_dep, bitsery_dep, tomlplusplus_dep, wine_threads_dep,