Message ID | 20210414192657.17764-1-rdunlap@infradead.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | uml: fix W=1 missing-include-dirs warnings | expand |
On Thu, Apr 15, 2021 at 4:27 AM Randy Dunlap <rdunlap@infradead.org> wrote: > > Currently when using "W=1" with UML builds, there are over 700 warnings > like so: > > CC arch/um/drivers/stderr_console.o > cc1: warning: ./arch/um/include/uapi: No such file or directory [-Wmissing-include-dirs] > > but arch/um/ does not have include/uapi/ at all, so don't > include arch/um/include/uapi/ in USERINCLUDE for UML. > > Signed-off-by: Randy Dunlap <rdunlap@infradead.org> > Cc: Masahiro Yamada <masahiroy@kernel.org> > Cc: Michal Marek <michal.lkml@markovi.net> > Cc: linux-kbuild@vger.kernel.org > Cc: Jeff Dike <jdike@addtoit.com> > Cc: Richard Weinberger <richard@nod.at> > Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com> > Cc: linux-um@lists.infradead.org > --- > Makefile | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > Option 2: change the setting of USERINCLUDE. This could alter > (a) build times and > (b) which header files get used: if there are multiple > header files named foobar.h in the $(USERINCLUDE) > subdirectories, this Option changes the order in which > they would be found. > > - linux-next-20210413.orig/Makefile > + linux-next-20210413/Makefile > @@ -501,13 +501,16 @@ LDFLAGS_vmlinux = > > # Use USERINCLUDE when you must reference the UAPI directories only. > USERINCLUDE := \ > - -I$(srctree)/arch/$(SRCARCH)/include/uapi \ > -I$(objtree)/arch/$(SRCARCH)/include/generated/uapi \ > -I$(srctree)/include/uapi \ > -I$(objtree)/include/generated/uapi \ > -include $(srctree)/include/linux/compiler-version.h \ > -include $(srctree)/include/linux/kconfig.h > > +ifneq ($(ARCH),um) > +USERINCLUDE += -I$(srctree)/arch/$(SRCARCH)/include/uapi > +endif > + > # Use LINUXINCLUDE when you must reference the include/ directory. > # Needed to be compatible with the O= option > LINUXINCLUDE := \ > > Option 3: modify scripts/Makefile.extrawarn not to set > -Wmissing-include-dirs for arch=um. I think that this is not > a good idea: it could cause valid problem reports not to be > reported. > > Option 4: simply mkdir arch/um/include/uapi > That's what I did first, just as a test, and it works. I like Option 4. But, you cannot do "mkdir -p arch/um/include/uapi" at build-time because the build system should not touch the source tree(, which might be read-only) for O= building. How about adding arch/um/include/uapi/asm/Kbuild, which is just having a SPDX one-liner? > > --- linux-next-20210413.orig/Makefile > +++ linux-next-20210413/Makefile > @@ -500,6 +500,15 @@ AFLAGS_KERNEL = > LDFLAGS_vmlinux = > > # Use USERINCLUDE when you must reference the UAPI directories only. > +# Note: arch/um/ does not have an include/uapi/ subdir. > +ifeq ($(ARCH),um) > +USERINCLUDE := \ > + -I$(objtree)/arch/$(SRCARCH)/include/generated/uapi \ > + -I$(srctree)/include/uapi \ > + -I$(objtree)/include/generated/uapi \ > + -include $(srctree)/include/linux/compiler-version.h \ > + -include $(srctree)/include/linux/kconfig.h > +else > USERINCLUDE := \ > -I$(srctree)/arch/$(SRCARCH)/include/uapi \ > -I$(objtree)/arch/$(SRCARCH)/include/generated/uapi \ > @@ -507,6 +516,7 @@ USERINCLUDE := \ > -I$(objtree)/include/generated/uapi \ > -include $(srctree)/include/linux/compiler-version.h \ > -include $(srctree)/include/linux/kconfig.h > +endif > > # Use LINUXINCLUDE when you must reference the include/ directory. > # Needed to be compatible with the O= option
On 4/14/21 11:52 PM, Masahiro Yamada wrote: > On Thu, Apr 15, 2021 at 4:27 AM Randy Dunlap <rdunlap@infradead.org> wrote: >> >> Currently when using "W=1" with UML builds, there are over 700 warnings >> like so: >> >> CC arch/um/drivers/stderr_console.o >> cc1: warning: ./arch/um/include/uapi: No such file or directory [-Wmissing-include-dirs] >> >> but arch/um/ does not have include/uapi/ at all, so don't >> include arch/um/include/uapi/ in USERINCLUDE for UML. >> Option 4: simply mkdir arch/um/include/uapi >> That's what I did first, just as a test, and it works. > > > I like Option 4. > > But, you cannot do "mkdir -p arch/um/include/uapi" at build-time > because the build system should not touch the source tree(, which > might be read-only) > for O= building. > > How about adding > > arch/um/include/uapi/asm/Kbuild, > > which is just having a SPDX one-liner? Wow! :) That's what Al Viro suggested also. I'll submit that patch later today (Thursday my time). thanks.
On Thu, Apr 15, 2021 at 4:02 PM Randy Dunlap <rdunlap@infradead.org> wrote: > > On 4/14/21 11:52 PM, Masahiro Yamada wrote: > > On Thu, Apr 15, 2021 at 4:27 AM Randy Dunlap <rdunlap@infradead.org> wrote: > >> > >> Currently when using "W=1" with UML builds, there are over 700 warnings > >> like so: > >> > >> CC arch/um/drivers/stderr_console.o > >> cc1: warning: ./arch/um/include/uapi: No such file or directory [-Wmissing-include-dirs] > >> > >> but arch/um/ does not have include/uapi/ at all, so don't > >> include arch/um/include/uapi/ in USERINCLUDE for UML. > > > >> Option 4: simply mkdir arch/um/include/uapi > >> That's what I did first, just as a test, and it works. > > > > > > I like Option 4. > > > > But, you cannot do "mkdir -p arch/um/include/uapi" at build-time > > because the build system should not touch the source tree(, which > > might be read-only) > > for O= building. > > > > How about adding > > > > arch/um/include/uapi/asm/Kbuild, > > > > which is just having a SPDX one-liner? > > Wow! :) > That's what Al Viro suggested also. > I'll submit that patch later today (Thursday my time). > > thanks. > -- > ~Randy > BTW, after fixing this UML problem, can we move -Wmissing-include-dirs to the top Makefile? Is there any other source of -Wmissing-include-dirs warnings?
On 4/15/21 12:04 AM, Masahiro Yamada wrote: > On Thu, Apr 15, 2021 at 4:02 PM Randy Dunlap <rdunlap@infradead.org> wrote: >> >> On 4/14/21 11:52 PM, Masahiro Yamada wrote: >>> On Thu, Apr 15, 2021 at 4:27 AM Randy Dunlap <rdunlap@infradead.org> wrote: >>>> >>>> Currently when using "W=1" with UML builds, there are over 700 warnings >>>> like so: >>>> >>>> CC arch/um/drivers/stderr_console.o >>>> cc1: warning: ./arch/um/include/uapi: No such file or directory [-Wmissing-include-dirs] >>>> >>>> but arch/um/ does not have include/uapi/ at all, so don't >>>> include arch/um/include/uapi/ in USERINCLUDE for UML. >> >> >>>> Option 4: simply mkdir arch/um/include/uapi >>>> That's what I did first, just as a test, and it works. >>> >>> >>> I like Option 4. >>> >>> But, you cannot do "mkdir -p arch/um/include/uapi" at build-time >>> because the build system should not touch the source tree(, which >>> might be read-only) >>> for O= building. >>> >>> How about adding >>> >>> arch/um/include/uapi/asm/Kbuild, >>> >>> which is just having a SPDX one-liner? >> >> Wow! :) >> That's what Al Viro suggested also. >> I'll submit that patch later today (Thursday my time). >> >> thanks. >> -- >> ~Randy >> > > > BTW, after fixing this UML problem, > can we move -Wmissing-include-dirs to the top Makefile? I don't see why not. And eventually remove this one: fs/btrfs/Makefile:subdir-ccflags-y += -Wmissing-include-dirs > Is there any other source of -Wmissing-include-dirs > warnings? I can't give a full answer on that; only that I haven't seen any others and also that all other arch/*/include/ do have a uapi/ subdir.
--- linux-next-20210413.orig/Makefile +++ linux-next-20210413/Makefile @@ -500,6 +500,15 @@ AFLAGS_KERNEL = LDFLAGS_vmlinux = # Use USERINCLUDE when you must reference the UAPI directories only. +# Note: arch/um/ does not have an include/uapi/ subdir. +ifeq ($(ARCH),um) +USERINCLUDE := \ + -I$(objtree)/arch/$(SRCARCH)/include/generated/uapi \ + -I$(srctree)/include/uapi \ + -I$(objtree)/include/generated/uapi \ + -include $(srctree)/include/linux/compiler-version.h \ + -include $(srctree)/include/linux/kconfig.h +else USERINCLUDE := \ -I$(srctree)/arch/$(SRCARCH)/include/uapi \ -I$(objtree)/arch/$(SRCARCH)/include/generated/uapi \ @@ -507,6 +516,7 @@ USERINCLUDE := \ -I$(objtree)/include/generated/uapi \ -include $(srctree)/include/linux/compiler-version.h \ -include $(srctree)/include/linux/kconfig.h +endif # Use LINUXINCLUDE when you must reference the include/ directory. # Needed to be compatible with the O= option
Currently when using "W=1" with UML builds, there are over 700 warnings like so: CC arch/um/drivers/stderr_console.o cc1: warning: ./arch/um/include/uapi: No such file or directory [-Wmissing-include-dirs] but arch/um/ does not have include/uapi/ at all, so don't include arch/um/include/uapi/ in USERINCLUDE for UML. Signed-off-by: Randy Dunlap <rdunlap@infradead.org> Cc: Masahiro Yamada <masahiroy@kernel.org> Cc: Michal Marek <michal.lkml@markovi.net> Cc: linux-kbuild@vger.kernel.org Cc: Jeff Dike <jdike@addtoit.com> Cc: Richard Weinberger <richard@nod.at> Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com> Cc: linux-um@lists.infradead.org --- Makefile | 10 ++++++++++ 1 file changed, 10 insertions(+) Option 2: change the setting of USERINCLUDE. This could alter (a) build times and (b) which header files get used: if there are multiple header files named foobar.h in the $(USERINCLUDE) subdirectories, this Option changes the order in which they would be found. - linux-next-20210413.orig/Makefile + linux-next-20210413/Makefile @@ -501,13 +501,16 @@ LDFLAGS_vmlinux = # Use USERINCLUDE when you must reference the UAPI directories only. USERINCLUDE := \ - -I$(srctree)/arch/$(SRCARCH)/include/uapi \ -I$(objtree)/arch/$(SRCARCH)/include/generated/uapi \ -I$(srctree)/include/uapi \ -I$(objtree)/include/generated/uapi \ -include $(srctree)/include/linux/compiler-version.h \ -include $(srctree)/include/linux/kconfig.h +ifneq ($(ARCH),um) +USERINCLUDE += -I$(srctree)/arch/$(SRCARCH)/include/uapi +endif + # Use LINUXINCLUDE when you must reference the include/ directory. # Needed to be compatible with the O= option LINUXINCLUDE := \ Option 3: modify scripts/Makefile.extrawarn not to set -Wmissing-include-dirs for arch=um. I think that this is not a good idea: it could cause valid problem reports not to be reported. Option 4: simply mkdir arch/um/include/uapi That's what I did first, just as a test, and it works.