[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 039/150] meson: convert qemu-ga
From: |
Paolo Bonzini |
Subject: |
[PATCH 039/150] meson: convert qemu-ga |
Date: |
Mon, 17 Aug 2020 16:35:32 +0200 |
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
Makefile | 53 +++++----------------------------------
Makefile.objs | 1 -
configure | 14 +++--------
meson.build | 8 ++++++
qga/Makefile.objs | 9 -------
qga/installer/qemu-ga.wxs | 2 +-
qga/meson.build | 46 +++++++++++++++++++++++++++++++++
tests/Makefile.include | 4 +--
tests/test-qga.c | 8 +++---
9 files changed, 71 insertions(+), 74 deletions(-)
create mode 100644 qga/meson.build
diff --git a/Makefile b/Makefile
index b97a3d0eeb..174d1ecc4f 100644
--- a/Makefile
+++ b/Makefile
@@ -290,7 +290,6 @@ endif
dummy := $(call unnest-vars,, \
authz-obj-y \
chardev-obj-y \
- qga-obj-y \
qga-vss-dll-obj-y \
block-obj-y \
block-obj-m \
@@ -438,52 +437,15 @@ endif
qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx $(SRC_PATH)/scripts/hxtool
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< >
$@,"GEN","$@")
-qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
-qemu-ga$(EXESUF): QEMU_CFLAGS += -I qga/qapi-generated
-
qemu-keymap$(EXESUF): LIBS += $(XKBCOMMON_LIBS)
qemu-keymap$(EXESUF): QEMU_CFLAGS += $(XKBCOMMON_CFLAGS)
-qapi-py = $(SRC_PATH)/scripts/qapi/__init__.py \
-$(SRC_PATH)/scripts/qapi/commands.py \
-$(SRC_PATH)/scripts/qapi/common.py \
-$(SRC_PATH)/scripts/qapi/doc.py \
-$(SRC_PATH)/scripts/qapi/error.py \
-$(SRC_PATH)/scripts/qapi/events.py \
-$(SRC_PATH)/scripts/qapi/expr.py \
-$(SRC_PATH)/scripts/qapi/gen.py \
-$(SRC_PATH)/scripts/qapi/introspect.py \
-$(SRC_PATH)/scripts/qapi/parser.py \
-$(SRC_PATH)/scripts/qapi/schema.py \
-$(SRC_PATH)/scripts/qapi/source.py \
-$(SRC_PATH)/scripts/qapi/types.py \
-$(SRC_PATH)/scripts/qapi/visit.py \
-$(SRC_PATH)/scripts/qapi-gen.py
-
-qga/qapi-generated/qga-qapi-types.c qga/qapi-generated/qga-qapi-types.h \
-qga/qapi-generated/qga-qapi-visit.c qga/qapi-generated/qga-qapi-visit.h \
-qga/qapi-generated/qga-qapi-commands.h qga/qapi-generated/qga-qapi-commands.c \
-qga/qapi-generated/qga-qapi-init-commands.h
qga/qapi-generated/qga-qapi-init-commands.c \
-qga/qapi-generated/qga-qapi-doc.texi: \
-qga/qapi-generated/qapi-gen-timestamp ;
-qga/qapi-generated/qapi-gen-timestamp: $(SRC_PATH)/qga/qapi-schema.json
$(qapi-py)
- $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-gen.py \
- -o qga/qapi-generated -p "qga-" $<, \
- "GEN","$(@:%-timestamp=%)")
- @>$@
-
-QGALIB_GEN=$(addprefix qga/qapi-generated/, qga-qapi-types.h qga-qapi-visit.h
qga-qapi-commands.h qga-qapi-init-commands.h)
-$(qga-obj-y): $(QGALIB_GEN)
-
-qemu-ga$(EXESUF): $(qga-obj-y) $(COMMON_LDADDS)
- $(call LINK, $^)
-
ifdef QEMU_GA_MSI_ENABLED
QEMU_GA_MSI=qemu-ga-$(ARCH).msi
msi: $(QEMU_GA_MSI)
-$(QEMU_GA_MSI): qemu-ga.exe $(QGA_VSS_PROVIDER)
+$(QEMU_GA_MSI): qga/qemu-ga.exe $(QGA_VSS_PROVIDER)
$(QEMU_GA_MSI): config-host.mak
@@ -496,8 +458,8 @@ msi:
endif
ifneq ($(EXESUF),)
-.PHONY: qemu-ga
-qemu-ga: qemu-ga$(EXESUF) $(QGA_VSS_PROVIDER) $(QEMU_GA_MSI)
+.PHONY: qga/qemu-ga
+qga/qemu-ga: qga/qemu-ga$(EXESUF) $(QGA_VSS_PROVIDER) $(QEMU_GA_MSI)
endif
module_block.h: $(SRC_PATH)/scripts/modules/module_block.py config-host.mak
@@ -522,9 +484,6 @@ clean: recurse-clean ninja-clean clean-ctlist
rm -f qemu-img-cmds.h
rm -f ui/shader/*-vert.h ui/shader/*-frag.h
rm -f $(foreach f,$(generated-files-y),$(f) $(f)-timestamp)
- rm -f qapi-gen-timestamp
- rm -f storage-daemon/qapi/qapi-gen-timestamp
- rm -rf qga/qapi-generated
rm -f config-all-devices.mak
rm -f $(SUBDIR_DEVICES_MAK)
@@ -646,7 +605,7 @@ endif
ifdef CONFIG_TRACE_SYSTEMTAP
$(INSTALL_DATA) $(MANUAL_BUILDDIR)/tools/qemu-trace-stap.1
"$(DESTDIR)$(mandir)/man1"
endif
-ifneq (,$(findstring qemu-ga,$(TOOLS)))
+ifeq ($(CONFIG_GUEST_AGENT),y)
$(INSTALL_DATA) $(MANUAL_BUILDDIR)/interop/qemu-ga.8
"$(DESTDIR)$(mandir)/man8"
$(INSTALL_DIR) "$(DESTDIR)$(qemu_docdir)/interop"
$(INSTALL_DATA) docs/interop/qemu-ga-ref.html
"$(DESTDIR)$(qemu_docdir)/interop"
@@ -667,7 +626,7 @@ install-datadir:
install-localstatedir:
ifdef CONFIG_POSIX
-ifneq (,$(findstring qemu-ga,$(TOOLS)))
+ifeq ($(CONFIG_GUEST_AGENT),y)
$(INSTALL_DIR) "$(DESTDIR)$(qemu_localstatedir)"/run
endif
endif
@@ -859,7 +818,7 @@ $(MANUAL_BUILDDIR)/index.html:
$(SRC_PATH)/docs/index.html.in qemu-version.h
docs/interop/qemu-qmp-qapi.texi: qapi/qapi-doc.texi
@cp -p $< $@
-docs/interop/qemu-ga-qapi.texi: qga/qapi-generated/qga-qapi-doc.texi
+docs/interop/qemu-ga-qapi.texi: qga/qga-qapi-doc.texi
@cp -p $< $@
html: docs/interop/qemu-qmp-ref.html docs/interop/qemu-ga-ref.html sphinxdocs
diff --git a/Makefile.objs b/Makefile.objs
index 1486254a2c..259f9936ac 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -98,5 +98,4 @@ version-obj-$(CONFIG_WIN32) += $(BUILD_DIR)/version.o
# FIXME: a few definitions from qapi/qapi-types.o and
# qapi/qapi-visit.o are needed by libqemuutil.a. These should be
# extracted into a QAPI schema module, or perhaps a separate schema.
-qga-obj-y = qga/
qga-vss-dll-obj-y = qga/
diff --git a/configure b/configure
index 0eb9f8aefd..a58d049d13 100755
--- a/configure
+++ b/configure
@@ -825,8 +825,6 @@ FreeBSD)
audio_possible_drivers="oss sdl pa"
# needed for kinfo_getvmmap(3) in libutil.h
LIBS="-lutil $LIBS"
- # needed for kinfo_getproc
- libs_qga="-lutil $libs_qga"
netmap="" # enable netmap autodetect
HOST_VARIANT_DIR="freebsd"
;;
@@ -888,7 +886,6 @@ SunOS)
QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
solarisnetlibs="-lsocket -lnsl -lresolv"
LIBS="$solarisnetlibs $LIBS"
- libs_qga="$solarisnetlibs $libs_qga"
;;
Haiku)
haiku="yes"
@@ -3972,7 +3969,6 @@ for i in $glib_modules; do
glib_libs=$($pkg_config --libs $i)
QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
LIBS="$glib_libs $LIBS"
- libs_qga="$glib_libs $libs_qga"
else
error_exit "glib-$glib_req_ver $i is required to compile QEMU"
fi
@@ -4183,7 +4179,6 @@ else
done
if test "$found" = "no"; then
LIBS="$pthread_lib $LIBS"
- libs_qga="$pthread_lib $libs_qga"
fi
PTHREAD_LIB="$pthread_lib"
break
@@ -5192,7 +5187,6 @@ if compile_prog "" "" ; then
:
elif compile_prog "" "-lm" ; then
LIBS="-lm $LIBS"
- libs_qga="-lm $libs_qga"
else
error_exit "libm check failed"
fi
@@ -5217,7 +5211,6 @@ if compile_prog "" "" ; then
# we need pthread for static linking. use previous pthread test result
elif compile_prog "" "$pthread_lib -lrt" ; then
LIBS="$LIBS -lrt"
- libs_qga="$libs_qga -lrt"
fi
# Check whether we need to link libutil for openpty()
@@ -5596,7 +5589,6 @@ EOF
fi
LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
- libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
else
error_exit "Trace backend 'ust' missing lttng-ust header files"
fi
@@ -6722,7 +6714,6 @@ if [ "$guest_agent" != "no" ]; then
if [ "$softmmu" = no -a "$want_tools" = no ] ; then
guest_agent=no
elif [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o
"$mingw32" = "yes" ] ; then
- tools="qemu-ga\$(EXESUF) $tools"
guest_agent=yes
elif [ "$guest_agent" != yes ]; then
guest_agent=no
@@ -6968,6 +6959,9 @@ fi
if test "$want_tools" = "yes" ; then
echo "CONFIG_TOOLS=y" >> $config_host_mak
fi
+if test "$guest_agent" = "yes" ; then
+ echo "CONFIG_GUEST_AGENT=y" >> $config_host_mak
+fi
if test "$slirp" != "no"; then
echo "CONFIG_SLIRP=y" >> $config_host_mak
echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
@@ -7825,7 +7819,7 @@ echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
echo "EXESUF=$EXESUF" >> $config_host_mak
echo "DSOSUF=$DSOSUF" >> $config_host_mak
echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
-echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
+echo "LIBS_QGA=$libs_qga" >> $config_host_mak
echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
echo "POD2MAN=$POD2MAN" >> $config_host_mak
diff --git a/meson.build b/meson.build
index 08bda49778..67a26314fa 100644
--- a/meson.build
+++ b/meson.build
@@ -128,6 +128,10 @@ if 'CONFIG_CURL' in config_host
curl = declare_dependency(compile_args: config_host['CURL_CFLAGS'].split(),
link_args: config_host['CURL_LIBS'].split())
endif
+libudev = not_found
+if 'CONFIG_LIBUDEV' in config_host
+ libudev = declare_dependency(link_args: config_host['LIBUDEV_LIBS'].split())
+endif
target_dirs = config_host['TARGET_DIRS'].split()
have_user = false
@@ -290,6 +294,10 @@ qemuutil = declare_dependency(link_with: libqemuutil,
# Other build targets
+if 'CONFIG_GUEST_AGENT' in config_host
+ subdir('qga')
+endif
+
if have_tools
subdir('contrib/rdmacm-mux')
subdir('contrib/elf2dmp')
diff --git a/qga/Makefile.objs b/qga/Makefile.objs
index 9c558ae51c..9ecf2496da 100644
--- a/qga/Makefile.objs
+++ b/qga/Makefile.objs
@@ -1,10 +1 @@
-commands-posix.o-libs := $(LIBUDEV_LIBS)
-qga-obj-y = commands.o guest-agent-command-state.o main.o
-qga-obj-$(CONFIG_POSIX) += commands-posix.o channel-posix.o
-qga-obj-$(CONFIG_WIN32) += commands-win32.o channel-win32.o service-win32.o
-qga-obj-$(CONFIG_WIN32) += vss-win32.o
-qga-obj-y += qapi-generated/qga-qapi-types.o qapi-generated/qga-qapi-visit.o
-qga-obj-y += qapi-generated/qga-qapi-commands.o
-qga-obj-y += qapi-generated/qga-qapi-init-commands.o
-
qga-vss-dll-obj-$(CONFIG_QGA_VSS) += vss-win32/
diff --git a/qga/installer/qemu-ga.wxs b/qga/installer/qemu-ga.wxs
index f6781752e6..9cb4c3d733 100644
--- a/qga/installer/qemu-ga.wxs
+++ b/qga/installer/qemu-ga.wxs
@@ -66,7 +66,7 @@
<Directory Id="$(var.GaProgramFilesFolder)" Name="QEMU Guest Agent">
<Directory Id="qemu_ga_directory" Name="Qemu-ga">
<Component Id="qemu_ga"
Guid="{908B7199-DE2A-4DC6-A8D0-27A5AE444FEA}">
- <File Id="qemu_ga.exe" Name="qemu-ga.exe"
Source="$(env.BUILD_DIR)/qemu-ga.exe" KeyPath="yes" DiskId="1"/>
+ <File Id="qemu_ga.exe" Name="qemu-ga.exe"
Source="$(env.BUILD_DIR)/qga/qemu-ga.exe" KeyPath="yes" DiskId="1"/>
<ServiceInstall
Id="ServiceInstaller"
Type="ownProcess"
diff --git a/qga/meson.build b/qga/meson.build
new file mode 100644
index 0000000000..3513a90f5d
--- /dev/null
+++ b/qga/meson.build
@@ -0,0 +1,46 @@
+qga_qapi_outputs = [
+ 'qga-qapi-commands.c',
+ 'qga-qapi-commands.h',
+ 'qga-qapi-doc.texi',
+ 'qga-qapi-emit-events.c',
+ 'qga-qapi-emit-events.h',
+ 'qga-qapi-events.c',
+ 'qga-qapi-events.h',
+ 'qga-qapi-init-commands.c',
+ 'qga-qapi-init-commands.h',
+ 'qga-qapi-introspect.c',
+ 'qga-qapi-introspect.h',
+ 'qga-qapi-types.c',
+ 'qga-qapi-types.h',
+ 'qga-qapi-visit.c',
+ 'qga-qapi-visit.h',
+]
+
+qga_qapi_files = custom_target('QGA QAPI files',
+ output: qga_qapi_outputs,
+ input: 'qapi-schema.json',
+ command: [ qapi_gen, '-o', 'qga', '-p', 'qga-',
'@INPUT0@' ],
+ depend_files: qapi_gen_depends)
+qga_ss = ss.source_set()
+qga_ss.add(qga_qapi_files)
+qga_ss.add(files(
+ 'commands.c',
+ 'guest-agent-command-state.c',
+ 'main.c',
+))
+qga_ss.add(when: 'CONFIG_POSIX', if_true: files(
+ 'channel-posix.c',
+ 'commands-posix.c'))
+qga_ss.add(when: 'CONFIG_WIN32', if_true: files(
+ 'channel-win32.c',
+ 'commands-win32.c',
+ 'service-win32.c',
+ 'vss-win32.c'
+))
+
+qga_ss = qga_ss.apply(config_host, strict: false)
+
+qga = executable('qemu-ga', qga_ss.sources(),
+ link_args: config_host['LIBS_QGA'].split(),
+ dependencies: [qemuutil, libudev],
+ install: true)
diff --git a/tests/Makefile.include b/tests/Makefile.include
index ad54100369..f277d238fb 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -129,7 +129,7 @@ ifndef CONFIG_TSAN
# https://github.com/google/sanitizers/issues/1116
check-unit-$(CONFIG_SOFTMMU) += tests/test-char$(EXESUF)
check-unit-$(CONFIG_SOFTMMU) += tests/test-qdev-global-props$(EXESUF)
-ifneq (,$(findstring qemu-ga,$(TOOLS)))
+ifeq ($(CONFIG_GUEST_AGENT),y)
check-unit-$(call land,$(CONFIG_LINUX),$(CONFIG_VIRTIO_SERIAL)) +=
tests/test-qga$(EXESUF)
endif
endif
@@ -603,7 +603,7 @@ tests/migration/initrd-stress.img:
tests/migration/stress$(EXESUF)
include $(SRC_PATH)/tests/qtest/Makefile.include
-tests/test-qga$(EXESUF): qemu-ga$(EXESUF)
+tests/test-qga$(EXESUF): qga/qemu-ga$(EXESUF)
tests/test-qga$(EXESUF): tests/test-qga.o $(qtest-obj-y)
tests/vhost-user-bridge$(EXESUF): tests/vhost-user-bridge.o $(test-util-obj-y)
libvhost-user.a
tests/qemu-iotests/socket_scm_helper$(EXESUF):
tests/qemu-iotests/socket_scm_helper.o
diff --git a/tests/test-qga.c b/tests/test-qga.c
index d2b2435bb4..d1b4c3e8ce 100644
--- a/tests/test-qga.c
+++ b/tests/test-qga.c
@@ -61,8 +61,8 @@ fixture_setup(TestFixture *fixture, gconstpointer data, gchar
**envp)
path = g_build_filename(fixture->test_dir, "sock", NULL);
cwd = g_get_current_dir();
- cmd = g_strdup_printf("%s%cqemu-ga -m unix-listen -t %s -p %s %s %s",
- cwd, G_DIR_SEPARATOR,
+ cmd = g_strdup_printf("%s%cqga%cqemu-ga -m unix-listen -t %s -p %s %s %s",
+ cwd, G_DIR_SEPARATOR, G_DIR_SEPARATOR,
fixture->test_dir, path,
getenv("QTEST_LOG") ? "-v" : "",
extra_arg ?: "");
@@ -699,8 +699,8 @@ static void test_qga_config(gconstpointer data)
GKeyFile *kf;
cwd = g_get_current_dir();
- cmd = g_strdup_printf("%s%cqemu-ga -D",
- cwd, G_DIR_SEPARATOR);
+ cmd = g_strdup_printf("%s%cqga%cqemu-ga -D",
+ cwd, G_DIR_SEPARATOR, G_DIR_SEPARATOR);
g_free(cwd);
g_shell_parse_argv(cmd, NULL, &argv, &error);
g_free(cmd);
--
2.26.2
- [PATCH 034/150] contrib/vhost-user-gpu: convert to meson, (continued)
- [PATCH 034/150] contrib/vhost-user-gpu: convert to meson, Paolo Bonzini, 2020/08/17
- [PATCH 035/150] contrib/ivshmem: convert to meson, Paolo Bonzini, 2020/08/17
- [PATCH 041/150] meson: add msi generation, Paolo Bonzini, 2020/08/17
- [PATCH 040/150] meson: convert vss-win32, Paolo Bonzini, 2020/08/17
- [PATCH 042/150] meson: convert dummy Windows qga/qemu-ga target, Paolo Bonzini, 2020/08/17
- [PATCH 043/150] meson: add qemu-bridge-helper, Paolo Bonzini, 2020/08/17
- [PATCH 047/150] meson: keymap-gen, Paolo Bonzini, 2020/08/17
- [PATCH 044/150] meson: add qemu-keymap, Paolo Bonzini, 2020/08/17
- [PATCH 038/150] meson: add solaris and Haiku libraries, Paolo Bonzini, 2020/08/17
- [PATCH 037/150] meson: add macos dependencies, Paolo Bonzini, 2020/08/17
- [PATCH 039/150] meson: convert qemu-ga,
Paolo Bonzini <=
- [PATCH 045/150] meson: add qemu-edid, Paolo Bonzini, 2020/08/17
- [PATCH 046/150] meson: add virtfs-proxy-helper, Paolo Bonzini, 2020/08/17
- [PATCH 052/150] meson: convert check-decodetree, Paolo Bonzini, 2020/08/17
- [PATCH 048/150] meson: generate qemu-version.h, Paolo Bonzini, 2020/08/17
- [PATCH 049/150] meson: generate shader headers, Paolo Bonzini, 2020/08/17
- [PATCH 051/150] meson: handle edk2 bios and descriptors, Paolo Bonzini, 2020/08/17
- [PATCH 050/150] meson: generate hxtool files, Paolo Bonzini, 2020/08/17
- [PATCH 054/150] meson: convert check-qapi-schema, Paolo Bonzini, 2020/08/17
- [PATCH 057/150] meson: convert crypto directory to Meson, Paolo Bonzini, 2020/08/17
- [PATCH 058/150] meson: convert io directory to Meson, Paolo Bonzini, 2020/08/17