Re: [PATCH] kbuild: honor '-s' option for tools/*

From: Josh Poimboeuf
Date: Mon Oct 10 2016 - 15:51:18 EST


On Mon, Oct 10, 2016 at 02:36:37PM +0200, Arnd Bergmann wrote:
> When building with 'make -s' on x86, we always see the output for descending into
> the tools/objtool directory when CONFIG_STACK_VALIDATION is set, but we should not
> see any output. There are three related problems causing this:
>
> * we override the MAKEFLAGS variable when entering tools, keeping only
> the -j and --j% options around when we should also propagate the -s
> flag (for some make versions) as well as the 's' character in the first
> word of the variable.
>
> * The build system in tools/build/Makefile.build that is used for some
> parts of the build process of objtool implements the same
> logic as the normal kbuild, using 'quiet_$(cmd)' to indicate the
> string that should be printed, but lacks the logic to skip that
> when building with 'make -s'.
>
> * The /other/ build system in tools/scripts/Makefile.include that is also
> used for building objtool checks for the 's' flag in the beginning of
> the first word of Makeflags, which works for GNU make 3.x, but not for
> GNU make 4.x, which has it in the end of that word.
>
> This changes all three of the above to behave just like Kbuild does,
> and print no output with 'make -s' regardless of the version of that
> tool, but otherwise behaves as before. In case of
> tools/scripts/Makefile.include, I decided to use an identical
> conditional block to set the $(quiet) variable for consistency,
> even though it is not used in the same way.
>
> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
> ---
> Makefile | 5 +++--
> tools/build/Makefile.build | 10 ++++++++++
> tools/scripts/Makefile.include | 12 +++++++++++-
> 3 files changed, 24 insertions(+), 3 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index d5289117360b..3638bb27ba2c 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1612,11 +1612,12 @@ image_name:
> # Clear a bunch of variables before executing the submake
> tools/: FORCE
> $(Q)mkdir -p $(objtree)/tools
> - $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/
> + echo MAKEFLAGS=\""$(MAKEFLAGS)"\"

I think this echo wasn't meant to be left in?

Otherwise it seems to work for me.


--
Josh