configure: automatically parse command line for meson -D options
authorPaolo Bonzini <pbonzini@redhat.com>
Thu, 7 Oct 2021 13:08:29 +0000 (15:08 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 14 Oct 2021 07:51:06 +0000 (09:51 +0200)
commit3b4da13293482134b81d71be656ec76beff73a76
treea799bf5d234cc2059f91287f527e7a52d1352f5c
parent8b5fb29842fdb586485dcfc4f24a9997c07cc9de
configure: automatically parse command line for meson -D options

Right now meson_options.txt lists about 90 options.  Each option
needs code in configure to parse it and pass the option down to Meson as
a -D command-line argument; in addition the default must be duplicated
between configure and meson_options.txt.  This series tries to remove
the code duplication by generating the case statement for those --enable
and --disable options, as well as the corresponding help text.

About 80% of the options can be handled completely by the new mechanism.
Eight meson options are not of the --enable/--disable kind.  Six more need
to be parsed in configure for various reasons documented in the patch,
but they still have their help automatically generated.

The advantages are:

- less code in configure

- parsing and help is more consistent (for example --enable-blobs was
  not supported)

- options are described entirely in one place, meson_options.txt.
  This make it more attractive to use Meson options instead of
  hand-crafted configure options and config-host.mak

A few options change name: --enable-tcmalloc and --enable-jemalloc
become --enable-malloc={tcmalloc,jemalloc}; --disable-blobs becomes
--disable-install-blobs; --enable-trace-backend becomes
--enable-trace-backends.  However, the old names are allowed
for backwards compatibility.

Message-Id: <20211007130829.632254-19-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
configure
docs/devel/build-system.rst
meson_options.txt
scripts/meson-buildoptions.py
scripts/meson-buildoptions.sh