|
@@ -333,6 +333,27 @@ static struct symbol *sym_calc_choice(struct symbol *sym)
|
|
|
return def_sym;
|
|
|
}
|
|
|
|
|
|
+static void sym_warn_unmet_dep(struct symbol *sym)
|
|
|
+{
|
|
|
+ struct gstr gs = str_new();
|
|
|
+
|
|
|
+ str_printf(&gs,
|
|
|
+ "\nWARNING: unmet direct dependencies detected for %s\n",
|
|
|
+ sym->name);
|
|
|
+ str_printf(&gs,
|
|
|
+ " Depends on [%c]: ",
|
|
|
+ sym->dir_dep.tri == mod ? 'm' : 'n');
|
|
|
+ expr_gstr_print(sym->dir_dep.expr, &gs);
|
|
|
+ str_printf(&gs, "\n");
|
|
|
+
|
|
|
+ expr_gstr_print_revdep(sym->rev_dep.expr, &gs, yes,
|
|
|
+ " Selected by [y]:\n");
|
|
|
+ expr_gstr_print_revdep(sym->rev_dep.expr, &gs, mod,
|
|
|
+ " Selected by [m]:\n");
|
|
|
+
|
|
|
+ fputs(str_get(&gs), stderr);
|
|
|
+}
|
|
|
+
|
|
|
void sym_calc_value(struct symbol *sym)
|
|
|
{
|
|
|
struct symbol_value newval, oldval;
|
|
@@ -414,18 +435,8 @@ void sym_calc_value(struct symbol *sym)
|
|
|
}
|
|
|
}
|
|
|
calc_newval:
|
|
|
- if (sym->dir_dep.tri < sym->rev_dep.tri) {
|
|
|
- struct expr *e;
|
|
|
- e = expr_simplify_unmet_dep(sym->rev_dep.expr,
|
|
|
- sym->dir_dep.expr);
|
|
|
- fprintf(stderr, "warning: (");
|
|
|
- expr_fprint(e, stderr);
|
|
|
- fprintf(stderr, ") selects %s which has unmet direct dependencies (",
|
|
|
- sym->name);
|
|
|
- expr_fprint(sym->dir_dep.expr, stderr);
|
|
|
- fprintf(stderr, ")\n");
|
|
|
- expr_free(e);
|
|
|
- }
|
|
|
+ if (sym->dir_dep.tri < sym->rev_dep.tri)
|
|
|
+ sym_warn_unmet_dep(sym);
|
|
|
newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri);
|
|
|
}
|
|
|
if (newval.tri == mod &&
|