diff mbox series

[25/34] meson: pass more options directly as -D

Message ID 20220420153407.73926-26-pbonzini@redhat.com (mailing list archive)
State New, archived
Headers show
Series Misc meson conversions for QEMU 7.1 | expand

Commit Message

Paolo Bonzini April 20, 2022, 3:33 p.m. UTC
If an option is not used anywhere by the configure script, it can be just
added to $meson_options even if it is not parsed by the automatically
generated bits in scripts/meson-buildoptions.sh.

The only slightly tricky case is $debug, where the

  if test "$fortify_source" = "yes" ; then
    QEMU_CFLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
    debug=no
  fi

assignment is dead; configure sets fortify_source=no whenever debug=yes.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure                     | 39 ++++++++++-------------------------
 meson.build                   |  2 +-
 scripts/meson-buildoptions.py |  4 ++++
 scripts/meson-buildoptions.sh |  6 ++++++
 4 files changed, 22 insertions(+), 29 deletions(-)

Comments

Marc-André Lureau April 21, 2022, 9:52 a.m. UTC | #1
On Wed, Apr 20, 2022 at 8:00 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> If an option is not used anywhere by the configure script, it can be just
> added to $meson_options even if it is not parsed by the automatically
> generated bits in scripts/meson-buildoptions.sh.
>
> The only slightly tricky case is $debug, where the
>
>   if test "$fortify_source" = "yes" ; then
>     QEMU_CFLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
>     debug=no
>   fi
>
> assignment is dead; configure sets fortify_source=no whenever debug=yes.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

 Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>




> ---
>  configure                     | 39 ++++++++++-------------------------
>  meson.build                   |  2 +-
>  scripts/meson-buildoptions.py |  4 ++++
>  scripts/meson-buildoptions.sh |  6 ++++++
>  4 files changed, 22 insertions(+), 29 deletions(-)
>
> diff --git a/configure b/configure
> index b704453c68..4997983b5d 100755
> --- a/configure
> +++ b/configure
> @@ -235,7 +235,6 @@ static="no"
>  cross_compile="no"
>  cross_prefix=""
>  host_cc="cc"
> -lto="false"
>  stack_protector=""
>  safe_stack=""
>  use_containers="yes"
> @@ -291,13 +290,10 @@ vhost_vsock="$default_feature"
>  vhost_user="no"
>  vhost_user_fs="$default_feature"
>  vhost_vdpa="$default_feature"
> -debug_info="yes"
>  debug_tcg="no"
> -debug="no"
>  sanitizers="no"
>  tsan="no"
>  fortify_source="$default_feature"
> -gcov="no"
>  EXESUF=""
>  modules="no"
>  prefix="/usr/local"
> @@ -327,10 +323,7 @@ else
>  fi
>  fdt="auto"
>
> -# 2. Support --with/--without option
> -default_devices="true"
> -
> -# 3. Automatically enable/disable other options
> +# 2. Automatically enable/disable other options
>  tcg="enabled"
>  cfi="false"
>
> @@ -679,6 +672,9 @@ werror=""
>  . $source_path/scripts/meson-buildoptions.sh
>
>  meson_options=
> +meson_option_add() {
> +  meson_options="$meson_options $(quote_sh "$1")"
> +}
>  meson_option_parse() {
>    meson_options="$meson_options $(_meson_option_parse "$@")"
>    if test $? -eq 1; then
> @@ -731,9 +727,9 @@ for opt do
>    ;;
>    --cross-cc-*)
>    ;;
> -  --enable-debug-info) debug_info="yes"
> +  --enable-debug-info) meson_option_add -Ddebug=true
>    ;;
> -  --disable-debug-info) debug_info="no"
> +  --disable-debug-info) meson_option_add -Ddebug=false
>    ;;
>    --enable-modules)
>        modules="yes"
> @@ -753,9 +749,9 @@ for opt do
>                         error_exit "Can't mix --target-list-exclude with
> --target-list"
>                     fi
>    ;;
> -  --with-default-devices) default_devices="true"
> +  --with-default-devices) meson_option_add -Ddefault_devices=true
>    ;;
> -  --without-default-devices) default_devices="false"
> +  --without-default-devices) meson_option_add -Ddefault_devices=false
>    ;;
>    --with-devices-*[!a-zA-Z0-9_-]*=*) error_exit "Passed bad
> --with-devices-FOO option"
>    ;;
> @@ -771,8 +767,6 @@ for opt do
>    ;;
>    --without-default-features) # processed above
>    ;;
> -  --enable-gcov) gcov="yes"
> -  ;;
>    --static)
>      static="yes"
>      QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
> @@ -799,7 +793,7 @@ for opt do
>        # Enable debugging options that aren't excessively noisy
>        debug_tcg="yes"
>        meson_option_parse --enable-debug-mutex ""
> -      debug="yes"
> +      meson_option_add -Doptimization=0
>        fortify_source="no"
>    ;;
>    --enable-sanitizers) sanitizers="yes"
> @@ -848,10 +842,6 @@ for opt do
>    ;;
>    --disable-werror) werror="no"
>    ;;
> -  --enable-lto) lto="true"
> -  ;;
> -  --disable-lto) lto="false"
> -  ;;
>    --enable-stack-protector) stack_protector="yes"
>    ;;
>    --disable-stack-protector) stack_protector="no"
> @@ -862,7 +852,7 @@ for opt do
>    ;;
>    --enable-cfi)
>        cfi="true";
> -      lto="true";
> +      meson_option_add -Db_lto=true
>    ;;
>    --disable-cfi) cfi="false"
>    ;;
> @@ -1100,7 +1090,6 @@ Advanced options (experts only):
>    --cpu=CPU                Build for host CPU [$cpu]
>    --with-coroutine=BACKEND coroutine backend. Supported options:
>                             ucontext, sigaltstack, windows
> -  --enable-gcov            enable test coverage analysis with gcov
>    --enable-plugins
>                             enable plugins via shared library loading
>    --disable-containers     don't use containers for cross-building
> @@ -1116,7 +1105,6 @@ cat << EOF
>    modules         modules support (non-Windows)
>    debug-tcg       TCG debugging (default is disabled)
>    debug-info      debugging information
> -  lto             Enable Link-Time Optimization.
>    safe-stack      SafeStack Stack Smash Protection. Depends on
>                    clang/llvm >= 3.7 and requires coroutine backend
> ucontext.
>    vhost-net       vhost-net kernel acceleration support
> @@ -1937,7 +1925,6 @@ write_c_skeleton
>
>  if test "$fortify_source" = "yes" ; then
>    QEMU_CFLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
> -  debug=no
>  fi
>
>  case "$ARCH" in
> @@ -2366,15 +2353,11 @@ if test "$skip_meson" = no; then
>      NINJA=$ninja $meson setup \
>          --prefix "$prefix" \
>          --bindir "$bindir" \
> -        -Ddefault_devices=$default_devices \
>          -Dqemu_suffix="$qemu_suffix" \
>          -Dsmbd="$smbd" \
> -        -Doptimization=$(if test "$debug" = yes; then echo 0; else echo
> 2; fi) \
> -        -Ddebug=$(if test "$debug_info" = yes; then echo true; else echo
> false; fi) \
>          -Dwerror=$(if test "$werror" = yes; then echo true; else echo
> false; fi) \
>          -Db_pie=$(if test "$pie" = yes; then echo true; else echo false;
> fi) \
> -        -Db_coverage=$(if test "$gcov" = yes; then echo true; else echo
> false; fi) \
> -        -Db_lto=$lto -Dcfi=$cfi -Dtcg=$tcg \
> +        -Dcfi=$cfi -Dtcg=$tcg \
>          -Dcapstone=$capstone -Dfdt=$fdt -Dslirp=$slirp \
>          $(test -n "${LIB_FUZZING_ENGINE+xxx}" && echo
> "-Dfuzzing_engine=$LIB_FUZZING_ENGINE") \
>          $(if test "$default_feature" = no; then echo
> "-Dauto_features=disabled"; fi) \
> diff --git a/meson.build b/meson.build
> index 2545ac2848..60e8c302e6 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1,6 +1,6 @@
>  project('qemu', ['c'], meson_version: '>=0.59.3',
>          default_options: ['warning_level=1', 'c_std=gnu11',
> 'cpp_std=gnu++11', 'b_colorout=auto',
> -                          'b_staticpic=false', 'stdsplit=false'],
> +                          'b_staticpic=false', 'stdsplit=false',
> 'optimization=2'],
>          version: files('VERSION'))
>
>  add_test_setup('quick', exclude_suites: ['slow', 'thorough'], is_default:
> true)
> diff --git a/scripts/meson-buildoptions.py b/scripts/meson-buildoptions.py
> index 45cda8cd84..e624c16b01 100755
> --- a/scripts/meson-buildoptions.py
> +++ b/scripts/meson-buildoptions.py
> @@ -33,6 +33,8 @@
>  }
>
>  OPTION_NAMES = {
> +    "b_coverage": "gcov",
> +    "b_lto": "lto",
>      "malloc": "enable-malloc",
>      "pkgversion": "with-pkgversion",
>      "qemu_firmwarepath": "firmwarepath",
> @@ -41,6 +43,8 @@
>  }
>
>  BUILTIN_OPTIONS = {
> +    "b_coverage",
> +    "b_lto",
>      "datadir",
>      "includedir",
>      "libdir",
> diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
> index a52cc14d13..274639777e 100644
> --- a/scripts/meson-buildoptions.sh
> +++ b/scripts/meson-buildoptions.sh
> @@ -27,7 +27,9 @@ meson_options_help() {
>    printf "%s\n" '  --enable-fdt[=CHOICE]    Whether and how to find the
> libfdt library'
>    printf "%s\n" '                           (choices:
> auto/disabled/enabled/internal/system)'
>    printf "%s\n" '  --enable-fuzzing         build fuzzing targets'
> +  printf "%s\n" '  --enable-gcov            Enable coverage tracking.'
>    printf "%s\n" '  --enable-gprof           QEMU profiling with gprof'
> +  printf "%s\n" '  --enable-lto             Use link time optimization'
>    printf "%s\n" '  --enable-malloc=CHOICE   choose memory allocator to
> use [system] (choices:'
>    printf "%s\n" '                           jemalloc/system/tcmalloc)'
>    printf "%s\n" '  --enable-module-upgrades try to load modules from
> alternate paths for'
> @@ -182,6 +184,10 @@ _meson_option_parse() {
>      --disable-avx2) printf "%s" -Davx2=disabled ;;
>      --enable-avx512f) printf "%s" -Davx512f=enabled ;;
>      --disable-avx512f) printf "%s" -Davx512f=disabled ;;
> +    --enable-gcov) printf "%s" -Db_coverage=true ;;
> +    --disable-gcov) printf "%s" -Db_coverage=false ;;
> +    --enable-lto) printf "%s" -Db_lto=true ;;
> +    --disable-lto) printf "%s" -Db_lto=false ;;
>      --block-drv-ro-whitelist=*) quote_sh "-Dblock_drv_ro_whitelist=$2" ;;
>      --block-drv-rw-whitelist=*) quote_sh "-Dblock_drv_rw_whitelist=$2" ;;
>      --enable-block-drv-whitelist-in-tools) printf "%s"
> -Dblock_drv_whitelist_in_tools=true ;;
> --
> 2.35.1
>
>
>
>
diff mbox series

Patch

diff --git a/configure b/configure
index b704453c68..4997983b5d 100755
--- a/configure
+++ b/configure
@@ -235,7 +235,6 @@  static="no"
 cross_compile="no"
 cross_prefix=""
 host_cc="cc"
-lto="false"
 stack_protector=""
 safe_stack=""
 use_containers="yes"
@@ -291,13 +290,10 @@  vhost_vsock="$default_feature"
 vhost_user="no"
 vhost_user_fs="$default_feature"
 vhost_vdpa="$default_feature"
-debug_info="yes"
 debug_tcg="no"
-debug="no"
 sanitizers="no"
 tsan="no"
 fortify_source="$default_feature"
-gcov="no"
 EXESUF=""
 modules="no"
 prefix="/usr/local"
@@ -327,10 +323,7 @@  else
 fi
 fdt="auto"
 
-# 2. Support --with/--without option
-default_devices="true"
-
-# 3. Automatically enable/disable other options
+# 2. Automatically enable/disable other options
 tcg="enabled"
 cfi="false"
 
@@ -679,6 +672,9 @@  werror=""
 . $source_path/scripts/meson-buildoptions.sh
 
 meson_options=
+meson_option_add() {
+  meson_options="$meson_options $(quote_sh "$1")"
+}
 meson_option_parse() {
   meson_options="$meson_options $(_meson_option_parse "$@")"
   if test $? -eq 1; then
@@ -731,9 +727,9 @@  for opt do
   ;;
   --cross-cc-*)
   ;;
-  --enable-debug-info) debug_info="yes"
+  --enable-debug-info) meson_option_add -Ddebug=true
   ;;
-  --disable-debug-info) debug_info="no"
+  --disable-debug-info) meson_option_add -Ddebug=false
   ;;
   --enable-modules)
       modules="yes"
@@ -753,9 +749,9 @@  for opt do
                        error_exit "Can't mix --target-list-exclude with --target-list"
                    fi
   ;;
-  --with-default-devices) default_devices="true"
+  --with-default-devices) meson_option_add -Ddefault_devices=true
   ;;
-  --without-default-devices) default_devices="false"
+  --without-default-devices) meson_option_add -Ddefault_devices=false
   ;;
   --with-devices-*[!a-zA-Z0-9_-]*=*) error_exit "Passed bad --with-devices-FOO option"
   ;;
@@ -771,8 +767,6 @@  for opt do
   ;;
   --without-default-features) # processed above
   ;;
-  --enable-gcov) gcov="yes"
-  ;;
   --static)
     static="yes"
     QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
@@ -799,7 +793,7 @@  for opt do
       # Enable debugging options that aren't excessively noisy
       debug_tcg="yes"
       meson_option_parse --enable-debug-mutex ""
-      debug="yes"
+      meson_option_add -Doptimization=0
       fortify_source="no"
   ;;
   --enable-sanitizers) sanitizers="yes"
@@ -848,10 +842,6 @@  for opt do
   ;;
   --disable-werror) werror="no"
   ;;
-  --enable-lto) lto="true"
-  ;;
-  --disable-lto) lto="false"
-  ;;
   --enable-stack-protector) stack_protector="yes"
   ;;
   --disable-stack-protector) stack_protector="no"
@@ -862,7 +852,7 @@  for opt do
   ;;
   --enable-cfi)
       cfi="true";
-      lto="true";
+      meson_option_add -Db_lto=true
   ;;
   --disable-cfi) cfi="false"
   ;;
@@ -1100,7 +1090,6 @@  Advanced options (experts only):
   --cpu=CPU                Build for host CPU [$cpu]
   --with-coroutine=BACKEND coroutine backend. Supported options:
                            ucontext, sigaltstack, windows
-  --enable-gcov            enable test coverage analysis with gcov
   --enable-plugins
                            enable plugins via shared library loading
   --disable-containers     don't use containers for cross-building
@@ -1116,7 +1105,6 @@  cat << EOF
   modules         modules support (non-Windows)
   debug-tcg       TCG debugging (default is disabled)
   debug-info      debugging information
-  lto             Enable Link-Time Optimization.
   safe-stack      SafeStack Stack Smash Protection. Depends on
                   clang/llvm >= 3.7 and requires coroutine backend ucontext.
   vhost-net       vhost-net kernel acceleration support
@@ -1937,7 +1925,6 @@  write_c_skeleton
 
 if test "$fortify_source" = "yes" ; then
   QEMU_CFLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
-  debug=no
 fi
 
 case "$ARCH" in
@@ -2366,15 +2353,11 @@  if test "$skip_meson" = no; then
     NINJA=$ninja $meson setup \
         --prefix "$prefix" \
         --bindir "$bindir" \
-        -Ddefault_devices=$default_devices \
         -Dqemu_suffix="$qemu_suffix" \
         -Dsmbd="$smbd" \
-        -Doptimization=$(if test "$debug" = yes; then echo 0; else echo 2; fi) \
-        -Ddebug=$(if test "$debug_info" = yes; then echo true; else echo false; fi) \
         -Dwerror=$(if test "$werror" = yes; then echo true; else echo false; fi) \
         -Db_pie=$(if test "$pie" = yes; then echo true; else echo false; fi) \
-        -Db_coverage=$(if test "$gcov" = yes; then echo true; else echo false; fi) \
-        -Db_lto=$lto -Dcfi=$cfi -Dtcg=$tcg \
+        -Dcfi=$cfi -Dtcg=$tcg \
         -Dcapstone=$capstone -Dfdt=$fdt -Dslirp=$slirp \
         $(test -n "${LIB_FUZZING_ENGINE+xxx}" && echo "-Dfuzzing_engine=$LIB_FUZZING_ENGINE") \
         $(if test "$default_feature" = no; then echo "-Dauto_features=disabled"; fi) \
diff --git a/meson.build b/meson.build
index 2545ac2848..60e8c302e6 100644
--- a/meson.build
+++ b/meson.build
@@ -1,6 +1,6 @@ 
 project('qemu', ['c'], meson_version: '>=0.59.3',
         default_options: ['warning_level=1', 'c_std=gnu11', 'cpp_std=gnu++11', 'b_colorout=auto',
-                          'b_staticpic=false', 'stdsplit=false'],
+                          'b_staticpic=false', 'stdsplit=false', 'optimization=2'],
         version: files('VERSION'))
 
 add_test_setup('quick', exclude_suites: ['slow', 'thorough'], is_default: true)
diff --git a/scripts/meson-buildoptions.py b/scripts/meson-buildoptions.py
index 45cda8cd84..e624c16b01 100755
--- a/scripts/meson-buildoptions.py
+++ b/scripts/meson-buildoptions.py
@@ -33,6 +33,8 @@ 
 }
 
 OPTION_NAMES = {
+    "b_coverage": "gcov",
+    "b_lto": "lto",
     "malloc": "enable-malloc",
     "pkgversion": "with-pkgversion",
     "qemu_firmwarepath": "firmwarepath",
@@ -41,6 +43,8 @@ 
 }
 
 BUILTIN_OPTIONS = {
+    "b_coverage",
+    "b_lto",
     "datadir",
     "includedir",
     "libdir",
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index a52cc14d13..274639777e 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -27,7 +27,9 @@  meson_options_help() {
   printf "%s\n" '  --enable-fdt[=CHOICE]    Whether and how to find the libfdt library'
   printf "%s\n" '                           (choices: auto/disabled/enabled/internal/system)'
   printf "%s\n" '  --enable-fuzzing         build fuzzing targets'
+  printf "%s\n" '  --enable-gcov            Enable coverage tracking.'
   printf "%s\n" '  --enable-gprof           QEMU profiling with gprof'
+  printf "%s\n" '  --enable-lto             Use link time optimization'
   printf "%s\n" '  --enable-malloc=CHOICE   choose memory allocator to use [system] (choices:'
   printf "%s\n" '                           jemalloc/system/tcmalloc)'
   printf "%s\n" '  --enable-module-upgrades try to load modules from alternate paths for'
@@ -182,6 +184,10 @@  _meson_option_parse() {
     --disable-avx2) printf "%s" -Davx2=disabled ;;
     --enable-avx512f) printf "%s" -Davx512f=enabled ;;
     --disable-avx512f) printf "%s" -Davx512f=disabled ;;
+    --enable-gcov) printf "%s" -Db_coverage=true ;;
+    --disable-gcov) printf "%s" -Db_coverage=false ;;
+    --enable-lto) printf "%s" -Db_lto=true ;;
+    --disable-lto) printf "%s" -Db_lto=false ;;
     --block-drv-ro-whitelist=*) quote_sh "-Dblock_drv_ro_whitelist=$2" ;;
     --block-drv-rw-whitelist=*) quote_sh "-Dblock_drv_rw_whitelist=$2" ;;
     --enable-block-drv-whitelist-in-tools) printf "%s" -Dblock_drv_whitelist_in_tools=true ;;