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 20:21, Vladimir Prus wrote:
On 03/16/2015 08: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.

As I have argued in my talk, I think the ideal architecture consists
of minimal build system API, over pipes or websockets, CDT UI that
uses that API, and an external build system that implements this API.
Any 'business logic' build code that we have in Eclipse is code not
available for command-line work, which is not desirable.

Is the API formally defined anywhere? I couldn't find anything from the session page.

--
*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