diff options
Diffstat (limited to 'scripts/kconfig/symbol.c')
| -rw-r--r-- | scripts/kconfig/symbol.c | 9 | 
1 files changed, 8 insertions, 1 deletions
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c index 071f00c3046..22a3c400fc4 100644 --- a/scripts/kconfig/symbol.c +++ b/scripts/kconfig/symbol.c @@ -262,11 +262,18 @@ static struct symbol *sym_calc_choice(struct symbol *sym)  	struct symbol *def_sym;  	struct property *prop;  	struct expr *e; +	int flags;  	/* first calculate all choice values' visibilities */ +	flags = sym->flags;  	prop = sym_get_choice_prop(sym); -	expr_list_for_each_sym(prop->expr, e, def_sym) +	expr_list_for_each_sym(prop->expr, e, def_sym) {  		sym_calc_visibility(def_sym); +		if (def_sym->visible != no) +			flags &= def_sym->flags; +	} + +	sym->flags &= flags | ~SYMBOL_DEF_USER;  	/* is the user choice visible? */  	def_sym = sym->def[S_DEF_USER].val;  |