On Tue 16 Apr 2024 21:18:38 GMT, Masahiro Yamada wrote: > Kbuild conventionally uses $(obj)/ for generated files, and $(src)/ for > checked-in source files. It is merely a convention without any functional > difference. In fact, $(obj) and $(src) are exactly the same, as defined > in scripts/Makefile.build: > > src := $(obj) > > When the kernel is built in a separate output directory, $(src) does > not match the directory in the source tree. It still works because the > top Makefile sets VPATH to $(srctree). However, VPATH does not cover > all cases. There are many places where the exact path to the source > directory is needed. For example, when adding a header search path for > local headers, it is typical to pass -I$(srctree)/$(src) to the compiler. > > However, it introduces inconsistency between upstream Makefiles and > downstream Makefiles; when the source directory path is needed, > $(srctree)/$(src) is used in the upstream kernel, while $(src) is used > in external modules. > > To resolve the distortion, this commit changes the semantics of $(src) > so that it always points to the directory in the source tree. > > Going forward, the variables used in Makefiles will work as follows: > > $(obj) - directory in the object tree > $(src) - directory in the source tree (changed by this commit!) > $(objtree) - the top of the kernel object tree > $(srctree) - the top of the kernel source tree > > This is a tweewide Makefile conversion for replacing $(srctree)/$(src) > with $(src). tweewide -> treewide [...] > diff --git a/drivers/Makefile b/drivers/Makefile > index 3bf5cab4b451..fe9ceb0d2288 100644 > --- a/drivers/Makefile > +++ b/drivers/Makefile > @@ -6,11 +6,6 @@ > # Rewritten to use lists instead of if-statements. > # > > -# Some driver Makefiles miss $(srctree)/ for include directive. > -ifdef building_out_of_srctree > -MAKEFLAGS += --include-dir=$(srctree) > -endif > - Ah, it's nice to get rid of this. > obj-y += cache/ > obj-y += irqchip/ > obj-y += bus/ [...] > diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib > index 3179747cbd2c..c53d2f168801 100644 > --- a/scripts/Makefile.lib > +++ b/scripts/Makefile.lib > @@ -209,13 +209,13 @@ _c_flags += $(if $(patsubst n%,, \ > -D__KCSAN_INSTRUMENT_BARRIERS__) > endif > > -# $(srctree)/$(src) for including checkin headers from generated source files > -# $(objtree)/$(obj) for including generated headers from checkin source files > +# $(src) for including checkin headers from generated source files > +# $(obj) for including generated headers from checkin source files this is a funny criss-cross of words; but might the following be more accurate? # $(src) for including headers from checked-in source files # $(obj) for including generated headers Anyway, thanks for the patch. I think it is quite a good way forward! Reviewed-by: Nicolas Schier <nicolas@xxxxxxxxx>
Attachment:
signature.asc
Description: PGP signature