Hi On Wed, Dec 16, 2020 at 8:26 PM Paolo Bonzini <[email protected]> wrote:
> Build the array of command line arguments coming from config_host > once for all targets. Add all accelerators to accel/Kconfig so > that the command line arguments for accelerators can be computed > easily in the existing "foreach sym: accelerators" loop. > > Signed-off-by: Paolo Bonzini <[email protected]> > nice cleanup Reviewed-by: Marc-André Lureau <[email protected]> --- > accel/Kconfig | 9 +++++++++ > docs/devel/kconfig.rst | 19 +++++++++---------- > meson.build | 43 +++++++++++++++++------------------------- > 3 files changed, 35 insertions(+), 36 deletions(-) > > diff --git a/accel/Kconfig b/accel/Kconfig > index 2ad94a3839..461104c771 100644 > --- a/accel/Kconfig > +++ b/accel/Kconfig > @@ -1,3 +1,12 @@ > +config WHPX > + bool > + > +config HAX > + bool > + > +config HVF > + bool > + > config TCG > bool > > diff --git a/docs/devel/kconfig.rst b/docs/devel/kconfig.rst > index 336ba0e8e5..cb2d7ffac0 100644 > --- a/docs/devel/kconfig.rst > +++ b/docs/devel/kconfig.rst > @@ -288,21 +288,20 @@ they will include all these symbols and some help > text on what they do. > ---------------- > > In some special cases, a configurable element depends on host features > -that are detected by QEMU's configure script; for example some devices > -depend on the availability of KVM or on the presence of a library on > -the host. > +that are detected by QEMU's configure or ``meson.build`` scripts; for > +example some devices depend on the availability of KVM or on the presence > +of a library on the host. > > These symbols should be listed in ``Kconfig.host`` like this:: > > - config KVM > + config TPM > bool > > -and also listed as follows in the top-level Makefile's ``MINIKCONF_ARGS`` > +and also listed as follows in the top-level meson.build's host_kconfig > variable:: > > - MINIKCONF_ARGS = \ > - $@ $*/config-devices.mak.d $< $(MINIKCONF_INPUTS) \ > - CONFIG_KVM=$(CONFIG_KVM) \ > - CONFIG_SPICE=$(CONFIG_SPICE) \ > - CONFIG_TPM=$(CONFIG_TPM) \ > + host_kconfig = \ > + ('CONFIG_TPM' in config_host ? ['CONFIG_TPM=y'] : []) + \ > + ('CONFIG_SPICE' in config_host ? ['CONFIG_SPICE=y'] : []) + \ > + ('CONFIG_IVSHMEM' in config_host ? ['CONFIG_IVSHMEM=y'] : []) + \ > ... > diff --git a/meson.build b/meson.build > index 0b36fb38f1..bb198f792a 100644 > --- a/meson.build > +++ b/meson.build > @@ -954,21 +954,19 @@ if link_language == 'cpp' > } > endif > > -kconfig_external_symbols = [ > - 'CONFIG_KVM', > - 'CONFIG_XEN', > - 'CONFIG_TPM', > - 'CONFIG_SPICE', > - 'CONFIG_IVSHMEM', > - 'CONFIG_OPENGL', > - 'CONFIG_X11', > - 'CONFIG_VHOST_USER', > - 'CONFIG_VHOST_VDPA', > - 'CONFIG_VHOST_KERNEL', > - 'CONFIG_VIRTFS', > - 'CONFIG_LINUX', > - 'CONFIG_PVRDMA', > -] > +host_kconfig = \ > + ('CONFIG_TPM' in config_host ? ['CONFIG_TPM=y'] : []) + \ > + ('CONFIG_SPICE' in config_host ? ['CONFIG_SPICE=y'] : []) + \ > + ('CONFIG_IVSHMEM' in config_host ? ['CONFIG_IVSHMEM=y'] : []) + \ > + ('CONFIG_OPENGL' in config_host ? ['CONFIG_OPENGL=y'] : []) + \ > + ('CONFIG_X11' in config_host ? ['CONFIG_X11=y'] : []) + \ > + ('CONFIG_VHOST_USER' in config_host ? ['CONFIG_VHOST_USER=y'] : []) + \ > + ('CONFIG_VHOST_VDPA' in config_host ? ['CONFIG_VHOST_VDPA=y'] : []) + \ > + ('CONFIG_VHOST_KERNEL' in config_host ? ['CONFIG_VHOST_KERNEL=y'] : []) > + \ > + ('CONFIG_VIRTFS' in config_host ? ['CONFIG_VIRTFS=y'] : []) + \ > + ('CONFIG_LINUX' in config_host ? ['CONFIG_LINUX=y'] : []) + \ > + ('CONFIG_PVRDMA' in config_host ? ['CONFIG_PVRDMA=y'] : []) > + > ignored = [ 'TARGET_XML_FILES', 'TARGET_ABI_DIR', 'TARGET_ARCH' ] > > default_targets = 'CONFIG_DEFAULT_TARGETS' in config_host > @@ -1003,7 +1001,7 @@ foreach target : target_dirs > } > endif > > - have_accel = false > + accel_kconfig = [] > foreach sym: accelerators > if sym == 'CONFIG_TCG' or target in accelerator_targets.get(sym, []) > config_target += { sym: 'y' } > @@ -1011,10 +1009,10 @@ foreach target : target_dirs > if sym == 'CONFIG_XEN' and have_xen_pci_passthrough > config_target += { 'CONFIG_XEN_PCI_PASSTHROUGH': 'y' } > endif > - have_accel = true > + accel_kconfig += [ sym + '=y' ] > endif > endforeach > - if not have_accel > + if accel_kconfig.length() == 0 > if default_targets > continue > endif > @@ -1068,13 +1066,6 @@ foreach target : target_dirs > configuration: > config_target_data)} > > if target.endswith('-softmmu') > - base_kconfig = [] > - foreach sym : kconfig_external_symbols > - if sym in config_target or sym in config_host > - base_kconfig += '@0@=y'.format(sym) > - endif > - endforeach > - > config_devices_mak = target + '-config-devices.mak' > config_devices_mak = configure_file( > input: ['default-configs/devices' / target + '.mak', 'Kconfig'], > @@ -1083,7 +1074,7 @@ foreach target : target_dirs > capture: true, > command: [minikconf, config_host['CONFIG_MINIKCONF_MODE'], > config_devices_mak, '@DEPFILE@', '@INPUT@', > - base_kconfig]) > + host_kconfig, accel_kconfig]) > > config_devices_data = configuration_data() > config_devices = keyval.load(config_devices_mak) > -- > 2.29.2 > > > -- Marc-André Lureau
