aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/kconfig/symbol.c
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/kconfig/symbol.c')
-rw-r--r--scripts/kconfig/symbol.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c
index 2e7a048e0cfc..174b230a52b0 100644
--- a/scripts/kconfig/symbol.c
+++ b/scripts/kconfig/symbol.c
@@ -205,6 +205,16 @@ static void sym_calc_visibility(struct symbol *sym)
205 } 205 }
206 if (sym_is_choice_value(sym)) 206 if (sym_is_choice_value(sym))
207 return; 207 return;
208 /* defaulting to "yes" if no explicit "depends on" are given */
209 tri = yes;
210 if (sym->dir_dep.expr)
211 tri = expr_calc_value(sym->dir_dep.expr);
212 if (tri == mod)
213 tri = yes;
214 if (sym->dir_dep.tri != tri) {
215 sym->dir_dep.tri = tri;
216 sym_set_changed(sym);
217 }
208 tri = no; 218 tri = no;
209 if (sym->rev_dep.expr) 219 if (sym->rev_dep.expr)
210 tri = expr_calc_value(sym->rev_dep.expr); 220 tri = expr_calc_value(sym->rev_dep.expr);
@@ -321,6 +331,14 @@ void sym_calc_value(struct symbol *sym)
321 } 331 }
322 } 332 }
323 calc_newval: 333 calc_newval:
334 if (sym->dir_dep.tri == no && sym->rev_dep.tri != no) {
335 fprintf(stderr, "warning: (");
336 expr_fprint(sym->rev_dep.expr, stderr);
337 fprintf(stderr, ") selects %s which has unmet direct dependencies (",
338 sym->name);
339 expr_fprint(sym->dir_dep.expr, stderr);
340 fprintf(stderr, ")\n");
341 }
324 newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri); 342 newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri);
325 } 343 }
326 if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN) 344 if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN)