The intent for if_changed_rule is to re-run the rule when the command line is changed, but this if_changed_rule does not do anything for it. $(cmd-check) for this rule is always empty because: [1] $(cmd_$@) is empty because .processed-schema.json.cmd does not exist [2] $(cmd_$1) is empty because cmd_chkdt is not defined To address [1], use cmd_and_cmdsave instead of cmd. To address [2], rename rule_chkdt to rule_mk_schema so that the stem parts of cmd_* and rule_* match, like commit 7a0496056064 ("kbuild: fix DT binding schema rule to detect command line changes"). Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> --- Another possibility might be to split out yamllint and chk_bindings as standalone build rules instead of running them as a side-effect of the schema build. (but it it up to Rob's preference) Documentation/devicetree/bindings/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/Makefile b/Documentation/devicetree/bindings/Makefile index 1eaccf135b30..bb40205689ea 100644 --- a/Documentation/devicetree/bindings/Makefile +++ b/Documentation/devicetree/bindings/Makefile @@ -46,10 +46,10 @@ quiet_cmd_mk_schema = SCHEMA $@ $(DT_MK_SCHEMA) -j $(DT_MK_SCHEMA_FLAGS) @$$f > $@ ; \ rm -f $$f -define rule_chkdt +define rule_mk_schema $(if $(DT_SCHEMA_LINT),$(call cmd,yamllint),) $(call cmd,chk_bindings) - $(call cmd,mk_schema) + $(call cmd_and_savecmd,mk_schema) endef DT_DOCS = $(patsubst $(srctree)/%,%,$(shell $(find_all_cmd))) @@ -65,7 +65,7 @@ override DTC_FLAGS := \ override DT_CHECKER_FLAGS ?= $(obj)/processed-schema.json: $(DT_DOCS) $(src)/.yamllint check_dtschema_version FORCE - $(call if_changed_rule,chkdt) + $(call if_changed_rule,mk_schema) always-y += processed-schema.json always-$(CHECK_DT_BINDING) += $(patsubst $(srctree)/$(src)/%.yaml,%.example.dts, $(CHK_DT_DOCS)) -- 2.34.1