| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0 |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org> |
|---|
| 3 | | - * Released under the terms of the GNU GPL v2.0. |
|---|
| 4 | 4 | */ |
|---|
| 5 | 5 | |
|---|
| 6 | 6 | #include <ctype.h> |
|---|
| .. | .. |
|---|
| 15 | 15 | .name = "y", |
|---|
| 16 | 16 | .curr = { "y", yes }, |
|---|
| 17 | 17 | .flags = SYMBOL_CONST|SYMBOL_VALID, |
|---|
| 18 | | -}, symbol_mod = { |
|---|
| 18 | +}; |
|---|
| 19 | + |
|---|
| 20 | +struct symbol symbol_mod = { |
|---|
| 19 | 21 | .name = "m", |
|---|
| 20 | 22 | .curr = { "m", mod }, |
|---|
| 21 | 23 | .flags = SYMBOL_CONST|SYMBOL_VALID, |
|---|
| 22 | | -}, symbol_no = { |
|---|
| 24 | +}; |
|---|
| 25 | + |
|---|
| 26 | +struct symbol symbol_no = { |
|---|
| 23 | 27 | .name = "n", |
|---|
| 24 | 28 | .curr = { "n", no }, |
|---|
| 25 | 29 | .flags = SYMBOL_CONST|SYMBOL_VALID, |
|---|
| 26 | | -}, symbol_empty = { |
|---|
| 30 | +}; |
|---|
| 31 | + |
|---|
| 32 | +static struct symbol symbol_empty = { |
|---|
| 27 | 33 | .name = "", |
|---|
| 28 | 34 | .curr = { "", no }, |
|---|
| 29 | 35 | .flags = SYMBOL_VALID, |
|---|
| .. | .. |
|---|
| 31 | 37 | |
|---|
| 32 | 38 | struct symbol *sym_defconfig_list; |
|---|
| 33 | 39 | struct symbol *modules_sym; |
|---|
| 34 | | -tristate modules_val; |
|---|
| 40 | +static tristate modules_val; |
|---|
| 35 | 41 | |
|---|
| 36 | 42 | enum symbol_type sym_get_type(struct symbol *sym) |
|---|
| 37 | 43 | { |
|---|
| .. | .. |
|---|
| 61 | 67 | return "string"; |
|---|
| 62 | 68 | case S_UNKNOWN: |
|---|
| 63 | 69 | return "unknown"; |
|---|
| 64 | | - case S_OTHER: |
|---|
| 65 | | - break; |
|---|
| 66 | 70 | } |
|---|
| 67 | 71 | return "???"; |
|---|
| 68 | 72 | } |
|---|
| .. | .. |
|---|
| 88 | 92 | return NULL; |
|---|
| 89 | 93 | } |
|---|
| 90 | 94 | |
|---|
| 91 | | -static struct property *sym_get_range_prop(struct symbol *sym) |
|---|
| 95 | +struct property *sym_get_range_prop(struct symbol *sym) |
|---|
| 92 | 96 | { |
|---|
| 93 | 97 | struct property *prop; |
|---|
| 94 | 98 | |
|---|
| .. | .. |
|---|
| 223 | 227 | sym_set_changed(sym); |
|---|
| 224 | 228 | } |
|---|
| 225 | 229 | tri = no; |
|---|
| 226 | | - if (sym->implied.expr && sym->dir_dep.tri != no) |
|---|
| 230 | + if (sym->implied.expr) |
|---|
| 227 | 231 | tri = expr_calc_value(sym->implied.expr); |
|---|
| 228 | 232 | if (tri == mod && sym_get_type(sym) == S_BOOLEAN) |
|---|
| 229 | 233 | tri = yes; |
|---|
| .. | .. |
|---|
| 396 | 400 | if (sym->implied.tri != no) { |
|---|
| 397 | 401 | sym->flags |= SYMBOL_WRITE; |
|---|
| 398 | 402 | newval.tri = EXPR_OR(newval.tri, sym->implied.tri); |
|---|
| 403 | + newval.tri = EXPR_AND(newval.tri, |
|---|
| 404 | + sym->dir_dep.tri); |
|---|
| 399 | 405 | } |
|---|
| 400 | 406 | } |
|---|
| 401 | 407 | calc_newval: |
|---|
| .. | .. |
|---|
| 403 | 409 | sym_warn_unmet_dep(sym); |
|---|
| 404 | 410 | newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri); |
|---|
| 405 | 411 | } |
|---|
| 406 | | - if (newval.tri == mod && |
|---|
| 407 | | - (sym_get_type(sym) == S_BOOLEAN || sym->implied.tri == yes)) |
|---|
| 412 | + if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN) |
|---|
| 408 | 413 | newval.tri = yes; |
|---|
| 409 | 414 | break; |
|---|
| 410 | 415 | case S_STRING: |
|---|
| .. | .. |
|---|
| 485 | 490 | if (type == S_BOOLEAN && val == mod) |
|---|
| 486 | 491 | return false; |
|---|
| 487 | 492 | if (sym->visible <= sym->rev_dep.tri) |
|---|
| 488 | | - return false; |
|---|
| 489 | | - if (sym->implied.tri == yes && val == mod) |
|---|
| 490 | 493 | return false; |
|---|
| 491 | 494 | if (sym_is_choice_value(sym) && sym->visible == yes) |
|---|
| 492 | 495 | return val == yes; |
|---|
| .. | .. |
|---|
| 757 | 760 | return str; |
|---|
| 758 | 761 | case S_STRING: |
|---|
| 759 | 762 | return str; |
|---|
| 760 | | - case S_OTHER: |
|---|
| 761 | 763 | case S_UNKNOWN: |
|---|
| 762 | 764 | break; |
|---|
| 763 | 765 | } |
|---|
| .. | .. |
|---|
| 788 | 790 | return (const char *)sym->curr.val; |
|---|
| 789 | 791 | } |
|---|
| 790 | 792 | |
|---|
| 791 | | -bool sym_is_changable(struct symbol *sym) |
|---|
| 793 | +bool sym_is_changeable(struct symbol *sym) |
|---|
| 792 | 794 | { |
|---|
| 793 | 795 | return sym->visible > sym->rev_dep.tri; |
|---|
| 794 | 796 | } |
|---|
| .. | .. |
|---|
| 835 | 837 | memset(symbol, 0, sizeof(*symbol)); |
|---|
| 836 | 838 | symbol->name = new_name; |
|---|
| 837 | 839 | symbol->type = S_UNKNOWN; |
|---|
| 838 | | - symbol->flags |= flags; |
|---|
| 840 | + symbol->flags = flags; |
|---|
| 839 | 841 | |
|---|
| 840 | 842 | symbol->next = symbol_hash[hash]; |
|---|
| 841 | 843 | symbol_hash[hash] = symbol; |
|---|
| .. | .. |
|---|
| 1117 | 1119 | } |
|---|
| 1118 | 1120 | |
|---|
| 1119 | 1121 | fprintf(stderr, |
|---|
| 1120 | | - "For a resolution refer to Documentation/kbuild/kconfig-language.txt\n" |
|---|
| 1122 | + "For a resolution refer to Documentation/kbuild/kconfig-language.rst\n" |
|---|
| 1121 | 1123 | "subsection \"Kconfig recursive dependency limitations\"\n" |
|---|
| 1122 | 1124 | "\n"); |
|---|
| 1123 | 1125 | |
|---|
| .. | .. |
|---|
| 1274 | 1276 | } |
|---|
| 1275 | 1277 | |
|---|
| 1276 | 1278 | return sym2; |
|---|
| 1277 | | -} |
|---|
| 1278 | | - |
|---|
| 1279 | | -struct property *prop_alloc(enum prop_type type, struct symbol *sym) |
|---|
| 1280 | | -{ |
|---|
| 1281 | | - struct property *prop; |
|---|
| 1282 | | - struct property **propp; |
|---|
| 1283 | | - |
|---|
| 1284 | | - prop = xmalloc(sizeof(*prop)); |
|---|
| 1285 | | - memset(prop, 0, sizeof(*prop)); |
|---|
| 1286 | | - prop->type = type; |
|---|
| 1287 | | - prop->sym = sym; |
|---|
| 1288 | | - prop->file = current_file; |
|---|
| 1289 | | - prop->lineno = zconf_lineno(); |
|---|
| 1290 | | - |
|---|
| 1291 | | - /* append property to the prop list of symbol */ |
|---|
| 1292 | | - if (sym) { |
|---|
| 1293 | | - for (propp = &sym->prop; *propp; propp = &(*propp)->next) |
|---|
| 1294 | | - ; |
|---|
| 1295 | | - *propp = prop; |
|---|
| 1296 | | - } |
|---|
| 1297 | | - |
|---|
| 1298 | | - return prop; |
|---|
| 1299 | 1279 | } |
|---|
| 1300 | 1280 | |
|---|
| 1301 | 1281 | struct symbol *prop_get_symbol(struct property *prop) |
|---|