Commit 9f61b232 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] kbuild: Unmangle include options for gcc

From: Sam Ravnborg <sam@ravnborg.org>

When utilising the make O=...  option the include options for gcc were
mangled even when absolute paths was used.  Also remove duplication of
CPPFLAGS.  They were assigned twice.  [It is still possible for
architectures to modify CPPFLAGS].

This patch allows xconfig to be build with make O=...  xconfig.It will also
help development of external modules with absolute paths for their -I
options.

Note: As a side effect a full recompile of the kernel takes place due to
changes in number of gcc options.
parent 49596747
...@@ -144,8 +144,7 @@ _hostcxx_flags = $(HOSTCXXFLAGS) $(HOST_EXTRACXXFLAGS) $(HOSTCXXFLAGS_$(*F).o) ...@@ -144,8 +144,7 @@ _hostcxx_flags = $(HOSTCXXFLAGS) $(HOST_EXTRACXXFLAGS) $(HOSTCXXFLAGS_$(*F).o)
# If building the kernel in a separate objtree expand all occurrences # If building the kernel in a separate objtree expand all occurrences
# of -Idir to -Idir -I$(srctree)/dir. # of -Idir to -I$(srctree)/dir except for absolute paths (starting with '/').
# hereby allowing gcc to locate files in both trees. Local tree first.
ifeq ($(KBUILD_SRC),) ifeq ($(KBUILD_SRC),)
__c_flags = $(_c_flags) __c_flags = $(_c_flags)
...@@ -153,16 +152,20 @@ __a_flags = $(_a_flags) ...@@ -153,16 +152,20 @@ __a_flags = $(_a_flags)
__hostc_flags = $(_hostc_flags) __hostc_flags = $(_hostc_flags)
__hostcxx_flags = $(_hostcxx_flags) __hostcxx_flags = $(_hostcxx_flags)
else else
flags = $(foreach o,$($(1)),\
$(if $(filter -I%,$(o)),$(patsubst -I%,-I$(srctree)/%,$(o)),$(o))) # Prefix -I with $(srctree) if it is not an absolute path
addtree = $(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1)
# -I$(obj) locate generated .h files # Find all -I options and call addtree
# -I$(srctree)/$(src) locate .h files in srctree, from generated .c files flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o)))
# FIXME: Replace both with specific EXTRA_CFLAGS statements
__c_flags = -I$(obj) -I$(srctree)/$(src) $(call flags,_c_flags) # -I$(obj) locates generated .h files
__a_flags = $(call flags,_a_flags) # $(call addtree,-I$(obj)) locates .h files in srctree, from generated .c files
__hostc_flags = -I$(obj) $(call flags,_hostc_flags) # and locates generated .h files
__hostcxx_flags = $(call flags,_hostcxx_flags) # FIXME: Replace both with specific CFLAGS* statements in the makefiles
__c_flags = $(call addtree,-I$(obj)) $(call flags,_c_flags)
__a_flags = $(call flags,_a_flags)
__hostc_flags = -I$(obj) $(call flags,_hostc_flags)
__hostcxx_flags = -I$(obj) $(call flags,_hostcxx_flags)
endif endif
c_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \ c_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment