All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Michal Marek <mmarek@suse.com>
Cc: linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org,
	dri-devel@lists.freedesktop.org, Arnd Bergmann <arnd@arndb.de>
Subject: [PATCH v2 01/11] Kbuild: don't add ../../ to include path
Date: Wed, 15 Jun 2016 17:45:43 +0200	[thread overview]
Message-ID: <20160615154553.3177021-2-arnd@arndb.de> (raw)
In-Reply-To: <20160615154553.3177021-1-arnd@arndb.de>

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>
---
 scripts/Kbuild.include | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index 0f82314621f2..f8b45eb47ed3 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -202,7 +202,7 @@ hdr-inst := -f $(srctree)/scripts/Makefile.headersinst obj
 # Prefix -I with $(srctree) if it is not an absolute path.
 # skip if -I has no parameter
 addtree = $(if $(patsubst -I%,%,$(1)), \
-$(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1))
+$(if $(filter-out -I/% -I../%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1))
 
 # Find all -I options and call addtree
 flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o)))
-- 
2.9.0

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: Michal Marek <mmarek@suse.com>
Cc: Arnd Bergmann <arnd@arndb.de>,
	linux-kbuild@vger.kernel.org, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 01/11] Kbuild: don't add ../../ to include path
Date: Wed, 15 Jun 2016 17:45:43 +0200	[thread overview]
Message-ID: <20160615154553.3177021-2-arnd@arndb.de> (raw)
In-Reply-To: <20160615154553.3177021-1-arnd@arndb.de>

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>
---
 scripts/Kbuild.include | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index 0f82314621f2..f8b45eb47ed3 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -202,7 +202,7 @@ hdr-inst := -f $(srctree)/scripts/Makefile.headersinst obj
 # Prefix -I with $(srctree) if it is not an absolute path.
 # skip if -I has no parameter
 addtree = $(if $(patsubst -I%,%,$(1)), \
-$(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1))
+$(if $(filter-out -I/% -I../%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1))
 
 # Find all -I options and call addtree
 flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o)))
-- 
2.9.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 01/11] Kbuild: don't add ../../ to include path
Date: Wed, 15 Jun 2016 17:45:43 +0200	[thread overview]
Message-ID: <20160615154553.3177021-2-arnd@arndb.de> (raw)
In-Reply-To: <20160615154553.3177021-1-arnd@arndb.de>

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>
---
 scripts/Kbuild.include | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index 0f82314621f2..f8b45eb47ed3 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -202,7 +202,7 @@ hdr-inst := -f $(srctree)/scripts/Makefile.headersinst obj
 # Prefix -I with $(srctree) if it is not an absolute path.
 # skip if -I has no parameter
 addtree = $(if $(patsubst -I%,%,$(1)), \
-$(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1))
+$(if $(filter-out -I/% -I../%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1))
 
 # Find all -I options and call addtree
 flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o)))
-- 
2.9.0

  reply	other threads:[~2016-06-15 15:46 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-15 15:45 [PATCH v2 00/11] Kbuild: fix -Wmissing-include-path warnings Arnd Bergmann
2016-06-15 15:45 ` Arnd Bergmann
2016-06-15 15:45 ` Arnd Bergmann
2016-06-15 15:45 ` Arnd Bergmann [this message]
2016-06-15 15:45   ` [PATCH v2 01/11] Kbuild: don't add ../../ to include path Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45 ` [PATCH v2 02/11] Kbuild: avoid duplicate " Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45 ` [PATCH v2 03/11] Kbuild: always prefix objtree in LINUXINCLUDE Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45 ` [PATCH v2 04/11] Kbuild: arch: look for generated headers in obtree Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45 ` [PATCH v2 05/11] Kbuild: don't add obj tree in additional includes Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-07-18 20:14   ` Michal Marek
2016-07-18 20:14     ` Michal Marek
2016-07-19  8:31     ` Arnd Bergmann
2016-07-19  8:31       ` Arnd Bergmann
2016-07-19  8:31       ` Arnd Bergmann
2016-07-19 14:33       ` Kalle Valo
2016-07-19 14:33         ` Kalle Valo
2016-07-19 15:38         ` Arnd Bergmann
2016-07-19 15:38           ` Arnd Bergmann
2016-07-19 15:38           ` Arnd Bergmann
2016-07-19 18:07           ` Kalle Valo
2016-07-19 18:07             ` Kalle Valo
2016-06-15 15:45 ` [PATCH v2 06/11] ARM: don't include removed directories Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45 ` [PATCH v2 07/11] ARM: hide mach-*/ include for ARM_SINGLE_ARMV7M Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45 ` [PATCH v2 08/11] drm: amd: remove broken include path Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45 ` [PATCH v2 09/11] net: skfb: remove obsolete -I cflag Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-16  5:06   ` David Miller
2016-06-16  5:06     ` David Miller
2016-06-15 15:45 ` [PATCH v2 10/11] rtlwifi: don't add include path for rtl8188ee Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann
2016-06-15 15:45 ` [PATCH v2 11/11] [EXPERIMENTAL] Kbuild: enable -Wmissing-include-dirs by default Arnd Bergmann
2016-06-15 15:45   ` Arnd Bergmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160615154553.3177021-2-arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mmarek@suse.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.