Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

CDT/Obsolete/BuildModel61

< CDT‎ | Obsolete
Revision as of 14:57, 11 October 2009 by Cdtdoug.gmail.com (Talk | contribs)

Hi, Doug here. I'm going to document the vision I have for CDT's build model. My hope is that we can discuss this, finalize on the vision, and start working towards it.

A full build model would be all encompassing. It would serve the following clients:

  • Builders, to generate build files for an external builder, or to feed the internal builder
  • Parser, the scanner info falls into the build model
  • Debugger, to figure out how which debugger to run given the target of the build.

The build has to support host toolchains, cross toolchains, and remote toolchains. We need the concept of "target" in the build system to determine what platform the build is targeting.

The fundamental concept of the build model is that of a Tool with options. Tools translate input files to output files. It is very similar to a pattern rule in Make. The build system determines which tools to run to produce a given build output. External builders generally do that for you. The internal builder can emulate that.

We've had numerous requests to support multiple build outputs per build run. We'll need to have that flexibility in the build model.

Configurations specify the target platform, build outputs, and the tools and option settings for a build. Multiple configurations are allowed.

We need to separate the auto-generated UI from the build model. We need to do the same for command-line generation.

We also need to separate the concept of toolchain. Toolchains are more a starting collection of tools that feed into configuration building. You can add tools, like parser generators, to the list of tools to run during a configuration build.

We need to define a minimum build model required for all the clients. In particular, a minimal build system to allow vendors to build their own builders, while still satisfying the needs of the other clients.

Back to the top