Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] Build System redo

On 2015-03-17 19:22, Marc-André Laperle wrote:


On 2015-03-16 01:08 PM, Jesper Eskilson wrote:

On 2015-03-16 16:09, Doug Schaefer wrote:
Hey gang,

Another thing we discussed at EclipseCon and there seems to be at
least a little momentum behind it is a redo of the build system. It’s
gone a long way in probably the wrong direction since I started with
the build model 10 years ago or so. But we continue to struggle
without someone maintaining it on a regular basis. We really need to
simplify it so we can at least jump in quickly and fix anything that
goes wrong there.

I think we’re a lock that the June 2016 release will be a major CDT
release, 9.0, which gives us a great opportunity to get this done. I
just want to make sure we do it as a community and not repeat the
mistakes of the past. I’ll set up a wiki where we can capture ideas,
but we should really start by agreeing on a number of requirements.

To that end, here’s my quick thoughts on where I’d like to see us go:

  * Make it easy to support alternative build systems like Autotools,
    CMake, Qt’s qmake, Boost.Build, etc.
  * Make sure we can get what we need for the parsers out of any
    build system.
  * Make sure we support external builds. You shouldn’t need to start
    up Eclipse to build.
  * And that means removing the internal builder (sad, I dreamed of
    that but it’s too much of a burden now)
  * Support Visual Studio/Xcode style build settings. Not ever user
    knows how to write build files.

The big one is the internal builder. Much of the build model was
created to support it. If we remove it as a requirement, we can
probably simplify a lot of things. But it does mean we need an
external build system to be present on the users machine which will
be a challenge on Windows.


I think Ninja (http://martine.github.io/ninja/) has a license which
allows for bundling it as a binary, and is intended to consume
autogenerated build files. That would be my first choice.

I've used Ninja before in conjunction with CMake and it was really great
and fast. So it I interstand correctly, CDT would generate some
intermediate output to describe the build dependencies, builds options,
etc and Ninja would execute the build? I don't know how easy it would be
to include Ninja binaries into CDT but at least it has an Apache
License. Going further, I always thought it would be great to include a
fully working toolchain with CDT (Qt Creator, Codeblocks do or did that).


Yes, Ninja is designed to consume generated buildfiles. The whole thing is just like CDT generating makefiles today, but instead CDT would generate "build.ninja" files. I'm sure much of the principles behind the makefile generator could be reused in a ninja-generator.

--
*Jesper Eskilson* /Development Engineer/
IAR Systems AB
Box 23051, Strandbodgatan 1
SE-750 23 Uppsala, SWEDEN
E-mail: jesper.eskilson@xxxxxxx <mailto:jesper.eskilson@xxxxxxx>
Website: www.iar.com
<http://www.iar.com> Twitter: www.twitter.com/iarsystems
<http://www.twitter.com/iarsystems>


Back to the top