summaryrefslogtreecommitdiff
path: root/backport/kconf/kconf_id.c
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2019-08-03 23:11:03 +0200
committerHauke Mehrtens <hauke@hauke-m.de>2019-08-14 20:15:48 +0200
commit4ec72687181df4b786152747c008a688c9b9b9de (patch)
treee6d4ed3374ad6d933720affb5bf3d5b6465339f1 /backport/kconf/kconf_id.c
parent02a404089c8dc993293a675255b5aad6bb21bf67 (diff)
kconfig: Update to KConfig to version from kernel 4.17
This updates the KConfig system used in backports to the version from kernel 4.17. In kernel 4.18 some bigger changes to the KConfig system were introduced which are harder to backport, so start with using this older version. This version now generates the zconf.lex.c and zconf.tab.c files from the original sources, newer kernel versions will delete these files in a make clean, after that they are now regenerated. We do not ship them by default any more, so we need lex and yacc. The Makefile was not copied from the mainline kernel but this is written specifically for the backports project. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Cc: Anthony Wong <yp@anthonywong.net>
Diffstat (limited to 'backport/kconf/kconf_id.c')
-rw-r--r--backport/kconf/kconf_id.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/backport/kconf/kconf_id.c b/backport/kconf/kconf_id.c
new file mode 100644
index 00000000..3ea9c5f9
--- /dev/null
+++ b/backport/kconf/kconf_id.c
@@ -0,0 +1,53 @@
+
+static struct kconf_id kconf_id_array[] = {
+ { "mainmenu", T_MAINMENU, TF_COMMAND },
+ { "menu", T_MENU, TF_COMMAND },
+ { "endmenu", T_ENDMENU, TF_COMMAND },
+ { "source", T_SOURCE, TF_COMMAND },
+ { "choice", T_CHOICE, TF_COMMAND },
+ { "endchoice", T_ENDCHOICE, TF_COMMAND },
+ { "comment", T_COMMENT, TF_COMMAND },
+ { "config", T_CONFIG, TF_COMMAND },
+ { "menuconfig", T_MENUCONFIG, TF_COMMAND },
+ { "help", T_HELP, TF_COMMAND },
+ { "---help---", T_HELP, TF_COMMAND },
+ { "if", T_IF, TF_COMMAND|TF_PARAM },
+ { "endif", T_ENDIF, TF_COMMAND },
+ { "depends", T_DEPENDS, TF_COMMAND },
+ { "optional", T_OPTIONAL, TF_COMMAND },
+ { "default", T_DEFAULT, TF_COMMAND, S_UNKNOWN },
+ { "prompt", T_PROMPT, TF_COMMAND },
+ { "tristate", T_TYPE, TF_COMMAND, S_TRISTATE },
+ { "def_tristate", T_DEFAULT, TF_COMMAND, S_TRISTATE },
+ { "bool", T_TYPE, TF_COMMAND, S_BOOLEAN },
+ { "def_bool", T_DEFAULT, TF_COMMAND, S_BOOLEAN },
+ { "int", T_TYPE, TF_COMMAND, S_INT },
+ { "hex", T_TYPE, TF_COMMAND, S_HEX },
+ { "string", T_TYPE, TF_COMMAND, S_STRING },
+ { "select", T_SELECT, TF_COMMAND },
+ { "imply", T_IMPLY, TF_COMMAND },
+ { "range", T_RANGE, TF_COMMAND },
+ { "visible", T_VISIBLE, TF_COMMAND },
+ { "option", T_OPTION, TF_COMMAND },
+ { "on", T_ON, TF_PARAM },
+ { "modules", T_OPT_MODULES, TF_OPTION },
+ { "defconfig_list", T_OPT_DEFCONFIG_LIST, TF_OPTION },
+ { "env", T_OPT_ENV, TF_OPTION },
+ { "allnoconfig_y", T_OPT_ALLNOCONFIG_Y, TF_OPTION },
+};
+
+#define KCONF_ID_ARRAY_SIZE (sizeof(kconf_id_array)/sizeof(struct kconf_id))
+
+static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len)
+{
+ int i;
+
+ for (i = 0; i < KCONF_ID_ARRAY_SIZE; i++) {
+ struct kconf_id *id = kconf_id_array+i;
+ int l = strlen(id->name);
+
+ if (len == l && !memcmp(str, id->name, len))
+ return id;
+ }
+ return NULL;
+}