kconfig: change "modules" from sub-option to first-level attribute

Now "modules" is the only member of the "option" property.

Remove "option", and move "modules" to the top level property.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
This commit is contained in:
Masahiro Yamada
2021-03-14 04:48:36 +09:00
parent ab838577aa
commit 6dd85ff178
9 changed files with 13 additions and 27 deletions

View File

@@ -223,16 +223,10 @@ applicable everywhere (see syntax).
the indentation level, this means it ends at the first line which has the indentation level, this means it ends at the first line which has
a smaller indentation than the first line of the help text. a smaller indentation than the first line of the help text.
- misc options: "option" <symbol>[=<value>] - module attribute: "modules"
This declares the symbol to be used as the MODULES symbol, which
Various less common options can be defined via this option syntax, enables the third modular state for all config symbols.
which can modify the behaviour of the menu entry and its config At most one symbol may have the "modules" option set.
symbol. These options are currently possible:
- "modules"
This declares the symbol to be used as the MODULES symbol, which
enables the third modular state for all config symbols.
At most one symbol may have the "modules" option set.
Menu dependencies Menu dependencies
----------------- -----------------

View File

@@ -2042,7 +2042,7 @@ config MODULE_SIG_FORMAT
menuconfig MODULES menuconfig MODULES
bool "Enable loadable module support" bool "Enable loadable module support"
option modules modules
help help
Kernel modules are small pieces of compiled code which can Kernel modules are small pieces of compiled code which can
be inserted in the running kernel, rather than being be inserted in the running kernel, rather than being

View File

@@ -112,7 +112,6 @@ n [A-Za-z0-9_-]
"menuconfig" return T_MENUCONFIG; "menuconfig" return T_MENUCONFIG;
"modules" return T_MODULES; "modules" return T_MODULES;
"on" return T_ON; "on" return T_ON;
"option" return T_OPTION;
"optional" return T_OPTIONAL; "optional" return T_OPTIONAL;
"prompt" return T_PROMPT; "prompt" return T_PROMPT;
"range" return T_RANGE; "range" return T_RANGE;

View File

@@ -95,7 +95,6 @@ void menu_add_visibility(struct expr *dep);
struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);
void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);
void menu_add_option_modules(void);
void menu_finalize(struct menu *parent); void menu_finalize(struct menu *parent);
void menu_set_type(int type); void menu_set_type(int type);

View File

@@ -211,14 +211,6 @@ void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep)
menu_add_prop(type, expr_alloc_symbol(sym), dep); menu_add_prop(type, expr_alloc_symbol(sym), dep);
} }
void menu_add_option_modules(void)
{
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;
}
static int menu_validate_number(struct symbol *sym, struct symbol *sym2) static int menu_validate_number(struct symbol *sym, struct symbol *sym2)
{ {
return sym2->type == S_INT || sym2->type == S_HEX || return sym2->type == S_INT || sym2->type == S_HEX ||

View File

@@ -69,7 +69,6 @@ static struct menu *current_menu, *current_entry;
%token T_MODULES %token T_MODULES
%token T_ON %token T_ON
%token T_OPEN_PAREN %token T_OPEN_PAREN
%token T_OPTION
%token T_OPTIONAL %token T_OPTIONAL
%token T_PLUS_EQUAL %token T_PLUS_EQUAL
%token T_PROMPT %token T_PROMPT
@@ -216,9 +215,12 @@ config_option: T_RANGE symbol symbol if_expr T_EOL
printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
}; };
config_option: T_OPTION T_MODULES T_EOL config_option: T_MODULES T_EOL
{ {
menu_add_option_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;
}; };
/* choice entry */ /* choice entry */

View File

@@ -2,7 +2,7 @@
config MODULES config MODULES
bool "Enable loadable module support" bool "Enable loadable module support"
option modules modules
default y default y
choice choice

View File

@@ -2,7 +2,7 @@
config MODULES config MODULES
def_bool y def_bool y
option modules modules
config DEP config DEP
tristate tristate

View File

@@ -2,7 +2,7 @@
config MODULES config MODULES
def_bool y def_bool y
option modules modules
choice choice
prompt "Choice" prompt "Choice"