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 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.