From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50452) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VAOkS-0002kH-4i for qemu-devel@nongnu.org; Fri, 16 Aug 2013 14:27:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VAOkN-0006yy-JD for qemu-devel@nongnu.org; Fri, 16 Aug 2013 14:27:44 -0400 Received: from mail-ie0-x22e.google.com ([2607:f8b0:4001:c03::22e]:34778) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VAOkN-0006yg-DZ for qemu-devel@nongnu.org; Fri, 16 Aug 2013 14:27:39 -0400 Received: by mail-ie0-f174.google.com with SMTP id w15so3925120iea.19 for ; Fri, 16 Aug 2013 11:27:38 -0700 (PDT) Sender: fluxion Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Michael Roth In-Reply-To: <520DBEBB.2090809@weilnetz.de> References: <1375985887-3984-1-git-send-email-sw@weilnetz.de> <20130815221902.16563.82927@loki> <520DBEBB.2090809@weilnetz.de> Message-ID: <20130816182732.30766.77528@loki> Date: Fri, 16 Aug 2013 13:27:32 -0500 Subject: Re: [Qemu-devel] [PATCH v2 for 1.6] w32: Add missing version.o to all executables (fix regression) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Weil Cc: Paolo Bonzini , Anthony Liguori , qemu-devel 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 > = > 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 con= firm > and it looks like version.o is never being built, so all targets fail wh= en > 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) +=3D $(BUILD_DIR)/version.o > Makefile.objs:version-lobj-$(CONFIG_WIN32) +=3D $(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) +=3D $(BUILD_DIR)/version.o Makefile.objs:version-lobj-$(CONFIG_WIN32) +=3D $(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-ob= j-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 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 +=3D $(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