aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/kconfig/menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/kconfig/menu.c')
-rw-r--r--scripts/kconfig/menu.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
index 203632cc30bd..edda8b49619d 100644
--- a/scripts/kconfig/menu.c
+++ b/scripts/kconfig/menu.c
@@ -58,6 +58,8 @@ void menu_add_entry(struct symbol *sym)
58 *last_entry_ptr = menu; 58 *last_entry_ptr = menu;
59 last_entry_ptr = &menu->next; 59 last_entry_ptr = &menu->next;
60 current_entry = menu; 60 current_entry = menu;
61 if (sym)
62 menu_add_symbol(P_SYMBOL, sym, NULL);
61} 63}
62 64
63void menu_end_entry(void) 65void menu_end_entry(void)
@@ -318,6 +320,8 @@ void menu_finalize(struct menu *parent)
318 parent->next = last_menu->next; 320 parent->next = last_menu->next;
319 last_menu->next = NULL; 321 last_menu->next = NULL;
320 } 322 }
323
324 sym->dir_dep.expr = parent->dep;
321 } 325 }
322 for (menu = parent->list; menu; menu = menu->next) { 326 for (menu = parent->list; menu; menu = menu->next) {
323 if (sym && sym_is_choice(sym) && 327 if (sym && sym_is_choice(sym) &&
@@ -419,9 +423,13 @@ bool menu_is_visible(struct menu *menu)
419 if (!sym || sym_get_tristate_value(menu->sym) == no) 423 if (!sym || sym_get_tristate_value(menu->sym) == no)
420 return false; 424 return false;
421 425
422 for (child = menu->list; child; child = child->next) 426 for (child = menu->list; child; child = child->next) {
423 if (menu_is_visible(child)) 427 if (menu_is_visible(child)) {
428 if (sym)
429 sym->flags |= SYMBOL_DEF_USER;
424 return true; 430 return true;
431 }
432 }
425 433
426 return false; 434 return false;
427} 435}
@@ -501,9 +509,19 @@ void get_symbol_str(struct gstr *r, struct symbol *sym)
501 bool hit; 509 bool hit;
502 struct property *prop; 510 struct property *prop;
503 511
504 if (sym && sym->name) 512 if (sym && sym->name) {
505 str_printf(r, "Symbol: %s [=%s]\n", sym->name, 513 str_printf(r, "Symbol: %s [=%s]\n", sym->name,
506 sym_get_string_value(sym)); 514 sym_get_string_value(sym));
515 str_printf(r, "Type : %s\n", sym_type_name(sym->type));
516 if (sym->type == S_INT || sym->type == S_HEX) {
517 prop = sym_get_range_prop(sym);
518 if (prop) {
519 str_printf(r, "Range : ");
520 expr_gstr_print(prop->expr, r);
521 str_append(r, "\n");
522 }
523 }
524 }
507 for_all_prompts(sym, prop) 525 for_all_prompts(sym, prop)
508 get_prompt_str(r, prop); 526 get_prompt_str(r, prop);
509 hit = false; 527 hit = false;