34 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # Select broken dependency issue
 | |
| # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | |
| #
 | |
| # Test with:
 | |
| #
 | |
| # make KBUILD_KCONFIG=Documentation/kbuild/Kconfig.select-break menuconfig
 | |
| #
 | |
| # kconfig will not complain and enable this layout for configuration. This is
 | |
| # currently a feature of kconfig, given select was designed to be heavy handed.
 | |
| # Kconfig currently does not check the list of symbols listed on a symbol's
 | |
| # "select" list, this is done on purpose to help load a set of known required
 | |
| # symbols. Because of this use of select should be used with caution. An
 | |
| # example of this issue is below.
 | |
| #
 | |
| # The option B and C are clearly contradicting with respect to A.
 | |
| # However, when A is set, C can be set as well because Kconfig does not
 | |
| # visit the dependencies of the select target (in this case B).  And since
 | |
| # Kconfig does not visit the dependencies, it breaks the dependencies of B
 | |
| # (!A).
 | |
| 
 | |
| mainmenu "Simple example to demo kconfig select broken dependency issue"
 | |
| 
 | |
| config A
 | |
| 	bool "CONFIG A"
 | |
| 
 | |
| config B
 | |
| 	bool "CONFIG B"
 | |
| 	depends on !A
 | |
| 
 | |
| config C
 | |
| 	bool "CONFIG C"
 | |
| 	depends on A
 | |
| 	select B
 |