[v4,3/3] kbuild: respect GNU Make -w flag

Message ID 20230626233014.66549-3-masahiroy@kernel.org
State New
Headers
Series [v4,1/3] kbuild: set correct abs_srctree and abs_objtree for package builds |

Commit Message

Masahiro Yamada June 26, 2023, 11:30 p.m. UTC
  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 ..." when Kbuild
changes the working directory at the start of building. (default)

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Tested-by: Nicolas Schier <n.schier@avm.de>
---

(no changes since v2)

Changes in v2:
  - new patch

 Makefile | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)
  

Comments

Masahiro Yamada June 28, 2023, 7:09 a.m. UTC | #1
On Tue, Jun 27, 2023 at 8:30 AM Masahiro Yamada <masahiroy@kernel.org> 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 ..." when Kbuild
> changes the working directory at the start of building. (default)
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> Tested-by: Nicolas Schier <n.schier@avm.de>
> ---


As it turns out, this patch does not work for GNU Make <= 4.3

I will drop (and give up) this patch.






>
> (no changes since v2)
>
> Changes in v2:
>   - new patch
>
>  Makefile | 16 ++++++++++------
>  1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 7edb00603b7e..c9864f83a3d2 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
> +
>  this-makefile := $(lastword $(MAKEFILE_LIST))
>  export abs_srctree := $(realpath $(dir $(this-makefile)))
>  export abs_objtree := $(CURDIR)
> @@ -95,12 +101,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 :=
> @@ -215,12 +215,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 recursing into __sub-make twice. This is needed due to the
>  # behavior change in GNU Make 4.4.1.
>  need-sub-make := 1
>  endif
> +else
> +no-print-directory :=
> +endif
>
>  ifeq ($(need-sub-make),1)
>
> --
> 2.39.2
>
  
Nicolas Schier June 28, 2023, 2:20 p.m. UTC | #2
On Wed, Jun 28, 2023 at 04:09:44PM +0900, Masahiro Yamada wrote:
> On Tue, Jun 27, 2023 at 8:30 AM Masahiro Yamada <masahiroy@kernel.org> 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 ..." when Kbuild
> > changes the working directory at the start of building. (default)
> >
> > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> > Tested-by: Nicolas Schier <n.schier@avm.de>
> > ---
> 
> 
> As it turns out, this patch does not work for GNU Make <= 4.3

Ups, I'm sorry.  I was pretty sure I tested it with make-4.3, but
obviously not...

Kind regards,
Nicolas



> I will drop (and give up) this patch.
> 
> 
> 
> 
> 
> 
> >
> > (no changes since v2)
> >
> > Changes in v2:
> >   - new patch
> >
> >  Makefile | 16 ++++++++++------
> >  1 file changed, 10 insertions(+), 6 deletions(-)
> >
> > diff --git a/Makefile b/Makefile
> > index 7edb00603b7e..c9864f83a3d2 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
> > +
> >  this-makefile := $(lastword $(MAKEFILE_LIST))
> >  export abs_srctree := $(realpath $(dir $(this-makefile)))
> >  export abs_objtree := $(CURDIR)
> > @@ -95,12 +101,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 :=
> > @@ -215,12 +215,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 recursing into __sub-make twice. This is needed due to the
> >  # behavior change in GNU Make 4.4.1.
> >  need-sub-make := 1
> >  endif
> > +else
> > +no-print-directory :=
> > +endif
> >
> >  ifeq ($(need-sub-make),1)
> >
> > --
> > 2.39.2
> >
> 
> 
> -- 
> Best Regards
> Masahiro Yamada
  

Patch

diff --git a/Makefile b/Makefile
index 7edb00603b7e..c9864f83a3d2 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
+
 this-makefile := $(lastword $(MAKEFILE_LIST))
 export abs_srctree := $(realpath $(dir $(this-makefile)))
 export abs_objtree := $(CURDIR)
@@ -95,12 +101,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 :=
@@ -215,12 +215,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 recursing into __sub-make twice. This is needed due to the
 # behavior change in GNU Make 4.4.1.
 need-sub-make := 1
 endif
+else
+no-print-directory :=
+endif
 
 ifeq ($(need-sub-make),1)