diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2009-12-21 10:06:55 +0100 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2010-01-08 09:58:40 -0600 |
commit | 076d247142c1ff1e4d618557fc0acc62f6eb2a7c (patch) | |
tree | 91ba69a991591e278ba72675b17fd95bbfd091bf | |
parent | e726fe7d60d46636c74c1c4a8fac7e4a05efb163 (diff) |
Use vpath directive
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>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | Makefile.hw | 2 | ||||
-rw-r--r-- | Makefile.target | 11 | ||||
-rw-r--r-- | Makefile.user | 6 | ||||
-rw-r--r-- | pc-bios/optionrom/Makefile | 3 | ||||
-rw-r--r-- | rules.mak | 2 | ||||
-rw-r--r-- | tests/Makefile | 3 |
7 files changed, 16 insertions, 13 deletions
@@ -24,7 +24,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 ff87ae414d..be35359e8c 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 543e8cd28b..c81c8c399a 100644 --- a/Makefile.target +++ b/Makefile.target @@ -11,7 +11,7 @@ include $(HWDIR)/config.mak endif 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 include $(SRC_PATH)/Makefile.objs @@ -91,7 +91,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 @@ -122,7 +123,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 @@ -147,7 +149,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 c6ac50940a..024b7736b9 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 54db882491..b4be31ec8f 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 @@ -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 69092e5481..ff7f787a9a 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 |