diff options
author | Arnaud Lacombe <lacombar@gmail.com> | 2010-09-26 16:24:08 -0400 |
---|---|---|
committer | Michal Marek <mmarek@suse.cz> | 2010-12-21 11:59:14 -0500 |
commit | 1137c56b7420c801147e0863845c03b07554721a (patch) | |
tree | 73f1decaebc5a2825e04b30569b0a97595397360 /scripts/kconfig/symbol.c | |
parent | ab60bd0b92ec57c98df08616b7d0664be5551eae (diff) |
kconfig: simplify select-with-unmet-direct-dependency warning
This is an attempt to simplify the expressing printed by kconfig when a
symbol is selected but still has direct unmet dependency.
First, the symbol reverse dependency is split in sub-expression. Then,
each sub-expression is checked to ensure that it does not contains the
unmet dependency. This removes the false-positive symbols and fixed symbol
which already have the correct dependency. Finally, only the symbol
responsible of the "select" is printed, instead of its full dependency tree.
CC: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
Signed-off-by: Michal Marek <mmarek@suse.cz>
Diffstat (limited to 'scripts/kconfig/symbol.c')
-rw-r--r-- | scripts/kconfig/symbol.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c index 60830ce4a0a9..fa52e6f44ac4 100644 --- a/scripts/kconfig/symbol.c +++ b/scripts/kconfig/symbol.c | |||
@@ -351,12 +351,16 @@ void sym_calc_value(struct symbol *sym) | |||
351 | } | 351 | } |
352 | calc_newval: | 352 | calc_newval: |
353 | if (sym->dir_dep.tri == no && sym->rev_dep.tri != no) { | 353 | if (sym->dir_dep.tri == no && sym->rev_dep.tri != no) { |
354 | struct expr *e; | ||
355 | e = expr_simplify_unmet_dep(sym->rev_dep.expr, | ||
356 | sym->dir_dep.expr); | ||
354 | fprintf(stderr, "warning: ("); | 357 | fprintf(stderr, "warning: ("); |
355 | expr_fprint(sym->rev_dep.expr, stderr); | 358 | expr_fprint(e, stderr); |
356 | fprintf(stderr, ") selects %s which has unmet direct dependencies (", | 359 | fprintf(stderr, ") selects %s which has unmet direct dependencies (", |
357 | sym->name); | 360 | sym->name); |
358 | expr_fprint(sym->dir_dep.expr, stderr); | 361 | expr_fprint(sym->dir_dep.expr, stderr); |
359 | fprintf(stderr, ")\n"); | 362 | fprintf(stderr, ")\n"); |
363 | expr_free(e); | ||
360 | } | 364 | } |
361 | newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri); | 365 | newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri); |
362 | } | 366 | } |