All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Alex Bennée" <alex.bennee@linaro.org>
Subject: [PULL 48/48] configure: allow the selection of alternate config in the build
Date: Thu,  8 Jul 2021 17:17:48 +0200	[thread overview]
Message-ID: <20210708151748.408754-49-pbonzini@redhat.com> (raw)
In-Reply-To: <20210708151748.408754-1-pbonzini@redhat.com>

From: Alex Bennée <alex.bennee@linaro.org>

While the default config works well enough it does end up enabling a
lot of stuff. For more minimal builds we can select a different list
of devices and let Kconfig work out what we want. For example:

  ../../configure --without-default-features \
    --target-list=arm-softmmu,aarch64-softmmu \
    --with-devices-aarch64=minimal

will override the aarch64-softmmu default set of devices with a more
minimal set of devices that just enables the virt and sbsa-ref models.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20210707131744.26027-6-alex.bennee@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configs/devices/aarch64-softmmu/minimal.mak |  9 ++++++++
 configure                                   | 24 ++++++++++++++++++++-
 meson.build                                 |  3 ++-
 3 files changed, 34 insertions(+), 2 deletions(-)
 create mode 100644 configs/devices/aarch64-softmmu/minimal.mak

diff --git a/configs/devices/aarch64-softmmu/minimal.mak b/configs/devices/aarch64-softmmu/minimal.mak
new file mode 100644
index 0000000000..0ebc1dca56
--- /dev/null
+++ b/configs/devices/aarch64-softmmu/minimal.mak
@@ -0,0 +1,9 @@
+#
+# A minimal version of the config that only supports only a few
+# virtual machines. This avoids bringing in any of numerous legacy
+# features from the 32bit platform (although virt still supports 32bit
+# itself)
+#
+
+CONFIG_ARM_VIRT=y
+CONFIG_SBSA_REF=y
diff --git a/configure b/configure
index 4eba89f823..85db248ac1 100755
--- a/configure
+++ b/configure
@@ -915,6 +915,18 @@ for opt do
   ;;
   --without-default-devices) default_devices="false"
   ;;
+  --with-devices-*[!a-zA-Z0-9_-]*=*) error_exit "Passed bad --with-devices-FOO option"
+  ;;
+  --with-devices-*) device_arch=${opt#--with-devices-};
+                    device_arch=${device_arch%%=*}
+                    cf=$source_path/configs/devices/$device_arch-softmmu/$optarg.mak
+                    if test -f "$cf"; then
+                        device_archs="$device_archs $device_arch"
+                        eval "devices_${device_arch}=\$optarg"
+                    else
+                        error_exit "File $cf does not exist"
+                    fi
+  ;;
   --without-default-features) # processed above
   ;;
   --enable-gprof) gprof="yes"
@@ -1764,7 +1776,8 @@ Advanced options (experts only):
   --without-default-features default all --enable-* options to "disabled"
   --without-default-devices  do not include any device that is not needed to
                            start the emulator (only use if you are including
-                           desired devices in default-configs/devices/)
+                           desired devices in configs/devices/)
+  --with-devices-ARCH=NAME override default configs/devices
   --enable-debug           enable common debug build options
   --enable-sanitizers      enable default sanitizers
   --enable-tsan            enable thread sanitizer
@@ -5082,6 +5095,15 @@ if test "$skip_meson" = no; then
 
   echo "# Automatically generated by configure - do not modify" > $cross
   echo "[properties]" >> $cross
+
+  # unroll any custom device configs
+  if test -n "$device_archs"; then
+      for a in $device_archs; do
+          eval "c=\$devices_${a}"
+          echo "${a}-softmmu = '$c'" >> $cross
+      done
+  fi
+
   test -z "$cxx" && echo "link_language = 'c'" >> $cross
   echo "[built-in options]" >> $cross
   echo "c_args = [${CFLAGS:+$(meson_quote $CFLAGS)}]" >> $cross
diff --git a/meson.build b/meson.build
index 71c7462e89..651c3b114b 100644
--- a/meson.build
+++ b/meson.build
@@ -1595,9 +1595,10 @@ foreach target : target_dirs
                                                configuration: config_target_data)}
 
   if target.endswith('-softmmu')
+    config_input = meson.get_external_property(target, 'default')
     config_devices_mak = target + '-config-devices.mak'
     config_devices_mak = configure_file(
-      input: ['configs/devices' / target / 'default.mak', 'Kconfig'],
+      input: ['configs/devices' / target / config_input + '.mak', 'Kconfig'],
       output: config_devices_mak,
       depfile: config_devices_mak + '.d',
       capture: true,
-- 
2.31.1



  parent reply	other threads:[~2021-07-08 15:52 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-08 15:17 [PULL 00/48] Misc patches for QEMU 6.1 soft freeze Paolo Bonzini
2021-07-08 15:17 ` [PULL 01/48] configure: fix libdaxctl options Paolo Bonzini
2021-07-08 15:17 ` [PULL 02/48] configure: fix libpmem configuration option Paolo Bonzini
2021-07-08 15:17 ` [PULL 03/48] meson: fix missing preprocessor symbols Paolo Bonzini
2021-07-08 15:17 ` [PULL 04/48] osdep: fix HAVE_BROKEN_SIZE_MAX case Paolo Bonzini
2021-07-08 15:17 ` [PULL 05/48] modules: add modinfo macros Paolo Bonzini
2021-07-08 15:17 ` [PULL 06/48] modules: collect module meta-data Paolo Bonzini
2021-07-08 15:17 ` [PULL 07/48] modules: generate modinfo.c Paolo Bonzini
2021-07-08 15:17 ` [PULL 08/48] modules: check if all dependencies can be satisfied Paolo Bonzini
2021-07-08 15:17 ` [PULL 09/48] modules: add qxl module annotations Paolo Bonzini
2021-07-08 15:17 ` [PULL 10/48] modules: add virtio-gpu " Paolo Bonzini
2021-07-08 15:17 ` [PULL 11/48] modules: add chardev " Paolo Bonzini
2021-07-08 15:17 ` [PULL 12/48] modules: add audio " Paolo Bonzini
2021-07-08 15:17 ` [PULL 13/48] modules: add usb-redir " Paolo Bonzini
2021-07-08 15:17 ` [PULL 14/48] modules: add ccid " Paolo Bonzini
2021-07-08 15:17 ` [PULL 15/48] modules: add ui " Paolo Bonzini
2021-07-08 15:17 ` [PULL 16/48] modules: add s390x " Paolo Bonzini
2021-07-08 15:17 ` [PULL 17/48] modules: add block " Paolo Bonzini
2021-07-08 15:17 ` [PULL 18/48] modules: use modinfo for dependencies Paolo Bonzini
2021-07-08 15:17 ` [PULL 19/48] modules: use modinfo for qom load Paolo Bonzini
2021-07-08 15:17 ` [PULL 20/48] modules: use modinfo for qemu opts load Paolo Bonzini
2021-07-08 15:17 ` [PULL 21/48] modules: add tracepoints Paolo Bonzini
2021-07-08 15:17 ` [PULL 22/48] modules: check arch and block load on mismatch Paolo Bonzini
2021-07-08 15:17 ` [PULL 23/48] modules: check arch on qom lookup Paolo Bonzini
2021-07-08 15:17 ` [PULL 24/48] modules: target-specific module build infrastructure Paolo Bonzini
2021-07-08 15:17 ` [PULL 25/48] modules: add documentation for module sourcesets Paolo Bonzini
2021-07-08 15:17 ` [PULL 26/48] modules: add module_obj() note to QOM docs Paolo Bonzini
2021-07-08 15:17 ` [PULL 27/48] modules: module.h kerneldoc annotations Paolo Bonzini
2021-07-08 15:17 ` [PULL 28/48] modules: hook up modules.h to docs build Paolo Bonzini
2021-07-08 15:17 ` [PULL 29/48] accel: autoload modules Paolo Bonzini
2021-07-08 15:17 ` [PULL 30/48] accel: add qtest module annotations Paolo Bonzini
2021-07-08 15:17 ` [PULL 31/48] accel: build qtest modular Paolo Bonzini
2021-07-08 15:17 ` [PULL 32/48] accel: add tcg module annotations Paolo Bonzini
2021-07-08 15:17 ` [PULL 33/48] accel: build tcg modular Paolo Bonzini
2021-07-08 15:17 ` [PULL 34/48] monitor: allow register hmp commands Paolo Bonzini
2021-07-08 15:17 ` [PULL 35/48] usb: drop usb_host_dev_is_scsi_storage hook Paolo Bonzini
2021-07-08 15:17 ` [PULL 36/48] monitor/usb: register 'info usbhost' dynamically Paolo Bonzini
2021-07-08 15:17 ` [PULL 37/48] usb: build usb-host as module Paolo Bonzini
2021-07-22 14:10   ` Peter Krempa
2021-07-23  6:18     ` Gerd Hoffmann
2021-07-08 15:17 ` [PULL 38/48] monitor/tcg: move tcg hmp commands to accel/tcg, register them dynamically Paolo Bonzini
2021-07-08 15:17 ` [PULL 39/48] target/i386: Added MSRPM and IOPM size check Paolo Bonzini
2021-07-08 15:17 ` [PULL 40/48] target/i386: Added DR6 and DR7 consistency checks Paolo Bonzini
2021-07-08 15:17 ` [PULL 41/48] target/i386: fix exceptions for MOV to DR Paolo Bonzini
2021-07-08 15:17 ` [PULL 42/48] vl: fix leak of qdict_crumple return value Paolo Bonzini
2021-07-08 15:17 ` [PULL 43/48] meson: switch function tests from compilation to linking Paolo Bonzini
2021-07-08 15:17 ` [PULL 44/48] meson: Introduce target-specific Kconfig Paolo Bonzini
2021-07-17 22:59   ` Peter Maydell
2021-07-19 19:15     ` Peter Maydell
2021-07-08 15:17 ` [PULL 45/48] hw/arm: add dependency on OR_IRQ for XLNX_VERSAL Paolo Bonzini
2021-07-08 15:17 ` [PULL 46/48] hw/arm: move CONFIG_V7M out of default-devices Paolo Bonzini
2021-07-08 15:17 ` [PULL 47/48] configs: rename default-configs to configs and reorganise Paolo Bonzini
2021-07-08 15:17 ` Paolo Bonzini [this message]
2021-07-09 15:45 ` [PULL 00/48] Misc patches for QEMU 6.1 soft freeze Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210708151748.408754-49-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.