From: Sergey Senozhatsky To: Masahiro Yamada Cc: Patrick Georgi , linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, Sergey Senozhatsky , Stefan Reinauer Subject: [PATCH] kconfig: WERROR unmet symbol dependency Date: Wed, 22 Nov 2023 12:47:45 +0900 Message-ID: <20231122034753.1446513-1-senozhatsky@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When KCONFIG_WERROR env variable is set treat unmet direct symbol dependency as a terminal condition (error). Suggested-by: Stefan Reinauer Signed-off-by: Sergey Senozhatsky --- scripts/kconfig/symbol.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) Index: kconfig/symbol.c =================================================================== --- kconfig.orig/symbol.c +++ kconfig/symbol.c @@ -37,6 +37,7 @@ static struct symbol symbol_empty = { struct symbol *modules_sym; static tristate modules_val; +static int sym_warnings; enum symbol_type sym_get_type(struct symbol *sym) { @@ -319,12 +320,14 @@ static void sym_warn_unmet_dep(struct sy " Selected by [m]:\n"); fputs(str_get(&gs), stderr); + sym_warnings++; } void sym_calc_value(struct symbol *sym) { struct symbol_value newval, oldval; struct property *prop; + const char *werror; struct expr *e; if (!sym) @@ -340,8 +343,9 @@ 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; switch (sym->type) { @@ -432,6 +436,9 @@ 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);