From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: Stefan Weil <sw@weilnetz.de>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Anthony Liguori <aliguori@us.ibm.com>,
qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH v2 for 1.6] w32: Add missing version.o to all executables (fix regression)
Date: Fri, 16 Aug 2013 13:27:32 -0500 [thread overview]
Message-ID: <20130816182732.30766.77528@loki> (raw)
In-Reply-To: <520DBEBB.2090809@weilnetz.de>
Quoting Stefan Weil (2013-08-16 00:55:07)
> Am 16.08.2013 00:19, schrieb Michael Roth:
>
> Quoting Stefan Weil (2013-08-08 13:18:07)
>
> > QEMU executables for w32, w64 had included meta information built from
> > version.rc. These rules were changed several times some months ago.
> >
> > The latest version added version.o to the tools, but not to the system
> > emulations.
> >
> > This patch adds the meta information to all system emulations again.
> >
> > Signed-off-by: Stefan Weil <sw@weilnetz.de>
>
> I seem to be getting build errors with this patch when doing a Fedora 18 mingw
> crossbuild. I thought it was specific to qemu-ga so I disabled it to confirm
> and it looks like version.o is never being built, so all targets fail when
> linking.
>
> Reverting this patch seems to fix things
>
>
> That's strange. Exactly the same command line works on Debian wheezy.
> version.o is built right at the beginning:
>
> ...
> QOM debugging yes
> GEN x86_64-softmmu/config-devices.mak
> GEN qemu-options.def
> GEN config-host.h
> GEN qmp-commands.h
> GEN qapi-types.h
> GEN qapi-visit.h
> GEN trace/generated-events.h
> GEN trace/generated-tracers.h
> GEN tests/test-qapi-types.h
> GEN tests/test-qapi-visit.h
> GEN tests/test-qmp-commands.h
> GEN config-all-devices.mak
> RC /home/stefan/src/qemu/qemu.org/spelling/version.o
> rm /home/stefan/src/qemu/qemu.org/spelling/config-host.h-timestamp
> GEN config-host.h
> GEN qemu-monitor.texi
> GEN qemu-img-cmds.texi
> ...
>
> Here are the dependency rules which should trigger building of version.o:
>
> $ grep version-.*obj Makefile* *mak
> Makefile:Makefile: $(version-obj-y) $(version-lobj-y)
> Makefile.objs:version-obj-$(CONFIG_WIN32) += $(BUILD_DIR)/version.o
> Makefile.objs:version-lobj-$(CONFIG_WIN32) += $(BUILD_DIR)/version.lo
mdroth@loki:~/w/qemu2.git$ grep version-.*obj Makefile* *mak
Makefile:Makefile: $(version-obj-y) $(version-lobj-y)
Makefile.objs:version-obj-$(CONFIG_WIN32) += $(BUILD_DIR)/version.o
Makefile.objs:version-lobj-$(CONFIG_WIN32) += $(BUILD_DIR)/version.lo
rules.mak: $(sort $(filter %.o, $1)) $(filter-out %.o, $1) $(version-obj-y) \
rules.mak: $(if $(filter %.lo %.la,$^),$(version-lobj-y),$(version-obj-y)) \
>
> Could you please check the values of version-obj-y, version-lobj-y?
> Do you use a special make program? Do you get the same problem when
> running make without -j4 (no parallel build)?
Same issue with non-parallel build, first link target is qemu-img
which fails due to missing version.o
At qemu-img link time, the actual values of version-{lobj,obj}-y are:
version-obj-y: /home/mdroth/dev/kvm/qemu-build2/version.o
version-lobj-y: /home/mdroth/dev/kvm/qemu-build2/version.lo
No special make either:
[mdroth@vm5 qemu-build2]$ make -v
GNU Make 3.82
Built for x86_64-redhat-linux-gnu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[mdroth@vm5 qemu-build2]$
I can get everything to build with the following patch, so I suspect it
has something to do with the the non-relative target paths for
version.o/.lo causing us to no longer matching the $(WINDRES) recipe in
rules.mak in certain environments:
diff --git a/Makefile b/Makefile
index 4d257f1..3e9416f 100644
--- a/Makefile
+++ b/Makefile
@@ -168,6 +168,7 @@ recurse-all: $(SUBDIR_RULES) $(ROMSUBDIR_RULES)
bt-host.o: QEMU_CFLAGS += $(BLUEZ_CFLAGS)
$(BUILD_DIR)/version.o: $(SRC_PATH)/version.rc $(BUILD_DIR)/config-host.h | $(BUILD_DIR)/version.lo
+ $(call quiet-command,$(WINDRES) -I. -o $@ $<," RC $(TARGET_DIR)$@")
$(BUILD_DIR)/version.lo: $(SRC_PATH)/version.rc $(BUILD_DIR)/config-host.h
Makefile: $(version-obj-y) $(version-lobj-y)
>
> My patch was a hack for 1.6, but I did not expect that it might cause
> any problems. A better solution would extend version.rc and compile
> it each time when linking, so version.o can include build information.
>
> Regards,
> Stefan
next prev parent reply other threads:[~2013-08-16 18:27 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-08 18:18 [Qemu-devel] [PATCH v2 for 1.6] w32: Add missing version.o to all executables (fix regression) Stefan Weil
2013-08-14 16:27 ` Anthony Liguori
2013-08-15 22:19 ` Michael Roth
2013-08-16 5:55 ` Stefan Weil
2013-08-16 18:27 ` Michael Roth [this message]
2013-08-16 18:42 ` 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=20130816182732.30766.77528@loki \
--to=mdroth@linux.vnet.ibm.com \
--cc=aliguori@us.ibm.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=sw@weilnetz.de \
/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.