From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: MIME-Version: 1.0 In-Reply-To: <1518106752-29228-1-git-send-email-yamada.masahiro@socionext.com> References: <1518106752-29228-1-git-send-email-yamada.masahiro@socionext.com> From: Linus Torvalds Date: Thu, 8 Feb 2018 09:19:34 -0800 Message-ID: Subject: Re: [RFC PATCH 0/7] Kconfig: add new special property shell= to test compiler options in Kconfig Content-Type: text/plain; charset="UTF-8" Sender: linux-kbuild-owner@vger.kernel.org List-Archive: List-Post: To: Masahiro Yamada Cc: Linux Kbuild mailing list , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Nicolas Pitre , "Luis R . Rodriguez" , Randy Dunlap , Ulf Magnusson , Sam Ravnborg , Michal Marek , Martin Schwidefsky , Pavel Machek , linux-s390 , Jiri Kosina , Linux Kernel Mailing List List-ID: On Thu, Feb 8, 2018 at 8:19 AM, Masahiro Yamada wrote: > This was prompted by the email from Linus today's morning. Thanks. > I implmented this in a rush today, so there are still many TODOs, > but I put it here to start discussion. > > I think it is working, but as you notice, it is tedious to repeat something > like follows: > > config CC_HAS_STACKPROTECTOR > bool > option shell="$CC -Werror -fstack-protector -c -x c /dev/null" Yeah. I do think we want to have the "shell" thing as a generic escape for other things too, but *realistically*, the primary target for this is compiler flags, and I think we should target that specifically with a shorthand. Doing some statistics, and looking for flag = $(call xyz ...) patterns in our makefiles (ignoring single uses), it really is cc-option that dominates: 2 name-fix 2 try-run 3 __cc-option 3 grep-libs 3 strip-libs 4 flags 4 get-executable 4 ld-option 4 logo-cfiles 5 as-option 5 cc-cross-prefix 6 cc-ldoption 6 cc-supports 7 cc-option-yn 7 tune 9 cc-ifversion 30 as-instr 48 cc-disable-warning 239 cc-option so I think that's the one that we want to special-case. If we then have a _usable_ - but perhaps not wonderful "shell" escape to do any random thing (including scripts etc), that will take care of the rest, but cc-option is so common that I think it's worth making a special Kconfig syntax for them. For all I know, the others aren't even worth Kconfig options at all. > I was thinking of something like follows: > > config CC_STACKPROTECTOR > bool > option shell="$(CC_OPTION -fstack-protector)" I think we should go even further, and just make it be config CC_STACKPROTECTOR bool option cc_option="-fstack-protector" and actually have the Kconfig language itself have this special-cased. And obviously that "option cc_option" would be *implemented* as just "option shell", with just some stupid string substitution. So it really would be purely a shorthand for readability. What do you think? And btw, the patches look nice. What I like in particular is that they don't even seem to add a lot of lines: the new shell option code is almost balanced out by the Kconfig script simplifications. And maybe it's just that I read C a lot better than I read GNU Makefile magic, but I think it's more understandable too. Linus