On Tue, Jun 03, 2025 at 03:12:53AM +0900, Masahiro Yamada wrote: > KBUILD_BUILTIN is set to 1 unless you are building only modules. > > KBUILT_MODULES is set to 1 when you are building only modules > (a typical use case is "make modules"). > > It is more useful to set them to 'y' instead, so we can do > something like: > > always-$(KBUILD_BUILTIN) += vmlinux.lds > > This works equivalently to: > > extra-y += vmlinux.lds > > This allows us to deprecate extra-y. extra-y and always-y are quite > similar, and we do not need both. > > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> Reviewed-by: Nathan Chancellor <nathan@xxxxxxxxxx> > --- > > Documentation/kbuild/makefiles.rst | 8 ++++++-- > Makefile | 16 ++++++++-------- > 2 files changed, 14 insertions(+), 10 deletions(-) > > diff --git a/Documentation/kbuild/makefiles.rst b/Documentation/kbuild/makefiles.rst > index 3b9a8bc671e2..264b83182509 100644 > --- a/Documentation/kbuild/makefiles.rst > +++ b/Documentation/kbuild/makefiles.rst > @@ -273,8 +273,8 @@ It is good practice to use a ``CONFIG_`` variable when assigning directory > names. This allows kbuild to totally skip the directory if the > corresponding ``CONFIG_`` option is neither "y" nor "m". > > -Non-builtin vmlinux targets - extra-y > -------------------------------------- > +Non-builtin vmlinux targets - extra-y (DEPRECATED) > +-------------------------------------------------- > > extra-y specifies targets which are needed for building vmlinux, > but not combined into built-in.a. > @@ -291,6 +291,10 @@ Example:: > # arch/x86/kernel/Makefile > extra-y += vmlinux.lds > > +extra-y is now deprecated because this is equivalent to: > + > + always-$(KBUILD_BUILTIN) += vmlinux.lds > + > $(extra-y) should only contain targets needed for vmlinux. > > Kbuild skips extra-y when vmlinux is apparently not a final goal. > diff --git a/Makefile b/Makefile > index 7a52be3a4b80..72e75a0caa32 100644 > --- a/Makefile > +++ b/Makefile > @@ -749,7 +749,7 @@ targets := > # Normally, just do built-in. > > KBUILD_MODULES := > -KBUILD_BUILTIN := 1 > +KBUILD_BUILTIN := y > > # If we have only "make modules", don't compile built-in objects. > ifeq ($(MAKECMDGOALS),modules) > @@ -761,11 +761,11 @@ endif > # Just "make" or "make all" shall build modules as well > > ifneq ($(filter all modules nsdeps compile_commands.json clang-%,$(MAKECMDGOALS)),) > - KBUILD_MODULES := 1 > + KBUILD_MODULES := y > endif > > ifeq ($(MAKECMDGOALS),) > - KBUILD_MODULES := 1 > + KBUILD_MODULES := y > endif > > export KBUILD_MODULES KBUILD_BUILTIN > @@ -1193,7 +1193,7 @@ export KBUILD_LDS := arch/$(SRCARCH)/kernel/vmlinux.lds > ifdef CONFIG_TRIM_UNUSED_KSYMS > # For the kernel to actually contain only the needed exported symbols, > # we have to build modules as well to determine what those symbols are. > -KBUILD_MODULES := 1 > +KBUILD_MODULES := y > endif > > PHONY += vmlinux_a > @@ -1529,7 +1529,7 @@ all: modules > # the built-in objects during the descend as well, in order to > # make sure the checksums are up to date before we record them. > ifdef CONFIG_MODVERSIONS > - KBUILD_BUILTIN := 1 > + KBUILD_BUILTIN := y > endif > > # Build modules > @@ -1538,7 +1538,7 @@ endif > # *.ko are usually independent of vmlinux, but CONFIG_DEBUG_INFO_BTF_MODULES > # is an exception. > ifdef CONFIG_DEBUG_INFO_BTF_MODULES > -KBUILD_BUILTIN := 1 > +KBUILD_BUILTIN := y > modules: vmlinux > endif > > @@ -1855,7 +1855,7 @@ filechk_kernel.release = echo $(KERNELRELEASE) > > # We are always building only modules. > KBUILD_BUILTIN := > -KBUILD_MODULES := 1 > +KBUILD_MODULES := y > > build-dir := . > > @@ -1983,7 +1983,7 @@ endif > > single-goals := $(addprefix $(build-dir)/, $(single-no-ko)) > > -KBUILD_MODULES := 1 > +KBUILD_MODULES := y > > endif > > -- > 2.43.0 >