configure: add --without-default-features

By default QEMU enables a lot of features if it can probe and find the
support libraries. It also enables a bunch of features by default.
This patch adds the ability to build --without-default-features which
can be paired with a --without-default-devices for a barely functional
build.

The main use case for this is testing our build assumptions and for
minimising the amount of stuff you build if you just want to test a
particular feature on your relatively slow emulated test system. On
it's own I go from:

  $ ls -lh qemu-system-aarch64
  -rwxr-xr-x 1 alex alex 120M Dec 10 12:45 qemu-system-aarch64*
  $ ldd qemu-system-aarch64 | wc -l
  170

to:

  $ ls -lh qemu-aarch64
  -rwxr-xr-x 1 alex alex 43M Dec 10 12:41 qemu-aarch64*
  $ ldd qemu-system-aarch64 | wc -l
  57

which is still able to run my default Debian ARM64 machine with a lot
less fat involved.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Acked-by: Thomas Huth <thuth@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20201210190417.31673-5-alex.bennee@linaro.org>
This commit is contained in:
Alex Bennée 2020-12-10 19:04:13 +00:00 committed by Paolo Bonzini
parent 0e8e77d487
commit c87ea11631

155
configure vendored
View File

@ -293,8 +293,19 @@ unset target_list_exclude
# Distributions want to ensure that several features are compiled in, and it
# is impossible without a --enable-foo that exits if a feature is not found.
brlapi=""
curl=""
default_feature=""
# parse CC options second
for opt do
optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
case "$opt" in
--without-default-features)
default_feature="no"
;;
esac
done
brlapi="$default_feature"
curl="$default_feature"
iconv="auto"
curses="auto"
docs="auto"
@ -303,52 +314,52 @@ netmap="no"
sdl="auto"
sdl_image="auto"
virtiofsd="auto"
virtfs=""
virtfs="$default_feature"
libudev="auto"
mpath="auto"
vnc="enabled"
sparse="auto"
vde=""
vde="$default_feature"
vnc_sasl="auto"
vnc_jpeg="auto"
vnc_png="auto"
xkbcommon="auto"
xen=""
xen_ctrl_version=""
xen="$default_feature"
xen_ctrl_version="$default_feature"
xen_pci_passthrough="auto"
linux_aio=""
linux_io_uring=""
cap_ng=""
attr=""
libattr=""
xfs=""
linux_aio="$default_feature"
linux_io_uring="$default_feature"
cap_ng="$default_feature"
attr="$default_feature"
libattr="$default_feature"
xfs="$default_feature"
tcg="enabled"
membarrier=""
vhost_net=""
vhost_crypto=""
vhost_scsi=""
vhost_vsock=""
membarrier="$default_feature"
vhost_net="$default_feature"
vhost_crypto="$default_feature"
vhost_scsi="$default_feature"
vhost_vsock="$default_feature"
vhost_user="no"
vhost_user_blk_server="auto"
vhost_user_fs=""
vhost_user_fs="$default_feature"
kvm="auto"
hax="auto"
hvf="auto"
whpx="auto"
rdma=""
pvrdma=""
rdma="$default_feature"
pvrdma="$default_feature"
gprof="no"
debug_tcg="no"
debug="no"
sanitizers="no"
tsan="no"
fortify_source=""
fortify_source="$default_feature"
strip_opt="yes"
tcg_interpreter="no"
bigendian="no"
mingw32="no"
gcov="no"
EXESUF=""
EXESUF="$default_feature"
HOST_DSOSUF=".so"
modules="no"
module_upgrades="no"
@ -370,81 +381,81 @@ pie=""
qom_cast_debug="yes"
trace_backends="log"
trace_file="trace"
spice=""
rbd=""
smartcard=""
spice="$default_feature"
rbd="$default_feature"
smartcard="$default_feature"
u2f="auto"
libusb=""
usb_redir=""
opengl=""
libusb="$default_feature"
usb_redir="$default_feature"
opengl="$default_feature"
opengl_dmabuf="no"
cpuid_h="no"
avx2_opt=""
avx2_opt="$default_feature"
capstone="auto"
lzo=""
snappy=""
bzip2=""
lzfse=""
zstd=""
guest_agent=""
lzo="$default_feature"
snappy="$default_feature"
bzip2="$default_feature"
lzfse="$default_feature"
zstd="$default_feature"
guest_agent="$default_feature"
guest_agent_with_vss="no"
guest_agent_ntddscsi="no"
guest_agent_msi=""
vss_win32_sdk=""
guest_agent_msi="$default_feature"
vss_win32_sdk="$default_feature"
win_sdk="no"
want_tools=""
libiscsi=""
libnfs=""
want_tools="$default_feature"
libiscsi="$default_feature"
libnfs="$default_feature"
coroutine=""
coroutine_pool=""
coroutine_pool="$default_feature"
debug_stack_usage="no"
crypto_afalg="no"
seccomp=""
glusterfs=""
seccomp="$default_feature"
glusterfs="$default_feature"
glusterfs_xlator_opt="no"
glusterfs_discard="no"
glusterfs_fallocate="no"
glusterfs_zerofill="no"
glusterfs_ftruncate_has_stat="no"
glusterfs_iocb_has_stat="no"
gtk=""
gtk="$default_feature"
gtk_gl="no"
tls_priority="NORMAL"
gnutls=""
nettle=""
gnutls="$default_feature"
nettle="$default_feature"
nettle_xts="no"
gcrypt=""
gcrypt="$default_feature"
gcrypt_hmac="no"
gcrypt_xts="no"
qemu_private_xts="yes"
auth_pam=""
vte=""
virglrenderer=""
tpm=""
libssh=""
live_block_migration="yes"
numa=""
auth_pam="$default_feature"
vte="$default_feature"
virglrenderer="$default_feature"
tpm="$default_feature"
libssh="$default_feature"
live_block_migration=${default_feature:-yes}
numa="$default_feature"
tcmalloc="no"
jemalloc="no"
replication="yes"
bochs="yes"
cloop="yes"
dmg="yes"
qcow1="yes"
vdi="yes"
vvfat="yes"
qed="yes"
parallels="yes"
replication=${default_feature:-yes}
bochs=${default_feature:-yes}
cloop=${default_feature:-yes}
dmg=${default_feature:-yes}
qcow1=${default_feature:-yes}
vdi=${default_feature:-yes}
vvfat=${default_feature:-yes}
qed=${default_feature:-yes}
parallels=${default_feature:-yes}
sheepdog="no"
libxml2=""
libxml2="$default_feature"
debug_mutex="no"
libpmem=""
libpmem="$default_feature"
default_devices="yes"
plugins="no"
fuzzing="no"
rng_none="no"
secret_keyring=""
libdaxctl=""
secret_keyring="$default_feature"
libdaxctl="$default_feature"
meson=""
ninja=""
skip_meson=no
@ -455,7 +466,7 @@ fuse_lseek="auto"
bogus_os="no"
malloc_trim="auto"
# parse CC options first
# parse CC options second
for opt do
optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
case "$opt" in
@ -798,7 +809,7 @@ Linux)
audio_possible_drivers="oss alsa sdl pa"
linux="yes"
linux_user="yes"
vhost_user="yes"
vhost_user=${default_feature:-yes}
;;
esac
@ -942,6 +953,8 @@ for opt do
;;
--without-default-devices) default_devices="no"
;;
--without-default-features) # processed above
;;
--enable-gprof) gprof="yes"
;;
--enable-gcov) gcov="yes"
@ -1747,7 +1760,8 @@ Advanced options (experts only):
--gdb=GDB-path gdb to use for gdbstub tests [$gdb_bin]
Optional features, enabled with --enable-FEATURE and
disabled with --disable-FEATURE, default is enabled if available:
disabled with --disable-FEATURE, default is enabled if available
(unless built with --without-default-features):
system all system emulation targets
user supported user emulation targets
@ -6958,6 +6972,7 @@ NINJA=$ninja $meson setup \
-Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
-Dvhost_user_blk_server=$vhost_user_blk_server \
-Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
$(if test "$default_features" = no; then echo "-Dauto_features=disabled"; fi) \
$cross_arg \
"$PWD" "$source_path"