12 May, 2020

1 commit

  • The code block surrounded by 'if' ... 'endif' is reduced into if_stmt,
    which is accepted in the 'choice' context. Therefore, you can write any
    statements within a choice block by wrapping 'if y' ... 'end'.

    For example, you can create a menu inside a choice, like follows:

    ---------------->8----------------
    choice
    prompt "choice"

    config A
    bool "A"

    config B
    bool "B"

    if y

    menu "strange menu"

    config C
    bool "C"

    endmenu

    endif

    endchoice
    ---------------->8----------------

    I want to change such a weird structure into a syntax error.

    In fact, the USB gadget Kconfig had used nested 'choice' for no good
    reason until commit df8df5e4bc37 ("usb: get rid of 'choice' for
    legacy gadget drivers") killed it.

    I think the 'source' inside 'choice' is on the fence. It is at least
    gramatically sensible as long as the included file contains only
    bool/tristate configs. However, it makes the code unreadable, and people
    tend to forget the fact that the file is included from the choice
    block. Commit 10e5e6c24963 ("usb: gadget: move choice ... endchoice to
    legacy/Kconfig") got rid of the only usecase.

    Going forward, you can only use 'config', 'comment', and 'if' inside
    'choice'. This also recursively applies to 'if' blocks inside 'choice'.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

07 Jan, 2020

3 commits

  • struct property can reference to the symbol that it is associated with
    by prop->menu->sym.

    Fix up the one usage of prop->sym, and remove sym from struct property.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Now that 'prompt' is only reduced from T_WORD_QUOTE without any action,
    use T_WORD_QUOTE directly.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Commit 8636a1f9677d ("treewide: surround Kconfig file paths with double
    quotes") killed use-cases to reduce an unquoted string into the 'prompt'
    symbol.

    Kconfig still allows to use an unquoted string in the context of menu,
    source, or prompt.

    So, you can omit quoting if the prompt is a single word:

    bool foo

    ..., but I do not think this is so useful.

    Let's require quoting:

    bool "foo"

    All the Kconfig files in the kernel are written in this way.

    Remove the T_WORD from the right-hand side of the symbol 'prompt'.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

11 Nov, 2019

1 commit

  • util.c exists both in scripts/kconfig/ and scripts/kconfig/lxdialog.

    Prior to commit 54b8ae66ae1a ("kbuild: change *FLAGS_.o
    to take the path relative to $(obj)"), Kbuild could not pass different
    flags to source files with the same basename. Now that this issue
    was solved, you can split util.c out of parser.y and compile them
    independently of each other.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

13 Feb, 2019

1 commit