Hi On Wed, Apr 20, 2022 at 8:11 PM Paolo Bonzini <pbonz...@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 <pbonz...@redhat.com> > Reviewed-by: Marc-André Lureau <marcandre.lur...@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