since i'm not sure i'll be able to post anything for the rest of
the day once i leave my location, here's the patch:
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
index 8986a48..0426636 100644
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@ -257,7 +257,7 @@ $(obj)/lkc_defs.h: $(src)/lkc_proto.h
# The following requires flex/bison/gperf
# By default we use the _shipped versions, uncomment the following line if
# you are modifying the flex/bison src.
-# LKC_GENPARSER := 1
+LKC_GENPARSER := 1
ifdef LKC_GENPARSER
diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h
index 6084525..3dd7957 100644
--- a/scripts/kconfig/expr.h
+++ b/scripts/kconfig/expr.h
@@ -60,7 +60,11 @@ struct symbol_value {
};
enum symbol_type {
- S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER
+ S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_MATURITY,
S_OTHER
+};
+
+enum maturity_level {
+ M_NONE, M_DEPRECATED, M_OBSOLETE
};
enum {
@@ -72,6 +76,7 @@ struct symbol {
struct symbol *next;
char *name;
char *help;
+ enum maturity_level maturity;
enum symbol_type type;
struct symbol_value curr;
struct symbol_value def[4];
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c
index d2c2a42..ea89bb0 100644
--- a/scripts/kconfig/mconf.c
+++ b/scripts/kconfig/mconf.c
@@ -359,6 +359,22 @@ static void get_symbol_str(struct gstr *r, struct symbol
*sym)
str_printf(r, "Symbol: %s [=%s]\n", sym->name,
sym_get_string_value(sym));
+
+ if (sym->maturity != M_NONE) {
+ str_append(r, "Maturity: ");
+
+ switch (sym->maturity) {
+ case M_DEPRECATED:
+ str_append(r, "DEPRECATED\n");
+ break;
+ case M_OBSOLETE:
+ str_append(r, "OBSOLETE\n");
+ break;
+ default:
+ break;
+ }
+ }
+
for_all_prompts(sym, prop)
get_prompt_str(r, prop);
hit = false;
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c
index c35dcc5..e48527e 100644
--- a/scripts/kconfig/symbol.c
+++ b/scripts/kconfig/symbol.c
@@ -100,6 +100,8 @@ const char *sym_type_name(enum symbol_type type)
return "hex";
case S_STRING:
return "string";
+ case S_MATURITY:
+ return "maturity";
case S_UNKNOWN:
return "unknown";
case S_OTHER:
@@ -679,6 +681,7 @@ struct symbol *sym_lookup(const char *name, int isconst)
memset(symbol, 0, sizeof(*symbol));
symbol->name = new_name;
symbol->type = S_UNKNOWN;
+ symbol->maturity = M_NONE;
if (isconst)
symbol->flags |= SYMBOL_CONST;
diff --git a/scripts/kconfig/zconf.gperf b/scripts/kconfig/zconf.gperf
index 9b44c80..756d559 100644
--- a/scripts/kconfig/zconf.gperf
+++ b/scripts/kconfig/zconf.gperf
@@ -25,6 +25,7 @@ endif, T_ENDIF, TF_COMMAND
depends, T_DEPENDS, TF_COMMAND
requires, T_REQUIRES, TF_COMMAND
optional, T_OPTIONAL, TF_COMMAND
+maturity, T_MATURITY, TF_COMMAND
default, T_DEFAULT, TF_COMMAND, S_UNKNOWN
prompt, T_PROMPT, TF_COMMAND
tristate, T_TYPE, TF_COMMAND, S_TRISTATE
diff --git a/scripts/kconfig/zconf.y b/scripts/kconfig/zconf.y
index 92eb02b..9277938 100644
--- a/scripts/kconfig/zconf.y
+++ b/scripts/kconfig/zconf.y
@@ -66,6 +66,7 @@ static struct menu *current_menu, *current_entry;
%token <id>T_DEPENDS
%token <id>T_REQUIRES
%token <id>T_OPTIONAL
+%token <id>T_MATURITY
%token <id>T_PROMPT
%token <id>T_TYPE
%token <id>T_DEFAULT
@@ -120,7 +121,7 @@ stmt_list:
;
option_name:
- T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE |
T_DEFAULT
+ T_DEPENDS | T_MATURITY | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL |
T_RANGE | T_DEFAULT
;
common_stmt:
@@ -177,6 +178,7 @@ config_option_list:
| config_option_list config_option
| config_option_list symbol_option
| config_option_list depends
+ | config_option_list maturity
| config_option_list help
| config_option_list option_error
| config_option_list T_EOL
@@ -269,6 +271,7 @@ choice_option_list:
/* empty */
| choice_option_list choice_option
| choice_option_list depends
+ | choice_option_list maturity
| choice_option_list help
| choice_option_list T_EOL
| choice_option_list option_error
@@ -349,7 +352,7 @@ menu: T_MENU prompt T_EOL
printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
};
-menu_entry: menu depends_list
+menu_entry: menu maturity_set_opt depends_list
{
$$ = menu_add_menu();
};
@@ -430,6 +433,18 @@ depends: T_DEPENDS T_ON expr T_EOL
printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(),
zconf_lineno());
};
+/* maturity setting */
+
+maturity_set_opt:
+ /* empty */
+ | maturity
+;
+
+maturity: T_MATURITY symbol T_EOL
+{
+ printd(DEBUG_PARSE, "%s:%d:maturity\n", zconf_curname(),
zconf_lineno());
+};
+
/* prompt statement */
prompt_stmt_opt:
@@ -519,6 +534,7 @@ const char *zconf_tokenname(int token)
case T_IF: return "if";
case T_ENDIF: return "endif";
case T_DEPENDS: return "depends";
+ case T_MATURITY: return "maturity";
}
return "<token>";
}
@@ -615,6 +631,9 @@ void print_symbol(FILE *out, struct menu *menu)
case S_HEX:
fputs(" hex\n", out);
break;
+ case S_MATURITY:
+ fputs(" maturity\n", out);
+ break;
default:
fputs(" ???\n", out);
break;
--
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA
http://fsdev.net/wiki/index.php?title=Main_Page
========================================================================
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
kbuild-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kbuild-devel