[PATCH 05/13] kbuild: restrict dtbs target to enabled DTs by default

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux