Re: [PATCH v2 2/2] kbuild: respect GNU Make -w flag

From: Nicolas Schier
Date: Mon Jun 19 2023 - 08:52:18 EST


On Fri, Jun 16, 2023 at 11:57:51PM +0900, Masahiro Yamada wrote:
> Currently, -w (--print-directory) option is ignored, but it is better
> to respect the user's choice.
>
> This commit changes the behavior of "Entering directory ..." logging.
>
> If -w (or --print-directory) is given via the command line or the
> MAKEFLAGS environment variable, print "Entering directory ..." for every
> sub make.
>
> If --no-print-directory is given via the command line or the MAKEFLAGS
> environment variable, suppress "Entering directory ..." completely.
>
> If none of them is given, print "Entering directory ..." only when Kbuild
> changes the working directory. (default)
>
> Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
> ---

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

>
> Changes in v2:
> - new patch
>
> Makefile | 16 ++++++++++------
> 1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 916c1a7984b0..3867cdc3de5d 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -38,6 +38,12 @@ __all:
> # descending is started. They are now explicitly listed as the
> # prepare rule.
>
> +ifeq ($(filter 3.%,$(MAKE_VERSION)),)
> +short-opts := $(firstword -$(MAKEFLAGS))
> +else
> +short-opts := $(filter-out --%,$(MAKEFLAGS))
> +endif
> +
> ifneq ($(sub_make_done),1)
>
> # Do not use make's built-in rules and variables
> @@ -91,12 +97,6 @@ endif
> # commands
> # make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS.
>
> -ifeq ($(filter 3.%,$(MAKE_VERSION)),)
> -short-opts := $(firstword -$(MAKEFLAGS))
> -else
> -short-opts := $(filter-out --%,$(MAKEFLAGS))
> -endif
> -
> ifneq ($(findstring s,$(short-opts)),)
> quiet=silent_
> override KBUILD_VERBOSE :=
> @@ -217,12 +217,16 @@ else
> need-sub-make := 1
> endif
>
> +ifeq ($(findstring w, $(short-opts)),)
> ifeq ($(filter --no-print-directory, $(MAKEFLAGS)),)
> # If --no-print-directory is unset, recurse once again to set it.
> # You may end up with recursing into __sub-make twice. This is due to the
> # behavior change for GNU Make 4.4.1.
> need-sub-make := 1
> endif
> +else
> +no-print-directory :=
> +endif
>
> ifeq ($(need-sub-make),1)
>
> --
> 2.39.2
>