Remove all references to Boost

Since we no longer depend on any of it.
This commit is contained in:
Robbert van der Helm
2022-04-15 15:25:03 +02:00
parent 7b3afa4043
commit 88ac466501
7 changed files with 16 additions and 29 deletions
+7 -5
View File
@@ -10,11 +10,12 @@ Versioning](https://semver.org/spec/v2.0.0.html).
### Changed ### Changed
- Almost the entirety of yabridge's backend has had a rewrite to get rid of any - Almost the entirety of yabridge's backend has been rewritten to get rid of all
all dependencies on the Boost libraries to make packaging easier and to remove dependencies on the Boost libraries to make packaging yabridge for distros
the runtime dependency on Boost.Filesystem for distro packaged versions of easier and to make distro packaged versions of yabridge more reliable. This
yabridge. This prevents yabridge from breaking when Boost gets updated gets rid of the runtime dependency on Boost.Filesystem for those builds, and
independently of the yabridge package. it also makes compiling slightly faster and the binaries slightly smaller.
Before this, yabridge would need to be rebuilt whenever Boost got updated.
- When mapping shared memory for audio and the user does not have permissions to - When mapping shared memory for audio and the user does not have permissions to
lock the memory, yabridge will now retry mapping the memory without locking it lock the memory, yabridge will now retry mapping the memory without locking it
instead of immediately terminating the process. An annoying desktop instead of immediately terminating the process. An annoying desktop
@@ -35,6 +36,7 @@ Versioning](https://semver.org/spec/v2.0.0.html).
### Packaging notes ### Packaging notes
- Completely removed the dependency on all Boost libraries.
- Added a dependency on the headers-only - Added a dependency on the headers-only
[`ghc::filesystem`](https://github.com/gulrak/filesystem) library to replace [`ghc::filesystem`](https://github.com/gulrak/filesystem) library to replace
Boost.Filesystem. Boost.Filesystem.
+4 -5
View File
@@ -765,7 +765,6 @@ the following dependencies:
- A Wine installation with `winegcc` and the development headers. The latest - A Wine installation with `winegcc` and the development headers. The latest
commits contain a workaround for a winelib [compilation commits contain a workaround for a winelib [compilation
issue](https://bugs.winehq.org/show_bug.cgi?id=49138) with Wine 5.7+. issue](https://bugs.winehq.org/show_bug.cgi?id=49138) with Wine 5.7+.
- Boost version 1.66 or higher[\*](#building-ubuntu-18.04)
- libxcb - libxcb
The following dependencies are included in the repository as a Meson wrap: The following dependencies are included in the repository as a Meson wrap:
@@ -793,9 +792,9 @@ After you've finished building you can follow the instructions under the
[usage](#usage) section on how to set up yabridge. [usage](#usage) section on how to set up yabridge.
<sup id="building-ubuntu-18.04"> <sup id="building-ubuntu-18.04">
*The versions of GCC and Boost that ship with Ubuntu 18.04 by default are too *The version of GCC that ships with Ubuntu 18.04 by default is too old to
old to compile yabridge. If you do wish to build yabridge from scratch rather compile yabridge. If you do wish to build yabridge from scratch rather than
than using the <a using the <a
href="https://github.com/robbert-vdh/yabridge/actions?query=workflow%3A%22Automated+builds%22+branch%3Amaster">prebuilt href="https://github.com/robbert-vdh/yabridge/actions?query=workflow%3A%22Automated+builds%22+branch%3Amaster">prebuilt
binaries</a>, then you should take a look at the <a binaries</a>, then you should take a look at the <a
href="https://github.com/robbert-vdh/docker-yabridge/blob/master/bionic/Dockerfile">docker href="https://github.com/robbert-vdh/docker-yabridge/blob/master/bionic/Dockerfile">docker
@@ -809,7 +808,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 with 32-bit plugins such as old SynthEdit plugins. This will allow yabridge to
act as a bitbridge, allowing you to run old 32-bit only Windows VST2 plugins in act as a bitbridge, 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 a modern 64-bit Linux VST host. For this you'll need to have installed the 32
bit versions of the Boost and XCB libraries. This can then be set up as follows: bit versions of the XCB library. This can then be set up as follows:
```shell ```shell
# Enable the bitbridge on an existing build # Enable the bitbridge on an existing build
-6
View File
@@ -34,12 +34,6 @@ page lists some of those.
files from smaller stub libraries. This would avoid having to rerun files from smaller stub libraries. This would avoid having to rerun
`yabridgectl sync` after an upgrade, and it would save disk space on systems `yabridgectl sync` after an upgrade, and it would save disk space on systems
without support for reflinks. without support for reflinks.
- Consider replacing Boost.Asio with the standalone Asio library,
Boost.Filesystem with a similar headers only library (as `std::filesystem`
doesn't work under `wineg++`) and all other components with custom wrappers
around Linux and Windows APIs. Getting rid of the Boost.Filesystem dependency
would be nice as it makes packaging easier, but it would require a lot of work
to make it happen.
# Somewhere in the future, possibly # Somewhere in the future, possibly
+3 -3
View File
@@ -61,9 +61,9 @@ interacts with the Win32 message loop or the GUI has to be done from the same
thread (or typically the main thread). To do this yabridge will execute certain thread (or typically the main thread). To do this yabridge will execute certain
'unsafe' functions that are likely to interact with these things from the main 'unsafe' functions that are likely to interact with these things from the main
thread. The main thread also periodically handles Win32 and optionally also X11 thread. The main thread also periodically handles Win32 and optionally also X11
events (when there are open editors) using a Boost.Asio timer, so these function events (when there are open editors) using an Asio timer, so these function
calls can all be done from that same thread by posting a task to the Boost.Asio calls can all be done from that same thread by posting a task to the Asio IO
IO context. context.
On the native Linux side it usually doesn't matter which thread functions are On the native Linux side it usually doesn't matter which thread functions are
called from, but since REAPER does not allow any function calls that interact called from, but since REAPER does not allow any function calls that interact
-4
View File
@@ -183,8 +183,6 @@ endif
# and 64-bit versions # and 64-bit versions
asio_dep = dependency('asio', version : '>=1.22.0') asio_dep = dependency('asio', version : '>=1.22.0')
# TODO: Get rid of the last Boost bits and pieces
boost_dep = dependency('boost', version : '>=1.66')
if meson.version().version_compare('>=0.60') if meson.version().version_compare('>=0.60')
# Bitsery's CMake build definition is capitalized for some reason # Bitsery's CMake build definition is capitalized for some reason
bitsery_dep = dependency('bitsery', 'Bitsery', version : '>=5.2.0') bitsery_dep = dependency('bitsery', 'Bitsery', version : '>=5.2.0')
@@ -248,7 +246,6 @@ shared_library(
configuration_dep, configuration_dep,
asio_dep, asio_dep,
boost_dep,
bitsery_dep, bitsery_dep,
dl_dep, dl_dep,
ghc_filesystem_dep, ghc_filesystem_dep,
@@ -271,7 +268,6 @@ if with_vst3
configuration_dep, configuration_dep,
asio_dep, asio_dep,
boost_dep,
bitsery_dep, bitsery_dep,
dl_dep, dl_dep,
function2_dep, function2_dep,
+2 -4
View File
@@ -188,8 +188,7 @@ class Vst2Bridge : public HostBridge {
#pragma GCC diagnostic ignored "-Wignored-attributes" #pragma GCC diagnostic ignored "-Wignored-attributes"
/** /**
* The shared library handle of the VST plugin. I sadly could not get * The shared library handle of the VST2 plugin.
* Boost.DLL to work here, so we'll just load the VST plugisn by hand.
*/ */
std::unique_ptr<std::remove_pointer_t<HMODULE>, decltype(&FreeLibrary)> std::unique_ptr<std::remove_pointer_t<HMODULE>, decltype(&FreeLibrary)>
plugin_handle_; plugin_handle_;
@@ -245,8 +244,7 @@ class Vst2Bridge : public HostBridge {
* practice every host will bundle all events in a single * practice every host will bundle all events in a single
* `effProcessEvents()` call. * `effProcessEvents()` call.
*/ */
llvm::SmallVector<DynamicVstEvents, 1> llvm::SmallVector<DynamicVstEvents, 1> next_audio_buffer_midi_events_;
next_audio_buffer_midi_events_;
/** /**
* Whether `next_audio_buffer_midi_events` should be cleared before * Whether `next_audio_buffer_midi_events` should be cleared before
* inserting new events. * inserting new events.
-2
View File
@@ -11,7 +11,6 @@ if is_64bit_system
configuration_dep, configuration_dep,
asio_dep, asio_dep,
boost_dep,
bitsery_dep, bitsery_dep,
function2_dep, function2_dep,
ghc_filesystem_dep, ghc_filesystem_dep,
@@ -37,7 +36,6 @@ if with_bitbridge
configuration_dep, configuration_dep,
asio_dep, asio_dep,
boost_dep,
ghc_filesystem_dep, ghc_filesystem_dep,
bitsery_dep, bitsery_dep,
function2_dep, function2_dep,