diff options
author | Patrick Georgi <patrick@coreboot.org> | 2024-03-13 13:01:21 +0100 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2024-04-03 12:28:04 +0000 |
commit | 7761237dfe0c509fa4cae255b20fa4b1278cbca1 (patch) | |
tree | 949e8eafd32fd4bfb2a518f7cce4344ddf3c25e3 /util/kconfig/symbol.c | |
parent | 96499840aa3f5376ae8cfa1cefb6fd98800019a9 (diff) |
util/kconfig: Uprev to Linux 6.8's kconfig
Linux kconfig has its own implementation of KCONFIG_WERROR now, so use
that. This reduces our patch count by 2.
Change-Id: I4f5f1f552e96f8ef7a4c5c0ab2ab7e2b6d798ceb
Signed-off-by: Patrick Georgi <patrick@georgi.software>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/81223
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'util/kconfig/symbol.c')
-rw-r--r-- | util/kconfig/symbol.c | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/util/kconfig/symbol.c b/util/kconfig/symbol.c index 77de8ee347..3afe5be2d4 100644 --- a/util/kconfig/symbol.c +++ b/util/kconfig/symbol.c @@ -29,12 +29,6 @@ struct symbol symbol_no = { .flags = SYMBOL_CONST|SYMBOL_VALID, }; -static struct symbol symbol_empty = { - .name = "", - .curr = { "", no }, - .flags = SYMBOL_VALID, -}; - struct symbol *modules_sym; static tristate modules_val; static int sym_warnings; @@ -321,11 +315,17 @@ static void sym_warn_unmet_dep(struct symbol *sym) sym_warnings++; } +bool sym_dep_errors(void) +{ + if (sym_warnings) + return getenv("KCONFIG_WERROR"); + return false; +} + void sym_calc_value(struct symbol *sym) { struct symbol_value newval, oldval; struct property *prop; - const char *werror; struct expr *e; if (!sym) @@ -341,20 +341,25 @@ void sym_calc_value(struct symbol *sym) sym_calc_value(prop_get_symbol(prop)); } - werror = getenv("KCONFIG_WERROR"); - sym_warnings = 0; sym->flags |= SYMBOL_VALID; + oldval = sym->curr; + newval.tri = no; + switch (sym->type) { case S_INT: + newval.val = "0"; + break; case S_HEX: + newval.val = "0x0"; + break; case S_STRING: - newval = symbol_empty.curr; + newval.val = ""; break; case S_BOOLEAN: case S_TRISTATE: - newval = symbol_no.curr; + newval.val = "n"; break; default: sym->curr.val = sym->name; @@ -434,9 +439,6 @@ void sym_calc_value(struct symbol *sym) ; } - if (sym_warnings && werror) - exit(1); - sym->curr = newval; if (sym_is_choice(sym) && newval.tri == yes) sym->curr.val = sym_calc_choice(sym); @@ -704,13 +706,12 @@ const char *sym_get_string_default(struct symbol *sym) { struct property *prop; struct symbol *ds; - const char *str; + const char *str = ""; tristate val; sym_calc_visibility(sym); sym_calc_value(modules_sym); val = symbol_no.curr.tri; - str = symbol_empty.curr.val; /* If symbol has a default value look it up */ prop = sym_get_default_prop(sym); @@ -760,14 +761,17 @@ const char *sym_get_string_default(struct symbol *sym) case yes: return "y"; } case S_INT: + if (!str[0]) + str = "0"; + break; case S_HEX: - return str; - case S_STRING: - return str; - case S_UNKNOWN: + if (!str[0]) + str = "0x0"; + break; + default: break; } - return ""; + return str; } const char *sym_get_string_value(struct symbol *sym) |