From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NTHnh-0005pv-Ea for qemu-devel@nongnu.org; Fri, 08 Jan 2010 11:35:01 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NTHnc-0005mY-4u for qemu-devel@nongnu.org; Fri, 08 Jan 2010 11:35:00 -0500 Received: from [199.232.76.173] (port=50115 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NTHnb-0005mS-V4 for qemu-devel@nongnu.org; Fri, 08 Jan 2010 11:34:56 -0500 Received: from mail-gx0-f223.google.com ([209.85.217.223]:43358) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NTHnb-0007jc-KQ for qemu-devel@nongnu.org; Fri, 08 Jan 2010 11:34:55 -0500 Received: by gxk23 with SMTP id 23so22847250gxk.2 for ; Fri, 08 Jan 2010 08:34:55 -0800 (PST) Message-ID: <4B475EAC.7090308@codemonkey.ws> Date: Fri, 08 Jan 2010 10:34:52 -0600 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] Use vpath directive References: <1261386415-32704-1-git-send-email-pbonzini@redhat.com> In-Reply-To: <1261386415-32704-1-git-send-email-pbonzini@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: Andreas Faerber , qemu-devel@nongnu.org, Juan Quintela On 12/21/2009 03:06 AM, Paolo Bonzini wrote: > The vpath directive has two advantages over the VPATH variable: > 1) it allows to skip searching of .o files; 2) the default semantics > are to append to the vpath, so there is no confusion between "VPATH=xyz" > and "VPATH+=xyz". > > Since "vpath %.c %.h PATH" is not valid, I'm introducing a wrapper > macro to append one or more directories to the vpath. > > Signed-off-by: Paolo Bonzini > Applied. Thanks. Regards, Anthony Liguori > --- > This one also fixes the same race (by building cutils.o twice). > However, it is nicer in that it fixes the wrong occurrence of > "vpath %.c %.h PATH" (sorry for missing that on my review of > Kirill's patch). > > Makefile | 2 +- > Makefile.hw | 2 +- > Makefile.target | 11 +++++++---- > Makefile.user | 6 +----- > pc-bios/optionrom/Makefile | 3 ++- > rules.mak | 2 ++ > tests/Makefile | 3 ++- > 7 files changed, 16 insertions(+), 13 deletions(-) > > diff --git a/Makefile b/Makefile > index ec52ee2..645ec82 100644 > --- a/Makefile > +++ b/Makefile > @@ -25,7 +25,7 @@ configure: ; > .PHONY: all clean cscope distclean dvi html info install install-doc \ > recurse-all speed tar tarbin test build-all > > -VPATH=$(SRC_PATH):$(SRC_PATH)/hw > +$(call set-vpath, $(SRC_PATH):$(SRC_PATH)/hw) > > LIBS+=-lz $(LIBS_TOOLS) > > diff --git a/Makefile.hw b/Makefile.hw > index bd252f5..781c006 100644 > --- a/Makefile.hw > +++ b/Makefile.hw > @@ -7,7 +7,7 @@ include $(SRC_PATH)/rules.mak > > .PHONY: all > > -VPATH=$(SRC_PATH):$(SRC_PATH)/hw > +$(call set-vpath, $(SRC_PATH):$(SRC_PATH)/hw) > > QEMU_CFLAGS+=-I.. -I$(SRC_PATH)/fpu > > diff --git a/Makefile.target b/Makefile.target > index 0504d3b..92c2027 100644 > --- a/Makefile.target > +++ b/Makefile.target > @@ -9,7 +9,7 @@ include config-target.mak > include $(SRC_PATH)/rules.mak > > TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH) > -VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw > +$(call set-vpath, $(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw) > QEMU_CFLAGS+= -I.. -I$(TARGET_PATH) -DNEED_CPU_H > > ifdef CONFIG_USER_ONLY > @@ -87,7 +87,8 @@ signal.o: QEMU_CFLAGS += $(HELPER_CFLAGS) > > ifdef CONFIG_LINUX_USER > > -VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) > +$(call set-vpath, $(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)) > + > QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) > obj-y = main.o syscall.o strace.o mmap.o signal.o thunk.o \ > elfload.o linuxload.o uaccess.o gdbstub.o > @@ -115,7 +116,8 @@ endif #CONFIG_LINUX_USER > > ifdef CONFIG_DARWIN_USER > > -VPATH+=:$(SRC_PATH)/darwin-user > +$(call set-vpath, $(SRC_PATH)/darwin-user) > + > QEMU_CFLAGS+=-I$(SRC_PATH)/darwin-user -I$(SRC_PATH)/darwin-user/$(TARGET_ARCH) > > # Leave some space for the regular program loading zone > @@ -137,7 +139,8 @@ endif #CONFIG_DARWIN_USER > > ifdef CONFIG_BSD_USER > > -VPATH+=:$(SRC_PATH)/bsd-user > +$(call set-vpath, $(SRC_PATH)/bsd-user) > + > QEMU_CFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ARCH) > > obj-y = main.o bsdload.o elfload.o mmap.o signal.o strace.o syscall.o \ > diff --git a/Makefile.user b/Makefile.user > index 7daedef..5df114f 100644 > --- a/Makefile.user > +++ b/Makefile.user > @@ -6,11 +6,7 @@ include $(SRC_PATH)/rules.mak > > .PHONY: all > > -# Do not take %.o from $(SRC_PATH), only %.c and %.h > -# All %.o for user targets should be built with -fpie, when > -# configured with --enable-user-pie, so we don't want to > -# take %.o from $(SRC_PATH), since they built without -fpie > -vpath %.c %.h $(SRC_PATH) > +$(call set-vpath, $(SRC_PATH)) > > QEMU_CFLAGS+=-I.. > > diff --git a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile > index 54db882..b4be31e 100644 > --- a/pc-bios/optionrom/Makefile > +++ b/pc-bios/optionrom/Makefile > @@ -5,7 +5,8 @@ all: build-all > include ../../config-host.mak > include $(SRC_PATH)/rules.mak > > -VPATH=$(SRC_PATH)/pc-bios/optionrom > +$(call set-vpath, $(SRC_PATH)/pc-bios/optionrom) > + > .PHONY : all clean build-all > > CFLAGS := -Wall -Wstrict-prototypes -Werror -fomit-frame-pointer -fno-builtin > diff --git a/rules.mak b/rules.mak > index 5d9f684..9cd67f0 100644 > --- a/rules.mak > +++ b/rules.mak > @@ -39,6 +39,8 @@ quiet-command = $(if $(V),$1,$(if $(2),@echo $2&& $1, @$1)) > cc-option = $(if $(shell $(CC) $1 $2 -S -o /dev/null -xc /dev/null \ > >/dev/null 2>&1&& echo OK), $2, $3) > > +set-vpath = $(if $1,$(foreach PATTERN,%.c %.h %.S, $(eval vpath $(PATTERN) $1))) > + > # Generate timestamp files for .h include files > > %.h: %.h-timestamp > diff --git a/tests/Makefile b/tests/Makefile > index 69092e5..ff7f787 100644 > --- a/tests/Makefile > +++ b/tests/Makefile > @@ -1,5 +1,6 @@ > -include ../config-host.mak > -VPATH=$(SRC_PATH)/tests > + > +$(call set-vpath, $(SRC_PATH)/tests) > > CFLAGS=-Wall -O2 -g -fno-strict-aliasing > #CFLAGS+=-msse2 >