diff options
Diffstat (limited to 'scripts/kconfig/menu.c')
-rw-r--r-- | scripts/kconfig/menu.c | 24 |
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 | ||
63 | void menu_end_entry(void) | 65 | void 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; |