Message ID | 1478403928-20799-1-git-send-email-yamada.masahiro@socionext.com |
---|---|
State | New |
Headers | show |
On Sun, 2016-11-06 at 12:45 +0900, Masahiro Yamada wrote: > The header facilities_src.h is only included from gen_facilities.c > and the tool is compiled with the following extra options: > > HOSTCFLAGS_gen_facilities.o += -Wall $(LINUXINCLUDE) > > Please note $(LINUXINCLUDE) is expanded into build options including: > > -include $(srctree)/include/linux/kconfig.h > > So, the Makefile always forces the tool to include kconfig.h, i.e., > the #include <linux/kconfig.h> directive in the header is redundant. As far as I can see the only kernel header that gen_facilities.c is actually interested in is autoconf.h. (autoconf.h will be included via in kconfig.h.) So it seems the odd $(LINUXINCLUDE) variable in that Makefile could be replaced with something like: -include $(srctree)/include/generated/autoconf.h Paul Bolle
Hi Paul, 2016-11-07 21:52 GMT+09:00 Paul Bolle <pebolle@tiscali.nl>: > On Sun, 2016-11-06 at 12:45 +0900, Masahiro Yamada wrote: >> The header facilities_src.h is only included from gen_facilities.c >> and the tool is compiled with the following extra options: >> >> HOSTCFLAGS_gen_facilities.o += -Wall $(LINUXINCLUDE) >> >> Please note $(LINUXINCLUDE) is expanded into build options including: >> >> -include $(srctree)/include/linux/kconfig.h >> >> So, the Makefile always forces the tool to include kconfig.h, i.e., >> the #include <linux/kconfig.h> directive in the header is redundant. > > As far as I can see the only kernel header that gen_facilities.c is actually > interested in is autoconf.h. (autoconf.h will be included via in kconfig.h.) > So it seems the odd $(LINUXINCLUDE) variable in that Makefile could be > replaced with something like: > -include $(srctree)/include/generated/autoconf.h This would break O= build because autoconf.h is a generated file. Rather, it should be -include $(objtree)/include/generated/autoconf.h I thought of this at first, but I was not quite sure if the file path include/generated/autoconf.h is a guaranteed interface. Basically, now we are supposed to include autoconf.h via kconfig.h. So, I thought $(LINUXINCLUDE) is a more stable interface than specifying the exact path to autoconf.h I doubt that nobody would try to change it, but it is just two my cents. Anyway, arch/x86/boot/Makefile already referenced the path to autoconf.h So, if you want to change it, I will not oppose to it. -- Best Regards Masahiro Yamada
Hi Mashiro, On Tue, 2016-11-08 at 10:50 +0900, Masahiro Yamada wrote: > 2016-11-07 21:52 GMT+09:00 Paul Bolle <pebolle@tiscali.nl>: > > So it seems the odd $(LINUXINCLUDE) variable in that Makefile could be > > replaced with something like: > > -include $(srctree)/include/generated/autoconf.h > > This would break O= build because autoconf.h is a generated file. > > Rather, it should be > -include $(objtree)/include/generated/autoconf.h Three cheers for weasel words like "something like"! > I thought of this at first, but I was not quite sure > if the file path include/generated/autoconf.h is a guaranteed interface. > > Basically, now we are supposed to include autoconf.h via kconfig.h. Yes, that seems to go back to commit 2a11c8ea20bf ("kconfig: Introduce IS_ENABLED(), IS_BUILTIN() and IS_MODULE()"). And when the current approach to the IS_*() macros was introduced - with that breathtaking hack that introduced __is_defined() - this was no longer needed but was not changed again. > So, I thought $(LINUXINCLUDE) is a more stable interface > than specifying the exact path to autoconf.h > > I doubt that nobody would try to change it, but it is just two my cents. A bit of cruft accumulated around LINUXINCLUDE: a few dubious uses of it (and I think this is one of those); typos (ie, LINUX_INCLUDE); the pointless USERINCLUDE; things like that. It would be nice to remove that cruft. But it needs to be done carefully. > Anyway, arch/x86/boot/Makefile already > referenced the path to autoconf.h > > So, if you want to change it, I will not oppose to it. Paul Bolle
diff --git a/arch/s390/include/asm/facilities_src.h b/arch/s390/include/asm/facilities_src.h index 3b758f6..8b1a692 100644 --- a/arch/s390/include/asm/facilities_src.h +++ b/arch/s390/include/asm/facilities_src.h @@ -6,8 +6,6 @@ #error "This file can only be included by gen_facilities.c" #endif -#include <linux/kconfig.h> - struct facility_def { char *name; int *bits;
The header facilities_src.h is only included from gen_facilities.c and the tool is compiled with the following extra options: HOSTCFLAGS_gen_facilities.o += -Wall $(LINUXINCLUDE) Please note $(LINUXINCLUDE) is expanded into build options including: -include $(srctree)/include/linux/kconfig.h So, the Makefile always forces the tool to include kconfig.h, i.e., the #include <linux/kconfig.h> directive in the header is redundant. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> --- arch/s390/include/asm/facilities_src.h | 2 -- 1 file changed, 2 deletions(-) -- 1.9.1