[Date Prev][Date Next][Thread Prev][Thread Next][Thread Index]

Re: [XaraXtreme-dev] Re: Dependencies



Alex Bligh wrote:

So, interesting questions arise, like "why is arrows.h in the .pch".
And even better, "why does changing biasgain.h cause an automatic
rebuild of over 200 files when it's just a control". I suspect
the answer is "because someone didn't know about forward references"
but in any case I'm going to improve the tool so it will actually
go through the files and find the tree of includes if you ask
it nicely.


So now you can use it to answer questions like "why do so many
things depend on biasgain.h":

$ Scripts/gendeps.pl -e -i biasgain.h */.deps/*.Po
...
[  0] biasgain.h which is included by 1153 other files:
[  1]   fillval.h which is included by 510 other files:
[  2]     fillattr.h which is included by 372 other files:
[  3]       nodebev.h which is included by 97 other files:
[  4]         nbevcont.h which is included by 47 other files:
[  5]           opbevel.h which is included by 25 other files:
[  6]             bevinfo.o
[  6]             bevtool.o
[  6]             beztool.o
[  6]             blndtool.o
[  6]             blndtool.o
[  6]             cntrtool.o
...
[  1]   bars.h which is included by 292 other files:
[  2]     sgallery.h which is included by 115 other files:
[  3]       ngcore.h which is included by 21 other files:

And we discover a forward reference in bars.h would have done
just as well (check-in coming right up, along one removing
dependency on bars.h from sgallery.h).


Or we can ask 'why does node.cpp get rebuilt so often' (not
that it does, but...)

$ Scripts/gendeps.pl -e -t node.o */.deps/*.Po
...
[  0] node.o which includes 5386 other files:
[  1]   camtypes.h which includes 1595 other files:
[  2]     epsfiltr.h which includes 556 other files:
[  3]       filters.h which includes 354 other files:
[  4]         txtattr.h which includes 139 other files:
[  5]           attrval.h which includes 120 other files:
[  6]             arrows.h which includes 76 other files:
[  7]               paths.h which includes 56 other files:
[  8]                 attr.h which includes 17 other files:
[  9]                   doccoord.h which includes 16 other files:
[  9]                     camtypes.h (already included)
[ 10]                     matrix.h which includes 7 other files:
[ 10]                       camtypes.h (already included)
[ 11]                       ccmaths.h which includes 4 other files:
[ 12]                         fixed16.h which includes 1 other files:
[ 13]                           fixed.h
[ 12]                         fixed.h
[ 12]                         xlong.h
[ 11]                       ccobject.h
[ 11]                       coord.h which includes 0 other files:
[ 11]                         camtypes.h (already included)


Alex

Great stuff, Alex! It's a long time since we've had a tool that can do this (or had the time to write one).

Phil