[LLVMdev] RFC: Upcoming Build System Changes

Chris Lattner clattner at apple.com
Wed Nov 2 17:49:44 PDT 2011


On Nov 2, 2011, at 5:30 PM, Óscar Fuentes wrote:

> Chris Lattner <clattner at apple.com> writes:
> 
>> Forgive me, but I've lost track of how any of this has to do with
>> Daniel's proposal. Recursive make vs not, make vs cmake all don't
>> actually matter to his proposal.
> 
> One of the problems with Daniel's proposal is that besides addressing
> the duplicity issue, it has no applications to back it up. The things
> mentioned so far are either extremely vague, or offer dubious gains
> (i.e. removing recursivity from the Makefiles) or trivially done without
> his system (i.e. walking the source files, etc.)

I don't think this is fair.  You never asked what the plan is, you just adamantly criticized the first micro step.  Fortunately, things are about to get a lot more concrete :)
 
>> His proposal is basically "cmake isn't going to replace make any time
>> soon. We'd like to improve the make system (e.g. by eliminating
>> autoconf) and the first step is to factor redundancy that exists
>> between cmake and make".
> 
> Does that make sense at all? How is autoconf related with duplicity in
> cmake? If he thinks that cmake and autoconf platform tests are
> duplicated, he will be disappointed when he discovers that cmake depends
> on those tests not only for configuring the LLVM headers, but for doing
> lots of stuff. Re-implementing autoconf is a daunting task (if that's
> what he wants to do). Shifting to his system all the decisions that
> depends on those tests is going quite a stretch further.

A big part of the problem not solved by either current cmake or makefile system is that we don't have a good way to decompose LLVM into smaller parts.  We have a notion of reusable components, but these are not exposed in a useful way in the build system.

>> While you might *want* cmake to replace make in the near term,
> 
> No, I don't want that. Somebody suggested that having two build systems
> is a problem, so I retorted that if one of them must stay, is the cmake
> system, for obvious reasons.

Ok, glad we're on the same page then.

>> it just isn't going to happen.  I don't see how his proposal actually
>> makes our system cmake worse, and all of your arguments seem to trying
>> to convince everyone that cmake is better than make.  What is going on
>> here?
> 
> I'll repeat again: Daniel's proposal means adding a lot of complexity to
> the build(s),

How do you make this assessment? You haven't seen the code?  It seems to me that you're jumping to a lot of conclusions based on your assumptions that may or may not be real.

> With all due respect to Daniel: I'm convinced that he is doing this
> because he loves to program Python and considers CMake "horrible"
> (that's the word he used) but he's not doing a favor to LLVM with this
> contribution. That's not the case of *replacing* a dinosaur like DejaGNU
> with something more convenient (as he did.) He is *adding* a lot of
> stuff. He is proposing a cruise missile as a means to kill a mosquito.

This is also the first step of a bigger plan.  Daniel is willing and available to improve the build system in a number of ways, are you opposed to all future improvements?

> Related to this, I'll reiterate my opinion about the explicit library
> dependency issue. What you want is to force the user to know and approve
> the dependency changes his modifications to the source code
> causes. That's orthogonal to maintaining the dependency info up to
> date.

I don't see how this is relevant to the discussion.

> We begin with a suboptimal decision (forcing the users to manually edit
> files for declaring the dependencies instead of exploiting the automatic
> system for implementing the new requirement) and this creates the
> duplicity problem, which in turn prompts Daniel's proposal, which adds
> even more complexity for addressing a problem that shouldn't be there to
> begin with. Happens too often in engineering projects that lots of
> effort is devoted to solving the problems the engineers themselves
> created, but let's try to avoid doing that on this case.


This seems like an extreme conclusion, I'm not sure what assumptions you're drawing on to get to this place.

-Chris





More information about the llvm-dev mailing list