aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnaud Lacombe <lacombar@gmail.com>2010-08-16 22:55:31 -0400
committerArnaud Lacombe <lacombar@gmail.com>2010-09-19 18:19:39 -0400
commit8ea13e2c87c83b7cb0b360cb8779415967727647 (patch)
treea9027fe04302487191b3469fd07243ffe6c721c9
parentef211607ed49c475735898514c60a9797208b699 (diff)
kconfig: implement the `mainmenu' directive
If specified, the directive must be placed at the top of the Kconfig file. We need to change the grammar to make the mainmenu directive set the `rootmenu' prompt. This reflect how menu_add_prompt() works internally, ie. set the prompt of the `current_entry', pointing originally to `rootmenu'. Signed-off-by: Arnaud Lacombe <lacombar@gmail.com> Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Reviewed-by: Michal Marek <mmarek@suse.cz>
-rw-r--r--Documentation/kbuild/kconfig-language.txt3
-rw-r--r--scripts/kconfig/zconf.y14
2 files changed, 13 insertions, 4 deletions
diff --git a/Documentation/kbuild/kconfig-language.txt b/Documentation/kbuild/kconfig-language.txt
index b472e4e0ba67..2fe93ca7c77c 100644
--- a/Documentation/kbuild/kconfig-language.txt
+++ b/Documentation/kbuild/kconfig-language.txt
@@ -322,7 +322,8 @@ mainmenu:
322 "mainmenu" <prompt> 322 "mainmenu" <prompt>
323 323
324This sets the config program's title bar if the config program chooses 324This sets the config program's title bar if the config program chooses
325to use it. 325to use it. It should be placed at the top of the configuration, before any
326other statement.
326 327
327 328
328Kconfig hints 329Kconfig hints
diff --git a/scripts/kconfig/zconf.y b/scripts/kconfig/zconf.y
index 23dfd3baa7a1..e9b14efd7414 100644
--- a/scripts/kconfig/zconf.y
+++ b/scripts/kconfig/zconf.y
@@ -36,7 +36,7 @@ static struct menu *current_menu, *current_entry;
36#define YYERROR_VERBOSE 36#define YYERROR_VERBOSE
37#endif 37#endif
38%} 38%}
39%expect 26 39%expect 28
40 40
41%union 41%union
42{ 42{
@@ -104,14 +104,15 @@ static struct menu *current_menu, *current_entry;
104%} 104%}
105 105
106%% 106%%
107input: stmt_list; 107input: nl start | start;
108
109start: mainmenu_stmt stmt_list | stmt_list;
108 110
109stmt_list: 111stmt_list:
110 /* empty */ 112 /* empty */
111 | stmt_list common_stmt 113 | stmt_list common_stmt
112 | stmt_list choice_stmt 114 | stmt_list choice_stmt
113 | stmt_list menu_stmt 115 | stmt_list menu_stmt
114 | stmt_list T_MAINMENU prompt nl
115 | stmt_list end { zconf_error("unexpected end statement"); } 116 | stmt_list end { zconf_error("unexpected end statement"); }
116 | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } 117 | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); }
117 | stmt_list option_name error T_EOL 118 | stmt_list option_name error T_EOL
@@ -342,6 +343,13 @@ if_block:
342 | if_block choice_stmt 343 | if_block choice_stmt
343; 344;
344 345
346/* mainmenu entry */
347
348mainmenu_stmt: T_MAINMENU prompt nl
349{
350 menu_add_prompt(P_MENU, $2, NULL);
351};
352
345/* menu entry */ 353/* menu entry */
346 354
347menu: T_MENU prompt T_EOL 355menu: T_MENU prompt T_EOL