Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752981AbdFTJiR (ORCPT ); Tue, 20 Jun 2017 05:38:17 -0400 Received: from conssluserg-02.nifty.com ([210.131.2.81]:26402 "EHLO conssluserg-02.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752918AbdFTJiK (ORCPT ); Tue, 20 Jun 2017 05:38:10 -0400 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-02.nifty.com v5K9bvFI015321 X-Nifty-SrcIP: [209.85.161.179] MIME-Version: 1.0 In-Reply-To: <20170619183757.124992-2-mka@chromium.org> References: <20170619183757.124992-1-mka@chromium.org> <20170619183757.124992-2-mka@chromium.org> From: Masahiro Yamada Date: Tue, 20 Jun 2017 18:37:56 +0900 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v4 1/3] kbuild: Add __cc-option macro To: Matthias Kaehlcke Cc: Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , "H . J . Lu" , David Woodhouse , Michal Marek , X86 ML , Linux Kbuild mailing list , Linux Kernel Mailing List , Michael Davidson , Greg Hackmann , Nick Desaulniers , Stephen Hines , Kees Cook , Arnd Bergmann , =?UTF-8?Q?Bernhard_Rosenkr=C3=A4nzer?= , Peter Foley , Behan Webster , Douglas Anderson Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3298 Lines: 86 Hi Matthias, 2017-06-20 3:37 GMT+09:00 Matthias Kaehlcke : > cc-option uses KBUILD_CFLAGS and KBUILD_CPPFLAGS when it determines > whether an option is supported or not. This is fine for options used to > build the kernel itself, however some components like the x86 boot code > use a different set of flags. > > Add the new macro __cc-option which is a more generic version of > cc-option with additional parameters. One parameter is the compiler > with which the check should be performed, the other the compiler options > to be used instead KBUILD_C*FLAGS. > > Refactor cc-option and hostcc-option to use __cc-option and move > hostcc-option to scripts/Kbuild.include. > > Suggested-by: Arnd Bergmann > Suggested-by: Masahiro Yamada > Signed-off-by: Matthias Kaehlcke > Acked-by: Masahiro Yamada > --- > Changes in v4: > - Remove extra space before alternative option in cc-option and > hostcc-option > > Makefile | 2 +- > scripts/Kbuild.include | 14 ++++++++++++-- > scripts/Makefile.host | 6 ------ > 3 files changed, 13 insertions(+), 9 deletions(-) > > diff --git a/Makefile b/Makefile > index 83f6d9972cab..b234bba6d652 100644 > --- a/Makefile > +++ b/Makefile > @@ -303,7 +303,7 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ > > HOSTCC = gcc > HOSTCXX = g++ > -HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89 > +HOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89 > HOSTCXXFLAGS = -O2 > > ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1) > diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include > index 61f87a99bf0a..81a58d1f53af 100644 > --- a/scripts/Kbuild.include > +++ b/scripts/Kbuild.include > @@ -108,6 +108,11 @@ as-option = $(call try-run,\ > as-instr = $(call try-run,\ > printf "%b\n" "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" -,$(2),$(3)) > > +# __cc-option > +# Usage: MY_CFLAGS += $(call __cc-option,$(CC),$(MY_CFLAGS),-march=winchip-c6,-march=i586) > +__cc-option = $(call try-run,\ > + $(1) -Werror $(2) $(3) -c -x c /dev/null -o "$$TMP",$(3),$(4)) > + > # Do not attempt to build with gcc plugins during cc-option tests. > # (And this uses delayed resolution so the flags will be up to date.) > CC_OPTION_CFLAGS = $(filter-out $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS)) > @@ -115,8 +120,13 @@ CC_OPTION_CFLAGS = $(filter-out $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS)) > # cc-option > # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586) > > -cc-option = $(call try-run,\ > - $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2)) > +cc-option = $(call __cc-option, $(CC), $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS),\ > + $(1),$(2)) I think this will introduce an extra tab for the true case. Could you wrap the line after $(CC),? cc-option = $(call __cc-option, $(CC),\ $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS),$(1),$(2)) I would not have requested v5 only for this, but it looks like you have a chance for re-spin to improve 3/3. -- Best Regards Masahiro Yamada