[PATCH 24/34] configure: switch directory options to automatic parsing

Paolo Bonzini posted 34 patches 3 years, 9 months ago
Maintainers: Yuval Shaia <yuval.shaia.ml@gmail.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Jason Wang <jasowang@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Fam Zheng <fam@euphon.net>, Stefano Stabellini <sstabellini@kernel.org>, Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>, "Michael S. Tsirkin" <mst@redhat.com>, Juan Quintela <quintela@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>, Michael Roth <michael.roth@amd.com>, John Snow <jsnow@redhat.com>, Cleber Rosa <crosa@redhat.com>, Thomas Huth <thuth@redhat.com>, Laurent Vivier <lvivier@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>
There is a newer version of this series
[PATCH 24/34] configure: switch directory options to automatic parsing
Posted by Paolo Bonzini 3 years, 9 months ago
While prefix, bindir and qemu_suffix needs special treatment due to
differences between Windows and POSIX systems, everything else
needs no extra code in configure.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure                     | 58 ++---------------------------------
 meson_options.txt             |  4 +--
 scripts/meson-buildoptions.py | 11 +++++--
 scripts/meson-buildoptions.sh | 21 +++++++++++++
 4 files changed, 34 insertions(+), 60 deletions(-)

diff --git a/configure b/configure
index 200ef3be23..b704453c68 100755
--- a/configure
+++ b/configure
@@ -311,6 +311,7 @@ plugins="$default_feature"
 meson=""
 meson_args=""
 ninja=""
+bindir="bin"
 skip_meson=no
 
 # The following Meson options are handled manually (still they
@@ -669,6 +670,7 @@ if test "$mingw32" = "yes" ; then
   CONFIGURE_CFLAGS="-mthreads $CONFIGURE_CFLAGS"
   write_c_skeleton;
   prefix="/qemu"
+  bindir=""
   qemu_suffix=""
 fi
 
@@ -775,30 +777,10 @@ for opt do
     static="yes"
     QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
   ;;
-  --mandir=*) mandir="$optarg"
-  ;;
   --bindir=*) bindir="$optarg"
   ;;
-  --libdir=*) libdir="$optarg"
-  ;;
-  --libexecdir=*) libexecdir="$optarg"
-  ;;
-  --includedir=*) includedir="$optarg"
-  ;;
-  --datadir=*) datadir="$optarg"
-  ;;
   --with-suffix=*) qemu_suffix="$optarg"
   ;;
-  --docdir=*) docdir="$optarg"
-  ;;
-  --localedir=*) localedir="$optarg"
-  ;;
-  --sysconfdir=*) sysconfdir="$optarg"
-  ;;
-  --localstatedir=*) local_statedir="$optarg"
-  ;;
-  --firmwarepath=*) firmwarepath="$optarg"
-  ;;
   --host=*|--build=*|\
   --disable-dependency-tracking|\
   --sbindir=*|--sharedstatedir=*|\
@@ -1021,23 +1003,6 @@ case $git_submodules_action in
     ;;
 esac
 
-libdir="${libdir:-$prefix/lib}"
-libexecdir="${libexecdir:-$prefix/libexec}"
-includedir="${includedir:-$prefix/include}"
-
-if test "$mingw32" = "yes" ; then
-    bindir="${bindir:-$prefix}"
-else
-    bindir="${bindir:-$prefix/bin}"
-fi
-mandir="${mandir:-$prefix/share/man}"
-datadir="${datadir:-$prefix/share}"
-docdir="${docdir:-$prefix/share/doc}"
-sysconfdir="${sysconfdir:-$prefix/etc}"
-local_statedir="${local_statedir:-$prefix/var}"
-firmwarepath="${firmwarepath:-$datadir/qemu-firmware}"
-localedir="${localedir:-$datadir/locale}"
-
 if eval test -z "\${cross_cc_$cpu}"; then
     eval "cross_cc_${cpu}=\$cc"
     cross_cc_vars="$cross_cc_vars cross_cc_${cpu}"
@@ -1115,16 +1080,7 @@ Advanced options (experts only):
   --with-git-submodules=validate fail if git submodules are not up to date
   --with-git-submodules=ignore   do not update or check git submodules (default if no .git dir)
   --static                 enable static build [$static]
-  --mandir=PATH            install man pages in PATH
-  --datadir=PATH           install firmware in PATH/$qemu_suffix
-  --localedir=PATH         install translation in PATH/$qemu_suffix
-  --docdir=PATH            install documentation in PATH/$qemu_suffix
   --bindir=PATH            install binaries in PATH
-  --libdir=PATH            install libraries in PATH
-  --libexecdir=PATH        install helper binaries in PATH
-  --sysconfdir=PATH        install config in PATH/$qemu_suffix
-  --localstatedir=PATH     install local state in PATH (set at runtime on win32)
-  --firmwarepath=PATH      search PATH for firmware files
   --efi-aarch64=PATH       PATH of efi file to use for aarch64 VMs.
   --with-suffix=SUFFIX     suffix for QEMU data inside datadir/libdir/sysconfdir/docdir [$qemu_suffix]
   --without-default-features default all --enable-* options to "disabled"
@@ -2409,18 +2365,8 @@ if test "$skip_meson" = no; then
   run_meson() {
     NINJA=$ninja $meson setup \
         --prefix "$prefix" \
-        --libdir "$libdir" \
-        --libexecdir "$libexecdir" \
         --bindir "$bindir" \
-        --includedir "$includedir" \
-        --datadir "$datadir" \
-        --mandir "$mandir" \
-        --sysconfdir "$sysconfdir" \
-        --localedir "$localedir" \
-        --localstatedir "$local_statedir" \
         -Ddefault_devices=$default_devices \
-        -Ddocdir="$docdir" \
-        -Dqemu_firmwarepath="$firmwarepath" \
         -Dqemu_suffix="$qemu_suffix" \
         -Dsmbd="$smbd" \
         -Doptimization=$(if test "$debug" = yes; then echo 0; else echo 2; fi) \
diff --git a/meson_options.txt b/meson_options.txt
index 848426460c..a76fadbd7d 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -4,9 +4,9 @@
 
 option('qemu_suffix', type : 'string', value: 'qemu',
        description: 'Suffix for QEMU data/modules/config directories (can be empty)')
-option('docdir', type : 'string', value : 'doc',
+option('docdir', type : 'string', value : 'share/doc',
        description: 'Base directory for documentation installation (can be empty)')
-option('qemu_firmwarepath', type : 'string', value : '',
+option('qemu_firmwarepath', type : 'string', value : 'qemu-firmware',
        description: 'search PATH for firmware files')
 option('pkgversion', type : 'string', value : '',
        description: 'use specified string as sub-version of the package')
diff --git a/scripts/meson-buildoptions.py b/scripts/meson-buildoptions.py
index 0f9603a7f6..45cda8cd84 100755
--- a/scripts/meson-buildoptions.py
+++ b/scripts/meson-buildoptions.py
@@ -27,9 +27,7 @@
 
 SKIP_OPTIONS = {
     "default_devices",
-    "docdir",
     "fuzzing_engine",
-    "qemu_firmwarepath",
     "qemu_suffix",
     "smbd",
 }
@@ -37,12 +35,21 @@
 OPTION_NAMES = {
     "malloc": "enable-malloc",
     "pkgversion": "with-pkgversion",
+    "qemu_firmwarepath": "firmwarepath",
     "trace_backends": "enable-trace-backends",
     "trace_file": "with-trace-file",
 }
 
 BUILTIN_OPTIONS = {
+    "datadir",
+    "includedir",
+    "libdir",
+    "libexecdir",
+    "localedir",
+    "localstatedir",
+    "mandir",
     "strip",
+    "sysconfdir",
 }
 
 LINE_WIDTH = 76
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index a0c86db116..a52cc14d13 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -8,8 +8,11 @@ meson_options_help() {
   printf "%s\n" '  --block-drv-rw-whitelist=VALUE'
   printf "%s\n" '                           set block driver read-write whitelist (by default'
   printf "%s\n" '                           affects only QEMU, not tools like qemu-img)'
+  printf "%s\n" '  --datadir=VALUE          Data file directory [share]'
   printf "%s\n" '  --disable-coroutine-pool coroutine freelist (better performance)'
   printf "%s\n" '  --disable-install-blobs  install provided firmware blobs'
+  printf "%s\n" '  --docdir=VALUE           Base directory for documentation installation'
+  printf "%s\n" '                           (can be empty) [share/doc]'
   printf "%s\n" '  --enable-block-drv-whitelist-in-tools'
   printf "%s\n" '                           use block whitelist also in tools instead of only'
   printf "%s\n" '                           QEMU'
@@ -40,10 +43,18 @@ meson_options_help() {
   printf "%s\n" '  --enable-trace-backends=CHOICES'
   printf "%s\n" '                           Set available tracing backends [log] (choices:'
   printf "%s\n" '                           dtrace/ftrace/log/nop/simple/syslog/ust)'
+  printf "%s\n" '  --firmwarepath=VALUE     search PATH for firmware files [qemu-firmware]'
   printf "%s\n" '  --iasl=VALUE             Path to ACPI disassembler'
+  printf "%s\n" '  --includedir=VALUE       Header file directory [include]'
   printf "%s\n" '  --interp-prefix=VALUE    where to find shared libraries etc., use %M for'
   printf "%s\n" '                           cpu name [/usr/gnemul/qemu-%M]'
+  printf "%s\n" '  --libdir=VALUE           Library directory [lib64]'
+  printf "%s\n" '  --libexecdir=VALUE       Library executable directory [libexec]'
+  printf "%s\n" '  --localedir=VALUE        Locale data directory [share/locale]'
+  printf "%s\n" '  --localstatedir=VALUE    Localstate data directory [/var/local]'
+  printf "%s\n" '  --mandir=VALUE           Manual page directory [share/man]'
   printf "%s\n" '  --sphinx-build=VALUE     Use specified sphinx-build for building document'
+  printf "%s\n" '  --sysconfdir=VALUE       Sysconf data directory [etc]'
   printf "%s\n" '  --tls-priority=VALUE     Default TLS protocol/cipher priority string'
   printf "%s\n" '                           [NORMAL]'
   printf "%s\n" '  --with-pkgversion=VALUE  use specified string as sub-version of the'
@@ -206,6 +217,7 @@ _meson_option_parse() {
     --disable-curl) printf "%s" -Dcurl=disabled ;;
     --enable-curses) printf "%s" -Dcurses=enabled ;;
     --disable-curses) printf "%s" -Dcurses=disabled ;;
+    --datadir=*) quote_sh "-Ddatadir=$2" ;;
     --enable-dbus-display) printf "%s" -Ddbus_display=enabled ;;
     --disable-dbus-display) printf "%s" -Ddbus_display=disabled ;;
     --enable-debug-mutex) printf "%s" -Ddebug_mutex=true ;;
@@ -214,6 +226,7 @@ _meson_option_parse() {
     --disable-debug-stack-usage) printf "%s" -Ddebug_stack_usage=false ;;
     --enable-dmg) printf "%s" -Ddmg=enabled ;;
     --disable-dmg) printf "%s" -Ddmg=disabled ;;
+    --docdir=*) quote_sh "-Ddocdir=$2" ;;
     --enable-docs) printf "%s" -Ddocs=enabled ;;
     --disable-docs) printf "%s" -Ddocs=disabled ;;
     --enable-dsound) printf "%s" -Ddsound=enabled ;;
@@ -252,6 +265,7 @@ _meson_option_parse() {
     --iasl=*) quote_sh "-Diasl=$2" ;;
     --enable-iconv) printf "%s" -Diconv=enabled ;;
     --disable-iconv) printf "%s" -Diconv=disabled ;;
+    --includedir=*) quote_sh "-Dincludedir=$2" ;;
     --enable-install-blobs) printf "%s" -Dinstall_blobs=true ;;
     --disable-install-blobs) printf "%s" -Dinstall_blobs=false ;;
     --interp-prefix=*) quote_sh "-Dinterp_prefix=$2" ;;
@@ -265,6 +279,8 @@ _meson_option_parse() {
     --disable-l2tpv3) printf "%s" -Dl2tpv3=disabled ;;
     --enable-libdaxctl) printf "%s" -Dlibdaxctl=enabled ;;
     --disable-libdaxctl) printf "%s" -Dlibdaxctl=disabled ;;
+    --libdir=*) quote_sh "-Dlibdir=$2" ;;
+    --libexecdir=*) quote_sh "-Dlibexecdir=$2" ;;
     --enable-libiscsi) printf "%s" -Dlibiscsi=enabled ;;
     --disable-libiscsi) printf "%s" -Dlibiscsi=disabled ;;
     --enable-libnfs) printf "%s" -Dlibnfs=enabled ;;
@@ -283,6 +299,8 @@ _meson_option_parse() {
     --disable-linux-io-uring) printf "%s" -Dlinux_io_uring=disabled ;;
     --enable-live-block-migration) printf "%s" -Dlive_block_migration=enabled ;;
     --disable-live-block-migration) printf "%s" -Dlive_block_migration=disabled ;;
+    --localedir=*) quote_sh "-Dlocaledir=$2" ;;
+    --localstatedir=*) quote_sh "-Dlocalstatedir=$2" ;;
     --enable-lzfse) printf "%s" -Dlzfse=enabled ;;
     --disable-lzfse) printf "%s" -Dlzfse=disabled ;;
     --enable-lzo) printf "%s" -Dlzo=enabled ;;
@@ -290,6 +308,7 @@ _meson_option_parse() {
     --enable-malloc=*) quote_sh "-Dmalloc=$2" ;;
     --enable-malloc-trim) printf "%s" -Dmalloc_trim=enabled ;;
     --disable-malloc-trim) printf "%s" -Dmalloc_trim=disabled ;;
+    --mandir=*) quote_sh "-Dmandir=$2" ;;
     --enable-membarrier) printf "%s" -Dmembarrier=enabled ;;
     --disable-membarrier) printf "%s" -Dmembarrier=disabled ;;
     --enable-module-upgrades) printf "%s" -Dmodule_upgrades=true ;;
@@ -323,6 +342,7 @@ _meson_option_parse() {
     --disable-qcow1) printf "%s" -Dqcow1=disabled ;;
     --enable-qed) printf "%s" -Dqed=enabled ;;
     --disable-qed) printf "%s" -Dqed=disabled ;;
+    --firmwarepath=*) quote_sh "-Dqemu_firmwarepath=$2" ;;
     --enable-qga-vss) printf "%s" -Dqga_vss=enabled ;;
     --disable-qga-vss) printf "%s" -Dqga_vss=disabled ;;
     --enable-qom-cast-debug) printf "%s" -Dqom_cast_debug=true ;;
@@ -361,6 +381,7 @@ _meson_option_parse() {
     --disable-spice-protocol) printf "%s" -Dspice_protocol=disabled ;;
     --enable-strip) printf "%s" -Dstrip=true ;;
     --disable-strip) printf "%s" -Dstrip=false ;;
+    --sysconfdir=*) quote_sh "-Dsysconfdir=$2" ;;
     --enable-tcg) printf "%s" -Dtcg=enabled ;;
     --disable-tcg) printf "%s" -Dtcg=disabled ;;
     --enable-tcg-interpreter) printf "%s" -Dtcg_interpreter=true ;;
-- 
2.35.1
Re: [PATCH 24/34] configure: switch directory options to automatic parsing
Posted by Marc-André Lureau 3 years, 9 months ago
Hi

On Wed, Apr 20, 2022 at 8:11 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> While prefix, bindir and qemu_suffix needs special treatment due to
> differences between Windows and POSIX systems, everything else
> needs no extra code in configure.
>
>
Afaik, it's not common to install binaries under $prefix on Windows. I
don't know any open-source project doing that. msys2 explicitly change it
to bin again:
https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-qemu/PKGBUILD#L94


> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

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

---
>  configure                     | 58 ++---------------------------------
>  meson_options.txt             |  4 +--
>  scripts/meson-buildoptions.py | 11 +++++--
>  scripts/meson-buildoptions.sh | 21 +++++++++++++
>  4 files changed, 34 insertions(+), 60 deletions(-)
>
> diff --git a/configure b/configure
> index 200ef3be23..b704453c68 100755
> --- a/configure
> +++ b/configure
> @@ -311,6 +311,7 @@ plugins="$default_feature"
>  meson=""
>  meson_args=""
>  ninja=""
> +bindir="bin"
>  skip_meson=no
>
>  # The following Meson options are handled manually (still they
> @@ -669,6 +670,7 @@ if test "$mingw32" = "yes" ; then
>    CONFIGURE_CFLAGS="-mthreads $CONFIGURE_CFLAGS"
>    write_c_skeleton;
>    prefix="/qemu"
> +  bindir=""
>    qemu_suffix=""
>  fi
>
> @@ -775,30 +777,10 @@ for opt do
>      static="yes"
>      QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
>    ;;
> -  --mandir=*) mandir="$optarg"
> -  ;;
>    --bindir=*) bindir="$optarg"
>    ;;
> -  --libdir=*) libdir="$optarg"
> -  ;;
> -  --libexecdir=*) libexecdir="$optarg"
> -  ;;
> -  --includedir=*) includedir="$optarg"
> -  ;;
> -  --datadir=*) datadir="$optarg"
> -  ;;
>    --with-suffix=*) qemu_suffix="$optarg"
>    ;;
> -  --docdir=*) docdir="$optarg"
> -  ;;
> -  --localedir=*) localedir="$optarg"
> -  ;;
> -  --sysconfdir=*) sysconfdir="$optarg"
> -  ;;
> -  --localstatedir=*) local_statedir="$optarg"
> -  ;;
> -  --firmwarepath=*) firmwarepath="$optarg"
> -  ;;
>    --host=*|--build=*|\
>    --disable-dependency-tracking|\
>    --sbindir=*|--sharedstatedir=*|\
> @@ -1021,23 +1003,6 @@ case $git_submodules_action in
>      ;;
>  esac
>
> -libdir="${libdir:-$prefix/lib}"
> -libexecdir="${libexecdir:-$prefix/libexec}"
> -includedir="${includedir:-$prefix/include}"
> -
> -if test "$mingw32" = "yes" ; then
> -    bindir="${bindir:-$prefix}"
> -else
> -    bindir="${bindir:-$prefix/bin}"
> -fi
> -mandir="${mandir:-$prefix/share/man}"
> -datadir="${datadir:-$prefix/share}"
> -docdir="${docdir:-$prefix/share/doc}"
> -sysconfdir="${sysconfdir:-$prefix/etc}"
> -local_statedir="${local_statedir:-$prefix/var}"
> -firmwarepath="${firmwarepath:-$datadir/qemu-firmware}"
> -localedir="${localedir:-$datadir/locale}"
> -
>  if eval test -z "\${cross_cc_$cpu}"; then
>      eval "cross_cc_${cpu}=\$cc"
>      cross_cc_vars="$cross_cc_vars cross_cc_${cpu}"
> @@ -1115,16 +1080,7 @@ Advanced options (experts only):
>    --with-git-submodules=validate fail if git submodules are not up to date
>    --with-git-submodules=ignore   do not update or check git submodules
> (default if no .git dir)
>    --static                 enable static build [$static]
> -  --mandir=PATH            install man pages in PATH
> -  --datadir=PATH           install firmware in PATH/$qemu_suffix
> -  --localedir=PATH         install translation in PATH/$qemu_suffix
> -  --docdir=PATH            install documentation in PATH/$qemu_suffix
>    --bindir=PATH            install binaries in PATH
> -  --libdir=PATH            install libraries in PATH
> -  --libexecdir=PATH        install helper binaries in PATH
> -  --sysconfdir=PATH        install config in PATH/$qemu_suffix
> -  --localstatedir=PATH     install local state in PATH (set at runtime on
> win32)
> -  --firmwarepath=PATH      search PATH for firmware files
>    --efi-aarch64=PATH       PATH of efi file to use for aarch64 VMs.
>    --with-suffix=SUFFIX     suffix for QEMU data inside
> datadir/libdir/sysconfdir/docdir [$qemu_suffix]
>    --without-default-features default all --enable-* options to "disabled"
> @@ -2409,18 +2365,8 @@ if test "$skip_meson" = no; then
>    run_meson() {
>      NINJA=$ninja $meson setup \
>          --prefix "$prefix" \
> -        --libdir "$libdir" \
> -        --libexecdir "$libexecdir" \
>          --bindir "$bindir" \
> -        --includedir "$includedir" \
> -        --datadir "$datadir" \
> -        --mandir "$mandir" \
> -        --sysconfdir "$sysconfdir" \
> -        --localedir "$localedir" \
> -        --localstatedir "$local_statedir" \
>          -Ddefault_devices=$default_devices \
> -        -Ddocdir="$docdir" \
> -        -Dqemu_firmwarepath="$firmwarepath" \
>          -Dqemu_suffix="$qemu_suffix" \
>          -Dsmbd="$smbd" \
>          -Doptimization=$(if test "$debug" = yes; then echo 0; else echo
> 2; fi) \
> diff --git a/meson_options.txt b/meson_options.txt
> index 848426460c..a76fadbd7d 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -4,9 +4,9 @@
>
>  option('qemu_suffix', type : 'string', value: 'qemu',
>         description: 'Suffix for QEMU data/modules/config directories (can
> be empty)')
> -option('docdir', type : 'string', value : 'doc',
> +option('docdir', type : 'string', value : 'share/doc',
>         description: 'Base directory for documentation installation (can
> be empty)')
> -option('qemu_firmwarepath', type : 'string', value : '',
> +option('qemu_firmwarepath', type : 'string', value : 'qemu-firmware',
>         description: 'search PATH for firmware files')
>  option('pkgversion', type : 'string', value : '',
>         description: 'use specified string as sub-version of the package')
> diff --git a/scripts/meson-buildoptions.py b/scripts/meson-buildoptions.py
> index 0f9603a7f6..45cda8cd84 100755
> --- a/scripts/meson-buildoptions.py
> +++ b/scripts/meson-buildoptions.py
> @@ -27,9 +27,7 @@
>
>  SKIP_OPTIONS = {
>      "default_devices",
> -    "docdir",
>      "fuzzing_engine",
> -    "qemu_firmwarepath",
>      "qemu_suffix",
>      "smbd",
>  }
> @@ -37,12 +35,21 @@
>  OPTION_NAMES = {
>      "malloc": "enable-malloc",
>      "pkgversion": "with-pkgversion",
> +    "qemu_firmwarepath": "firmwarepath",
>      "trace_backends": "enable-trace-backends",
>      "trace_file": "with-trace-file",
>  }
>
>  BUILTIN_OPTIONS = {
> +    "datadir",
> +    "includedir",
> +    "libdir",
> +    "libexecdir",
> +    "localedir",
> +    "localstatedir",
> +    "mandir",
>      "strip",
> +    "sysconfdir",
>  }
>
>  LINE_WIDTH = 76
> diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
> index a0c86db116..a52cc14d13 100644
> --- a/scripts/meson-buildoptions.sh
> +++ b/scripts/meson-buildoptions.sh
> @@ -8,8 +8,11 @@ meson_options_help() {
>    printf "%s\n" '  --block-drv-rw-whitelist=VALUE'
>    printf "%s\n" '                           set block driver read-write
> whitelist (by default'
>    printf "%s\n" '                           affects only QEMU, not tools
> like qemu-img)'
> +  printf "%s\n" '  --datadir=VALUE          Data file directory [share]'
>    printf "%s\n" '  --disable-coroutine-pool coroutine freelist (better
> performance)'
>    printf "%s\n" '  --disable-install-blobs  install provided firmware
> blobs'
> +  printf "%s\n" '  --docdir=VALUE           Base directory for
> documentation installation'
> +  printf "%s\n" '                           (can be empty) [share/doc]'
>    printf "%s\n" '  --enable-block-drv-whitelist-in-tools'
>    printf "%s\n" '                           use block whitelist also in
> tools instead of only'
>    printf "%s\n" '                           QEMU'
> @@ -40,10 +43,18 @@ meson_options_help() {
>    printf "%s\n" '  --enable-trace-backends=CHOICES'
>    printf "%s\n" '                           Set available tracing
> backends [log] (choices:'
>    printf "%s\n" '
>  dtrace/ftrace/log/nop/simple/syslog/ust)'
> +  printf "%s\n" '  --firmwarepath=VALUE     search PATH for firmware
> files [qemu-firmware]'
>    printf "%s\n" '  --iasl=VALUE             Path to ACPI disassembler'
> +  printf "%s\n" '  --includedir=VALUE       Header file directory
> [include]'
>    printf "%s\n" '  --interp-prefix=VALUE    where to find shared
> libraries etc., use %M for'
>    printf "%s\n" '                           cpu name
> [/usr/gnemul/qemu-%M]'
> +  printf "%s\n" '  --libdir=VALUE           Library directory [lib64]'
> +  printf "%s\n" '  --libexecdir=VALUE       Library executable directory
> [libexec]'
> +  printf "%s\n" '  --localedir=VALUE        Locale data directory
> [share/locale]'
> +  printf "%s\n" '  --localstatedir=VALUE    Localstate data directory
> [/var/local]'
> +  printf "%s\n" '  --mandir=VALUE           Manual page directory
> [share/man]'
>    printf "%s\n" '  --sphinx-build=VALUE     Use specified sphinx-build
> for building document'
> +  printf "%s\n" '  --sysconfdir=VALUE       Sysconf data directory [etc]'
>    printf "%s\n" '  --tls-priority=VALUE     Default TLS protocol/cipher
> priority string'
>    printf "%s\n" '                           [NORMAL]'
>    printf "%s\n" '  --with-pkgversion=VALUE  use specified string as
> sub-version of the'
> @@ -206,6 +217,7 @@ _meson_option_parse() {
>      --disable-curl) printf "%s" -Dcurl=disabled ;;
>      --enable-curses) printf "%s" -Dcurses=enabled ;;
>      --disable-curses) printf "%s" -Dcurses=disabled ;;
> +    --datadir=*) quote_sh "-Ddatadir=$2" ;;
>      --enable-dbus-display) printf "%s" -Ddbus_display=enabled ;;
>      --disable-dbus-display) printf "%s" -Ddbus_display=disabled ;;
>      --enable-debug-mutex) printf "%s" -Ddebug_mutex=true ;;
> @@ -214,6 +226,7 @@ _meson_option_parse() {
>      --disable-debug-stack-usage) printf "%s" -Ddebug_stack_usage=false ;;
>      --enable-dmg) printf "%s" -Ddmg=enabled ;;
>      --disable-dmg) printf "%s" -Ddmg=disabled ;;
> +    --docdir=*) quote_sh "-Ddocdir=$2" ;;
>      --enable-docs) printf "%s" -Ddocs=enabled ;;
>      --disable-docs) printf "%s" -Ddocs=disabled ;;
>      --enable-dsound) printf "%s" -Ddsound=enabled ;;
> @@ -252,6 +265,7 @@ _meson_option_parse() {
>      --iasl=*) quote_sh "-Diasl=$2" ;;
>      --enable-iconv) printf "%s" -Diconv=enabled ;;
>      --disable-iconv) printf "%s" -Diconv=disabled ;;
> +    --includedir=*) quote_sh "-Dincludedir=$2" ;;
>      --enable-install-blobs) printf "%s" -Dinstall_blobs=true ;;
>      --disable-install-blobs) printf "%s" -Dinstall_blobs=false ;;
>      --interp-prefix=*) quote_sh "-Dinterp_prefix=$2" ;;
> @@ -265,6 +279,8 @@ _meson_option_parse() {
>      --disable-l2tpv3) printf "%s" -Dl2tpv3=disabled ;;
>      --enable-libdaxctl) printf "%s" -Dlibdaxctl=enabled ;;
>      --disable-libdaxctl) printf "%s" -Dlibdaxctl=disabled ;;
> +    --libdir=*) quote_sh "-Dlibdir=$2" ;;
> +    --libexecdir=*) quote_sh "-Dlibexecdir=$2" ;;
>      --enable-libiscsi) printf "%s" -Dlibiscsi=enabled ;;
>      --disable-libiscsi) printf "%s" -Dlibiscsi=disabled ;;
>      --enable-libnfs) printf "%s" -Dlibnfs=enabled ;;
> @@ -283,6 +299,8 @@ _meson_option_parse() {
>      --disable-linux-io-uring) printf "%s" -Dlinux_io_uring=disabled ;;
>      --enable-live-block-migration) printf "%s"
> -Dlive_block_migration=enabled ;;
>      --disable-live-block-migration) printf "%s"
> -Dlive_block_migration=disabled ;;
> +    --localedir=*) quote_sh "-Dlocaledir=$2" ;;
> +    --localstatedir=*) quote_sh "-Dlocalstatedir=$2" ;;
>      --enable-lzfse) printf "%s" -Dlzfse=enabled ;;
>      --disable-lzfse) printf "%s" -Dlzfse=disabled ;;
>      --enable-lzo) printf "%s" -Dlzo=enabled ;;
> @@ -290,6 +308,7 @@ _meson_option_parse() {
>      --enable-malloc=*) quote_sh "-Dmalloc=$2" ;;
>      --enable-malloc-trim) printf "%s" -Dmalloc_trim=enabled ;;
>      --disable-malloc-trim) printf "%s" -Dmalloc_trim=disabled ;;
> +    --mandir=*) quote_sh "-Dmandir=$2" ;;
>      --enable-membarrier) printf "%s" -Dmembarrier=enabled ;;
>      --disable-membarrier) printf "%s" -Dmembarrier=disabled ;;
>      --enable-module-upgrades) printf "%s" -Dmodule_upgrades=true ;;
> @@ -323,6 +342,7 @@ _meson_option_parse() {
>      --disable-qcow1) printf "%s" -Dqcow1=disabled ;;
>      --enable-qed) printf "%s" -Dqed=enabled ;;
>      --disable-qed) printf "%s" -Dqed=disabled ;;
> +    --firmwarepath=*) quote_sh "-Dqemu_firmwarepath=$2" ;;
>      --enable-qga-vss) printf "%s" -Dqga_vss=enabled ;;
>      --disable-qga-vss) printf "%s" -Dqga_vss=disabled ;;
>      --enable-qom-cast-debug) printf "%s" -Dqom_cast_debug=true ;;
> @@ -361,6 +381,7 @@ _meson_option_parse() {
>      --disable-spice-protocol) printf "%s" -Dspice_protocol=disabled ;;
>      --enable-strip) printf "%s" -Dstrip=true ;;
>      --disable-strip) printf "%s" -Dstrip=false ;;
> +    --sysconfdir=*) quote_sh "-Dsysconfdir=$2" ;;
>      --enable-tcg) printf "%s" -Dtcg=enabled ;;
>      --disable-tcg) printf "%s" -Dtcg=disabled ;;
>      --enable-tcg-interpreter) printf "%s" -Dtcg_interpreter=true ;;
> --
> 2.35.1
>
>
>
>

-- 
Marc-André Lureau
Re: [PATCH 24/34] configure: switch directory options to automatic parsing
Posted by Paolo Bonzini 3 years, 9 months ago
On 4/21/22 11:48, Marc-André Lureau wrote:
>     While prefix, bindir and qemu_suffix needs special treatment due to
>     differences between Windows and POSIX systems, everything else
>     needs no extra code in configure.
> 
> 
> Afaik, it's not common to install binaries under $prefix on Windows. I 
> don't know any open-source project doing that. msys2 explicitly change 
> it to bin again: 
> https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-qemu/PKGBUILD#L94 
> <https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-qemu/PKGBUILD#L94>

It's not, but it's been done like this forever in QEMU for the sake of installing
in "C:\Program Files".

I didn't want to introduce visible changes with this patch, but we could
remove this special casing, and apply it instead when building the NSIS
installers.

Paolo