diff --git a/meson.build b/meson.build index 0b59034c..7b4e34ed 100644 --- a/meson.build +++ b/meson.build @@ -235,205 +235,26 @@ if with_vst3 endif # -# Source files +# Binaries +# +# The application consists of a plugin (`libyabridge-{vst2,vst3}.so`) that calls +# a Winelib application (`yabridge-{host,group}{,-32}.exe`) that can host +# Windows VST2 and VST3 plugins. More information about the way these two +# components work together can be found in `docs/architecture.md`. # # Generate header files for configuration variables such as the current git tag # and the name of the host binary subdir('src/common/config') -vst2_plugin_sources = [ - 'src/common/communication/common.cpp', - 'src/common/communication/vst2.cpp', - 'src/common/serialization/vst2.cpp', - 'src/common/configuration.cpp', - 'src/common/logging/common.cpp', - 'src/common/logging/vst2.cpp', - 'src/common/audio-shm.cpp', - 'src/common/plugins.cpp', - 'src/common/utils.cpp', - 'src/plugin/bridges/vst2.cpp', - 'src/plugin/host-process.cpp', - 'src/plugin/utils.cpp', - 'src/plugin/vst2-plugin.cpp', - version_header, -] - -vst3_plugin_sources = [ - 'src/common/communication/common.cpp', - 'src/common/logging/common.cpp', - 'src/common/logging/vst3.cpp', - 'src/common/serialization/vst3/component-handler/component-handler.cpp', - 'src/common/serialization/vst3/component-handler/component-handler-2.cpp', - 'src/common/serialization/vst3/component-handler/component-handler-3.cpp', - 'src/common/serialization/vst3/component-handler/component-handler-bus-activation.cpp', - 'src/common/serialization/vst3/component-handler/progress.cpp', - 'src/common/serialization/vst3/component-handler/unit-handler.cpp', - 'src/common/serialization/vst3/component-handler/unit-handler-2.cpp', - 'src/common/serialization/vst3/context-menu/context-menu.cpp', - 'src/common/serialization/vst3/host-context/host-application.cpp', - 'src/common/serialization/vst3/host-context/plug-interface-support.cpp', - 'src/common/serialization/vst3/plug-view/parameter-finder.cpp', - 'src/common/serialization/vst3/plug-view/plug-view.cpp', - 'src/common/serialization/vst3/plug-view/plug-view-content-scale-support.cpp', - 'src/common/serialization/vst3/plug-frame/plug-frame.cpp', - 'src/common/serialization/vst3/plugin/audio-presentation-latency.cpp', - 'src/common/serialization/vst3/plugin/audio-processor.cpp', - 'src/common/serialization/vst3/plugin/automation-state.cpp', - 'src/common/serialization/vst3/plugin/component.cpp', - 'src/common/serialization/vst3/plugin/connection-point.cpp', - 'src/common/serialization/vst3/plugin/edit-controller.cpp', - 'src/common/serialization/vst3/plugin/edit-controller-2.cpp', - 'src/common/serialization/vst3/plugin/edit-controller-host-editing.cpp', - 'src/common/serialization/vst3/plugin/info-listener.cpp', - 'src/common/serialization/vst3/plugin/keyswitch-controller.cpp', - 'src/common/serialization/vst3/plugin/midi-learn.cpp', - 'src/common/serialization/vst3/plugin/midi-mapping.cpp', - 'src/common/serialization/vst3/plugin/note-expression-controller.cpp', - 'src/common/serialization/vst3/plugin/note-expression-physical-ui-mapping.cpp', - 'src/common/serialization/vst3/plugin/parameter-function-name.cpp', - 'src/common/serialization/vst3/plugin/plugin-base.cpp', - 'src/common/serialization/vst3/plugin/prefetchable-support.cpp', - 'src/common/serialization/vst3/plugin/process-context-requirements.cpp', - 'src/common/serialization/vst3/plugin/program-list-data.cpp', - 'src/common/serialization/vst3/plugin/unit-data.cpp', - 'src/common/serialization/vst3/plugin/unit-info.cpp', - 'src/common/serialization/vst3/plugin/xml-representation-controller.cpp', - 'src/common/serialization/vst3/plugin-factory/plugin-factory.cpp', - 'src/common/serialization/vst3/attribute-list.cpp', - 'src/common/serialization/vst3/base.cpp', - 'src/common/serialization/vst3/bstream.cpp', - 'src/common/serialization/vst3/component-handler-proxy.cpp', - 'src/common/serialization/vst3/connection-point-proxy.cpp', - 'src/common/serialization/vst3/context-menu-proxy.cpp', - 'src/common/serialization/vst3/context-menu-target.cpp', - 'src/common/serialization/vst3/event-list.cpp', - 'src/common/serialization/vst3/host-context-proxy.cpp', - 'src/common/serialization/vst3/message.cpp', - 'src/common/serialization/vst3/param-value-queue.cpp', - 'src/common/serialization/vst3/parameter-changes.cpp', - 'src/common/serialization/vst3/physical-ui-map-list.cpp', - 'src/common/serialization/vst3/plug-frame-proxy.cpp', - 'src/common/serialization/vst3/plug-view-proxy.cpp', - 'src/common/serialization/vst3/plugin-proxy.cpp', - 'src/common/serialization/vst3/plugin-factory-proxy.cpp', - 'src/common/serialization/vst3/process-data.cpp', - 'src/common/audio-shm.cpp', - 'src/common/configuration.cpp', - 'src/common/plugins.cpp', - 'src/common/utils.cpp', - 'src/plugin/bridges/vst3.cpp', - 'src/plugin/bridges/vst3-impls/context-menu-target.cpp', - 'src/plugin/bridges/vst3-impls/plugin-factory-proxy.cpp', - 'src/plugin/bridges/vst3-impls/plug-view-proxy.cpp', - 'src/plugin/bridges/vst3-impls/plugin-proxy.cpp', - 'src/plugin/host-process.cpp', - 'src/plugin/utils.cpp', - 'src/plugin/vst3-plugin.cpp', -] - -host_common_sources = [ - 'src/common/communication/vst2.cpp', - 'src/common/serialization/vst2.cpp', - 'src/common/configuration.cpp', - 'src/common/logging/common.cpp', - 'src/common/logging/vst2.cpp', - 'src/common/audio-shm.cpp', - 'src/common/plugins.cpp', - 'src/common/utils.cpp', - 'src/wine-host/bridges/common.cpp', - 'src/wine-host/bridges/vst2.cpp', - 'src/wine-host/editor.cpp', - 'src/wine-host/editor.cpp', - 'src/wine-host/utils.cpp', -] - -if with_vst3 - host_common_sources += [ - 'src/common/logging/vst3.cpp', - 'src/common/serialization/vst3/component-handler/component-handler.cpp', - 'src/common/serialization/vst3/component-handler/component-handler-2.cpp', - 'src/common/serialization/vst3/component-handler/component-handler-3.cpp', - 'src/common/serialization/vst3/component-handler/component-handler-bus-activation.cpp', - 'src/common/serialization/vst3/component-handler/progress.cpp', - 'src/common/serialization/vst3/component-handler/unit-handler.cpp', - 'src/common/serialization/vst3/component-handler/unit-handler-2.cpp', - 'src/common/serialization/vst3/context-menu/context-menu.cpp', - 'src/common/serialization/vst3/host-context/host-application.cpp', - 'src/common/serialization/vst3/host-context/plug-interface-support.cpp', - 'src/common/serialization/vst3/plug-view/parameter-finder.cpp', - 'src/common/serialization/vst3/plug-view/plug-view.cpp', - 'src/common/serialization/vst3/plug-view/plug-view-content-scale-support.cpp', - 'src/common/serialization/vst3/plug-frame/plug-frame.cpp', - 'src/common/serialization/vst3/plugin/audio-presentation-latency.cpp', - 'src/common/serialization/vst3/plugin/audio-processor.cpp', - 'src/common/serialization/vst3/plugin/automation-state.cpp', - 'src/common/serialization/vst3/plugin/component.cpp', - 'src/common/serialization/vst3/plugin/connection-point.cpp', - 'src/common/serialization/vst3/plugin/edit-controller.cpp', - 'src/common/serialization/vst3/plugin/edit-controller-2.cpp', - 'src/common/serialization/vst3/plugin/edit-controller-host-editing.cpp', - 'src/common/serialization/vst3/plugin/info-listener.cpp', - 'src/common/serialization/vst3/plugin/keyswitch-controller.cpp', - 'src/common/serialization/vst3/plugin/midi-learn.cpp', - 'src/common/serialization/vst3/plugin/midi-mapping.cpp', - 'src/common/serialization/vst3/plugin/note-expression-controller.cpp', - 'src/common/serialization/vst3/plugin/note-expression-physical-ui-mapping.cpp', - 'src/common/serialization/vst3/plugin/parameter-function-name.cpp', - 'src/common/serialization/vst3/plugin/plugin-base.cpp', - 'src/common/serialization/vst3/plugin/prefetchable-support.cpp', - 'src/common/serialization/vst3/plugin/process-context-requirements.cpp', - 'src/common/serialization/vst3/plugin/program-list-data.cpp', - 'src/common/serialization/vst3/plugin/unit-data.cpp', - 'src/common/serialization/vst3/plugin/unit-info.cpp', - 'src/common/serialization/vst3/plugin/xml-representation-controller.cpp', - 'src/common/serialization/vst3/plugin-factory/plugin-factory.cpp', - 'src/common/serialization/vst3/attribute-list.cpp', - 'src/common/serialization/vst3/base.cpp', - 'src/common/serialization/vst3/bstream.cpp', - 'src/common/serialization/vst3/component-handler-proxy.cpp', - 'src/common/serialization/vst3/connection-point-proxy.cpp', - 'src/common/serialization/vst3/context-menu-proxy.cpp', - 'src/common/serialization/vst3/context-menu-target.cpp', - 'src/common/serialization/vst3/event-list.cpp', - 'src/common/serialization/vst3/host-context-proxy.cpp', - 'src/common/serialization/vst3/message.cpp', - 'src/common/serialization/vst3/param-value-queue.cpp', - 'src/common/serialization/vst3/parameter-changes.cpp', - 'src/common/serialization/vst3/physical-ui-map-list.cpp', - 'src/common/serialization/vst3/plug-frame-proxy.cpp', - 'src/common/serialization/vst3/plug-view-proxy.cpp', - 'src/common/serialization/vst3/plugin-proxy.cpp', - 'src/common/serialization/vst3/plugin-factory-proxy.cpp', - 'src/common/serialization/vst3/process-data.cpp', - 'src/wine-host/bridges/vst3-impls/component-handler-proxy.cpp', - 'src/wine-host/bridges/vst3-impls/connection-point-proxy.cpp', - 'src/wine-host/bridges/vst3-impls/context-menu-proxy.cpp', - 'src/wine-host/bridges/vst3-impls/host-context-proxy.cpp', - 'src/wine-host/bridges/vst3-impls/plug-frame-proxy.cpp', - 'src/wine-host/bridges/vst3.cpp', - ] -endif - -# We'll link these against a static library `host_common_sources` -individual_host_sources = [ - 'src/wine-host/individual-host.cpp', - version_header, -] -group_host_sources = [ - 'src/wine-host/bridges/group.cpp', - 'src/wine-host/group-host.cpp', - version_header, -] - -# -# Libraries -# -# The application consists of a plugin (`libyabridge-{vst2,vst3}.so`) that calls -# a Winelib application (`yabridge-{host,group}{,-32}.exe`) that can host -# Windows VST plugins. More information about the way these two components work -# together can be found in `docs/architecture.md`. -# +# These only contain the definitions for sources and dependencies. It would be +# nice to define the libraries and executables inside of these meson.build +# files, but that will also scatter the build artifacts around in the `build/` +# directory and it's much more convenient having all of the important files +# directory under `build/`. +# https://github.com/mesonbuild/meson/pull/4037 +subdir('src/plugin') +subdir('src/wine-host') shared_library( 'yabridge-vst2', @@ -479,84 +300,6 @@ if with_vst3 ) endif -# -# Hosts -# - -host_64bit_deps = [ - boost_dep, - boost_filesystem_64bit_dep, - bitsery_dep, - function2_dep, - rt_dep, - tomlplusplus_dep, - wine_ole32_dep, - wine_threads_dep, - xcb_64bit_dep, -] -if with_vst3 - host_64bit_deps += [ - vst3_sdk_hosting_wine_64bit_dep, - wine_shell32_dep, - wine_uuid_dep, - ] -endif - -host_common_64bit = static_library( - 'host_common_64bit', - host_common_sources, - native : false, - include_directories : include_dir, - dependencies : host_64bit_deps, - cpp_args : compiler_options + wine_64bit_compiler_options, - link_args : ['-m64'], -) -host_common_64bit_dep = declare_dependency( - link_with : host_common_64bit, - include_directories : include_dir, - dependencies : host_64bit_deps, - compile_args : compiler_options + wine_64bit_compiler_options, -) - -if with_bitbridge - message('Bitbridge enabled, configuring a 32-bit host application') - - host_32bit_deps = [ - boost_dep, - boost_filesystem_32bit_dep, - bitsery_dep, - function2_dep, - rt_dep, - tomlplusplus_dep, - wine_threads_dep, - xcb_32bit_dep, - ] - if with_vst3 - host_32bit_deps += [ - vst3_sdk_hosting_wine_32bit_dep, - wine_ole32_dep, - wine_shell32_dep, - wine_uuid_dep, - ] - endif - - host_common_32bit = static_library( - 'host_common_32bit', - host_common_sources, - native : false, - include_directories : include_dir, - dependencies : host_32bit_deps, - cpp_args : compiler_options + wine_32bit_compiler_options, - link_args : ['-m32'], - ) - host_common_32bit_dep = declare_dependency( - link_with : host_common_32bit, - include_directories : include_dir, - dependencies : host_32bit_deps, - compile_args : compiler_options + wine_32bit_compiler_options, - ) -endif - executable( individual_host_name_64bit, individual_host_sources, diff --git a/src/common/logging/vst3.cpp b/src/common/logging/vst3.cpp index aab33efc..1b9d1800 100644 --- a/src/common/logging/vst3.cpp +++ b/src/common/logging/vst3.cpp @@ -20,7 +20,7 @@ #include -#include "src/common/serialization/vst3.h" +#include "../serialization/vst3.h" /** * Format a `YaBStream` object as a string so we don't have to repeat this diff --git a/src/common/serialization/vst3/event-list.cpp b/src/common/serialization/vst3/event-list.cpp index 40669c57..756cc002 100644 --- a/src/common/serialization/vst3/event-list.cpp +++ b/src/common/serialization/vst3/event-list.cpp @@ -16,7 +16,7 @@ #include "event-list.h" -#include "src/common/utils.h" +#include "../../utils.h" YaDataEvent::YaDataEvent() noexcept {} diff --git a/src/common/serialization/vst3/process-data.cpp b/src/common/serialization/vst3/process-data.cpp index 2425ac4e..932f938c 100644 --- a/src/common/serialization/vst3/process-data.cpp +++ b/src/common/serialization/vst3/process-data.cpp @@ -16,7 +16,7 @@ #include "process-data.h" -#include "src/common/utils.h" +#include "../../utils.h" YaProcessData::YaProcessData() noexcept // This response object acts as an optimization. It stores pointers to the diff --git a/src/plugin/bridges/common.h b/src/plugin/bridges/common.h index 25047743..fc4b555e 100644 --- a/src/plugin/bridges/common.h +++ b/src/plugin/bridges/common.h @@ -19,11 +19,12 @@ #include #include -// Generated inside of the build directory -#include -#include #include +// Generated inside of the build directory +#include +#include + #include "../../common/configuration.h" #include "../../common/utils.h" #include "../host-process.h" diff --git a/src/plugin/bridges/vst3.cpp b/src/plugin/bridges/vst3.cpp index 5285dbde..3fdb5df1 100644 --- a/src/plugin/bridges/vst3.cpp +++ b/src/plugin/bridges/vst3.cpp @@ -18,7 +18,7 @@ #include -#include "src/common/serialization/vst3.h" +#include "../../common/serialization/vst3.h" #include "vst3-impls/context-menu-target.h" #include "vst3-impls/plugin-proxy.h" diff --git a/src/plugin/host-process.cpp b/src/plugin/host-process.cpp index d20fe997..2302adf8 100644 --- a/src/plugin/host-process.cpp +++ b/src/plugin/host-process.cpp @@ -20,7 +20,7 @@ #include #include -#include "src/common/utils.h" +#include "../common/utils.h" namespace bp = boost::process; namespace fs = boost::filesystem; diff --git a/src/plugin/meson.build b/src/plugin/meson.build new file mode 100644 index 00000000..2fb168f2 --- /dev/null +++ b/src/plugin/meson.build @@ -0,0 +1,97 @@ +# We only define the sources here, because calling `shared_library()` here will +# cause the `libyabridge-*.so` files to be generated in a deeply nested +# subdirectory of `build/` +vst2_plugin_sources = files( + '../common/communication/common.cpp', + '../common/communication/vst2.cpp', + '../common/serialization/vst2.cpp', + '../common/configuration.cpp', + '../common/logging/common.cpp', + '../common/logging/vst2.cpp', + '../common/audio-shm.cpp', + '../common/plugins.cpp', + '../common/utils.cpp', + 'bridges/vst2.cpp', + 'host-process.cpp', + 'utils.cpp', + 'vst2-plugin.cpp', +) + [ + config_header, + version_header, +] + +vst3_plugin_sources = files( + '../common/communication/common.cpp', + '../common/logging/common.cpp', + '../common/logging/vst3.cpp', + '../common/serialization/vst3/component-handler/component-handler.cpp', + '../common/serialization/vst3/component-handler/component-handler-2.cpp', + '../common/serialization/vst3/component-handler/component-handler-3.cpp', + '../common/serialization/vst3/component-handler/component-handler-bus-activation.cpp', + '../common/serialization/vst3/component-handler/progress.cpp', + '../common/serialization/vst3/component-handler/unit-handler.cpp', + '../common/serialization/vst3/component-handler/unit-handler-2.cpp', + '../common/serialization/vst3/context-menu/context-menu.cpp', + '../common/serialization/vst3/host-context/host-application.cpp', + '../common/serialization/vst3/host-context/plug-interface-support.cpp', + '../common/serialization/vst3/plug-view/parameter-finder.cpp', + '../common/serialization/vst3/plug-view/plug-view.cpp', + '../common/serialization/vst3/plug-view/plug-view-content-scale-support.cpp', + '../common/serialization/vst3/plug-frame/plug-frame.cpp', + '../common/serialization/vst3/plugin/audio-presentation-latency.cpp', + '../common/serialization/vst3/plugin/audio-processor.cpp', + '../common/serialization/vst3/plugin/automation-state.cpp', + '../common/serialization/vst3/plugin/component.cpp', + '../common/serialization/vst3/plugin/connection-point.cpp', + '../common/serialization/vst3/plugin/edit-controller.cpp', + '../common/serialization/vst3/plugin/edit-controller-2.cpp', + '../common/serialization/vst3/plugin/edit-controller-host-editing.cpp', + '../common/serialization/vst3/plugin/info-listener.cpp', + '../common/serialization/vst3/plugin/keyswitch-controller.cpp', + '../common/serialization/vst3/plugin/midi-learn.cpp', + '../common/serialization/vst3/plugin/midi-mapping.cpp', + '../common/serialization/vst3/plugin/note-expression-controller.cpp', + '../common/serialization/vst3/plugin/note-expression-physical-ui-mapping.cpp', + '../common/serialization/vst3/plugin/parameter-function-name.cpp', + '../common/serialization/vst3/plugin/plugin-base.cpp', + '../common/serialization/vst3/plugin/prefetchable-support.cpp', + '../common/serialization/vst3/plugin/process-context-requirements.cpp', + '../common/serialization/vst3/plugin/program-list-data.cpp', + '../common/serialization/vst3/plugin/unit-data.cpp', + '../common/serialization/vst3/plugin/unit-info.cpp', + '../common/serialization/vst3/plugin/xml-representation-controller.cpp', + '../common/serialization/vst3/plugin-factory/plugin-factory.cpp', + '../common/serialization/vst3/attribute-list.cpp', + '../common/serialization/vst3/base.cpp', + '../common/serialization/vst3/bstream.cpp', + '../common/serialization/vst3/component-handler-proxy.cpp', + '../common/serialization/vst3/connection-point-proxy.cpp', + '../common/serialization/vst3/context-menu-proxy.cpp', + '../common/serialization/vst3/context-menu-target.cpp', + '../common/serialization/vst3/event-list.cpp', + '../common/serialization/vst3/host-context-proxy.cpp', + '../common/serialization/vst3/message.cpp', + '../common/serialization/vst3/param-value-queue.cpp', + '../common/serialization/vst3/parameter-changes.cpp', + '../common/serialization/vst3/physical-ui-map-list.cpp', + '../common/serialization/vst3/plug-frame-proxy.cpp', + '../common/serialization/vst3/plug-view-proxy.cpp', + '../common/serialization/vst3/plugin-proxy.cpp', + '../common/serialization/vst3/plugin-factory-proxy.cpp', + '../common/serialization/vst3/process-data.cpp', + '../common/audio-shm.cpp', + '../common/configuration.cpp', + '../common/plugins.cpp', + '../common/utils.cpp', + 'bridges/vst3.cpp', + 'bridges/vst3-impls/context-menu-target.cpp', + 'bridges/vst3-impls/plugin-factory-proxy.cpp', + 'bridges/vst3-impls/plug-view-proxy.cpp', + 'bridges/vst3-impls/plugin-proxy.cpp', + 'host-process.cpp', + 'utils.cpp', + 'vst3-plugin.cpp', +) + [ + config_header, + version_header, +] diff --git a/src/plugin/utils.cpp b/src/plugin/utils.cpp index ebc6395c..73356fe1 100644 --- a/src/plugin/utils.cpp +++ b/src/plugin/utils.cpp @@ -30,7 +30,7 @@ #include // Generated inside of the build directory -#include +#include #include "../common/configuration.h" #include "../common/utils.h" diff --git a/src/wine-host/group-host.cpp b/src/wine-host/group-host.cpp index d2cee47b..00d1492b 100644 --- a/src/wine-host/group-host.cpp +++ b/src/wine-host/group-host.cpp @@ -19,8 +19,8 @@ #include // Generated inside of the build directory -#include -#include +#include +#include #include "../common/utils.h" #include "bridges/group.h" diff --git a/src/wine-host/individual-host.cpp b/src/wine-host/individual-host.cpp index 158e40b1..3aa2f5fc 100644 --- a/src/wine-host/individual-host.cpp +++ b/src/wine-host/individual-host.cpp @@ -18,8 +18,8 @@ #include // Generated inside of the build directory -#include -#include +#include +#include #include "../common/utils.h" #include "bridges/vst2.h" diff --git a/src/wine-host/meson.build b/src/wine-host/meson.build new file mode 100644 index 00000000..e72250b7 --- /dev/null +++ b/src/wine-host/meson.build @@ -0,0 +1,180 @@ +# The plugin host applications come on four flavours: hosting a single plugin +# and hosting multiple plugins within a single process, and 32-bit and 64-bit. +# We will compile the shared parts for the individual an plugin group hosts as a +# static library first to cut down on compile times. +# +# As with the libraries, we cannot call `executable()` here since we would like +# to keep all relevant files in the root of the build directory, and Meson +# doesn't have a way to customize that yet. +host_64bit_deps = [ + boost_dep, + boost_filesystem_64bit_dep, + bitsery_dep, + function2_dep, + rt_dep, + tomlplusplus_dep, + wine_ole32_dep, + wine_threads_dep, + xcb_64bit_dep, +] +if with_vst3 + host_64bit_deps += [ + vst3_sdk_hosting_wine_64bit_dep, + wine_shell32_dep, + wine_uuid_dep, + ] +endif + +if with_bitbridge + message('Bitbridge enabled, configuring a 32-bit host application') + + host_32bit_deps = [ + boost_dep, + boost_filesystem_32bit_dep, + bitsery_dep, + function2_dep, + rt_dep, + tomlplusplus_dep, + wine_threads_dep, + xcb_32bit_dep, + ] + if with_vst3 + host_32bit_deps += [ + vst3_sdk_hosting_wine_32bit_dep, + wine_ole32_dep, + wine_shell32_dep, + wine_uuid_dep, + ] + endif +endif + +host_common_sources = files( + '../common/communication/vst2.cpp', + '../common/serialization/vst2.cpp', + '../common/configuration.cpp', + '../common/logging/common.cpp', + '../common/logging/vst2.cpp', + '../common/audio-shm.cpp', + '../common/plugins.cpp', + '../common/utils.cpp', + 'bridges/common.cpp', + 'bridges/vst2.cpp', + 'editor.cpp', + 'editor.cpp', + 'utils.cpp', +) + +if with_vst3 + host_common_sources += files( + '../common/logging/vst3.cpp', + '../common/serialization/vst3/component-handler/component-handler.cpp', + '../common/serialization/vst3/component-handler/component-handler-2.cpp', + '../common/serialization/vst3/component-handler/component-handler-3.cpp', + '../common/serialization/vst3/component-handler/component-handler-bus-activation.cpp', + '../common/serialization/vst3/component-handler/progress.cpp', + '../common/serialization/vst3/component-handler/unit-handler.cpp', + '../common/serialization/vst3/component-handler/unit-handler-2.cpp', + '../common/serialization/vst3/context-menu/context-menu.cpp', + '../common/serialization/vst3/host-context/host-application.cpp', + '../common/serialization/vst3/host-context/plug-interface-support.cpp', + '../common/serialization/vst3/plug-view/parameter-finder.cpp', + '../common/serialization/vst3/plug-view/plug-view.cpp', + '../common/serialization/vst3/plug-view/plug-view-content-scale-support.cpp', + '../common/serialization/vst3/plug-frame/plug-frame.cpp', + '../common/serialization/vst3/plugin/audio-presentation-latency.cpp', + '../common/serialization/vst3/plugin/audio-processor.cpp', + '../common/serialization/vst3/plugin/automation-state.cpp', + '../common/serialization/vst3/plugin/component.cpp', + '../common/serialization/vst3/plugin/connection-point.cpp', + '../common/serialization/vst3/plugin/edit-controller.cpp', + '../common/serialization/vst3/plugin/edit-controller-2.cpp', + '../common/serialization/vst3/plugin/edit-controller-host-editing.cpp', + '../common/serialization/vst3/plugin/info-listener.cpp', + '../common/serialization/vst3/plugin/keyswitch-controller.cpp', + '../common/serialization/vst3/plugin/midi-learn.cpp', + '../common/serialization/vst3/plugin/midi-mapping.cpp', + '../common/serialization/vst3/plugin/note-expression-controller.cpp', + '../common/serialization/vst3/plugin/note-expression-physical-ui-mapping.cpp', + '../common/serialization/vst3/plugin/parameter-function-name.cpp', + '../common/serialization/vst3/plugin/plugin-base.cpp', + '../common/serialization/vst3/plugin/prefetchable-support.cpp', + '../common/serialization/vst3/plugin/process-context-requirements.cpp', + '../common/serialization/vst3/plugin/program-list-data.cpp', + '../common/serialization/vst3/plugin/unit-data.cpp', + '../common/serialization/vst3/plugin/unit-info.cpp', + '../common/serialization/vst3/plugin/xml-representation-controller.cpp', + '../common/serialization/vst3/plugin-factory/plugin-factory.cpp', + '../common/serialization/vst3/attribute-list.cpp', + '../common/serialization/vst3/base.cpp', + '../common/serialization/vst3/bstream.cpp', + '../common/serialization/vst3/component-handler-proxy.cpp', + '../common/serialization/vst3/connection-point-proxy.cpp', + '../common/serialization/vst3/context-menu-proxy.cpp', + '../common/serialization/vst3/context-menu-target.cpp', + '../common/serialization/vst3/event-list.cpp', + '../common/serialization/vst3/host-context-proxy.cpp', + '../common/serialization/vst3/message.cpp', + '../common/serialization/vst3/param-value-queue.cpp', + '../common/serialization/vst3/parameter-changes.cpp', + '../common/serialization/vst3/physical-ui-map-list.cpp', + '../common/serialization/vst3/plug-frame-proxy.cpp', + '../common/serialization/vst3/plug-view-proxy.cpp', + '../common/serialization/vst3/plugin-proxy.cpp', + '../common/serialization/vst3/plugin-factory-proxy.cpp', + '../common/serialization/vst3/process-data.cpp', + 'bridges/vst3-impls/component-handler-proxy.cpp', + 'bridges/vst3-impls/connection-point-proxy.cpp', + 'bridges/vst3-impls/context-menu-proxy.cpp', + 'bridges/vst3-impls/host-context-proxy.cpp', + 'bridges/vst3-impls/plug-frame-proxy.cpp', + 'bridges/vst3.cpp', +) +endif + +# These will be linked against a static library made from `host_common_sources` +individual_host_sources = files( + 'individual-host.cpp', +) + [ + config_header, + version_header, +] +group_host_sources = files( + 'bridges/group.cpp', + 'group-host.cpp', +) + [ + config_header, + version_header, +] + +host_common_64bit = static_library( + 'host_common_64bit', + host_common_sources, + native : false, + include_directories : include_dir, + dependencies : host_64bit_deps, + cpp_args : compiler_options + wine_64bit_compiler_options, + link_args : ['-m64'], +) +host_common_64bit_dep = declare_dependency( + link_with : host_common_64bit, + include_directories : include_dir, + dependencies : host_64bit_deps, + compile_args : compiler_options + wine_64bit_compiler_options, +) +if with_bitbridge + host_common_32bit = static_library( + 'host_common_32bit', + host_common_sources, + native : false, + include_directories : include_dir, + dependencies : host_32bit_deps, + cpp_args : compiler_options + wine_32bit_compiler_options, + link_args : ['-m32'], + ) + host_common_32bit_dep = declare_dependency( + link_with : host_common_32bit, + include_directories : include_dir, + dependencies : host_32bit_deps, + compile_args : compiler_options + wine_32bit_compiler_options, + ) +endif