From 6902dccfda005fa4c42410fa064fdd331ab42479 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" Date: Tue, 3 Sep 2013 17:07:18 +0200 Subject: kconfig: do not special-case 'MODULES' symbol Currently, the 'MODULES' symbol is hard-coded to be the default symbol that enables/disables tristates, if no other symbol was declared with 'option modules'. While this used to be needed for the Linux kernel, we now have an explicit 'option modules' attached to the 'MODULES' symbol (since cset 11097a036), so we no longer need to special-case it in the kconfig code. Furthermore, kconfig is extensively used out of the Linux kernel, and other projects may have another meaning for a symbol named 'MODULES'. This patch changes the way we enable/disable tristates: if a symbol was found with 'option modules' attached to it, then that symbol controls enabling tristates. Otherwise, tristates are disabled, even if a symbol named 'MODULES' exists. Signed-off-by: "Yann E. MORIN" Cc: Sam Ravnborg Signed-off-by: Michal Marek --- scripts/kconfig/menu.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'scripts/kconfig/menu.c') diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index 7e233a6ca64e..3a9c67493260 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c @@ -197,12 +197,9 @@ void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep) void menu_add_option(int token, char *arg) { - struct property *prop; - switch (token) { case T_OPT_MODULES: - prop = prop_alloc(P_DEFAULT, modules_sym); - prop->expr = expr_alloc_symbol(current_entry->sym); + modules_sym = current_entry->sym; break; case T_OPT_DEFCONFIG_LIST: if (!sym_defconfig_list) -- cgit v1.2.3 From e062781397e5bebc6c1b8dd4bf466136e13ae4c5 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" Date: Tue, 3 Sep 2013 22:22:26 +0200 Subject: kconfig: do not allow more than one symbol to have 'option modules' Previously, it was possible to have more than one symbol with the 'option modules' attached to them, although only the last one would in fact control tristates. Since this does not make much sense, only allow at most one symbol to control tristates. Note: it is still possible to have more than one symbol that control tristates, but indirectly: config MOD1 bool "mod1" select MODULES config MOD2 bool "mod2" select MODULES config MODULES bool option modules Signed-off-by: "Yann E. MORIN" Cc: Sam Ravnborg Signed-off-by: Michal Marek --- scripts/kconfig/menu.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'scripts/kconfig/menu.c') diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index 3a9c67493260..c1d53200c306 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c @@ -199,6 +199,12 @@ void menu_add_option(int token, char *arg) { 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: -- cgit v1.2.3