Kbuild: don't add ../../ to include path
authorArnd Bergmann <arnd@arndb.de>
Wed, 15 Jun 2016 15:45:43 +0000 (17:45 +0200)
committerMichal Marek <mmarek@suse.com>
Mon, 18 Jul 2016 19:31:35 +0000 (21:31 +0200)
commitb999596b963a6635c153e3d2b3d5bb28b5c45027
tree6568c20b6254cd56c86f5b0595693957b8b595c3
parent5ee02af153661ed98b5ccdfb984d78e7a8881b56
Kbuild: don't add ../../ to include path

When we build with O=objdir and objdir is directly below the source tree,
$(srctree) becomes '..'.

When a Makefile adds a CFLAGS option like -Ipath/to/headers and
we are building with a separate object directory, Kbuild tries to
add two -I options, one for the source tree and one for the object
tree. An absolute path is treated as a special case, and don't add
this one twice. This also normally catches -I$(srctree)/$(src)
as $(srctree) usually is an absolute directory like /home/arnd/linux/.

The combination of the two behaviors however results in an invalid
path name to be included: we get both ../$(src) and ../../$(src),
the latter one pointing outside of the source tree, usually to a
nonexisting directory. Building with 'make W=1' makes this obvious:

cc1: error: ../../arch/arm/mach-s3c24xx/include: No such file or directory [-Werror=missing-include-dirs]

This adds another special case, treating path names starting with ../
like those starting with / so we don't try to prefix that with
$(srctree).

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Michal Marek <mmarek@suse.com>
scripts/Kbuild.include