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.



---

 25-akpm/Makefile             |    4 ----
 25-akpm/scripts/Makefile.lib |   14 +++++++-------
 2 files changed, 7 insertions(+), 11 deletions(-)

diff -puN Makefile~kbuild-unmangle-include-options Makefile
--- 25/Makefile~kbuild-unmangle-include-options	Fri Jan 16 15:46:01 2004
+++ 25-akpm/Makefile	Fri Jan 16 15:46:01 2004
@@ -404,10 +404,6 @@ endif
 
 include $(srctree)/arch/$(ARCH)/Makefile
 
-# Let architecture Makefiles change CPPFLAGS if needed
-CFLAGS := $(CPPFLAGS) $(CFLAGS)
-AFLAGS := $(CPPFLAGS) $(AFLAGS)
-
 core-y		+= kernel/ mm/ fs/ ipc/ security/ crypto/
 
 SUBDIRS		+= $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
diff -puN scripts/Makefile.lib~kbuild-unmangle-include-options scripts/Makefile.lib
--- 25/scripts/Makefile.lib~kbuild-unmangle-include-options	Fri Jan 16 15:46:01 2004
+++ 25-akpm/scripts/Makefile.lib	Fri Jan 16 15:46:01 2004
@@ -144,8 +144,7 @@ _hostcxx_flags = $(HOSTCXXFLAGS) $(HOST_
 
 
 # If building the kernel in a separate objtree expand all occurrences
-# of -Idir to -Idir -I$(srctree)/dir.
-# hereby allowing gcc to locate files in both trees. Local tree first.
+# of -Idir to -I$(srctree)/dir except for absolute paths (starting with '/').
 
 ifeq ($(KBUILD_SRC),)
 __c_flags	= $(_c_flags)
@@ -154,15 +153,16 @@ __hostc_flags	= $(_hostc_flags)
 __hostcxx_flags	= $(_hostcxx_flags)
 else
 flags = $(foreach o,$($(1)),\
-	$(if $(filter -I%,$(o)),$(patsubst -I%,-I$(srctree)/%,$(o)),$(o)))
+		$(if $(filter -I%,$(filter-out -I/%,$(o))), \
+		$(patsubst -I%,-I$(srctree)/%,$(o)),$(o)))
 
-# -I$(obj) locate generated .h files
-# -I$(srctree)/$(src) locate .h files in srctree, from generated .c files
-# FIXME: Replace both with specific EXTRA_CFLAGS statements
+# -I$(obj) locates generated .h files
+# -I$(srctree)/$(src) locates .h files in srctree, from generated .c files
+# FIXME: Replace both with specific EXTRA_CFLAGS statements in the makefiles
 __c_flags	= -I$(obj) -I$(srctree)/$(src) $(call flags,_c_flags)
 __a_flags	=                              $(call flags,_a_flags)
 __hostc_flags	= -I$(obj)                     $(call flags,_hostc_flags)
-__hostcxx_flags	=                              $(call flags,_hostcxx_flags)
+__hostcxx_flags	= -I$(obj)                     $(call flags,_hostcxx_flags)
 endif
 
 c_flags        = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \

_