45c7f555bf
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: Masahiro Yamada <masahiroy@kernel.org> Reviewed-by: Randy Dunlap <rdunlap@infradead.org> |
||
---|---|---|
.. | ||
Kconfig.recursion-issue-01 | ||
Kconfig.recursion-issue-02 | ||
Kconfig.select-break | ||
gcc-plugins.rst | ||
headers_install.rst | ||
index.rst | ||
issues.rst | ||
kbuild.rst | ||
kconfig-language.rst | ||
kconfig-macro-language.rst | ||
kconfig.rst | ||
llvm.rst | ||
makefiles.rst | ||
modules.rst | ||
reproducible-builds.rst |