From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35166) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZZbu2-0002vq-LU for qemu-devel@nongnu.org; Wed, 09 Sep 2015 05:42:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZZbu1-00063r-H8 for qemu-devel@nongnu.org; Wed, 09 Sep 2015 05:42:54 -0400 Received: from mail-wi0-x229.google.com ([2a00:1450:400c:c05::229]:36124) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZZbu1-000631-77 for qemu-devel@nongnu.org; Wed, 09 Sep 2015 05:42:53 -0400 Received: by wicgb1 with SMTP id gb1so109008162wic.1 for ; Wed, 09 Sep 2015 02:42:52 -0700 (PDT) Sender: Paolo Bonzini References: <1441727278-18450-1-git-send-email-mdroth@linux.vnet.ibm.com> From: Paolo Bonzini Message-ID: <55EFFF1B.2000600@redhat.com> Date: Wed, 9 Sep 2015 11:42:51 +0200 MIME-Version: 1.0 In-Reply-To: <1441727278-18450-1-git-send-email-mdroth@linux.vnet.ibm.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH] build: qemu-ga: add 'qemu-ga' build target for w32 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Michael Roth , qemu-devel@nongnu.org Cc: =?UTF-8?Q?Marc-Andr=c3=a9_Lureau?= On 08/09/2015 17:47, Michael Roth wrote: > Currently POSIX builds rely on 'qemu-ga' target to do qga-only > distributable build. On w32, as with most standalone binary targets, > we rely on 'qemu-ga.exe' target. > > Unlike with POSIX, qemu-ga for w32 has a number of related targets > such as VSS DLL and MSI package. We can do the full distributable > qga-only build on w32 with: > > make qemu-ga.exe > > or: > > make msi > > To make that work, we tie VSS dependencies onto qemu-ga.exe. > However, in reality the DLL isn't part of the binary, so we use a > filter to pull them out of the LINK recipe, which attempts to link > against prereqs for binary targets. Additionally, it could be argued > that VSS is a separate distributable, and shouldn't be implied by > qemu-ga.exe binary target. > > To avoid this, we can tie the VSS dependencies only to the 'msi' > target, but that would make it impossible to do a qga-only build of > the w32 distributable without building the 'msi' package, which was > supported in the past. > > An alternative approach is to add a new target to build the whole > distributable. w32 allows us to use the same build target we use > on POSIX, 'qemu-ga', since the current binary-only target on w32 > is 'qemu-ga.exe'. > > To further simplify the build, we also make 'qemu-ga' build the MSI > package if the appropriate ./configure options are set, making the > full qga-only build the same on both POSIX and w32: `make qemu-ga` > > Cc: Paolo Bonzini > Cc: Marc-André Lureau > Signed-off-by: Michael Roth > --- > Makefile | 14 ++++++++------ > configure | 2 +- > 2 files changed, 9 insertions(+), 7 deletions(-) > > diff --git a/Makefile b/Makefile > index 9ce3972..7efca5e 100644 > --- a/Makefile > +++ b/Makefile > @@ -290,18 +290,15 @@ $(qapi-modules) $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py) > QGALIB_GEN=$(addprefix qga/qapi-generated/, qga-qapi-types.h qga-qapi-visit.h qga-qmp-commands.h) > $(qga-obj-y) qemu-ga.o: $(QGALIB_GEN) > > -# we require QGA_VSS_PROVIDER files to be built alongside qemu-ga > -# executable since they are shipped together, but we don't want to actually > -# link against them > -qemu-ga$(EXESUF): $(qga-obj-y) libqemuutil.a libqemustub.a $(QGA_VSS_PROVIDER) > - $(call LINK, $(filter-out $(QGA_VSS_PROVIDER), $^)) > +qemu-ga$(EXESUF): $(qga-obj-y) libqemuutil.a libqemustub.a > + $(call LINK, $^) > > ifdef QEMU_GA_MSI_ENABLED > QEMU_GA_MSI=qemu-ga-$(ARCH).msi > > msi: $(QEMU_GA_MSI) > > -$(QEMU_GA_MSI): qemu-ga.exe > +$(QEMU_GA_MSI): qemu-ga.exe $(QGA_VSS_PROVIDER) > > $(QEMU_GA_MSI): config-host.mak > > @@ -313,6 +310,11 @@ msi: > @echo "MSI build not configured or dependency resolution failed (reconfigure with --enable-guest-agent-msi option)" > endif > > +ifneq ($(EXESUF),) > +.PHONY: qemu-ga > +qemu-ga: qemu-ga$(EXESUF) $(QGA_VSS_PROVIDER) $(QEMU_GA_MSI) > +endif > + > clean: > # avoid old build problems by removing potentially incorrect old files > rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h > diff --git a/configure b/configure > index d854936..fc34443 100755 > --- a/configure > +++ b/configure > @@ -4350,7 +4350,7 @@ fi > > if [ "$guest_agent" != "no" ]; then > if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then > - tools="qemu-ga\$(EXESUF) $tools" > + tools="qemu-ga $tools" > guest_agent=yes > elif [ "$guest_agent" != yes ]; then > guest_agent=no > Looks good, thanks! Paolo