From: Michael Olbrich Date: Mon, 1 Nov 2010 19:49:21 +0100 Subject: [PATCH] conf: add an option to output the dependency information Signed-off-by: Michael Olbrich --- scripts/kconfig/conf.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index 866369f10ff8..46c6e1bb5910 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c @@ -35,6 +35,7 @@ enum input_mode { savedefconfig, listnewconfig, olddefconfig, + writedepend, } input_mode = oldaskconfig; static int indent = 1; @@ -447,6 +448,36 @@ static void check_conf(struct menu *menu) check_conf(child); } +static void create_dep_output() +{ + int i; + bool hit; + struct symbol *sym; + struct property *prop; + + for_all_symbols(i, sym) { + if ((sym_get_tristate_value(sym) == no) || !sym->name) + continue; + + hit = 0; + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->type == P_SELECT && expr_calc_value(prop->visible.expr)) { + hit=1; + break; + } + } + if (!hit) + continue; + printf("DEP:%s", sym->name); + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->type == P_SELECT && expr_calc_value(prop->visible.expr)) { + printf(":%s", prop->expr->left.sym->name); + } + } + printf("\n"); + } +} + static struct option long_opts[] = { {"oldaskconfig", no_argument, NULL, oldaskconfig}, {"oldconfig", no_argument, NULL, oldconfig}, @@ -466,6 +497,7 @@ static struct option long_opts[] = { * value but not 'n') with the counter-intuitive name. */ {"oldnoconfig", no_argument, NULL, olddefconfig}, + {"writedepend", no_argument, NULL, writedepend}, {NULL, 0, NULL, 0} }; @@ -495,6 +527,7 @@ int main(int ac, char **av) int opt; const char *name, *defconfig_file = NULL /* gcc uninit */; struct stat tmpstat; + int dep_output = 0; setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); @@ -507,6 +540,10 @@ int main(int ac, char **av) conf_set_message_callback(NULL); continue; } + if (opt == writedepend) { + dep_output = 1; + continue; + } input_mode = (enum input_mode)opt; switch (opt) { case silentoldconfig: @@ -710,6 +747,10 @@ int main(int ac, char **av) exit(1); } } + + if (dep_output) + create_dep_output(); + return 0; }