meson: convert wixl detection to Meson
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
70903cc2fb
commit
b846ab7c95
2
Makefile
2
Makefile
@ -335,9 +335,7 @@ endif
|
|||||||
ifdef CONFIG_WIN32
|
ifdef CONFIG_WIN32
|
||||||
@echo 'Windows targets:'
|
@echo 'Windows targets:'
|
||||||
$(call print-help,installer,Build NSIS-based installer for QEMU)
|
$(call print-help,installer,Build NSIS-based installer for QEMU)
|
||||||
ifdef CONFIG_QGA_MSI
|
|
||||||
$(call print-help,msi,Build MSI-based installer for qemu-ga)
|
$(call print-help,msi,Build MSI-based installer for qemu-ga)
|
||||||
endif
|
|
||||||
@echo ''
|
@echo ''
|
||||||
endif
|
endif
|
||||||
$(call print-help,$(MAKE) [targets],(quiet build, default))
|
$(call print-help,$(MAKE) [targets],(quiet build, default))
|
||||||
|
84
configure
vendored
84
configure
vendored
@ -404,7 +404,7 @@ zstd="auto"
|
|||||||
guest_agent="$default_feature"
|
guest_agent="$default_feature"
|
||||||
guest_agent_with_vss="no"
|
guest_agent_with_vss="no"
|
||||||
guest_agent_ntddscsi="no"
|
guest_agent_ntddscsi="no"
|
||||||
guest_agent_msi="$default_feature"
|
guest_agent_msi="auto"
|
||||||
vss_win32_sdk="$default_feature"
|
vss_win32_sdk="$default_feature"
|
||||||
win_sdk="no"
|
win_sdk="no"
|
||||||
want_tools="$default_feature"
|
want_tools="$default_feature"
|
||||||
@ -1334,9 +1334,9 @@ for opt do
|
|||||||
;;
|
;;
|
||||||
--disable-guest-agent) guest_agent="no"
|
--disable-guest-agent) guest_agent="no"
|
||||||
;;
|
;;
|
||||||
--enable-guest-agent-msi) guest_agent_msi="yes"
|
--enable-guest-agent-msi) guest_agent_msi="enabled"
|
||||||
;;
|
;;
|
||||||
--disable-guest-agent-msi) guest_agent_msi="no"
|
--disable-guest-agent-msi) guest_agent_msi="disabled"
|
||||||
;;
|
;;
|
||||||
--with-vss-sdk) vss_win32_sdk=""
|
--with-vss-sdk) vss_win32_sdk=""
|
||||||
;;
|
;;
|
||||||
@ -5341,62 +5341,19 @@ if [ "$guest_agent" != "no" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Guest agent Window MSI package
|
# Guest agent Windows MSI package
|
||||||
|
|
||||||
if test "$guest_agent" != yes; then
|
if test "$QEMU_GA_MANUFACTURER" = ""; then
|
||||||
if test "$guest_agent_msi" = yes; then
|
QEMU_GA_MANUFACTURER=QEMU
|
||||||
error_exit "MSI guest agent package requires guest agent enabled"
|
fi
|
||||||
fi
|
if test "$QEMU_GA_DISTRO" = ""; then
|
||||||
guest_agent_msi=no
|
QEMU_GA_DISTRO=Linux
|
||||||
elif test "$mingw32" != "yes"; then
|
fi
|
||||||
if test "$guest_agent_msi" = "yes"; then
|
if test "$QEMU_GA_VERSION" = ""; then
|
||||||
error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
|
QEMU_GA_VERSION=$(cat $source_path/VERSION)
|
||||||
fi
|
|
||||||
guest_agent_msi=no
|
|
||||||
elif ! has wixl; then
|
|
||||||
if test "$guest_agent_msi" = "yes"; then
|
|
||||||
error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
|
|
||||||
fi
|
|
||||||
guest_agent_msi=no
|
|
||||||
else
|
|
||||||
# we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
|
|
||||||
# disabled explicitly
|
|
||||||
if test "$guest_agent_msi" != "no"; then
|
|
||||||
guest_agent_msi=yes
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$guest_agent_msi" = "yes"; then
|
QEMU_GA_MSI_MINGW_DLL_PATH="$($pkg_config --variable=prefix glib-2.0)/bin"
|
||||||
if test "$guest_agent_with_vss" = "yes"; then
|
|
||||||
QEMU_GA_MSI_WITH_VSS="-D InstallVss"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$QEMU_GA_MANUFACTURER" = ""; then
|
|
||||||
QEMU_GA_MANUFACTURER=QEMU
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$QEMU_GA_DISTRO" = ""; then
|
|
||||||
QEMU_GA_DISTRO=Linux
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$QEMU_GA_VERSION" = ""; then
|
|
||||||
QEMU_GA_VERSION=$(cat $source_path/VERSION)
|
|
||||||
fi
|
|
||||||
|
|
||||||
QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
|
|
||||||
|
|
||||||
case "$cpu" in
|
|
||||||
x86_64)
|
|
||||||
QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
|
|
||||||
;;
|
|
||||||
i386)
|
|
||||||
QEMU_GA_MSI_ARCH="-D Arch=32"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
error_exit "CPU $cpu not supported for building installation package"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Mac OS X ships with a broken assembler
|
# Mac OS X ships with a broken assembler
|
||||||
roms=
|
roms=
|
||||||
@ -5495,15 +5452,10 @@ if test "$mingw32" = "yes" ; then
|
|||||||
if test "$guest_agent_ntddscsi" = "yes" ; then
|
if test "$guest_agent_ntddscsi" = "yes" ; then
|
||||||
echo "CONFIG_QGA_NTDDSCSI=y" >> $config_host_mak
|
echo "CONFIG_QGA_NTDDSCSI=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$guest_agent_msi" = "yes"; then
|
echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
|
||||||
echo "CONFIG_QGA_MSI=y" >> $config_host_mak
|
echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
|
||||||
echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
|
echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
|
||||||
echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
|
echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
|
||||||
echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
|
|
||||||
echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
|
|
||||||
echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
|
|
||||||
echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "CONFIG_POSIX=y" >> $config_host_mak
|
echo "CONFIG_POSIX=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
@ -6420,7 +6372,7 @@ NINJA=$ninja $meson setup \
|
|||||||
-Dattr=$attr -Ddefault_devices=$default_devices \
|
-Dattr=$attr -Ddefault_devices=$default_devices \
|
||||||
-Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
|
-Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
|
||||||
-Dvhost_user_blk_server=$vhost_user_blk_server \
|
-Dvhost_user_blk_server=$vhost_user_blk_server \
|
||||||
-Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
|
-Dfuse=$fuse -Dfuse_lseek=$fuse_lseek -Dguest_agent_msi=$guest_agent_msi \
|
||||||
$(if test "$default_features" = no; then echo "-Dauto_features=disabled"; fi) \
|
$(if test "$default_features" = no; then echo "-Dauto_features=disabled"; fi) \
|
||||||
$cross_arg \
|
$cross_arg \
|
||||||
"$PWD" "$source_path"
|
"$PWD" "$source_path"
|
||||||
|
10
meson.build
10
meson.build
@ -2196,6 +2196,8 @@ endif
|
|||||||
|
|
||||||
if 'CONFIG_GUEST_AGENT' in config_host
|
if 'CONFIG_GUEST_AGENT' in config_host
|
||||||
subdir('qga')
|
subdir('qga')
|
||||||
|
elif get_option('guest_agent_msi').enabled()
|
||||||
|
error('Guest agent MSI requested, but the guest agent is not being built')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Don't build qemu-keymap if xkbcommon is not explicitly enabled
|
# Don't build qemu-keymap if xkbcommon is not explicitly enabled
|
||||||
@ -2460,9 +2462,11 @@ if targetos == 'windows'
|
|||||||
if 'WIN_SDK' in config_host
|
if 'WIN_SDK' in config_host
|
||||||
summary_info += {'Windows SDK': config_host['WIN_SDK']}
|
summary_info += {'Windows SDK': config_host['WIN_SDK']}
|
||||||
endif
|
endif
|
||||||
summary_info += {'QGA VSS support': config_host.has_key('CONFIG_QGA_VSS')}
|
if config_host.has_key('CONFIG_GUEST_AGENT')
|
||||||
summary_info += {'QGA w32 disk info': config_host.has_key('CONFIG_QGA_NTDDSCSI')}
|
summary_info += {'QGA VSS support': config_host.has_key('CONFIG_QGA_VSS')}
|
||||||
summary_info += {'QGA MSI support': config_host.has_key('CONFIG_QGA_MSI')}
|
summary_info += {'QGA w32 disk info': config_host.has_key('CONFIG_QGA_NTDDSCSI')}
|
||||||
|
summary_info += {'QGA MSI support': wixl.found()}
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
summary_info += {'seccomp support': seccomp.found()}
|
summary_info += {'seccomp support': seccomp.found()}
|
||||||
summary_info += {'CFI support': get_option('cfi')}
|
summary_info += {'CFI support': get_option('cfi')}
|
||||||
|
@ -17,6 +17,8 @@ option('install_blobs', type : 'boolean', value : true,
|
|||||||
description: 'install provided firmware blobs')
|
description: 'install provided firmware blobs')
|
||||||
option('sparse', type : 'feature', value : 'auto',
|
option('sparse', type : 'feature', value : 'auto',
|
||||||
description: 'sparse checker')
|
description: 'sparse checker')
|
||||||
|
option('guest_agent_msi', type : 'feature', value : 'auto',
|
||||||
|
description: 'Build MSI package for the QEMU Guest Agent')
|
||||||
|
|
||||||
option('malloc_trim', type : 'feature', value : 'auto',
|
option('malloc_trim', type : 'feature', value : 'auto',
|
||||||
description: 'enable libc malloc_trim() for memory optimization')
|
description: 'enable libc malloc_trim() for memory optimization')
|
||||||
|
@ -55,33 +55,46 @@ if targetos == 'windows'
|
|||||||
gen_tlb = []
|
gen_tlb = []
|
||||||
endif
|
endif
|
||||||
|
|
||||||
wixl = find_program('wixl', required: false)
|
qemu_ga_msi_arch = {
|
||||||
|
'x86': ['-D', 'Arch=32'],
|
||||||
|
'x86_64': ['-a', 'x64', '-D', 'Arch=64']
|
||||||
|
}
|
||||||
|
wixl = not_found
|
||||||
|
if cpu in qemu_ga_msi_arch
|
||||||
|
wixl = find_program('wixl', required: get_option('guest_agent_msi'))
|
||||||
|
elif get_option('guest_agent_msi').enabled()
|
||||||
|
error('CPU not supported for building guest agent installation package')
|
||||||
|
endif
|
||||||
|
|
||||||
if wixl.found()
|
if wixl.found()
|
||||||
deps = [gen_tlb, qga]
|
deps = [gen_tlb, qga]
|
||||||
if 'CONFIG_QGA_VSS' in config_host and 'QEMU_GA_MSI_WITH_VSS' in config_host
|
qemu_ga_msi_vss = []
|
||||||
|
if 'CONFIG_QGA_VSS' in config_host
|
||||||
|
qemu_ga_msi_vss = ['-D', 'InstallVss']
|
||||||
deps += qga_vss
|
deps += qga_vss
|
||||||
endif
|
endif
|
||||||
if 'CONFIG_QGA_MSI' in config_host
|
qga_msi = custom_target('QGA MSI',
|
||||||
qga_msi = custom_target('QGA MSI',
|
input: files('installer/qemu-ga.wxs'),
|
||||||
input: files('installer/qemu-ga.wxs'),
|
output: 'qemu-ga-@0@.msi'.format(config_host['ARCH']),
|
||||||
output: 'qemu-ga-@0@.msi'.format(config_host['ARCH']),
|
depends: deps,
|
||||||
depends: deps,
|
command: [
|
||||||
command: [
|
find_program('env'),
|
||||||
find_program('env'),
|
'QEMU_GA_VERSION=' + config_host['QEMU_GA_VERSION'],
|
||||||
'QEMU_GA_VERSION=' + config_host['QEMU_GA_VERSION'],
|
'QEMU_GA_MANUFACTURER=' + config_host['QEMU_GA_MANUFACTURER'],
|
||||||
'QEMU_GA_MANUFACTURER=' + config_host['QEMU_GA_MANUFACTURER'],
|
'QEMU_GA_DISTRO=' + config_host['QEMU_GA_DISTRO'],
|
||||||
'QEMU_GA_DISTRO=' + config_host['QEMU_GA_DISTRO'],
|
'BUILD_DIR=' + meson.build_root(),
|
||||||
'BUILD_DIR=' + meson.build_root(),
|
wixl, '-o', '@OUTPUT0@', '@INPUT0@',
|
||||||
wixl, '-o', '@OUTPUT0@', '@INPUT0@',
|
qemu_ga_msi_arch[cpu],
|
||||||
config_host['QEMU_GA_MSI_ARCH'].split(),
|
qemu_ga_msi_vss,
|
||||||
config_host['QEMU_GA_MSI_WITH_VSS'].split(),
|
'-D', 'Mingw_dlls=' + config_host['QEMU_GA_MSI_MINGW_DLL_PATH'],
|
||||||
config_host['QEMU_GA_MSI_MINGW_DLL_PATH'].split(),
|
])
|
||||||
])
|
all_qga += [qga_msi]
|
||||||
all_qga += [qga_msi]
|
alias_target('msi', qga_msi)
|
||||||
alias_target('msi', qga_msi)
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
|
if get_option('guest_agent_msi').enabled()
|
||||||
|
error('MSI guest agent package is available only for MinGW Windows cross-compilation')
|
||||||
|
endif
|
||||||
install_subdir('run', install_dir: get_option('localstatedir'))
|
install_subdir('run', install_dir: get_option('localstatedir'))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user