diff options
| author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2018-02-06 09:34:42 +0900 | 
|---|---|---|
| committer | Masahiro Yamada <yamada.masahiro@socionext.com> | 2018-02-09 04:08:05 +0900 | 
| commit | cb67ab2cd2b8abd9650292c986c79901e3073a59 (patch) | |
| tree | 6f0f2968c93697b981b195a08fd0c830a13c89d5 /include/linux/fpga/fpga-mgr.h | |
| parent | a2b0fe7435faee6f6fbb27409878013bc4727e98 (diff) | |
kconfig: do not write choice values when their dependency becomes n
"# CONFIG_... is not set" for choice values are wrongly written into
the .config file if they are once visible, then become invisible later.
  Test case
  ---------
---------------------------(Kconfig)----------------------------
config A
	bool "A"
choice
	prompt "Choice ?"
	depends on A
config CHOICE_B
	bool "Choice B"
config CHOICE_C
	bool "Choice C"
endchoice
----------------------------------------------------------------
---------------------------(.config)----------------------------
CONFIG_A=y
----------------------------------------------------------------
With the Kconfig and .config above,
  $ make config
  scripts/kconfig/conf  --oldaskconfig Kconfig
  *
  * Linux Kernel Configuration
  *
  A (A) [Y/n] n
  #
  # configuration written to .config
  #
  $ cat .config
  #
  # Automatically generated file; DO NOT EDIT.
  # Linux Kernel Configuration
  #
  # CONFIG_A is not set
  # CONFIG_CHOICE_B is not set
  # CONFIG_CHOICE_C is not set
Here,
  # CONFIG_CHOICE_B is not set
  # CONFIG_CHOICE_C is not set
should not be written into the .config file because their dependency
"depends on A" is unmet.
Currently, there is no code that clears SYMBOL_WRITE of choice values.
Clear SYMBOL_WRITE for all symbols in sym_calc_value(), then set it
again after calculating visibility.  To simplify the logic, set the
flag if they have non-n visibility, regardless of types, and regardless
of whether they are choice values or not.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Ulf Magnusson <ulfalizer@gmail.com>
Diffstat (limited to 'include/linux/fpga/fpga-mgr.h')
0 files changed, 0 insertions, 0 deletions
