kconfig: use parent->dep as the parentdep of 'menu'
[carl9170fw.git] / config / menu.c
index 068a4e4db20a4623225f5a16e01bc8dc5c926f4d..bbabf0a59ac4e488052111c02f7e8bd29f29fc94 100644 (file)
@@ -1,6 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
- * Released under the terms of the GNU GPL v2.0.
  */
 
 #include <ctype.h>
@@ -138,7 +138,7 @@ static struct property *menu_add_prop(enum prop_type type, char *prompt, struct
                        while (isspace(*prompt))
                                prompt++;
                }
-               if (current_entry->prompt && current_entry != &rootmenu)
+               if (current_entry->prompt)
                        prop_warn(prop, "prompt redefined");
 
                /* Apply all upper menus' visibilities to actual prompts. */
@@ -195,32 +195,26 @@ void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep)
        menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep);
 }
 
-void menu_add_option(int token, char *arg)
+void menu_add_option_modules(void)
 {
-       switch (token) {
-       case T_OPT_MODULES:
-               if (modules_sym)
-                       zconf_error("symbol '%s' redefines option 'modules'"
-                                   " already defined by symbol '%s'",
-                                   current_entry->sym->name,
-                                   modules_sym->name
-                                   );
-               modules_sym = current_entry->sym;
-               break;
-       case T_OPT_DEFCONFIG_LIST:
-               if (!sym_defconfig_list)
-                       sym_defconfig_list = current_entry->sym;
-               else if (sym_defconfig_list != current_entry->sym)
-                       zconf_error("trying to redefine defconfig symbol");
-               sym_defconfig_list->flags |= SYMBOL_AUTO;
-               break;
-       case T_OPT_ENV:
-               prop_add_env(arg);
-               break;
-       case T_OPT_ALLNOCONFIG_Y:
-               current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y;
-               break;
-       }
+       if (modules_sym)
+               zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'",
+                           current_entry->sym->name, modules_sym->name);
+       modules_sym = current_entry->sym;
+}
+
+void menu_add_option_defconfig_list(void)
+{
+       if (!sym_defconfig_list)
+               sym_defconfig_list = current_entry->sym;
+       else if (sym_defconfig_list != current_entry->sym)
+               zconf_error("trying to redefine defconfig symbol");
+       sym_defconfig_list->flags |= SYMBOL_NO_WRITE;
+}
+
+void menu_add_option_allnoconfig_y(void)
+{
+       current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y;
 }
 
 static int menu_validate_number(struct symbol *sym, struct symbol *sym2)
@@ -332,12 +326,10 @@ void menu_finalize(struct menu *parent)
                         * choice value symbols.
                         */
                        parentdep = expr_alloc_symbol(sym);
-               } else if (parent->prompt)
-                       /* Menu node for 'menu' */
-                       parentdep = parent->prompt->visible.expr;
-               else
-                       /* Menu node for 'if' */
+               } else {
+                       /* Menu node for 'menu', 'if' */
                        parentdep = parent->dep;
+               }
 
                /* For each child menu node... */
                for (menu = parent->list; menu; menu = menu->next) {