[LLVMdev] RFC: Upcoming Build System Changes

Joachim Durchholz jo at durchholz.org
Tue Nov 1 14:51:49 PDT 2011


Am 01.11.2011 18:04, schrieb Joerg Sonnenberger:
> On Tue, Nov 01, 2011 at 11:09:41AM +0100, Joachim Durchholz wrote:
>> On the reasons why make-based builds are slow, Peter Miller has some
>> insight to offer:
>> http://miller.emu.id.au/pmiller/books/rmch/ .
>> I'm not sure how widely recognized that paper is. Maybe it's widely
>> known and today's build times stem from other things than recursive make.
>
> Please stop pointing to that article. It should be called "GNU make
> considered harmful" if anything, since most of the content is a direct
> result of issues in that tool.

The salient point in that article is about common use of recursive make 
not doing what most people expect. In particular, if the dependencies 
are a DAG instead of a tree, you need to put everything into one big 
makefile since recursive make's design cannot handle the situation 
correctly.
This is a property of the basic design of make, and cannot be fixed 
unless by changing what a recursive make actually does.
(I have built my own make, in Rexx, as I was young and needed the tool. 
This otherwise unremarkable endeavour forced me to learn more about 
make's semantic than a mere student should be exposed to.)

 > As I said earlier in this thread:

Sorry, I missed that post.

 > LLVM is
> nowhere big enough in terms of subdirectories that recursive make is a
> significant contributor to build time.

Did you verify that this is the case? Some of the gotchas in the make 
semantics can cause exponential behaviour, and that's easy to overlook 
if the N in your O(2^N) behaviour is incremented only occasionally.

Regards,
Jo



More information about the llvm-dev mailing list