aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
authorRob Herring (Arm) <robh@kernel.org>2025-12-08 16:43:03 -0600
committerRob Herring (Arm) <robh@kernel.org>2025-12-17 09:16:14 -0600
commit400fbf4b5870f42b651371303730290ca7a8dd78 (patch)
tree5f66278dd87c5f4553cb6e74d0ebd80368b65e77 /Makefile
parent1a0c2bf998bb90e1d7450ad6b3b47f9e428375a7 (diff)
downloadlinux-next-history-400fbf4b5870f42b651371303730290ca7a8dd78.tar.gz
dt-bindings: kbuild: Support single binding targets
Running the full 'make dt_binding_check' is slow. A shortcut is to set DT_SCHEMA_FILES env variable to a substring of DT schema files to test. It both limits which examples are validated and which schemas are used to validate the examples. This is a problem because errors from other schemas are missed. What makes validation slow is checking all examples, so we really just need a way to test a single example. Add a %.yaml target to validate the schema and validate the example: make example-schema.yaml The behavior for 'make dt_binding_check DT_SCHEMA_FILES=example-schema' is unchanged. Really it should mirror dtbs_check and validate all the examples with a subset of schemas, but there are lots of users of expecting the existing behavior. Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Link: https://patch.msgid.link/20251208224304.2907913-1-robh@kernel.org Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile14
1 files changed, 10 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index e404e4767944e..54eb78206d2d9 100644
--- a/Makefile
+++ b/Makefile
@@ -1506,6 +1506,12 @@ ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),)
dtstree := arch/$(SRCARCH)/boot/dts
endif
+dtbindingtree := Documentation/devicetree/bindings
+
+%.yaml: dtbs_prepare
+ $(Q)$(MAKE) $(build)=$(dtbindingtree) \
+ $(dtbindingtree)/$(patsubst %.yaml,%.example.dtb,$@) dt_binding_check_one
+
ifneq ($(dtstree),)
%.dtb: dtbs_prepare
@@ -1523,7 +1529,7 @@ dtbs: dtbs_prepare
# dtbs_install depend on it as dtbs_install may run as root.
dtbs_prepare: include/config/kernel.release scripts_dtc
-ifneq ($(filter dtbs_check, $(MAKECMDGOALS)),)
+ifneq ($(filter dtbs_check %.yaml, $(MAKECMDGOALS)),)
export CHECK_DTBS=y
endif
@@ -1556,14 +1562,14 @@ endif
PHONY += dt_binding_check dt_binding_schemas
dt_binding_check: dt_binding_schemas scripts_dtc
- $(Q)$(MAKE) $(build)=Documentation/devicetree/bindings $@
+ $(Q)$(MAKE) $(build)=$(dtbindingtree) $@
dt_binding_schemas:
- $(Q)$(MAKE) $(build)=Documentation/devicetree/bindings
+ $(Q)$(MAKE) $(build)=$(dtbindingtree)
PHONY += dt_compatible_check
dt_compatible_check: dt_binding_schemas
- $(Q)$(MAKE) $(build)=Documentation/devicetree/bindings $@
+ $(Q)$(MAKE) $(build)=$(dtbindingtree) $@
# ---------------------------------------------------------------------------
# Modules