[2/3] Kbuild: don't add obj tree in additional includes
diff mbox

Message ID 1465852786-3559357-2-git-send-email-arnd@arndb.de
State New
Headers show

Commit Message

Arnd Bergmann June 13, 2016, 9:19 p.m. UTC
When building with separate object directories and driver specific
Makefiles that add additional header include paths, Kbuild adjusts
the gcc flags so that we include both the directory in the source
tree and in the object tree.

However, due to another bug I fixed earlier, this did not actually
include the correct directory in the object tree, so we know that
we only really need the source tree here. Also, including the
object tree sometimes causes warnings about nonexisting directories
when the include path only exists in the source.

This changes the logic to only emit the -I argument for the srctree,
not for objects. We still need both $(srctree)/$(src) and $(obj)
though, so I'm adding them manually.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 scripts/Kbuild.include | 2 +-
 scripts/Makefile.lib   | 7 ++++---
 2 files changed, 5 insertions(+), 4 deletions(-)

Comments

kernel test robot June 13, 2016, 9:38 p.m. UTC | #1
Hi,

[auto build test ERROR on kbuild/for-next]
[also build test ERROR on v4.7-rc3 next-20160609]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Arnd-Bergmann/Kbuild-don-t-add-to-include-path/20160614-052242
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git for-next
config: i386-tinyconfig (attached as .config)
compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

>> arch/x86/realmode/rm/realmode.lds.S:75:20: fatal error: pasyms.h: No such file or directory
    #include "pasyms.h"
                       ^
   compilation terminated.

vim +75 arch/x86/realmode/rm/realmode.lds.S

b3266bd6 Jarkko Sakkinen 2012-05-08  59  	.bss : {
b3266bd6 Jarkko Sakkinen 2012-05-08  60  		*(.bss*)
b3266bd6 Jarkko Sakkinen 2012-05-08  61  	}
b3266bd6 Jarkko Sakkinen 2012-05-08  62  
b3266bd6 Jarkko Sakkinen 2012-05-08  63  	/* End signature for integrity checking */
b3266bd6 Jarkko Sakkinen 2012-05-08  64  	. = ALIGN(4);
b3266bd6 Jarkko Sakkinen 2012-05-08  65  	.signature : {
b3266bd6 Jarkko Sakkinen 2012-05-08  66  		*(.signature)
b3266bd6 Jarkko Sakkinen 2012-05-08  67  	}
b3266bd6 Jarkko Sakkinen 2012-05-08  68  
b3266bd6 Jarkko Sakkinen 2012-05-08  69  	/DISCARD/ : {
b3266bd6 Jarkko Sakkinen 2012-05-08  70  		*(.note*)
b3266bd6 Jarkko Sakkinen 2012-05-08  71  		*(.debug*)
b3266bd6 Jarkko Sakkinen 2012-05-08  72  		*(.eh_frame*)
b3266bd6 Jarkko Sakkinen 2012-05-08  73  	}
b3266bd6 Jarkko Sakkinen 2012-05-08  74  
b3266bd6 Jarkko Sakkinen 2012-05-08 @75  #include "pasyms.h"
b3266bd6 Jarkko Sakkinen 2012-05-08  76  }

:::::: The code at line 75 was first introduced by commit
:::::: b3266bd6ff52efb9e57c7fbfff4c8f7363dfaab3 x86, realmode: realmode.bin infrastructure

:::::: TO: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
:::::: CC: H. Peter Anvin <hpa@linux.intel.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
kernel test robot June 13, 2016, 10:42 p.m. UTC | #2
Hi,

[auto build test ERROR on kbuild/for-next]
[also build test ERROR on v4.7-rc3 next-20160609]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Arnd-Bergmann/Kbuild-don-t-add-to-include-path/20160614-052242
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git for-next
config: um-i386_defconfig (attached as .config)
compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430
reproduce:
        # save the attached .config to linux build tree
        make ARCH=um SUBARCH=i386

All errors (new ones prefixed by >>):

   kernel/time/Kconfig:155:warning: range is invalid
   In file included from arch/x86/include/asm/seccomp.h:4:0,
                    from include/linux/seccomp.h:11,
                    from include/linux/sched.h:43,
                    from arch/x86/um/shared/sysdep/kernel-offsets.h:2,
                    from arch/um/kernel/asm-offsets.c:1:
>> arch/x86/include/asm/unistd.h:15:29: fatal error: asm/unistd_32.h: No such file or directory
    #  include <asm/unistd_32.h>
                                ^
   compilation terminated.
   make[2]: *** [arch/um/kernel/asm-offsets.s] Error 1
   make[2]: Target '__build' not remade because of errors.
   make[1]: *** [prepare0] Error 2
   make[1]: Target 'prepare' not remade because of errors.
   make: *** [sub-make] Error 2

vim +15 arch/x86/include/asm/unistd.h

303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11   1  #ifndef _ASM_X86_UNISTD_H
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11   2  #define _ASM_X86_UNISTD_H 1
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11   3  
af170c50 arch/x86/include/asm/unistd.h David Howells  2012-12-14   4  #include <uapi/asm/unistd.h>
6cbb369f arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-14   5  
fca460f9 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-19   6  
fca460f9 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-19   7  # ifdef CONFIG_X86_X32_ABI
fca460f9 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-19   8  #  define __SYSCALL_MASK (~(__X32_SYSCALL_BIT))
fca460f9 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-19   9  # else
fca460f9 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-19  10  #  define __SYSCALL_MASK (~0)
fca460f9 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-19  11  # endif
fca460f9 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-19  12  
b11caa7c include/asm-x86/unistd.h      Adrian Bunk    2008-04-20  13  # ifdef CONFIG_X86_32
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  14  
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11 @15  #  include <asm/unistd_32.h>
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  16  #  define __ARCH_WANT_STAT64
4f2f81a5 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-01-19  17  #  define __ARCH_WANT_SYS_IPC
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  18  #  define __ARCH_WANT_SYS_OLD_MMAP
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  19  #  define __ARCH_WANT_SYS_OLD_SELECT
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  20  
b11caa7c include/asm-x86/unistd.h      Adrian Bunk    2008-04-20  21  # else
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  22  
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  23  #  include <asm/unistd_64.h>

:::::: The code at line 15 was first introduced by commit
:::::: 303395ac3bf3e2cb488435537d416bc840438fcb x86: Generate system call tables and unistd_*.h from tables

:::::: TO: H. Peter Anvin <hpa@linux.intel.com>
:::::: CC: H. Peter Anvin <hpa@linux.intel.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
kernel test robot June 13, 2016, 10:51 p.m. UTC | #3
Hi,

[auto build test ERROR on kbuild/for-next]
[also build test ERROR on v4.7-rc3 next-20160609]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Arnd-Bergmann/Kbuild-don-t-add-to-include-path/20160614-052242
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git for-next
config: um-x86_64_defconfig (attached as .config)
compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430
reproduce:
        # save the attached .config to linux build tree
        make ARCH=um SUBARCH=x86_64

All errors (new ones prefixed by >>):

   kernel/time/Kconfig:155:warning: range is invalid
   In file included from arch/x86/include/asm/seccomp.h:4:0,
                    from include/linux/seccomp.h:11,
                    from include/linux/sched.h:43,
                    from arch/x86/um/shared/sysdep/kernel-offsets.h:2,
                    from arch/um/kernel/asm-offsets.c:1:
>> arch/x86/include/asm/unistd.h:23:29: fatal error: asm/unistd_64.h: No such file or directory
    #  include <asm/unistd_64.h>
                                ^
   compilation terminated.
   make[2]: *** [arch/um/kernel/asm-offsets.s] Error 1
   make[2]: Target '__build' not remade because of errors.
   make[1]: *** [prepare0] Error 2
   make[1]: Target 'prepare' not remade because of errors.
   make: *** [sub-make] Error 2

vim +23 arch/x86/include/asm/unistd.h

fca460f9 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-19   7  # ifdef CONFIG_X86_X32_ABI
fca460f9 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-19   8  #  define __SYSCALL_MASK (~(__X32_SYSCALL_BIT))
fca460f9 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-19   9  # else
fca460f9 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-19  10  #  define __SYSCALL_MASK (~0)
fca460f9 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-19  11  # endif
fca460f9 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-19  12  
b11caa7c include/asm-x86/unistd.h      Adrian Bunk    2008-04-20  13  # ifdef CONFIG_X86_32
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  14  
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  15  #  include <asm/unistd_32.h>
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  16  #  define __ARCH_WANT_STAT64
4f2f81a5 arch/x86/include/asm/unistd.h H. Peter Anvin 2012-01-19  17  #  define __ARCH_WANT_SYS_IPC
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  18  #  define __ARCH_WANT_SYS_OLD_MMAP
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  19  #  define __ARCH_WANT_SYS_OLD_SELECT
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  20  
b11caa7c include/asm-x86/unistd.h      Adrian Bunk    2008-04-20  21  # else
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  22  
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11 @23  #  include <asm/unistd_64.h>
ea499fec arch/x86/include/asm/unistd.h H. Peter Anvin 2012-02-14  24  #  include <asm/unistd_64_x32.h>
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  25  #  define __ARCH_WANT_COMPAT_SYS_TIME
0473c9b5 arch/x86/include/asm/unistd.h Heiko Carstens 2014-03-03  26  #  define __ARCH_WANT_COMPAT_SYS_GETDENTS64
378a10f3 arch/x86/include/asm/unistd.h Heiko Carstens 2014-03-05  27  #  define __ARCH_WANT_COMPAT_SYS_PREADV64
378a10f3 arch/x86/include/asm/unistd.h Heiko Carstens 2014-03-05  28  #  define __ARCH_WANT_COMPAT_SYS_PWRITEV64
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  29  
b11caa7c include/asm-x86/unistd.h      Adrian Bunk    2008-04-20  30  # endif
303395ac arch/x86/include/asm/unistd.h H. Peter Anvin 2011-11-11  31  

:::::: The code at line 23 was first introduced by commit
:::::: 303395ac3bf3e2cb488435537d416bc840438fcb x86: Generate system call tables and unistd_*.h from tables

:::::: TO: H. Peter Anvin <hpa@linux.intel.com>
:::::: CC: H. Peter Anvin <hpa@linux.intel.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
Arnd Bergmann June 15, 2016, 3:42 p.m. UTC | #4
On Tuesday, June 14, 2016 6:42:16 AM CEST kbuild test robot wrote:
>    kernel/time/Kconfig:155:warning: range is invalid
>    In file included from arch/x86/include/asm/seccomp.h:4:0,
>                     from include/linux/seccomp.h:11,
>                     from include/linux/sched.h:43,
>                     from arch/x86/um/shared/sysdep/kernel-offsets.h:2,
>                     from arch/um/kernel/asm-offsets.c:1:
> >> arch/x86/include/asm/unistd.h:15:29: fatal error: asm/unistd_32.h: No such file or directory
>     #  include <asm/unistd_32.h>

Clearly this version was no good, I'm following up with a (longer) replacement,
let's see how that works out.

	Arnd
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch
diff mbox

diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index f8b45eb47ed3..f8f95e32a746 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/% -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)))
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 76494e15417b..0a07f9014944 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -155,9 +155,10 @@  else
 # $(call addtree,-I$(obj)) locates .h files in srctree, from generated .c files
 #   and locates generated .h files
 # 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)
-__cpp_flags     =                          $(call flags,_cpp_flags)
+__c_flags	= $(if $(obj),-I$(srctree)/$(src) -I$(obj)) \
+		  $(call flags,_c_flags)
+__a_flags	= $(call flags,_a_flags)
+__cpp_flags     = $(call flags,_cpp_flags)
 endif
 
 c_flags        = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(LINUXINCLUDE)     \