Skip to content

Commit

Permalink
Use vpath directive
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>
  • Loading branch information
bonzini authored and Anthony Liguori committed Jan 8, 2010
1 parent e726fe7 commit 076d247
Show file tree
Hide file tree
Showing 7 changed files with 16 additions and 13 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
2 changes: 1 addition & 1 deletion Makefile.hw
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
11 changes: 7 additions & 4 deletions Makefile.target
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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 \
Expand Down
6 changes: 1 addition & 5 deletions Makefile.user
Original file line number Diff line number Diff line change
Expand Up @@ -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..

Expand Down
3 changes: 2 additions & 1 deletion pc-bios/optionrom/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions rules.mak
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion tests/Makefile
Original file line number Diff line number Diff line change
@@ -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
Expand Down

0 comments on commit 076d247

Please sign in to comment.