diff options
| author | Roman Zippel <zippel@linux-m68k.org> | 2008-01-13 22:50:54 -0500 |
|---|---|---|
| committer | Sam Ravnborg <sam@ravnborg.org> | 2008-01-28 17:14:39 -0500 |
| commit | 93449082e905ce73d0346d617dd67c4b668b58af (patch) | |
| tree | eba7030f32ce18fa71562224ee2e0d8ddda33421 | |
| parent | 7a962923359768e04137125bd479fd0dfa6117d3 (diff) | |
kconfig: environment symbol support
Add the possibility to import a value from the environment into kconfig
via the option syntax. Beside flexibility this has the advantage
providing proper dependencies.
Documented the options syntax.
Signed-off-by: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| -rw-r--r-- | Documentation/kbuild/kconfig-language.txt | 21 | ||||
| -rw-r--r-- | scripts/kconfig/expr.h | 3 | ||||
| -rw-r--r-- | scripts/kconfig/lkc.h | 5 | ||||
| -rw-r--r-- | scripts/kconfig/menu.c | 5 | ||||
| -rw-r--r-- | scripts/kconfig/qconf.cc | 16 | ||||
| -rw-r--r-- | scripts/kconfig/symbol.c | 45 | ||||
| -rw-r--r-- | scripts/kconfig/util.c | 23 | ||||
| -rw-r--r-- | scripts/kconfig/zconf.gperf | 1 | ||||
| -rw-r--r-- | scripts/kconfig/zconf.hash.c_shipped | 45 |
9 files changed, 129 insertions, 35 deletions
diff --git a/Documentation/kbuild/kconfig-language.txt b/Documentation/kbuild/kconfig-language.txt index 53ca12f7999f..a43fcc68e171 100644 --- a/Documentation/kbuild/kconfig-language.txt +++ b/Documentation/kbuild/kconfig-language.txt | |||
| @@ -127,6 +127,27 @@ applicable everywhere (see syntax). | |||
| 127 | used to help visually separate configuration logic from help within | 127 | used to help visually separate configuration logic from help within |
| 128 | the file as an aid to developers. | 128 | the file as an aid to developers. |
| 129 | 129 | ||
| 130 | - misc options: "option" <symbol>[=<value>] | ||
| 131 | Various less common options can be defined via this option syntax, | ||
| 132 | which can modify the behaviour of the menu entry and its config | ||
| 133 | symbol. These options are currently possible: | ||
| 134 | |||
| 135 | - "defconfig_list" | ||
| 136 | This declares a list of default entries which can be used when | ||
| 137 | looking for the default configuration (which is used when the main | ||
| 138 | .config doesn't exists yet.) | ||
| 139 | |||
| 140 | - "modules" | ||
| 141 | This declares the symbol to be used as the MODULES symbol, which | ||
| 142 | enables the third modular state for all config symbols. | ||
| 143 | |||
| 144 | - "env"=<value> | ||
| 145 | This imports the environment variable into Kconfig. It behaves like | ||
| 146 | a default, except that the value comes from the environment, this | ||
| 147 | also means that the behaviour when mixing it with normal defaults is | ||
| 148 | undefined at this point. The symbol is currently not exported back | ||
| 149 | to the build environment (if this is desired, it can be done via | ||
| 150 | another symbol). | ||
| 130 | 151 | ||
| 131 | Menu dependencies | 152 | Menu dependencies |
| 132 | ----------------- | 153 | ----------------- |
diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h index b6f922c77e0b..9d4cba1c001d 100644 --- a/scripts/kconfig/expr.h +++ b/scripts/kconfig/expr.h | |||
| @@ -106,7 +106,8 @@ struct symbol { | |||
| 106 | #define SYMBOL_HASHMASK 0xff | 106 | #define SYMBOL_HASHMASK 0xff |
| 107 | 107 | ||
| 108 | enum prop_type { | 108 | enum prop_type { |
| 109 | P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE | 109 | P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, |
| 110 | P_SELECT, P_RANGE, P_ENV | ||
| 110 | }; | 111 | }; |
| 111 | 112 | ||
| 112 | struct property { | 113 | struct property { |
diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h index 8a07ee4f6bd4..4bc68f20a73c 100644 --- a/scripts/kconfig/lkc.h +++ b/scripts/kconfig/lkc.h | |||
| @@ -44,6 +44,7 @@ extern "C" { | |||
| 44 | 44 | ||
| 45 | #define T_OPT_MODULES 1 | 45 | #define T_OPT_MODULES 1 |
| 46 | #define T_OPT_DEFCONFIG_LIST 2 | 46 | #define T_OPT_DEFCONFIG_LIST 2 |
| 47 | #define T_OPT_ENV 3 | ||
| 47 | 48 | ||
| 48 | struct kconf_id { | 49 | struct kconf_id { |
| 49 | int name; | 50 | int name; |
| @@ -74,6 +75,7 @@ void kconfig_load(void); | |||
| 74 | 75 | ||
| 75 | /* menu.c */ | 76 | /* menu.c */ |
| 76 | void menu_init(void); | 77 | void menu_init(void); |
| 78 | void menu_warn(struct menu *menu, const char *fmt, ...); | ||
| 77 | struct menu *menu_add_menu(void); | 79 | struct menu *menu_add_menu(void); |
| 78 | void menu_end_menu(void); | 80 | void menu_end_menu(void); |
| 79 | void menu_add_entry(struct symbol *sym); | 81 | void menu_add_entry(struct symbol *sym); |
| @@ -103,6 +105,8 @@ void str_printf(struct gstr *gs, const char *fmt, ...); | |||
| 103 | const char *str_get(struct gstr *gs); | 105 | const char *str_get(struct gstr *gs); |
| 104 | 106 | ||
| 105 | /* symbol.c */ | 107 | /* symbol.c */ |
| 108 | extern struct expr *sym_env_list; | ||
| 109 | |||
| 106 | void sym_init(void); | 110 | void sym_init(void); |
| 107 | void sym_clear_all_valid(void); | 111 | void sym_clear_all_valid(void); |
| 108 | void sym_set_all_changed(void); | 112 | void sym_set_all_changed(void); |
| @@ -110,6 +114,7 @@ void sym_set_changed(struct symbol *sym); | |||
| 110 | struct symbol *sym_check_deps(struct symbol *sym); | 114 | struct symbol *sym_check_deps(struct symbol *sym); |
| 111 | struct property *prop_alloc(enum prop_type type, struct symbol *sym); | 115 | struct property *prop_alloc(enum prop_type type, struct symbol *sym); |
| 112 | struct symbol *prop_get_symbol(struct property *prop); | 116 | struct symbol *prop_get_symbol(struct property *prop); |
| 117 | struct property *sym_get_env_prop(struct symbol *sym); | ||
| 113 | 118 | ||
| 114 | static inline tristate sym_get_tristate_value(struct symbol *sym) | 119 | static inline tristate sym_get_tristate_value(struct symbol *sym) |
| 115 | { | 120 | { |
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index 3637d1057e13..e6ef171e5b14 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c | |||
| @@ -15,7 +15,7 @@ static struct menu **last_entry_ptr; | |||
| 15 | struct file *file_list; | 15 | struct file *file_list; |
| 16 | struct file *current_file; | 16 | struct file *current_file; |
| 17 | 17 | ||
| 18 | static void menu_warn(struct menu *menu, const char *fmt, ...) | 18 | void menu_warn(struct menu *menu, const char *fmt, ...) |
| 19 | { | 19 | { |
| 20 | va_list ap; | 20 | va_list ap; |
| 21 | va_start(ap, fmt); | 21 | va_start(ap, fmt); |
| @@ -172,6 +172,9 @@ void menu_add_option(int token, char *arg) | |||
| 172 | else if (sym_defconfig_list != current_entry->sym) | 172 | else if (sym_defconfig_list != current_entry->sym) |
| 173 | zconf_error("trying to redefine defconfig symbol"); | 173 | zconf_error("trying to redefine defconfig symbol"); |
| 174 | break; | 174 | break; |
| 175 | case T_OPT_ENV: | ||
| 176 | prop_add_env(arg); | ||
| 177 | break; | ||
| 175 | } | 178 | } |
| 176 | } | 179 | } |
| 177 | 180 | ||
diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc index 9fe27ca8a192..5d0fd38b089b 100644 --- a/scripts/kconfig/qconf.cc +++ b/scripts/kconfig/qconf.cc | |||
| @@ -1088,7 +1088,11 @@ QString ConfigInfoView::debug_info(struct symbol *sym) | |||
| 1088 | debug += "</a><br>"; | 1088 | debug += "</a><br>"; |
| 1089 | break; | 1089 | break; |
| 1090 | case P_DEFAULT: | 1090 | case P_DEFAULT: |
| 1091 | debug += "default: "; | 1091 | case P_SELECT: |
| 1092 | case P_RANGE: | ||
| 1093 | case P_ENV: | ||
| 1094 | debug += prop_get_type_name(prop->type); | ||
| 1095 | debug += ": "; | ||
| 1092 | expr_print(prop->expr, expr_print_help, &debug, E_NONE); | 1096 | expr_print(prop->expr, expr_print_help, &debug, E_NONE); |
| 1093 | debug += "<br>"; | 1097 | debug += "<br>"; |
| 1094 | break; | 1098 | break; |
| @@ -1099,16 +1103,6 @@ QString ConfigInfoView::debug_info(struct symbol *sym) | |||
| 1099 | debug += "<br>"; | 1103 | debug += "<br>"; |
| 1100 | } | 1104 | } |
| 1101 | break; | 1105 | break; |
| 1102 | case P_SELECT: | ||
| 1103 | debug += "select: "; | ||
| 1104 | expr_print(prop->expr, expr_print_help, &debug, E_NONE); | ||
| 1105 | debug += "<br>"; | ||
| 1106 | break; | ||
| 1107 | case P_RANGE: | ||
| 1108 | debug += "range: "; | ||
| 1109 | expr_print(prop->expr, expr_print_help, &debug, E_NONE); | ||
| 1110 | debug += "<br>"; | ||
| 1111 | break; | ||
| 1112 | default: | 1106 | default: |
| 1113 | debug += "unknown property: "; | 1107 | debug += "unknown property: "; |
| 1114 | debug += prop_get_type_name(prop->type); | 1108 | debug += prop_get_type_name(prop->type); |
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c index a7dfc82fc858..99e3d02d1cfc 100644 --- a/scripts/kconfig/symbol.c +++ b/scripts/kconfig/symbol.c | |||
| @@ -34,6 +34,8 @@ struct symbol *sym_defconfig_list; | |||
| 34 | struct symbol *modules_sym; | 34 | struct symbol *modules_sym; |
| 35 | tristate modules_val; | 35 | tristate modules_val; |
| 36 | 36 | ||
| 37 | struct expr *sym_env_list; | ||
| 38 | |||
| 37 | void sym_add_default(struct symbol *sym, const char *def) | 39 | void sym_add_default(struct symbol *sym, const char *def) |
| 38 | { | 40 | { |
| 39 | struct property *prop = prop_alloc(P_DEFAULT, sym); | 41 | struct property *prop = prop_alloc(P_DEFAULT, sym); |
| @@ -117,6 +119,15 @@ struct property *sym_get_choice_prop(struct symbol *sym) | |||
| 117 | return NULL; | 119 | return NULL; |
| 118 | } | 120 | } |
| 119 | 121 | ||
| 122 | struct property *sym_get_env_prop(struct symbol *sym) | ||
| 123 | { | ||
| 124 | struct property *prop; | ||
| 125 | |||
| 126 | for_all_properties(sym, prop, P_ENV) | ||
| 127 | return prop; | ||
| 128 | return NULL; | ||
| 129 | } | ||
| 130 | |||
| 120 | struct property *sym_get_default_prop(struct symbol *sym) | 131 | struct property *sym_get_default_prop(struct symbol *sym) |
| 121 | { | 132 | { |
| 122 | struct property *prop; | 133 | struct property *prop; |
| @@ -346,6 +357,9 @@ void sym_calc_value(struct symbol *sym) | |||
| 346 | ; | 357 | ; |
| 347 | } | 358 | } |
| 348 | 359 | ||
| 360 | if (sym->flags & SYMBOL_AUTO) | ||
| 361 | sym->flags &= ~SYMBOL_WRITE; | ||
| 362 | |||
| 349 | sym->curr = newval; | 363 | sym->curr = newval; |
| 350 | if (sym_is_choice(sym) && newval.tri == yes) | 364 | if (sym_is_choice(sym) && newval.tri == yes) |
| 351 | sym->curr.val = sym_calc_choice(sym); | 365 | sym->curr.val = sym_calc_choice(sym); |
| @@ -860,6 +874,8 @@ const char *prop_get_type_name(enum prop_type type) | |||
| 860 | switch (type) { | 874 | switch (type) { |
| 861 | case P_PROMPT: | 875 | case P_PROMPT: |
| 862 | return "prompt"; | 876 | return "prompt"; |
| 877 | case P_ENV: | ||
| 878 | return "env"; | ||
| 863 | case P_COMMENT: | 879 | case P_COMMENT: |
| 864 | return "comment"; | 880 | return "comment"; |
| 865 | case P_MENU: | 881 | case P_MENU: |
| @@ -877,3 +893,32 @@ const char *prop_get_type_name(enum prop_type type) | |||
| 877 | } | 893 | } |
| 878 | return "unknown"; | 894 | return "unknown"; |
| 879 | } | 895 | } |
| 896 | |||
| 897 | void prop_add_env(const char *env) | ||
| 898 | { | ||
| 899 | struct symbol *sym, *sym2; | ||
| 900 | struct property *prop; | ||
| 901 | char *p; | ||
| 902 | |||
| 903 | sym = current_entry->sym; | ||
| 904 | sym->flags |= SYMBOL_AUTO; | ||
| 905 | for_all_properties(sym, prop, P_ENV) { | ||
| 906 | sym2 = prop_get_symbol(prop); | ||
| 907 | if (strcmp(sym2->name, env)) | ||
| 908 | menu_warn(current_entry, "redefining environment symbol from %s", | ||
| 909 | sym2->name); | ||
| 910 | return; | ||
| 911 | } | ||
| 912 | |||
| 913 | prop = prop_alloc(P_ENV, sym); | ||
| 914 | prop->expr = expr_alloc_symbol(sym_lookup(env, 1)); | ||
| 915 | |||
| 916 | sym_env_list = expr_alloc_one(E_LIST, sym_env_list); | ||
| 917 | sym_env_list->right.sym = sym; | ||
| 918 | |||
| 919 | p = getenv(env); | ||
| 920 | if (p) | ||
| 921 | sym_add_default(sym, p); | ||
| 922 | else | ||
| 923 | menu_warn(current_entry, "environment variable %s undefined", env); | ||
| 924 | } | ||
diff --git a/scripts/kconfig/util.c b/scripts/kconfig/util.c index e1cad924c0a4..f8e73c039dc8 100644 --- a/scripts/kconfig/util.c +++ b/scripts/kconfig/util.c | |||
| @@ -29,6 +29,8 @@ struct file *file_lookup(const char *name) | |||
| 29 | /* write a dependency file as used by kbuild to track dependencies */ | 29 | /* write a dependency file as used by kbuild to track dependencies */ |
| 30 | int file_write_dep(const char *name) | 30 | int file_write_dep(const char *name) |
| 31 | { | 31 | { |
| 32 | struct symbol *sym, *env_sym; | ||
| 33 | struct expr *e; | ||
| 32 | struct file *file; | 34 | struct file *file; |
| 33 | FILE *out; | 35 | FILE *out; |
| 34 | 36 | ||
| @@ -45,8 +47,25 @@ int file_write_dep(const char *name) | |||
| 45 | fprintf(out, "\t%s\n", file->name); | 47 | fprintf(out, "\t%s\n", file->name); |
| 46 | } | 48 | } |
| 47 | fprintf(out, "\ninclude/config/auto.conf: \\\n" | 49 | fprintf(out, "\ninclude/config/auto.conf: \\\n" |
| 48 | "\t$(deps_config)\n\n" | 50 | "\t$(deps_config)\n\n"); |
| 49 | "$(deps_config): ;\n"); | 51 | |
| 52 | expr_list_for_each_sym(sym_env_list, e, sym) { | ||
| 53 | struct property *prop; | ||
| 54 | const char *value; | ||
| 55 | |||
| 56 | prop = sym_get_env_prop(sym); | ||
| 57 | env_sym = prop_get_symbol(prop); | ||
| 58 | if (!env_sym) | ||
| 59 | continue; | ||
| 60 | value = getenv(env_sym->name); | ||
| 61 | if (!value) | ||
| 62 | value = ""; | ||
| 63 | fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value); | ||
| 64 | fprintf(out, "include/config/auto.conf: FORCE\n"); | ||
| 65 | fprintf(out, "endif\n"); | ||
| 66 | } | ||
| 67 | |||
| 68 | fprintf(out, "\n$(deps_config): ;\n"); | ||
| 50 | fclose(out); | 69 | fclose(out); |
| 51 | rename("..config.tmp", name); | 70 | rename("..config.tmp", name); |
| 52 | return 0; | 71 | return 0; |
diff --git a/scripts/kconfig/zconf.gperf b/scripts/kconfig/zconf.gperf index 93538e567bda..4051639c0900 100644 --- a/scripts/kconfig/zconf.gperf +++ b/scripts/kconfig/zconf.gperf | |||
| @@ -41,4 +41,5 @@ option, T_OPTION, TF_COMMAND | |||
| 41 | on, T_ON, TF_PARAM | 41 | on, T_ON, TF_PARAM |
| 42 | modules, T_OPT_MODULES, TF_OPTION | 42 | modules, T_OPT_MODULES, TF_OPTION |
| 43 | defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION | 43 | defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION |
| 44 | env, T_OPT_ENV, TF_OPTION | ||
| 44 | %% | 45 | %% |
diff --git a/scripts/kconfig/zconf.hash.c_shipped b/scripts/kconfig/zconf.hash.c_shipped index ab28b18153a7..c9d26bc1a214 100644 --- a/scripts/kconfig/zconf.hash.c_shipped +++ b/scripts/kconfig/zconf.hash.c_shipped | |||
| @@ -53,10 +53,10 @@ kconf_id_hash (register const char *str, register unsigned int len) | |||
| 53 | 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, | 53 | 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, |
| 54 | 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, | 54 | 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, |
| 55 | 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, | 55 | 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, |
| 56 | 49, 49, 49, 49, 49, 49, 49, 18, 11, 5, | 56 | 49, 49, 49, 49, 49, 49, 49, 35, 35, 5, |
| 57 | 0, 0, 5, 49, 5, 20, 49, 49, 5, 20, | 57 | 0, 0, 5, 49, 5, 20, 49, 49, 5, 20, |
| 58 | 5, 0, 30, 49, 0, 15, 0, 10, 49, 49, | 58 | 5, 0, 30, 49, 0, 15, 0, 10, 0, 49, |
| 59 | 25, 49, 49, 49, 49, 49, 49, 49, 49, 49, | 59 | 10, 49, 49, 49, 49, 49, 49, 49, 49, 49, |
| 60 | 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, | 60 | 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, |
| 61 | 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, | 61 | 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, |
| 62 | 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, | 62 | 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, |
| @@ -89,6 +89,7 @@ kconf_id_hash (register const char *str, register unsigned int len) | |||
| 89 | struct kconf_id_strings_t | 89 | struct kconf_id_strings_t |
| 90 | { | 90 | { |
| 91 | char kconf_id_strings_str2[sizeof("on")]; | 91 | char kconf_id_strings_str2[sizeof("on")]; |
| 92 | char kconf_id_strings_str3[sizeof("env")]; | ||
| 92 | char kconf_id_strings_str5[sizeof("endif")]; | 93 | char kconf_id_strings_str5[sizeof("endif")]; |
| 93 | char kconf_id_strings_str6[sizeof("option")]; | 94 | char kconf_id_strings_str6[sizeof("option")]; |
| 94 | char kconf_id_strings_str7[sizeof("endmenu")]; | 95 | char kconf_id_strings_str7[sizeof("endmenu")]; |
| @@ -99,30 +100,31 @@ struct kconf_id_strings_t | |||
| 99 | char kconf_id_strings_str12[sizeof("default")]; | 100 | char kconf_id_strings_str12[sizeof("default")]; |
| 100 | char kconf_id_strings_str13[sizeof("def_bool")]; | 101 | char kconf_id_strings_str13[sizeof("def_bool")]; |
| 101 | char kconf_id_strings_str14[sizeof("help")]; | 102 | char kconf_id_strings_str14[sizeof("help")]; |
| 102 | char kconf_id_strings_str15[sizeof("bool")]; | ||
| 103 | char kconf_id_strings_str16[sizeof("config")]; | 103 | char kconf_id_strings_str16[sizeof("config")]; |
| 104 | char kconf_id_strings_str17[sizeof("def_tristate")]; | 104 | char kconf_id_strings_str17[sizeof("def_tristate")]; |
| 105 | char kconf_id_strings_str18[sizeof("boolean")]; | 105 | char kconf_id_strings_str18[sizeof("hex")]; |
| 106 | char kconf_id_strings_str19[sizeof("defconfig_list")]; | 106 | char kconf_id_strings_str19[sizeof("defconfig_list")]; |
| 107 | char kconf_id_strings_str21[sizeof("string")]; | 107 | char kconf_id_strings_str21[sizeof("string")]; |
| 108 | char kconf_id_strings_str22[sizeof("if")]; | 108 | char kconf_id_strings_str22[sizeof("if")]; |
| 109 | char kconf_id_strings_str23[sizeof("int")]; | 109 | char kconf_id_strings_str23[sizeof("int")]; |
| 110 | char kconf_id_strings_str24[sizeof("enable")]; | ||
| 111 | char kconf_id_strings_str26[sizeof("select")]; | 110 | char kconf_id_strings_str26[sizeof("select")]; |
| 112 | char kconf_id_strings_str27[sizeof("modules")]; | 111 | char kconf_id_strings_str27[sizeof("modules")]; |
| 113 | char kconf_id_strings_str28[sizeof("tristate")]; | 112 | char kconf_id_strings_str28[sizeof("tristate")]; |
| 114 | char kconf_id_strings_str29[sizeof("menu")]; | 113 | char kconf_id_strings_str29[sizeof("menu")]; |
| 115 | char kconf_id_strings_str31[sizeof("source")]; | 114 | char kconf_id_strings_str31[sizeof("source")]; |
| 116 | char kconf_id_strings_str32[sizeof("comment")]; | 115 | char kconf_id_strings_str32[sizeof("comment")]; |
| 117 | char kconf_id_strings_str33[sizeof("hex")]; | ||
| 118 | char kconf_id_strings_str35[sizeof("menuconfig")]; | 116 | char kconf_id_strings_str35[sizeof("menuconfig")]; |
| 119 | char kconf_id_strings_str36[sizeof("prompt")]; | 117 | char kconf_id_strings_str36[sizeof("prompt")]; |
| 120 | char kconf_id_strings_str37[sizeof("depends")]; | 118 | char kconf_id_strings_str37[sizeof("depends")]; |
| 119 | char kconf_id_strings_str39[sizeof("bool")]; | ||
| 120 | char kconf_id_strings_str41[sizeof("enable")]; | ||
| 121 | char kconf_id_strings_str42[sizeof("boolean")]; | ||
| 121 | char kconf_id_strings_str48[sizeof("mainmenu")]; | 122 | char kconf_id_strings_str48[sizeof("mainmenu")]; |
| 122 | }; | 123 | }; |
| 123 | static struct kconf_id_strings_t kconf_id_strings_contents = | 124 | static struct kconf_id_strings_t kconf_id_strings_contents = |
| 124 | { | 125 | { |
| 125 | "on", | 126 | "on", |
| 127 | "env", | ||
| 126 | "endif", | 128 | "endif", |
| 127 | "option", | 129 | "option", |
| 128 | "endmenu", | 130 | "endmenu", |
| @@ -133,25 +135,25 @@ static struct kconf_id_strings_t kconf_id_strings_contents = | |||
| 133 | "default", | 135 | "default", |
| 134 | "def_bool", | 136 | "def_bool", |
| 135 | "help", | 137 | "help", |
| 136 | "bool", | ||
| 137 | "config", | 138 | "config", |
| 138 | "def_tristate", | 139 | "def_tristate", |
| 139 | "boolean", | 140 | "hex", |
| 140 | "defconfig_list", | 141 | "defconfig_list", |
| 141 | "string", | 142 | "string", |
| 142 | "if", | 143 | "if", |
| 143 | "int", | 144 | "int", |
| 144 | "enable", | ||
| 145 | "select", | 145 | "select", |
| 146 | "modules", | 146 | "modules", |
| 147 | "tristate", | 147 | "tristate", |
| 148 | "menu", | 148 | "menu", |
| 149 | "source", | 149 | "source", |
| 150 | "comment", | 150 | "comment", |
| 151 | "hex", | ||
| 152 | "menuconfig", | 151 | "menuconfig", |
| 153 | "prompt", | 152 | "prompt", |
| 154 | "depends", | 153 | "depends", |
| 154 | "bool", | ||
| 155 | "enable", | ||
| 156 | "boolean", | ||
| 155 | "mainmenu" | 157 | "mainmenu" |
| 156 | }; | 158 | }; |
| 157 | #define kconf_id_strings ((const char *) &kconf_id_strings_contents) | 159 | #define kconf_id_strings ((const char *) &kconf_id_strings_contents) |
| @@ -163,7 +165,7 @@ kconf_id_lookup (register const char *str, register unsigned int len) | |||
| 163 | { | 165 | { |
| 164 | enum | 166 | enum |
| 165 | { | 167 | { |
| 166 | TOTAL_KEYWORDS = 31, | 168 | TOTAL_KEYWORDS = 32, |
| 167 | MIN_WORD_LENGTH = 2, | 169 | MIN_WORD_LENGTH = 2, |
| 168 | MAX_WORD_LENGTH = 14, | 170 | MAX_WORD_LENGTH = 14, |
| 169 | MIN_HASH_VALUE = 2, | 171 | MIN_HASH_VALUE = 2, |
| @@ -174,7 +176,8 @@ kconf_id_lookup (register const char *str, register unsigned int len) | |||
| 174 | { | 176 | { |
| 175 | {-1}, {-1}, | 177 | {-1}, {-1}, |
| 176 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_ON, TF_PARAM}, | 178 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_ON, TF_PARAM}, |
| 177 | {-1}, {-1}, | 179 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3, T_OPT_ENV, TF_OPTION}, |
| 180 | {-1}, | ||
| 178 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_ENDIF, TF_COMMAND}, | 181 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_ENDIF, TF_COMMAND}, |
| 179 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6, T_OPTION, TF_COMMAND}, | 182 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6, T_OPTION, TF_COMMAND}, |
| 180 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_ENDMENU, TF_COMMAND}, | 183 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_ENDMENU, TF_COMMAND}, |
| @@ -185,17 +188,16 @@ kconf_id_lookup (register const char *str, register unsigned int len) | |||
| 185 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_UNKNOWN}, | 188 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_UNKNOWN}, |
| 186 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DEFAULT, TF_COMMAND, S_BOOLEAN}, | 189 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DEFAULT, TF_COMMAND, S_BOOLEAN}, |
| 187 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_HELP, TF_COMMAND}, | 190 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_HELP, TF_COMMAND}, |
| 188 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str15, T_TYPE, TF_COMMAND, S_BOOLEAN}, | 191 | {-1}, |
| 189 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16, T_CONFIG, TF_COMMAND}, | 192 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16, T_CONFIG, TF_COMMAND}, |
| 190 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_DEFAULT, TF_COMMAND, S_TRISTATE}, | 193 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_DEFAULT, TF_COMMAND, S_TRISTATE}, |
| 191 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_TYPE, TF_COMMAND, S_BOOLEAN}, | 194 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_TYPE, TF_COMMAND, S_HEX}, |
| 192 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str19, T_OPT_DEFCONFIG_LIST,TF_OPTION}, | 195 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str19, T_OPT_DEFCONFIG_LIST,TF_OPTION}, |
| 193 | {-1}, | 196 | {-1}, |
| 194 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_TYPE, TF_COMMAND, S_STRING}, | 197 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_TYPE, TF_COMMAND, S_STRING}, |
| 195 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_IF, TF_COMMAND|TF_PARAM}, | 198 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_IF, TF_COMMAND|TF_PARAM}, |
| 196 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_TYPE, TF_COMMAND, S_INT}, | 199 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_TYPE, TF_COMMAND, S_INT}, |
| 197 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str24, T_SELECT, TF_COMMAND}, | 200 | {-1}, {-1}, |
| 198 | {-1}, | ||
| 199 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26, T_SELECT, TF_COMMAND}, | 201 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26, T_SELECT, TF_COMMAND}, |
| 200 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION}, | 202 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION}, |
| 201 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_TYPE, TF_COMMAND, S_TRISTATE}, | 203 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_TYPE, TF_COMMAND, S_TRISTATE}, |
| @@ -203,13 +205,16 @@ kconf_id_lookup (register const char *str, register unsigned int len) | |||
| 203 | {-1}, | 205 | {-1}, |
| 204 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SOURCE, TF_COMMAND}, | 206 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SOURCE, TF_COMMAND}, |
| 205 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_COMMENT, TF_COMMAND}, | 207 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_COMMENT, TF_COMMAND}, |
| 206 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_TYPE, TF_COMMAND, S_HEX}, | 208 | {-1}, {-1}, |
| 207 | {-1}, | ||
| 208 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_MENUCONFIG, TF_COMMAND}, | 209 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_MENUCONFIG, TF_COMMAND}, |
| 209 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_PROMPT, TF_COMMAND}, | 210 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_PROMPT, TF_COMMAND}, |
| 210 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37, T_DEPENDS, TF_COMMAND}, | 211 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37, T_DEPENDS, TF_COMMAND}, |
| 211 | {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, | ||
| 212 | {-1}, | 212 | {-1}, |
| 213 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str39, T_TYPE, TF_COMMAND, S_BOOLEAN}, | ||
| 214 | {-1}, | ||
| 215 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41, T_SELECT, TF_COMMAND}, | ||
| 216 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42, T_TYPE, TF_COMMAND, S_BOOLEAN}, | ||
| 217 | {-1}, {-1}, {-1}, {-1}, {-1}, | ||
| 213 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str48, T_MAINMENU, TF_COMMAND} | 218 | {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str48, T_MAINMENU, TF_COMMAND} |
| 214 | }; | 219 | }; |
| 215 | 220 | ||
