diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2007-05-06 09:20:10 +0200 |
---|---|---|
committer | Sam Ravnborg <sam@ravnborg.org> | 2007-05-06 09:20:10 +0200 |
commit | 5447d34b080a1e3e312b05a91e87eff4710a1152 (patch) | |
tree | 0e232d4f5fa7116fb48ca39ce1dc8dcbdeec0187 /scripts/kconfig/symbol.c | |
parent | 04c58f8196b386948abf68128605de3d2db3c6ba (diff) |
kconfig: error out if recursive dependencies are found
Sample:
config FOO
bool "This is foo"
depends on BAR
config BAR
bool "This is bar"
depends on FOO
This will result in following error message:
error: found recursive dependency: FOO -> BAR -> FOO
And will then exit with exit code equal 1 so make will stop.
Inspired by patch from: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Adrian Bunk <bunk@stusta.de>
Cc: Roman Zippel <zippel@linux-m68k.org>
Diffstat (limited to 'scripts/kconfig/symbol.c')
-rw-r--r-- | scripts/kconfig/symbol.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c index 8f06c474d800..c35dcc5d6189 100644 --- a/scripts/kconfig/symbol.c +++ b/scripts/kconfig/symbol.c @@ -786,13 +786,15 @@ static struct symbol *sym_check_expr_deps(struct expr *e) return NULL; } +/* return NULL when dependencies are OK */ struct symbol *sym_check_deps(struct symbol *sym) { struct symbol *sym2; struct property *prop; if (sym->flags & SYMBOL_CHECK) { - printf("Warning! Found recursive dependency: %s", sym->name); + fprintf(stderr, "%s:%d:error: found recursive dependency: %s", + sym->prop->file->name, sym->prop->lineno, sym->name); return sym; } if (sym->flags & SYMBOL_CHECKED) @@ -816,13 +818,8 @@ struct symbol *sym_check_deps(struct symbol *sym) goto out; } out: - if (sym2) { - printf(" %s", sym->name); - if (sym2 == sym) { - printf("\n"); - sym2 = NULL; - } - } + if (sym2) + fprintf(stderr, " -> %s%s", sym->name, sym2 == sym? "\n": ""); sym->flags &= ~SYMBOL_CHECK; return sym2; } |