[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 1/8] make: move top level dir to end of include s
From: |
Daniel P. Berrange |
Subject: |
[Qemu-devel] [PATCH v3 1/8] make: move top level dir to end of include search path |
Date: |
Tue, 24 Jan 2017 11:01:44 +0000 |
Currently the search path is
1. source dir corresponding to input file (implicit by compiler)
2. top level build dir
3. top level source dir
4. top level source include/ dir
5. source dir corresponding to input file
6. build dir corresponding to output file
This causes a semantic difference in behaviour for builds
where srcdir == builddir vs srcdir != builddir, because
item 5 moves from end to start, when srcdir == builddir.
As a general rule we also want to move to have all shared
headers in the include/ dir, so move that ahead of the
top level dirs in the search order.
Thus we now have:
1. source dir corresponding to input file
2. build dir corresponding to output file
3. top level build dir
4. top level source dir
5. top level source include/ dir
and items 1+2 and 4+5 collapse into a single dir when srcdir==builddir
so overall order remains the same.
Signed-off-by: Daniel P. Berrange <address@hidden>
---
rules.mak | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/rules.mak b/rules.mak
index d5c516c..e09aabe 100644
--- a/rules.mak
+++ b/rules.mak
@@ -26,8 +26,10 @@ QEMU_CXXFLAGS = -D__STDC_LIMIT_MACROS $(filter-out
-Wstrict-prototypes -Wmissing
# Flags for dependency generation
QEMU_DGFLAGS += -MMD -MP -MT $@ -MF $(@D)/$(*F).d
-# Same as -I$(SRC_PATH) -I., but for the nested source/object directories
-QEMU_INCLUDES += -I$(<D) -I$(@D)
+# Compiler searches the source file dir first, but in vpath builds
+# we need to make it search the build dir too, before any other
+# explicit search paths.
+QEMU_LOCAL_INCLUDES = -I$(BUILD_DIR)/$(@D)
WL_U := -Wl,-u,
find-symbols = $(if $1, $(sort $(shell $(NM) -P -g $1 | $2)))
@@ -61,7 +63,7 @@ expand-objs = $(strip $(sort $(filter %.o,$1)) \
$(filter-out %.o %.mo,$1))
%.o: %.c
- $(call quiet-command,$(CC) $(QEMU_INCLUDES) $(QEMU_CFLAGS)
$(QEMU_DGFLAGS) $(CFLAGS) $(address@hidden) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
+ $(call quiet-command,$(CC) $(QEMU_LOCAL_INCLUDES) $(QEMU_INCLUDES)
$(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) $(address@hidden) -c -o $@
$<,"CC","$(TARGET_DIR)$@")
%.o: %.rc
$(call quiet-command,$(WINDRES) -I. -o $@ $<,"RC","$(TARGET_DIR)$@")
@@ -74,16 +76,16 @@ LINK = $(call quiet-command, $(LINKPROG) $(QEMU_CFLAGS)
$(CFLAGS) $(LDFLAGS) -o
$(version-obj-y) $(call extract-libs,$1)
$(LIBS),"LINK","$(TARGET_DIR)$@")
%.o: %.S
- $(call quiet-command,$(CCAS) $(QEMU_INCLUDES) $(QEMU_CFLAGS)
$(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<,"CCAS","$(TARGET_DIR)$@")
+ $(call quiet-command,$(CCAS) $(QEMU_LOCAL_INCLUDES) $(QEMU_INCLUDES)
$(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<,"CCAS","$(TARGET_DIR)$@")
%.o: %.cc
- $(call quiet-command,$(CXX) $(QEMU_INCLUDES) $(QEMU_CXXFLAGS)
$(QEMU_DGFLAGS) $(CFLAGS) $(address@hidden) -c -o $@ $<,"CXX","$(TARGET_DIR)$@")
+ $(call quiet-command,$(CXX) $(QEMU_LOCAL_INCLUDES) $(QEMU_INCLUDES)
$(QEMU_CXXFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) $(address@hidden) -c -o $@
$<,"CXX","$(TARGET_DIR)$@")
%.o: %.cpp
- $(call quiet-command,$(CXX) $(QEMU_INCLUDES) $(QEMU_CXXFLAGS)
$(QEMU_DGFLAGS) $(CFLAGS) $(address@hidden) -c -o $@ $<,"CXX","$(TARGET_DIR)$@")
+ $(call quiet-command,$(CXX) $(QEMU_LOCAL_INCLUDES) $(QEMU_INCLUDES)
$(QEMU_CXXFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) $(address@hidden) -c -o $@
$<,"CXX","$(TARGET_DIR)$@")
%.o: %.m
- $(call quiet-command,$(OBJCC) $(QEMU_INCLUDES) $(QEMU_CFLAGS)
$(QEMU_DGFLAGS) $(CFLAGS) $(address@hidden) -c -o $@
$<,"OBJC","$(TARGET_DIR)$@")
+ $(call quiet-command,$(OBJCC) $(QEMU_LOCAL_INCLUDES) $(QEMU_INCLUDES)
$(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) $(address@hidden) -c -o $@
$<,"OBJC","$(TARGET_DIR)$@")
%.o: %.dtrace
$(call quiet-command,dtrace -o $@ -G -s $<,"GEN","$(TARGET_DIR)$@")
@@ -359,6 +361,7 @@ define unnest-vars
$(eval $(o:%.mo=%$(DSOSUF)): module-common.o $($o-objs)),
$(error $o added in $v but $o-objs is not set)))
$(shell mkdir -p ./ $(sort $(dir $($v))))
+ $(shell cd $(BUILD_DIR) && mkdir -p ./ $(sort $(dir $($v))))
# Include all the .d files
$(eval -include $(patsubst %.o,%.d,$(patsubst %.mo,%.d,$($v))))
$(eval $v := $(filter-out %/,$($v))))
--
2.9.3
- [Qemu-devel] [PATCH v3 0/8] Switch all subdirs over to modular trace.h file, Daniel P. Berrange, 2017/01/24
- [Qemu-devel] [PATCH v3 4/8] trace: move hw/i386/xen events to correct subdir, Daniel P. Berrange, 2017/01/24
- [Qemu-devel] [PATCH v3 3/8] trace: move hw/xen events to correct subdir, Daniel P. Berrange, 2017/01/24
- [Qemu-devel] [PATCH v3 1/8] make: move top level dir to end of include search path,
Daniel P. Berrange <=
- [Qemu-devel] [PATCH v3 2/8] trace: move hw/block/dataplane events to correct subdir, Daniel P. Berrange, 2017/01/24
- [Qemu-devel] [PATCH v3 8/8] trace: improve error reporting when parsing simpletrace header, Daniel P. Berrange, 2017/01/24
- [Qemu-devel] [PATCH v3 7/8] trace: update docs to reflect new code generation approach, Daniel P. Berrange, 2017/01/24
- [Qemu-devel] [PATCH v3 5/8] trace: move setting of group name into Makefiles, Daniel P. Berrange, 2017/01/24