[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 for 1.6] w32: Add missing version.o to all ex
From: |
Michael Roth |
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 |
User-agent: |
alot/0.3.4 |
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 <address@hidden>
>
> 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
address@hidden:~/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:
address@hidden 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.
address@hidden 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