diff options
Diffstat (limited to 'scripts/kconfig/menu.c')
-rw-r--r-- | scripts/kconfig/menu.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index 7e83aef42c6d..b9d9aa18e6d6 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c | |||
@@ -152,6 +152,12 @@ struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr | |||
152 | return menu_add_prop(type, prompt, NULL, dep); | 152 | return menu_add_prop(type, prompt, NULL, dep); |
153 | } | 153 | } |
154 | 154 | ||
155 | void menu_add_visibility(struct expr *expr) | ||
156 | { | ||
157 | current_entry->visibility = expr_alloc_and(current_entry->visibility, | ||
158 | expr); | ||
159 | } | ||
160 | |||
155 | void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) | 161 | void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) |
156 | { | 162 | { |
157 | menu_add_prop(type, NULL, expr, dep); | 163 | menu_add_prop(type, NULL, expr, dep); |
@@ -410,6 +416,11 @@ bool menu_is_visible(struct menu *menu) | |||
410 | if (!menu->prompt) | 416 | if (!menu->prompt) |
411 | return false; | 417 | return false; |
412 | 418 | ||
419 | if (menu->visibility) { | ||
420 | if (expr_calc_value(menu->visibility) == no) | ||
421 | return no; | ||
422 | } | ||
423 | |||
413 | sym = menu->sym; | 424 | sym = menu->sym; |
414 | if (sym) { | 425 | if (sym) { |
415 | sym_calc_value(sym); | 426 | sym_calc_value(sym); |