Re: [PATCH v5 11/12] kbuild: add cmd_and_savecmd macro

From: Nicolas Schier
Date: Fri May 13 2022 - 07:40:37 EST


On Thu, May 12, 2022 at 01:45:13AM +0900, Masahiro Yamada wrote:
> Separate out the command execution part of if_changed, as we did
> for if_changed_dep.
>
> This allows us to reuse it in if_changed_rule.
>
> define rule_foo
> $(call cmd_and_savecmd,foo)
> $(call cmd,bar)
> endef
>
> Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
> Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx>
> ---
>
> (no changes since v4)
>
> Changes in v4:
> - New.
> Resent of my previous submission.
> https://lore.kernel.org/all/20210831074004.3195284-10-masahiroy@xxxxxxxxxx/
>
> scripts/Kbuild.include | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
> index 455a0a6ce12d..ece44b735061 100644
> --- a/scripts/Kbuild.include
> +++ b/scripts/Kbuild.include
> @@ -142,9 +142,11 @@ check-FORCE = $(if $(filter FORCE, $^),,$(warning FORCE prerequisite is missing)
> if-changed-cond = $(newer-prereqs)$(cmd-check)$(check-FORCE)
>
> # Execute command if command has changed or prerequisite(s) are updated.
> -if_changed = $(if $(if-changed-cond), \
> +if_changed = $(if $(if-changed-cond),$(cmd_and_savecmd),@:)
> +
> +cmd_and_savecmd = \
> $(cmd); \
> - printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd, @:)
> + printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd
>
> # Execute the command and also postprocess generated .d dependencies file.
> if_changed_dep = $(if $(if-changed-cond),$(cmd_and_fixdep),@:)
> --
> 2.32.0
>

Reviewed-by: Nicolas Schier <n.schier@xxxxxx>