On Wed, Jan 12, 2022 at 03:21:44PM +0300, Vladislav Yaroshchuk wrote: > vmnet.framework dependency is added with 'vmnet' option > to enable or disable it. Default value is 'auto'. > > vmnet features to be used are available since macOS 11.0, > corresponding probe is created into meson.build. > > Signed-off-by: Vladislav Yaroshchuk <yaroshchuk2...@gmail.com> > --- > meson.build | 23 ++++++++++++++++++++++- > meson_options.txt | 2 ++ > scripts/meson-buildoptions.sh | 3 +++ > 3 files changed, 27 insertions(+), 1 deletion(-) > > diff --git a/meson.build b/meson.build > index c1b1db1e28..b912c9cb91 100644 > --- a/meson.build > +++ b/meson.build > @@ -496,6 +496,24 @@ if cocoa.found() and get_option('gtk').enabled() > error('Cocoa and GTK+ cannot be enabled at the same time') > endif > > +vmnet = dependency('appleframeworks', modules: 'vmnet', required: > get_option('vmnet')) > +vmnet_11_0_api = false > +if vmnet.found() and not cc.has_header_symbol('vmnet/vmnet.h', > + 'VMNET_BRIDGED_MODE', > + dependencies: vmnet) > + vmnet = not_found > + if get_option('vmnet').enabled() > + error('vmnet.framework API is outdated') > + else > + warning('vmnet.framework API is outdated, disabling') > + endif > +endif > +if vmnet.found() and cc.has_header_symbol('vmnet/vmnet.h', > + 'VMNET_SHARING_SERVICE_BUSY', > + dependencies: vmnet) > + vmnet_11_0_api = true > +endif > + > seccomp = not_found > if not get_option('seccomp').auto() or have_system or have_tools > seccomp = dependency('libseccomp', version: '>=2.3.0', > @@ -1492,6 +1510,8 @@ config_host_data.set('CONFIG_SECCOMP', seccomp.found()) > config_host_data.set('CONFIG_SNAPPY', snappy.found()) > config_host_data.set('CONFIG_USB_LIBUSB', libusb.found()) > config_host_data.set('CONFIG_VDE', vde.found()) > +config_host_data.set('CONFIG_VMNET', vmnet.found()) > +config_host_data.set('CONFIG_VMNET_11_0_API', vmnet_11_0_api)
Hi Vladislav, There might be more functionality coming in the next macOS versions but we likely don't want to add them as extra CONFIG defines. Instead we wrap new symbols/functions/code that are avaialble above Big Sur in the code as: #if defined(MAC_OS_VERSION_11_0) && \ MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_11_0 xpc_dictionary_set_bool( if_desc, vmnet_enable_isolation_key, options->isolated ); #endif Please see similar thread here: https://lists.gnu.org/archive/html/qemu-devel/2022-01/msg01915.html Thanks, Roman > config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER', > have_vhost_user_blk_server) > config_host_data.set('CONFIG_VNC', vnc.found()) > config_host_data.set('CONFIG_VNC_JPEG', jpeg.found()) > @@ -3406,7 +3426,8 @@ summary(summary_info, bool_yn: true, section: 'Crypto') > # Libraries > summary_info = {} > if targetos == 'darwin' > - summary_info += {'Cocoa support': cocoa} > + summary_info += {'Cocoa support': cocoa} > + summary_info += {'vmnet.framework support': vmnet} > endif > summary_info += {'SDL support': sdl} > summary_info += {'SDL image support': sdl_image} > diff --git a/meson_options.txt b/meson_options.txt > index 921967eddb..701e1381f9 100644 > --- a/meson_options.txt > +++ b/meson_options.txt > @@ -151,6 +151,8 @@ option('netmap', type : 'feature', value : 'auto', > description: 'netmap network backend support') > option('vde', type : 'feature', value : 'auto', > description: 'vde network backend support') > +option('vmnet', type : 'feature', value : 'auto', > + description: 'vmnet.framework network backend support') > option('virglrenderer', type : 'feature', value : 'auto', > description: 'virgl rendering support') > option('vnc', type : 'feature', value : 'auto', > diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh > index 50bd7bed4d..cdcece4b05 100644 > --- a/scripts/meson-buildoptions.sh > +++ b/scripts/meson-buildoptions.sh > @@ -84,6 +84,7 @@ meson_options_help() { > printf "%s\n" ' u2f U2F emulation support' > printf "%s\n" ' usb-redir libusbredir support' > printf "%s\n" ' vde vde network backend support' > + printf "%s\n" ' vmnet vmnet.framework network backend support' > printf "%s\n" ' vhost-user-blk-server' > printf "%s\n" ' build vhost-user-blk server' > printf "%s\n" ' virglrenderer virgl rendering support' > @@ -248,6 +249,8 @@ _meson_option_parse() { > --disable-usb-redir) printf "%s" -Dusb_redir=disabled ;; > --enable-vde) printf "%s" -Dvde=enabled ;; > --disable-vde) printf "%s" -Dvde=disabled ;; > + --enable-vmnet) printf "%s" -Dvmnet=enabled ;; > + --disable-vmnet) printf "%s" -Dvmnet=disabled ;; > --enable-vhost-user-blk-server) printf "%s" > -Dvhost_user_blk_server=enabled ;; > --disable-vhost-user-blk-server) printf "%s" > -Dvhost_user_blk_server=disabled ;; > --enable-virglrenderer) printf "%s" -Dvirglrenderer=enabled ;; > -- > 2.23.0 > >