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

Vegard Nossum
2008-12-20T22:36:01Z

On Sat, Dec 20, 2008 at 8:25 PM, Sam Ravnborg <sam@ravnborg.org> wrote:
> 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.

Ah, that's true. I'm sorry, I did not read the follow-up patch. Adding
another variant would also not make any difference from just adding
the @ where it is necessary :-)

Vegard

--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036