diff options
Diffstat (limited to 'util/kconfig/confdata.c')
-rw-r--r-- | util/kconfig/confdata.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/util/kconfig/confdata.c b/util/kconfig/confdata.c index b5c6da3453b8..a6ee708b4b9f 100644 --- a/util/kconfig/confdata.c +++ b/util/kconfig/confdata.c @@ -370,7 +370,11 @@ int conf_read_simple(const char *name, int def) char *p, *p2; struct symbol *sym; int i, def_flags; + const char *warn_unknown; + const char *werror; + warn_unknown = getenv("KCONFIG_WARN_UNKNOWN_SYMBOLS"); + werror = getenv("KCONFIG_WERROR"); if (name) { in = zconf_fopen(name); } else { @@ -458,9 +462,10 @@ load: if (def == S_DEF_USER) { sym = sym_find(line + 2 + strlen(CONFIG_)); if (!sym) { - conf_message( - "ignoring nonexistent symbol %s", - line + 2 + strlen(CONFIG_)); + if (warn_unknown) + conf_warning("unknown symbol: %s", + line + 2 + strlen(CONFIG_)); + conf_set_changed(true); continue; } @@ -495,7 +500,7 @@ load: sym = sym_find(line + strlen(CONFIG_)); if (!sym) { - if (def == S_DEF_AUTO) + if (def == S_DEF_AUTO) { /* * Reading from include/config/auto.conf * If CONFIG_FOO previously existed in @@ -503,8 +508,13 @@ load: * include/config/FOO must be touched. */ conf_touch_dep(line + strlen(CONFIG_)); - else + } else { + if (warn_unknown) + conf_warning("unknown symbol: %s", + line + strlen(CONFIG_)); + conf_set_changed(true); + } continue; } @@ -544,7 +554,10 @@ load: free(line); fclose(in); - kconfig_warnings += conf_warnings; + if (conf_warnings && werror) { + fprintf(stderr, "\nERROR: %d warnings encountered, and warnings are errors.\n\n", conf_warnings); + exit(1); + } return 0; } |