kconfig/zconf.hash.c
author "Benoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>
Thu Jul 28 22:09:31 2011 +0200 (2011-07-28)
changeset 2573 424fa2092ace
parent 943 1cca90ce0481
permissions -rw-r--r--
scripts/libc: do not build add-ons by default

Currently, no --enable-add-ons option is passed to libc configure when
"$(do_libc_add_ons_list ,)" is empty, which makes configure automatically search
for present add-ons. In that case, all present add-ons are built, although
no add-on was selected by the user in the config. Moreover, this can make the
configure fail if some non-standard add-ons like eglibc-localedef are present.

This behavior also leads to an inconsistency from a user point of view between
the following cases:
- LIBC_ADDONS_LIST="", LIBC_GLIBC_USE_PORTS=n and THREADS="none" in the config,
which makes "$(do_libc_add_ons_list ,)" return "", so all present add-ons
are built.
- LIBC_ADDONS_LIST="", LIBC_GLIBC_USE_PORTS=n and THREADS!="none" in the
config, which makes "$(do_libc_add_ons_list ,)" return the add-on supporting
the chosen threading implementation, e.g. "nptl", so only this add-on is
built.

This patch disables the building of all add-ons in that case.

It is still possible to build all present add-ons by adding --enable-add-ons to
LIBC_GLIBC_EXTRA_CONFIG_ARRAY.

Signed-off-by: "Benoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>
     1 /* ANSI-C code produced by gperf version 3.0.3 */
     2 /* Command-line: gperf  */
     3 /* Computed positions: -k'1,3' */
     4 
     5 #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
     6       && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
     7       && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
     8       && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
     9       && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
    10       && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
    11       && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
    12       && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
    13       && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
    14       && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
    15       && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
    16       && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
    17       && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
    18       && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
    19       && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
    20       && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
    21       && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
    22       && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
    23       && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
    24       && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
    25       && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
    26       && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
    27       && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
    28 /* The character set is not based on ISO-646.  */
    29 #error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
    30 #endif
    31 
    32 struct kconf_id;
    33 
    34 static struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
    35 /* maximum key range = 50, duplicates = 0 */
    36 
    37 #ifdef __GNUC__
    38 __inline
    39 #else
    40 #ifdef __cplusplus
    41 inline
    42 #endif
    43 #endif
    44 static unsigned int
    45 kconf_id_hash (register const char *str, register unsigned int len)
    46 {
    47   static unsigned char asso_values[] =
    48     {
    49       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    50       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    51       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    52       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    53       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    54       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    55       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    56       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    57       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    58       52, 52, 52, 52, 52, 52, 52, 52, 40,  5,
    59        0,  0,  5, 52,  0, 20, 52, 52, 10, 20,
    60        5,  0, 35, 52,  0, 30,  0, 15,  0, 52,
    61       15, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    62       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    63       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    64       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    65       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    66       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    67       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    68       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    69       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    70       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    71       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    72       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    73       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    74       52, 52, 52, 52, 52, 52
    75     };
    76   register int hval = len;
    77 
    78   switch (hval)
    79     {
    80       default:
    81         hval += asso_values[(unsigned char)str[2]];
    82       /*FALLTHROUGH*/
    83       case 2:
    84       case 1:
    85         hval += asso_values[(unsigned char)str[0]];
    86         break;
    87     }
    88   return hval;
    89 }
    90 
    91 struct kconf_id_strings_t
    92   {
    93     char kconf_id_strings_str2[sizeof("on")];
    94     char kconf_id_strings_str3[sizeof("env")];
    95     char kconf_id_strings_str5[sizeof("endif")];
    96     char kconf_id_strings_str6[sizeof("option")];
    97     char kconf_id_strings_str7[sizeof("endmenu")];
    98     char kconf_id_strings_str8[sizeof("optional")];
    99     char kconf_id_strings_str9[sizeof("endchoice")];
   100     char kconf_id_strings_str10[sizeof("range")];
   101     char kconf_id_strings_str11[sizeof("choice")];
   102     char kconf_id_strings_str12[sizeof("default")];
   103     char kconf_id_strings_str13[sizeof("def_bool")];
   104     char kconf_id_strings_str14[sizeof("help")];
   105     char kconf_id_strings_str16[sizeof("config")];
   106     char kconf_id_strings_str17[sizeof("def_tristate")];
   107     char kconf_id_strings_str18[sizeof("hex")];
   108     char kconf_id_strings_str19[sizeof("defconfig_list")];
   109     char kconf_id_strings_str22[sizeof("if")];
   110     char kconf_id_strings_str23[sizeof("int")];
   111     char kconf_id_strings_str27[sizeof("modules")];
   112     char kconf_id_strings_str28[sizeof("tristate")];
   113     char kconf_id_strings_str29[sizeof("menu")];
   114     char kconf_id_strings_str32[sizeof("comment")];
   115     char kconf_id_strings_str35[sizeof("menuconfig")];
   116     char kconf_id_strings_str36[sizeof("string")];
   117     char kconf_id_strings_str37[sizeof("visible")];
   118     char kconf_id_strings_str41[sizeof("prompt")];
   119     char kconf_id_strings_str42[sizeof("depends")];
   120     char kconf_id_strings_str44[sizeof("bool")];
   121     char kconf_id_strings_str46[sizeof("select")];
   122     char kconf_id_strings_str47[sizeof("boolean")];
   123     char kconf_id_strings_str48[sizeof("mainmenu")];
   124     char kconf_id_strings_str51[sizeof("source")];
   125   };
   126 static struct kconf_id_strings_t kconf_id_strings_contents =
   127   {
   128     "on",
   129     "env",
   130     "endif",
   131     "option",
   132     "endmenu",
   133     "optional",
   134     "endchoice",
   135     "range",
   136     "choice",
   137     "default",
   138     "def_bool",
   139     "help",
   140     "config",
   141     "def_tristate",
   142     "hex",
   143     "defconfig_list",
   144     "if",
   145     "int",
   146     "modules",
   147     "tristate",
   148     "menu",
   149     "comment",
   150     "menuconfig",
   151     "string",
   152     "visible",
   153     "prompt",
   154     "depends",
   155     "bool",
   156     "select",
   157     "boolean",
   158     "mainmenu",
   159     "source"
   160   };
   161 #define kconf_id_strings ((const char *) &kconf_id_strings_contents)
   162 #ifdef __GNUC__
   163 __inline
   164 #ifdef __GNUC_STDC_INLINE__
   165 __attribute__ ((__gnu_inline__))
   166 #endif
   167 #endif
   168 struct kconf_id *
   169 kconf_id_lookup (register const char *str, register unsigned int len)
   170 {
   171   enum
   172     {
   173       TOTAL_KEYWORDS = 32,
   174       MIN_WORD_LENGTH = 2,
   175       MAX_WORD_LENGTH = 14,
   176       MIN_HASH_VALUE = 2,
   177       MAX_HASH_VALUE = 51
   178     };
   179 
   180   static struct kconf_id wordlist[] =
   181     {
   182       {-1}, {-1},
   183       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2,		T_ON,		TF_PARAM},
   184       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3,		T_OPT_ENV,	TF_OPTION},
   185       {-1},
   186       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5,		T_ENDIF,	TF_COMMAND},
   187       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6,		T_OPTION,	TF_COMMAND},
   188       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7,	T_ENDMENU,	TF_COMMAND},
   189       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8,	T_OPTIONAL,	TF_COMMAND},
   190       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9,	T_ENDCHOICE,	TF_COMMAND},
   191       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str10,		T_RANGE,	TF_COMMAND},
   192       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str11,		T_CHOICE,	TF_COMMAND},
   193       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12,	T_DEFAULT,	TF_COMMAND, S_UNKNOWN},
   194       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13,	T_DEFAULT,	TF_COMMAND, S_BOOLEAN},
   195       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14,		T_HELP,		TF_COMMAND},
   196       {-1},
   197       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16,		T_CONFIG,	TF_COMMAND},
   198       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17,	T_DEFAULT,	TF_COMMAND, S_TRISTATE},
   199       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18,		T_TYPE,		TF_COMMAND, S_HEX},
   200       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str19,	T_OPT_DEFCONFIG_LIST,TF_OPTION},
   201       {-1}, {-1},
   202       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22,		T_IF,		TF_COMMAND|TF_PARAM},
   203       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23,		T_TYPE,		TF_COMMAND, S_INT},
   204       {-1}, {-1}, {-1},
   205       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27,	T_OPT_MODULES,	TF_OPTION},
   206       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28,	T_TYPE,		TF_COMMAND, S_TRISTATE},
   207       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29,		T_MENU,		TF_COMMAND},
   208       {-1}, {-1},
   209       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32,	T_COMMENT,	TF_COMMAND},
   210       {-1}, {-1},
   211       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35,	T_MENUCONFIG,	TF_COMMAND},
   212       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36,		T_TYPE,		TF_COMMAND, S_STRING},
   213       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37,	T_VISIBLE,	TF_COMMAND},
   214       {-1}, {-1}, {-1},
   215       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41,		T_PROMPT,	TF_COMMAND},
   216       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42,	T_DEPENDS,	TF_COMMAND},
   217       {-1},
   218       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str44,		T_TYPE,		TF_COMMAND, S_BOOLEAN},
   219       {-1},
   220       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46,		T_SELECT,	TF_COMMAND},
   221       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str47,	T_TYPE,		TF_COMMAND, S_BOOLEAN},
   222       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str48,	T_MAINMENU,	TF_COMMAND},
   223       {-1}, {-1},
   224       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str51,		T_SOURCE,	TF_COMMAND}
   225     };
   226 
   227   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
   228     {
   229       register int key = kconf_id_hash (str, len);
   230 
   231       if (key <= MAX_HASH_VALUE && key >= 0)
   232         {
   233           register int o = wordlist[key].name;
   234           if (o >= 0)
   235             {
   236               register const char *s = o + kconf_id_strings;
   237 
   238               if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
   239                 return &wordlist[key];
   240             }
   241         }
   242     }
   243   return 0;
   244 }
   245