[ale] Recursive make considered harmful
Joe Morris
jolomo at netcom.com
Wed Jul 29 14:43:34 EDT 1998
This is from last year but it was new to me. I wonder how this
would affect the build time for the Linux kernel??
http://www.tip.net.au/~millerp/rmch/recu-make-cons-harm.html
Here's the abstract:
For large UNIX projects, the traditional method of building the
project is to use recursive make. On some projects, this results
in build times which are unacceptably large, when all you want to
do is change one file. In examining the source of the overly long
build times, it became evident that a number of apparently
unrelated problems combine to produce the delay, but on analysis
all have the same root cause.
This paper explores an number of problems regarding the use of
recursive make, and shows that they are all symptoms of the same
problem. Symptoms that the UNIX community have long accepted as a
fact of life, but which need not be endured any longer. These
problems include recursive makes which take ``forever'' to work
out that they need to do nothing, recursive makes which do too
much, or too little, recursive makes which are overly sensitive to
changes in the source code and require constant Makefile
intervention to keep them working.
The resolution of these problems can be found by looking at what
make does, from first principles, and then analyzing the effects
of introducing recursive make to this activity. The analysis shows
that the problem stems from the artificial partitioning of the
build into separate subsets. This, in turn, leads to the symptoms
described. To avoid the symptoms, it is only necessary to avoid
the separation; to use a single Makefile for the whole project.
This conclusion runs counter to much accumulated folk wisdom in
building large projects on UNIX. Some of the main objections
raised by this folk wisdom are examined and shown to be unfounded.
The results of actual use are far more encouraging, with routine
development performance improvements significantly faster than
intuition may indicate. The use of a single project Makefile is
not as difficult to put into practice as it may first appear.
--
Joe Morris, SysAdmin and Not Insane
"Honey, they're in *everybody's* eggs" --firesigns
More information about the Ale
mailing list