[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Diagramming a makefile?
From: |
Rakesh Sharma |
Subject: |
RE: Diagramming a makefile? |
Date: |
Tue, 15 Apr 2014 20:27:51 -0700 |
Hello Rainier,
Thanks for the detailed instructions on how to generate a graph from a make
code.
That would be of immense help in me coming up & running in this activity.
Initially I would look for only the static kind of diagram generation as that's
simpler.
Regards,
Rakesh
> Date: Tue, 15 Apr 2014 18:37:01 +0200
> From: address@hidden
> To: address@hidden
> Subject: Re: Diagramming a makefile?
>
> Op di 15 apr 2014 04:00:16 GMT schreef address@hidden (Rakesh Sharma):
> >
> > Hello Reinier,
> >
> > Thanks for the pointers regarding the MAKAO utiliity as well as
> > your local solution to handle the make -p output.
> >
> > Appears that MAKAO is a full-fledged attempt at generating the DAGs
> > for a makefile. But for running your perl code we need the graphviz
> > utility also to be able to generate DAGs.
>
> http://www.win.tue.nl/~rp/bin/make2csv # generates the CSV file
> http://www.win.tue.nl/~rp/bin/csvtrans # filters the CSV file
> http://www.win.tue.nl/~rp/bin/csv2dot # creates the GraphViz file
>
> They require the CPAN module Text::CSV_XS.
>
> Example of use:
>
> cd /tmp
> wget http://ftp.gnu.org/gnu/make/make-4.0.tar.gz
> tar xvf make-4.0.tar.gz
> cd make-4.0/
> ./configure
> make -prR | make2csv | sort -u > make-prR.csv
>
> export DOT_A4='-Nshape=record -Ncolor=blue4 -Gnodesep=.15 -Gsize='7,10'
> -Gratio=1 -Gcenter=1 -Grankdir=LR -Ecolor=green4 -Efontcolor=green4'
>
> csv2dot -b make-prR.csv | dot $DOT_A4 -Tpdf > make-prR.pdf
>
> To my surprise, dot doesn't choke on this graph.
> But I usually filter the graph before feeding it to dot.
> That is what csvtrans is for, e.g.
>
> csvtrans -o rmarcs make-prR.csv | wc # count the nodes (976)
> csvtrans -o 'io>0' make-prR.csv | wc # count the arcs (1364)
> csvtrans -o 'out>0' make-prR.csv | dot $DOT_A4 -Tpdf > make-prR-w-deps.pdf
> # omit all nodes without dependencies or recipes
>
> MAKAO assumes you want to feed your graphs to Gephi (which can also
> read this format) and do your filtering within Gephi, which is probably
> a saner option: csvtrans is not so easy to use and it may contain bugs.
>
> The same is true for make2csv; it's a quick hack and you may need
> to modify it before it does exactly what you want.
>
> make2csv's analysis is static: it just lists rules found in the input.
> It doesn't expand variables and it doesn't do any inferencing.
>
> MAKAO's analysis is dynamic: it instruments a run of make and produces
> the rule invocations executed. Which means variables are expanded,
> inferences followed, unused targets and rules omitted.
>
> So the resulting graphs will usually be very different, especially
> when variables, implicit rules, include, eval, etc. are used.
>
> > Regards,
> >
> > Rakesh
>
> --
> Reinier Post
> http://www.win.tue.nl/~rp/
>
> _______________________________________________
> Help-make mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/help-make