Re: [PATCH 04/26] kbuild: introduce $(kecho) convenience echo

Sam Ravnborg
2008-12-20T19:24:12Z

On Sat, Dec 20, 2008 at 04:13:36PM +0100, Vegard Nossum wrote:
> Hi,
>
> On Sat, Dec 20, 2008 at 3:31 PM, Sam Ravnborg <sam@ravnborg.org> wrote:
> > From: Mike Frysinger <vapier@gentoo.org>
> >
> > There is a bunch of places in the build system where we do 'echo' to show
> > some nice status lines. This means we still get output when running in
> > silent mode. So declare a new KECHO variable that only does 'echo' when we
> > are in a suitable verbose build mode.
> >
> > Signed-off-by: Mike Frysinger <vapier@gentoo.org>
> > [sam: added Documentation]
> > Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
> > ---
> > Documentation/kbuild/makefiles.txt | 14 ++++++++++++++
> > scripts/Kbuild.include | 7 +++++++
> > 2 files changed, 21 insertions(+), 0 deletions(-)
> >
> > diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
> > index 7a77533..51104f9 100644
> > --- a/Documentation/kbuild/makefiles.txt
> > +++ b/Documentation/kbuild/makefiles.txt
> > @@ -383,6 +383,20 @@ more details, with real examples.
> > to prerequisites are referenced with $(src) (because they are not
> > generated files).
> >
> > + $(kecho)
> > + echoing information to user in a rule is often a good practice
> > + but when execution "make -s" one does not expect to see any output
> > + except for warnings/errors.
> > + To support this kbuild define $(kecho) which will echo out the
> > + text following $(kecho) to stdout except if "make -s" is used.
> > +
> > + Example:
> > + #arch/blackfin/boot/Makefile
> > + $(obj)/vmImage: $(obj)/vmlinux.gz
> > + $(call if_changed,uimage)
> > + @$(kecho) 'Kernel: $@ is ready'
> > +
> > +
> > --- 3.11 $(CC) support functions
> >
> > The kernel may be built with several different versions of
> > diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
> > index 936940b..8cf87e8 100644
> > --- a/scripts/Kbuild.include
> > +++ b/scripts/Kbuild.include
> > @@ -25,6 +25,13 @@ basetarget = $(basename $(notdir $@))
> > escsq = $(subst $(squote),'\$(squote)',$1)
> >
> > ###
> > +# Easy method for doing a status message
> > + kecho := :
> > + quiet_kecho := echo
> > +silent_kecho := :
> > +kecho := $($(quiet)kecho)
>
> Hm, why don't we put
>
> +kecho := @$($(quiet)kecho)
>
> instead, so each caller can omit the @? And the example would then be:
>
> > + $(obj)/vmImage: $(obj)/vmlinux.gz
> > + $(call if_changed,uimage)
> > + $(kecho) 'Kernel: $@ is ready'
>
> It seems to work correctly over here.

kecho is used in scripts too where the '@' does not fly.
I considered adding another variant for scripts but that was too much
compared to the few users.

Sam