• Masahiro Yamada's avatar
    kconfig: doc: document behavior of 'select' and 'imply' followed by 'if' · 45c7f555
    Masahiro Yamada authored
    Documentation/kbuild/kconfig-language.rst explains the behavior of
    'select' as follows:
    
      reverse dependencies can be used to force a lower limit of
      another symbol. The value of the current menu symbol is used as the
      minimal value <symbol> can be set to.
    
    This is not true when the 'select' property is followed by 'if'.
    
    [Test Code]
    
        config MODULES
                def_bool y
                modules
    
        config A
                def_tristate y
                select C if B
    
        config B
                def_tristate m
    
        config C
                tristate
    
    [Result]
    
        CONFIG_MODULES=y
        CONFIG_A=y
        CONFIG_B=m
        CONFIG_C=m
    
    If "the value of A is used as the minimal value C can be set to",
    C must be 'y'.
    
    The actual behavior is "C is selected by (A && B)". The lower limit of
    C is downgraded due to B being 'm'.
    
    This behavior is kind of weird, and this has arisen several times in
    the mailing list.
    
    I do not know whether it is a bug or intended behavior. Anyway, it is
    not feasible to change it now because many Kconfig files are written
    based on this behavior. The same applies to 'imply'.
    
    Document this (but reserve the possibility for a future change).
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: default avatarRandy Dunlap <rdunlap@infradead.org>
    45c7f555
kconfig-language.rst 27.3 KB