Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "CDT/Build/Doug"

< CDT
Line 1: Line 1:
 +
== Design ==
 
Here's my current thoughts on a new build model.
 
Here's my current thoughts on a new build model.
 
* Use org.eclipse.core.resources IBuildConfiguration to model build configs
 
* Use org.eclipse.core.resources IBuildConfiguration to model build configs
Line 31: Line 32:
 
**** Pretty ugly on startup. Would need to make sure things aren't too broken.
 
**** Pretty ugly on startup. Would need to make sure things aren't too broken.
 
**** Prompt the user to convert?
 
**** Prompt the user to convert?
 +
== Notes ==
 +
=== Minimal project ===
 +
Assuming we want to start from scratch (and then add back in the old stuff with a backwards compat layer), I'm trying the Arduino Projects and see if I can make them work. It's a great test bed and that's what it's there for.
 +
 +
Here are issues I've uncovered and things that seem to work
 +
* Project only contains the C and C++ nature and the Arduino nature which has a project builder.
 +
* How far can we get without using the ICProjectDescriptor? All that information should be in persistent properties.
 +
* Ran into a check in the AbstractPage class that disables property pages that inherit from it if the project doesn't have a project descriptor, or any configurations (isCDTPrj()).
 +
* All other pages worked and the indexer started up.

Revision as of 16:28, 28 July 2015

Design

Here's my current thoughts on a new build model.

  • Use org.eclipse.core.resources IBuildConfiguration to model build configs
    • Allows for config specific references and references to configs for finer grain build dependencies.
  • Build configurations are bags of attributes
    • Adapt from IBuildConfiguration to ICBuildConfiguration which implements the bag
    • Bag stored per configuration as project properties (i.e. in .settings).
  • Builders implemented as real IncrementalProjectBuilders
    • Attribute in ICBuildConfiguration to know whether a given builder is enabled for a given config.
      • Allows for different builders to work on the same project, e.g. CMake and Xcode builders
    • Project Property page for editing builder settings that are stored in the attribute bag.
    • Builders can have a role in scanner discovery.
      • They know the include paths and macros used to generate the makefiles and some have the ability to report what they are.
  • Build configurations also have Toolchain
    • Contributes to build environment vars, e.g. PATH to find the tools to execute and other necessary env vars.
    • Scanner Discovery settings to find built-ins and parse build output
    • target os/arch so we can tell whether the build configurations supports a given IRemoteConnection for the Launch Bar.
    • Toolchains can be defined in extension, or in toolchain files (local or shared a la .launch files).
  • Anticipated Builders
    • CMake
    • qmake
    • autotools
    • plain make, or whatever build command the user wants
    • Arduino builder that generates makefiles based on Arduino SDK metadata
    • CDT generated makefiles (backwards compat, deprecated?)
    • CDT internal (backwards compat, deprecated?)
  • Backwards compat issues
    • How to map IBuildConfiguration to IConfiguration
      • Use the default IBuildConfiguration that exists already to signal using old configs?
        • Actually, that would let us build the new system without breaking old ones
      • Project conversion?
        • Pretty ugly on startup. Would need to make sure things aren't too broken.
        • Prompt the user to convert?

Notes

Minimal project

Assuming we want to start from scratch (and then add back in the old stuff with a backwards compat layer), I'm trying the Arduino Projects and see if I can make them work. It's a great test bed and that's what it's there for.

Here are issues I've uncovered and things that seem to work

  • Project only contains the C and C++ nature and the Arduino nature which has a project builder.
  • How far can we get without using the ICProjectDescriptor? All that information should be in persistent properties.
  • Ran into a check in the AbstractPage class that disables property pages that inherit from it if the project doesn't have a project descriptor, or any configurations (isCDTPrj()).
  • All other pages worked and the indexer started up.

Back to the top