Re: [PATCH v4 07/31] kconfig: add built-in function support

Masahiro Yamada
2018-05-21T06:42:41Z

Hi Sam,

2018-05-21 15:16 GMT+09:00 Sam Ravnborg <sam@ravnborg.org>:
> Hi Masahiro
>
>> >> + char *(*func)(int argc, char *argv[], int old_argc, char *old_argv[]);
>> >> +};
>> > If a typedef was provided for the function then ...
>>
>>
>> Yes, I can do this,
>> but I may rather consider to simplify the code.
>
> Simplify is better.
>
>> > Will the following be equal:
>> >
>> > $(foo,abc,$(x),$(y))
>> > $(foo, abc, $(x), $(y))
>> >
>> > make is rather annoying as space is significant, but there seems no good reason
>> > for kconfig to inheritate this.
>> > So unless there are good arguments consider alloing the spaces.
>> > If the current implmentation already supports optional spaces then I just missed
>> > it whie reviewing.
>>
>>
>> I have been thinking of trimming the leading whitespaces.
>> (https://patchwork.kernel.org/patch/10405549/)
>>
>> This is trade-off vs "how to pass spaces as arguments?"
>
> Maybe allow strings to be passed enclosed in ""?
> Then it is simple to add whitespace.
>
> But the use of "" should be optional in all other cases.
> And the "" should be stripped.
>

Hmm, your suggestion is more shell-oriented parsing.

In Make, there is no concept of quoting
because it does not touch single-quote, double-quote, whitespaces etc. at all.

$(info "'@@"'' '" ' "' )

will print the message as they are.

This simplifies both the grammar and the parser implementation.

If we expand the quoting by Kconfig,
we need more careful consideration.

[1] In the following, would "hello world" be expanded by Kconfig or by shell?
$(shell, echo "hello world")

[2] Is a quoted comma delimiter or not?
$(if,",",$(A))

If remember I first examined shell-oriented expansion,
but I stopped.

Probably, I found it was much more complex,
then I chose Make-like simpler one.

--
Best Regards
Masahiro Yamada