1 # Cumulative Kconfig recursive issue 2 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 # 4 # Test with: 5 # 6 # make KBUILD_KCONFIG=Documentation/kbuild/Kco 7 # 8 # The recursive limitations with Kconfig has s 9 # kconfig semantics which are documented here. 10 # of the recursive limitation is that drivers 11 # drivers if they share a common core requirem 12 # annotate those requirements, ie, some driver 13 # use "select". For instance it means if a dri 14 # core requirement, and one uses "select" whil 15 # annotate this, all features that driver A se 16 # driver B. 17 # 18 # A perhaps not so obvious implication of this 19 # core requirements are not carefully synced, 20 # they select or depend on end up becoming sha 21 # negated by other drivers. 22 # 23 # The example provided in Documentation/kbuild 24 # describes a simple driver core layout of exa 25 # have. Let's assume we have some CORE functio 26 # series of bells and whistles it desires to i 27 # it only supports bells at this time: CORE_BE 28 # CORE_BELL_A has some advanced feature CORE_B 29 # CORE_BELL_A then CORE_BELL_A ends up becomin 30 # other bells in the system cannot negate. The 31 # due to the disjoint use of semantics on expr 32 # with CORE, one uses "depends on" while the o 33 # more important reason is that kconfig does n 34 # under 'select' for a symbol, when such symbo 35 # as mandatory required symbols. For more deta 36 # of select refer to Documentation/kbuild/Kcon 37 # 38 # To fix this the "depends on CORE" must be ch 39 # "select CORE" must be changed to "depends on 40 # 41 # For an example real world scenario issue ref 42 # "select FW_LOADER" [0], in the end the simpl 43 # problem consisted on matching semantics with 44 # 45 # [0] https://lore.kernel.org/r/1432241149-876 46 47 mainmenu "Simple example to demo cumulative kc 48 49 config CORE 50 tristate 51 52 config CORE_BELL_A 53 tristate 54 depends on CORE 55 56 config CORE_BELL_A_ADVANCED 57 tristate 58 select CORE_BELL_A 59 60 config CORE_BELL_B 61 tristate 62 depends on !CORE_BELL_A 63 select CORE
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.