]>
Commit | Line | Data |
---|---|---|
1c199f28 LR |
1 | # Select broken dependency issue |
2 | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
3 | # | |
4 | # Test with: | |
5 | # | |
6 | # make KBUILD_KCONFIG=Documentation/kbuild/Kconfig.select-break menuconfig | |
7 | # | |
8 | # kconfig will not complain and enable this layout for configuration. This is | |
9 | # currently a feature of kconfig, given select was designed to be heavy handed. | |
10 | # Kconfig currently does not check the list of symbols listed on a symbol's | |
11 | # "select" list, this is done on purpose to help load a set of known required | |
12 | # symbols. Because of this use of select should be used with caution. An | |
13 | # example of this issue is below. | |
14 | # | |
15 | # The option B and C are clearly contradicting with respect to A. | |
16 | # However, when A is set, C can be set as well because Kconfig does not | |
17 | # visit the dependencies of the select target (in this case B). And since | |
18 | # Kconfig does not visit the dependencies, it breaks the dependencies of B | |
19 | # (!A). | |
20 | ||
21 | mainmenu "Simple example to demo kconfig select broken dependency issue" | |
22 | ||
23 | config A | |
24 | bool "CONFIG A" | |
25 | ||
26 | config B | |
27 | bool "CONFIG B" | |
28 | depends on !A | |
29 | ||
30 | config C | |
31 | bool "CONFIG C" | |
32 | depends on A | |
33 | select B |