From: Stefan Weil <sw@weilnetz.de>
To: Paolo Bonzini <pbonzini@redhat.com>,
Michael Roth <mdroth@linux.vnet.ibm.com>,
qemu-devel@nongnu.org
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] build: qemu-ga: add 'qemu-ga' build target for w32
Date: Sun, 15 Nov 2015 09:13:36 +0100 [thread overview]
Message-ID: <56483EB0.8080903@weilnetz.de> (raw)
In-Reply-To: <55EFFF1B.2000600@redhat.com>
Am 09.09.2015 um 11:42 schrieb Paolo Bonzini:
>
> 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 <pbonzini@redhat.com>
>> Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
>> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
>> ---
>> 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
Looks good, but introduced a regression for cross builds:
'make install' now fails with an error:
install: cannot stat 'qemu-ga': No such file or directory
Reverting the change in configure fixes this.
Stefan
next prev parent reply other threads:[~2015-11-15 8:13 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-08 15:47 [Qemu-devel] [PATCH] build: qemu-ga: add 'qemu-ga' build target for w32 Michael Roth
2015-09-09 9:42 ` Paolo Bonzini
2015-11-15 8:13 ` Stefan Weil [this message]
2015-11-15 16:14 ` Michael Roth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56483EB0.8080903@weilnetz.de \
--to=sw@weilnetz.de \
--cc=marcandre.lureau@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.