From 3b4fbaa22233e764f6b94effd1b21c494061d32c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Sun, 22 Mar 2015 22:05:56 +0100 Subject: kconfig_parser: Fix rev_dep and implement verbose level output After this fix, generated dependency should be all right. Verbose output implementation is only temporally. It needs better implementation. And command line arguments should be parsed with argp. --- programs/src/kconfig_parser/kconfig_parser.c | 44 +++++++++++++++++++--------- 1 file changed, 30 insertions(+), 14 deletions(-) (limited to 'programs/src/kconfig_parser/kconfig_parser.c') diff --git a/programs/src/kconfig_parser/kconfig_parser.c b/programs/src/kconfig_parser/kconfig_parser.c index c4ee358..ef49551 100644 --- a/programs/src/kconfig_parser/kconfig_parser.c +++ b/programs/src/kconfig_parser/kconfig_parser.c @@ -10,9 +10,14 @@ #include #include #include +#include #include "kconfig/lkc.h" #include "symlist.h" #include "output.h" +#include "macros.h" + +int verbose_level; +char *file; struct symlist *gsymlist; int noname_num; @@ -21,12 +26,22 @@ void build_symlist(); void cpy_dep(); int main(int argc, char **argv) { + // TODO argp + verbose_level = 1; + int i; + for (i = 0; i < argc; i++) { + if (!strcmp(argv[i], "-v")) + verbose_level++; + else if (file == NULL) + file = argv[i]; + } + if (argc < 2) { - printf("No input file specified\n"); + Eprintf("No input file specified\n"); exit(1); } if (argc < 3) { - printf("No output folder specified\n"); + Eprintf("No output folder specified\n"); exit(2); } @@ -73,23 +88,24 @@ void cpy_dep() { for_all_symbols(i, sym) { if ((sym->type == S_BOOLEAN || sym->type == S_TRISTATE) && strstr(sym->name, "NONAMEGEN") == NULL) { - printf("working: %s\n", sym->name); + Iprintf("working: %s\n", sym->name); el = symlist_find(gsymlist, sym->name); if (sym->dir_dep.expr != NULL) { - printf_original(gsymlist, sym->dir_dep.expr); - printf("Direct:\n"); - el->be = kconfig_cnfexpr(gsymlist, sym->dir_dep.expr); - cnf_printf(el->be); + if (verbose_level > 2) + printf_original(gsymlist, sym->dir_dep.expr); + el->be = kconfig_cnfexpr(gsymlist, false, sym->dir_dep.expr); + Iprintf("Direct:\n"); + if (verbose_level > 2) + cnf_printf(el->be); } if (sym->rev_dep.expr != NULL) { - if (!strcmp(sym->name, "CRC32")) - continue; - printf_original(gsymlist, sym->rev_dep.expr); - printf("Revers:\n"); - el->re_be = kconfig_cnfexpr(gsymlist, sym->rev_dep.expr); - cnf_printf(el->re_be); - el->re_be = kconfig_cnfexpr(gsymlist, sym->rev_dep.expr); + if (verbose_level > 2) + printf_original(gsymlist, sym->rev_dep.expr); + el->re_be = kconfig_cnfexpr(gsymlist, true, sym->rev_dep.expr); + Iprintf("Revers:\n"); + if (verbose_level > 2) + cnf_printf(el->re_be); } } } -- cgit v1.2.3