]> rtime.felk.cvut.cz Git - linux-conf-perf.git/commitdiff
kconfig2dot: Few fixes + added TODO (rev_dep)
authorMichal Sojka <sojkam1@fel.cvut.cz>
Sat, 10 Oct 2015 21:54:58 +0000 (23:54 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Sat, 10 Oct 2015 21:54:58 +0000 (23:54 +0200)
scripts/kconfig2dot/kconfig2dot.c

index 9e49e605e1b06da27ca7c1ad39990bec352092b5..1b1d1e42e3da4651192223f36c18cca42e5298f6 100644 (file)
@@ -115,7 +115,6 @@ void print_expr(FILE *f, struct expr *e, const char *parent, const char *suffix,
     if (e) {
        switch (e->type) {
        case E_NONE:
-           printf("NONE\n");
            break;
        case E_OR:
            print_oper(f, e, parent, "|");
@@ -137,7 +136,7 @@ void print_expr(FILE *f, struct expr *e, const char *parent, const char *suffix,
            break;
        case E_SYMBOL: {
            if (e->left.sym->name) {
-               fprintf(f, "\"%s\" -> \"%s\" [%s]\n", parent, e->left.sym->name, edge_opts);
+               fprintf(f, "\"%s\" -> \"%s\" [%s];\n", parent, e->left.sym->name, edge_opts);
                print_symbol(f, e->left.sym);
            }
            break;
@@ -161,6 +160,11 @@ void print_symbol(FILE *f, struct symbol *sym)
        opts = " [color=blue,fontcolor=blue]";
     fprintf(f, "\"%s\"%s;\n", sym->name, opts);
     print_expr(f, sym->dir_dep.expr, sym->name, "", "");
+    if (sym->rev_dep.expr) {
+       // TODO: revese dependencies
+       // printf("REVDEP %s: %s\n", sym->name, sym->rev_dep.expr->id);
+       // print_expr(f, sym->rev_dep.expr, sym->name, "", "color=green");
+    }
 }
 
 
@@ -178,7 +182,6 @@ void generate_expr_id(struct expr *e)
     if (e) {
        switch (e->type) {
        case E_NONE:
-           printf("NONE not implemented\n");
            break;
        case E_OR:
            generate_expr_id_oper(e, "||");
@@ -188,7 +191,7 @@ void generate_expr_id(struct expr *e)
            break;
        case E_NOT:
            generate_expr_id(e->left.expr);
-           asprintf(&e->id, "not_%s", e->left.expr->id);
+           asprintf(&e->id, "!%s", e->left.expr->id);
            break;
        case E_EQUAL:
            generate_expr_id_oper(e, "==");
@@ -200,9 +203,10 @@ void generate_expr_id(struct expr *e)
            printf("LIST not implemented\n");
            break;
        case E_SYMBOL: {
-           if (e->left.sym->name) {
+           if (e->left.sym->name && !e->id) {
                asprintf(&e->id, e->left.sym->name);
                generate_expr_id(e->left.sym->dir_dep.expr);
+               generate_expr_id(e->left.sym->rev_dep.expr);
            }
            break;
        }
@@ -223,6 +227,7 @@ void generate_expr_ids()
             && sym->name != NULL) {
            if (is_interesting(sym)) {
                generate_expr_id(sym->dir_dep.expr);
+               generate_expr_id(sym->rev_dep.expr);
            }
         }
     }
@@ -329,3 +334,7 @@ void print_help() {
     printf
         ("  --inv         Generate configuration of missing configratuon options.\n");
 }
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* End: */