Our existing dtbs target is fairly primitive and builds just all device trees in the architecture folder without regard to whether they are even wired in the Makefile or not. Now that we have a list of all device trees in the form of dtbs-list, let's rework the dtbs target to make use of it. The old behavior of building all device trees can still be achieved by enabling CONFIG_OF_ALL_DTBS. In order to have dtbs-list updated always, it's also added to the dependencies of the images target. That way, a FIT image target that will be added in a later commit can reliably depend on that file to be available. Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- Makefile | 22 +++++++++++++++++----- drivers/of/Kconfig | 11 +++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 82f90373cbbd..75e994e5ac1a 100644 --- a/Makefile +++ b/Makefile @@ -1114,10 +1114,22 @@ endif ifneq ($(dtstree),) -PHONY += dtbs -all_dtbs += $(patsubst $(srctree)/%.dts,$(objtree)/%.dtb,$(wildcard $(srctree)/$(dtstree)/*.dts)) -targets += $(all_dtbs) -dtbs: $(all_dtbs) +%.dtb: dtbs_prepare + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ + +%.dtbo: dtbs_prepare + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ + +PHONY += dtbs dtbs_prepare +dtbs: dtbs_prepare + $(Q)$(MAKE) $(build)=$(dtstree) need-dtbslist=1 + +dtbs_prepare: include/config/kernel.release scripts_dtc + +ifdef CONFIG_OFDEVICE +images: dtbs +images/%: dtbs +endif endif @@ -1322,7 +1334,7 @@ help: @echo '' @$(if $(dtstree), \ echo ' Devicetree:'; \ - echo ' * dtbs - Build device tree blobs for all boards'; \ + echo ' * dtbs - Build device tree blobs for enabled boards'; \ echo '') @$(if $(boards), \ $(foreach b, $(boards), \ diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig index 6c9aedf355b4..ebc8842f5e38 100644 --- a/drivers/of/Kconfig +++ b/drivers/of/Kconfig @@ -3,6 +3,17 @@ config OFTREE select DTC bool +config OF_ALL_DTBS + bool "Build all Device Tree Blobs" + depends on OFTREE && COMPILE_TEST + select DTC + help + This option builds all possible Device Tree Blobs (DTBs) for the + current architecture. + + If unsure, say N here, but this option is safe to enable. + + config OFTREE_MEM_GENERIC depends on OFTREE depends on PPC || ARM || EFI_PAYLOAD || OPENRISC || SANDBOX || RISCV || KVX -- 2.39.5