Commit 604a57ba authored by Rob Herring's avatar Rob Herring Committed by Masahiro Yamada

dt-bindings: kbuild: Add separate target/dependency for processed-schema.json

Running dtbs_check and dt_compatible_check targets really only depend
on processed-schema.json, but the dependency is 'dt_binding_check'. That
was sort worked around with the CHECK_DT_BINDING variable in order to
skip some of the work that 'dt_binding_check' does. It still runs the
full checks of the schemas which is not necessary and adds 10s of
seconds to the build time. That's significant when checking only a few
DTBs and with recent changes that have improved the validation time by
6-7x.

Add a new target, dt_binding_schema, which just builds
processed-schema.json and can be used as the dependency for other
targets. The scripts_dtc dependency isn't needed either as the examples
aren't built for it.
Signed-off-by: default avatarRob Herring <robh@kernel.org>
Tested-by: default avatarConor Dooley <conor.dooley@microchip.com>
Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
parent 6552b72c
...@@ -63,7 +63,7 @@ override DTC_FLAGS := \ ...@@ -63,7 +63,7 @@ override DTC_FLAGS := \
$(obj)/processed-schema.json: $(DT_DOCS) check_dtschema_version FORCE $(obj)/processed-schema.json: $(DT_DOCS) check_dtschema_version FORCE
$(call if_changed,mk_schema) $(call if_changed,mk_schema)
always-$(CHECK_DT_BINDING) += .dt-binding.checked .yamllint.checked targets += .dt-binding.checked .yamllint.checked
$(obj)/.yamllint.checked: $(DT_DOCS) $(src)/.yamllint FORCE $(obj)/.yamllint.checked: $(DT_DOCS) $(src)/.yamllint FORCE
$(if $(DT_SCHEMA_LINT),$(call if_changed,yamllint),) $(if $(DT_SCHEMA_LINT),$(call if_changed,yamllint),)
...@@ -71,8 +71,8 @@ $(obj)/.dt-binding.checked: $(DT_DOCS) FORCE ...@@ -71,8 +71,8 @@ $(obj)/.dt-binding.checked: $(DT_DOCS) FORCE
$(call if_changed,chk_bindings) $(call if_changed,chk_bindings)
always-y += processed-schema.json always-y += processed-schema.json
always-$(CHECK_DT_BINDING) += $(patsubst $(obj)/%,%, $(CHK_DT_EXAMPLES)) targets += $(patsubst $(obj)/%,%, $(CHK_DT_EXAMPLES))
always-$(CHECK_DT_BINDING) += $(patsubst $(obj)/%.dtb,%.dts, $(CHK_DT_EXAMPLES)) targets += $(patsubst $(obj)/%.dtb,%.dts, $(CHK_DT_EXAMPLES))
# Hack: avoid 'Argument list too long' error for 'make clean'. Remove most of # Hack: avoid 'Argument list too long' error for 'make clean'. Remove most of
# build artifacts here before they are processed by scripts/Makefile.clean # build artifacts here before they are processed by scripts/Makefile.clean
...@@ -81,3 +81,6 @@ clean-files = $(shell find $(obj) \( -name '*.example.dts' -o \ ...@@ -81,3 +81,6 @@ clean-files = $(shell find $(obj) \( -name '*.example.dts' -o \
dt_compatible_check: $(obj)/processed-schema.json dt_compatible_check: $(obj)/processed-schema.json
$(Q)$(srctree)/scripts/dtc/dt-extract-compatibles $(srctree) | xargs dt-check-compatible -v -s $< $(Q)$(srctree)/scripts/dtc/dt-extract-compatibles $(srctree) | xargs dt-check-compatible -v -s $<
PHONY += dt_binding_check
dt_binding_check: $(obj)/.dt-binding.checked $(obj)/.yamllint.checked $(CHK_DT_EXAMPLES)
...@@ -1403,7 +1403,7 @@ export CHECK_DTBS=y ...@@ -1403,7 +1403,7 @@ export CHECK_DTBS=y
endif endif
ifneq ($(CHECK_DTBS),) ifneq ($(CHECK_DTBS),)
dtbs_prepare: dt_binding_check dtbs_prepare: dt_binding_schemas
endif endif
dtbs_check: dtbs dtbs_check: dtbs
...@@ -1422,15 +1422,18 @@ scripts_dtc: scripts_basic ...@@ -1422,15 +1422,18 @@ scripts_dtc: scripts_basic
$(Q)$(MAKE) $(build)=scripts/dtc $(Q)$(MAKE) $(build)=scripts/dtc
ifneq ($(filter dt_binding_check, $(MAKECMDGOALS)),) ifneq ($(filter dt_binding_check, $(MAKECMDGOALS)),)
export CHECK_DT_BINDING=y export CHECK_DTBS=y
endif endif
PHONY += dt_binding_check PHONY += dt_binding_check dt_binding_schemas
dt_binding_check: scripts_dtc dt_binding_check: dt_binding_schemas scripts_dtc
$(Q)$(MAKE) $(build)=Documentation/devicetree/bindings $@
dt_binding_schemas:
$(Q)$(MAKE) $(build)=Documentation/devicetree/bindings $(Q)$(MAKE) $(build)=Documentation/devicetree/bindings
PHONY += dt_compatible_check PHONY += dt_compatible_check
dt_compatible_check: dt_binding_check dt_compatible_check: dt_binding_schemas
$(Q)$(MAKE) $(build)=Documentation/devicetree/bindings $@ $(Q)$(MAKE) $(build)=Documentation/devicetree/bindings $@
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
...@@ -1626,10 +1629,11 @@ help: ...@@ -1626,10 +1629,11 @@ help:
@echo '' @echo ''
@$(if $(dtstree), \ @$(if $(dtstree), \
echo 'Devicetree:'; \ echo 'Devicetree:'; \
echo '* dtbs - Build device tree blobs for enabled boards'; \ echo '* dtbs - Build device tree blobs for enabled boards'; \
echo ' dtbs_install - Install dtbs to $(INSTALL_DTBS_PATH)'; \ echo ' dtbs_install - Install dtbs to $(INSTALL_DTBS_PATH)'; \
echo ' dt_binding_check - Validate device tree binding documents'; \ echo ' dt_binding_check - Validate device tree binding documents and examples'; \
echo ' dtbs_check - Validate device tree source files';\ echo ' dt_binding_schema - Build processed device tree binding schemas'; \
echo ' dtbs_check - Validate device tree source files';\
echo '') echo '')
@echo 'Userspace tools targets:' @echo 'Userspace tools targets:'
......
...@@ -410,7 +410,7 @@ $(multi-dtb-y): FORCE ...@@ -410,7 +410,7 @@ $(multi-dtb-y): FORCE
$(call if_changed,fdtoverlay) $(call if_changed,fdtoverlay)
$(call multi_depend, $(multi-dtb-y), .dtb, -dtbs) $(call multi_depend, $(multi-dtb-y), .dtb, -dtbs)
ifneq ($(CHECK_DTBS)$(CHECK_DT_BINDING),) ifneq ($(CHECK_DTBS),)
DT_CHECKER ?= dt-validate DT_CHECKER ?= dt-validate
DT_CHECKER_FLAGS ?= $(if $(DT_SCHEMA_FILES),-l $(DT_SCHEMA_FILES),-m) DT_CHECKER_FLAGS ?= $(if $(DT_SCHEMA_FILES),-l $(DT_SCHEMA_FILES),-m)
DT_BINDING_DIR := Documentation/devicetree/bindings DT_BINDING_DIR := Documentation/devicetree/bindings
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment