~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/kbuild/Kconfig.recursion-issue-02

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/kbuild/Kconfig.recursion-issue-02 (Version linux-6.12-rc7) and /Documentation/kbuild/Kconfig.recursion-issue-02 (Version linux-2.6.32.71)


  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                               
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php