On Thu, Nov 20, 2025 at 11:30:33PM -0700, Nathan Chancellor wrote: > On Thu, Nov 20, 2025 at 02:48:13PM -0600, Rob Herring (Arm) wrote: > > It is useful to be able to build all the DTBs for a vendor. One can list > > all the .dts files in a directory and convert those to %.dtb targets, > > but that doesn't work for base+overlay DTB targets. > > > > Adding the dts subdirectory is straight-forward, but building the > > DTBs should only happen for certain targets (dtbs, dtbs_check, %.dtb, > > %.dtbo, and the directory target(s)). > > > > The 'scripts_dtc' rule doesn't really depend on 'dt_binding_schemas', > > but the directory target only depends on 'scripts' which depends on > > 'scripts_dtc'. > > > > Signed-off-by: Rob Herring (Arm) > > --- > > Please ack and I'll take this in the DT tree. > > > > I don't really like looking at MAKECMDGOALS, but that's the only way I > > could come up with that works. Maybe someone knows a better way. > > Yeah, I do worry that just looking for "dtb" in MAKECMDGOALS could > result in some false positives but in the tree now, I only see one .c > file that would trigger this logic, so maybe it is not that big of a > deal? > > $ fd dtb > arch/microblaze/boot/dts/linked_dtb.S > arch/mips/include/asm/mach-loongson64/builtin_dtbs.h > arch/um/kernel/dtb.c > drivers/gpu/drm/ci/dtbs-check.sh > scripts/Makefile.dtbinst > scripts/Makefile.dtbs > > Unfortunately, my Make-fu is pretty weak right now so I do not have any > immediate suggestions but Nicolas might... otherwise, we could probably > ride this for right now and either revert it or forward fix it if > problems come up in further testing, since this does seem rather useful > for folks working on device tree files. well, evaluating MAKECMDGOALS does not look that bad to me. But I'd rather like to reduce the use of findstring, see below. > > > v2: > > - Convert arm, mips and riscv. The other DT enabled arches don't have > > vendor directories. > > - Link to v1: https://lore.kernel.org/all/20251113225952.867138-1-robh@kernel.org/ > > > > --- > > Makefile | 2 +- > > arch/arm/Kbuild | 2 ++ > > arch/arm64/Kbuild | 2 ++ > > arch/mips/Kbuild | 2 ++ > > arch/riscv/Kbuild | 2 ++ > > scripts/Makefile.dtbs | 3 +++ > > 6 files changed, 12 insertions(+), 1 deletion(-) > > > > diff --git a/Makefile b/Makefile > > index 17cfa11ca716..85018d461575 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -1494,7 +1494,7 @@ export CHECK_DTBS=y > > endif > > > > ifneq ($(CHECK_DTBS),) > > -dtbs_prepare: dt_binding_schemas > > +scripts_dtc: dt_binding_schemas > > endif > > > > dtbs_check: dtbs > > diff --git a/arch/arm/Kbuild b/arch/arm/Kbuild > > index 69de6b6243c7..af7dd53585c3 100644 > > --- a/arch/arm/Kbuild > > +++ b/arch/arm/Kbuild > > @@ -10,5 +10,7 @@ obj-y += probes/ > > obj-y += net/ > > obj-y += crypto/ > > > > +subdir-y += boot/dts > > + > > # for cleaning > > subdir- += boot > > diff --git a/arch/arm64/Kbuild b/arch/arm64/Kbuild > > index 5bfbf7d79c99..9e9820af48c9 100644 > > --- a/arch/arm64/Kbuild > > +++ b/arch/arm64/Kbuild > > @@ -5,5 +5,7 @@ obj-$(CONFIG_XEN) += xen/ > > obj-$(subst m,y,$(CONFIG_HYPERV)) += hyperv/ > > obj-$(CONFIG_CRYPTO) += crypto/ > > > > +subdir-y += boot/dts > > + > > # for cleaning > > subdir- += boot > > diff --git a/arch/mips/Kbuild b/arch/mips/Kbuild > > index e901bf554483..6125d00cdcef 100644 > > --- a/arch/mips/Kbuild > > +++ b/arch/mips/Kbuild > > @@ -21,5 +21,7 @@ ifdef CONFIG_KVM > > obj-y += kvm/ > > endif > > > > +subdir-y += boot/dts > > + > > # for cleaning > > subdir- += boot > > diff --git a/arch/riscv/Kbuild b/arch/riscv/Kbuild > > index 126fb738fc44..3cf7f84eb287 100644 > > --- a/arch/riscv/Kbuild > > +++ b/arch/riscv/Kbuild > > @@ -7,5 +7,7 @@ obj-$(CONFIG_KVM) += kvm/ > > > > obj-$(CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY) += purgatory/ > > > > +subdir-y += boot/dts > > + > > # for cleaning > > subdir- += boot > > diff --git a/scripts/Makefile.dtbs b/scripts/Makefile.dtbs > > index 2d321b813600..4d0d164df275 100644 > > --- a/scripts/Makefile.dtbs > > +++ b/scripts/Makefile.dtbs > > @@ -14,7 +14,10 @@ dtb-y := $(addprefix $(obj)/, $(dtb-y)) > > multi-dtb-y := $(addprefix $(obj)/, $(multi-dtb-y)) > > real-dtb-y := $(addprefix $(obj)/, $(real-dtb-y)) > > > > +ifneq ($(findstring /dts/,$(MAKECMDGOALS))$(findstring dtb,$(MAKECMDGOALS)),) Using '$(filter )' instead of '$(findstring )' reduces the risk of false positives, e.g.: dtb-targets := %/dts %.dtb %.dtbo dtbs dtbs_check ifneq ($(findstring /dts/,$(MAKECMDGOALS))$(filter $(dtb-targets),$(MAKECMDGOALS)),) With (something like) that: Tested-by: Nicolas Schier Acked-by: Nicolas Schier But [1] seems to break this patch. [1]: https://lore.kernel.org/linux-kbuild/20251120140645.478623-1-thomas.de_schampheleire@nokia.com Kind regards, Nicolas