From: Anthony Liguori <anthony@codemonkey.ws>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Andreas Faerber <andreas.faerber@web.de>,
qemu-devel@nongnu.org, Juan Quintela <quintela@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] Use vpath directive
Date: Fri, 08 Jan 2010 10:34:52 -0600 [thread overview]
Message-ID: <4B475EAC.7090308@codemonkey.ws> (raw)
In-Reply-To: <1261386415-32704-1-git-send-email-pbonzini@redhat.com>
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<pbonzini@redhat.com>
>
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
>
prev parent reply other threads:[~2010-01-08 16:35 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-18 10:40 [Qemu-devel] [PATCH] fix tool/libuser makefile race Paolo Bonzini
2009-12-18 16:16 ` [Qemu-devel] " Juan Quintela
2009-12-18 16:22 ` Paolo Bonzini
2009-12-18 18:59 ` Andreas Färber
2009-12-20 18:22 ` Paolo Bonzini
2009-12-20 18:30 ` Andreas Färber
2009-12-20 18:38 ` Paolo Bonzini
2009-12-20 18:57 ` Andreas Färber
2009-12-21 9:06 ` [Qemu-devel] [PATCH] Use vpath directive Paolo Bonzini
2010-01-08 16:34 ` Anthony Liguori [this message]
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=4B475EAC.7090308@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=andreas.faerber@web.de \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).