Skip to content
This repository was archived by the owner on Nov 8, 2023. It is now read-only.

Commit 45c7f55

Browse files
committed
kconfig: doc: document behavior of 'select' and 'imply' followed by 'if'
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>
1 parent bf83266 commit 45c7f55

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

Documentation/kbuild/kconfig-language.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,12 @@ applicable everywhere (see syntax).
150150
That will limit the usefulness but on the other hand avoid
151151
the illegal configurations all over.
152152

153+
If "select" <symbol> is followed by "if" <expr>, <symbol> will be
154+
selected by the logical AND of the value of the current menu symbol
155+
and <expr>. This means, the lower limit can be downgraded due to the
156+
presence of "if" <expr>. This behavior may seem weird, but we rely on
157+
it. (The future of this behavior is undecided.)
158+
153159
- weak reverse dependencies: "imply" <symbol> ["if" <expr>]
154160

155161
This is similar to "select" as it enforces a lower limit on another
@@ -202,6 +208,10 @@ applicable everywhere (see syntax).
202208
imply BAR
203209
imply BAZ
204210

211+
Note: If "imply" <symbol> is followed by "if" <expr>, the default of <symbol>
212+
will be the logical AND of the value of the current menu symbol and <expr>.
213+
(The future of this behavior is undecided.)
214+
205215
- limiting menu display: "visible if" <expr>
206216

207217
This attribute is only applicable to menu blocks, if the condition is

0 commit comments

Comments
 (0)