New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp....

39
New Project New Project Model Model Primary author: Mikhail Sennikovsky Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Contributors: Leo Treggiari Intel Corp. Intel Corp. September, 2006 September, 2006

Transcript of New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp....

Page 1: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

New Project New Project ModelModel

Primary author: Mikhail SennikovskyPrimary author: Mikhail SennikovskyContributors: Leo TreggiariContributors: Leo Treggiari

Intel Corp.Intel Corp.September, 2006September, 2006

Page 2: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Primary goalsPrimary goals

Multi-language supportMulti-language support Language-specific settingsLanguage-specific settings

Usability, ConfigurabilityUsability, Configurability Provide a common UI and API interface with Provide a common UI and API interface with

different project types in CDTdifferent project types in CDT Automating the common project settings Automating the common project settings

adjustmentadjustment Core and Build System settings consistencyCore and Build System settings consistency

Consistent IntegrationConsistent Integration One consistent mechanism of tool integration One consistent mechanism of tool integration

in both Standard and Managed makein both Standard and Managed make

Page 3: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

AgendaAgenda

RequirementsRequirements New Project Model overviewNew Project Model overview Backward CompatibilityBackward Compatibility

Page 4: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

RequirementsRequirements

Core RequirementsCore Requirements Build System RequirementsBuild System Requirements

Page 5: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Core requirementsCore requirements Multi-language support Multi-language support

The ability to map one and the same content type The ability to map one and the same content type to different languages. to different languages.

Mixed Language project support:Mixed Language project support: Includes/Macros settings should be per-language.Includes/Macros settings should be per-language. It should be possible to assign different language It should be possible to assign different language

settings for different folders/files.settings for different folders/files. Configurability and settings consistencyConfigurability and settings consistency

Configuration ConceptConfiguration Concept Unified build system independent programming Unified build system independent programming

and UI interface for the common project settings.and UI interface for the common project settings. Core and Build settings consistencyCore and Build settings consistency Project settings automatic adjustmentProject settings automatic adjustment

Project creationProject creation Project referencesProject references External SDKsExternal SDKs

Page 6: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Build System Build System requirementsrequirements

Multi-language supportMulti-language support Associating language with tool InputTypeAssociating language with tool InputType Per-language/tool Includes/Macros calculationPer-language/tool Includes/Macros calculation

ConfigurabilityConfigurability Standard and Managed Build System Standard and Managed Build System

incorporationincorporation Tool-chain modifications (changing Tool-chain, Tool-chain modifications (changing Tool-chain,

tools, builder)tools, builder) Per-folder settingsPer-folder settings Dynamically adding extension tool-chain Dynamically adding extension tool-chain

information during eclipse/CDT sessioninformation during eclipse/CDT session One consistent way of tool integrationOne consistent way of tool integration

Standard and Managed Build System Standard and Managed Build System incorporationincorporation

Page 7: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

New Project ModelNew Project Model

Core Project ModelCore Project Model CDT Build SystemCDT Build System

Page 8: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Core Project ModelCore Project ModelProject Representation Model (CModel)Reflects how the project settings are applied to the project resource tree.

Project Settings ModelRepresents the project settings

CProjectDescription1. Configuration info2. Configuration settings

Build System

CConfiguration1. Source information2. Binary information

Binary Parsers

Source Parser

Project tree

Page 9: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Project Settings ModelProject Settings Model One consistent interface for Project settingsOne consistent interface for Project settings

Replaces the current ICOwner/ICDescriptor and Replaces the current ICOwner/ICDescriptor and PathEntry mechanismsPathEntry mechanisms

Provides common interface to the Build Provides common interface to the Build SystemSystem New CConfigurationDataProvider extension New CConfigurationDataProvider extension

pointpoint Tightly connected with the CModelTightly connected with the CModel

Each CProject has associated Each CProject has associated CProjectDescriptionCProjectDescription

CProjectDescription will have one or more CProjectDescription will have one or more CConfigurationDescriptionCConfigurationDescription

Page 10: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Accessing the Project Accessing the Project SettingsSettings

Accessed via the Accessed via the CoreModel.getDescription(IProject)CoreModel.getDescription(IProject)

Applied via Applied via CoreModel.setProjectDescription( ICProjectDescripCoreModel.setProjectDescription( ICProjectDescription) tion) allows making multiple (any number of) changes to the allows making multiple (any number of) changes to the

project settings before they get applied.project settings before they get applied. allows rejecting the changesallows rejecting the changes avoids race conditionsavoids race conditions

Settings changes notified via a Settings changes notified via a CElementChangeListener mechanism. Notifications CElementChangeListener mechanism. Notifications performed only after the settings get appliedperformed only after the settings get applied

Page 11: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Project Settings Project Settings InfrastructureInfrastructure

Build System SettingsBuild System Settings Determine the build behaviorDetermine the build behavior

E.g. Includes, Macros, Libraries, Language settings, Build E.g. Includes, Macros, Libraries, Language settings, Build Environment, etcEnvironment, etc

Maintained by the Build SystemMaintained by the Build System Project-specific settingsProject-specific settings

May and usually do influence the Build System May and usually do influence the Build System settings, but are not themselves the Build System settings, but are not themselves the Build System settingssettings

Configuration settings (Set of configurations, active Configuration settings (Set of configurations, active configuration), Build System, Project dependencies, configuration), Build System, Project dependencies, Referenced projects/configurations, External SDKs, Referenced projects/configurations, External SDKs, Export settings, etc.Export settings, etc.

Maintained by the CoreMaintained by the Core

Page 12: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Build System SettingsBuild System Settings Language settingsLanguage settings

Source resource type info (ContentType or file extension)Source resource type info (ContentType or file extension) Language ID Language ID Includes resource type info (ContentType or file extension)Includes resource type info (ContentType or file extension) Includes Includes Macros Macros TODO?? Where the pre-build PDOM info should reside?TODO?? Where the pre-build PDOM info should reside? LibrariesLibraries

Build process settingsBuild process settings Current Builder DirectoryCurrent Builder Directory OutputFoldersOutputFolders Build EnvironmentBuild Environment Error parser IDsError parser IDs

Target Artifact(s) settingsTarget Artifact(s) settings Target goal name,Target goal name, Target goal locationTarget goal location Target goal typeTarget goal type

Source settingsSource settings Build Variable (Macros) settingsBuild Variable (Macros) settings Target Platform settingsTarget Platform settings

Target platform name(s)Target platform name(s) Target OS name(s)Target OS name(s) Binary parser settingsBinary parser settings

Page 13: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Project-specific settingsProject-specific settings

Configuration settingsConfiguration settings Set of configurationsSet of configurations Active configurationActive configuration

Dependencies settingsDependencies settings Referenced projects/configurationsReferenced projects/configurations External SDKsExternal SDKs

Export settingsExport settings

Page 14: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

CProject Description CProject Description schemaschema CProjectDescriptionCProjectDescription

SourceEntry[] SourceEntry[] CConfigurationDescription[]CConfigurationDescription[]

CFolderDescription[]CFolderDescription[] ( (Folder pathFolder path, , Exclusion filter[]Exclusion filter[], , “exclude from build” “exclude from build” statusstatus))

CLanguageSetting[]CLanguageSetting[] ( (Source Source and Header and Header ContentType or file extensionsContentType or file extensions,, LanguageIdLanguageId))

ILanguagePathEntry[](IncludeEntry[], IncludeFileEntry[],ILanguagePathEntry[](IncludeEntry[], IncludeFileEntry[], MacroEntry[], MacroEntry[], MacroFileEntry[],LibraryEntry[],MacroFileEntry[],LibraryEntry[], LibraryPathEntry[])LibraryPathEntry[])))

External SDK ID[]External SDK ID[] CFileDescription[]CFileDescription[] ( (File pathFile path, , “Exclude from build” status“Exclude from build” status))

CLanguageSetting[]CLanguageSetting[] (same as above)(same as above)

External SDK ID[]External SDK ID[] CBuilderSettingCBuilderSetting

OutputEntry[]OutputEntry[] Builder CWDBuilder CWD EnvironmentEnvironment Error Parser informationError Parser information

CTargetPlatformSettingCTargetPlatformSetting TargetPlatformName[]TargetPlatformName[] TargetOSName[]TargetOSName[] BinaryParserId[]BinaryParserId[]

CTargetArtifactSetting[]CTargetArtifactSetting[] Target Goal NameTarget Goal Name Target Goal LocationTarget Goal Location Target Goal TypeTarget Goal Type

BuildMacroSupplierBuildMacroSupplier Referenced Configurations Info []Referenced Configurations Info [] BuildSystem IDBuildSystem ID

Page 15: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Interfacing with the Interfacing with the Build SystemBuild System

CConfigurationDataPrCConfigurationDataProviderovider ConfigurationData ConfigurationData

creationcreation CConfigurationDataCConfigurationData

Interface to the Build Interface to the Build SystemSystem

Sub-set of the Project Sub-set of the Project Settings Model Settings Model representing the Build representing the Build System SettingsSystem Settings

Project Settings Model(CProjectDescription)

Build System

Build System Settings

Build System Common Interface (CConfigurationData)(CConfigurationDataProvider extension point)

Project Settings Model clients

Build System Settings

Project-specific settings

Page 16: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

CConfigurationData CConfigurationData schemaschema CConfigurationDataCConfigurationData

CFolderData[]CFolderData[] ( (Folder pathFolder path, , Exclusion filter[]Exclusion filter[], , “exclude from build” “exclude from build” statusstatus))

CLanguageData[]CLanguageData[] ( (Source Source and Header and Header ContentType or file extensionsContentType or file extensions, , LanguageIdLanguageId))

ILanguagePathEntry[](IncludeEntry[], IncludeFileEntry[], MacroEntry[], ILanguagePathEntry[](IncludeEntry[], IncludeFileEntry[], MacroEntry[], MacroFileEntry[],MacroFileEntry[], LibraryEntry[], LibraryPathEntry[])LibraryEntry[], LibraryPathEntry[])

CFileData[]CFileData[]((File pathFile path, , “Exclude from build” status“Exclude from build” status, , CLanguageData[]CLanguageData[]))

… … (same as above)(same as above) CBuilderSettingCBuilderSetting

OutputEntry[]OutputEntry[] Builder CWDBuilder CWD EnvironmentEnvironment Error Parser informationError Parser information

CTargetPlatformSettingCTargetPlatformSetting TargetPlatformName[]TargetPlatformName[] TargetOSName[]TargetOSName[] BinaryParserId[]BinaryParserId[]

CTargetArtifactSetting[]CTargetArtifactSetting[] Target Goal NameTarget Goal Name Target Goal LocationTarget Goal Location Target Goal TypeTarget Goal Type

BuildMacroSupplierBuildMacroSupplier

Page 17: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

ProjectDescriptionManager

Settings Data Settings Data managementmanagement

CProjectDescription(proxy, uses data cached by the Description Manager)

ProjectDescriptionManager

CProjectDescription(cached data)

getProjectDescription()

get* requests

CProjectDescription(uses “live” CConfigurationData values)

CProjectDescription(cached data)

set* requests

CConfigurationDataCConfigurationDataProvidercreateConfiguration()

getProjectDescription()

Project Settings are Project Settings are cached by the corecached by the core

CProjectDescription CProjectDescription works with cached works with cached data until first set* data until first set* requestrequest

On first set* request On first set* request CConfigurationData CConfigurationData is created, is created, CProjectDescription CProjectDescription works with “live” works with “live” CConfigurationData CConfigurationData valuesvalues

When the When the CProjectDescription CProjectDescription gets applied the gets applied the CConfigurationData CConfigurationData is cachedis cached

Page 18: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Setting Data Persistence Setting Data Persistence The Core (CProjectDescriptionManager) is The Core (CProjectDescriptionManager) is

responsible for loading/holding/storing the Project-responsible for loading/holding/storing the Project-specific Settings part of the Project Settings Model.specific Settings part of the Project Settings Model. Stored in the .cproject fileStored in the .cproject file

The Build System is responsible for The Build System is responsible for loading/holding/storing the Build System Settings loading/holding/storing the Build System Settings part of the Project Settings Model.part of the Project Settings Model. Build System-specific persistence logicBuild System-specific persistence logic Core Project Description provides an API for storing the Core Project Description provides an API for storing the

custom data to the .cproject file custom data to the .cproject file The Build System Settings and the Project-specific The Build System Settings and the Project-specific

Settings will be loaded in one stepSettings will be loaded in one step The CProjectDescriptionManager could store the The CProjectDescriptionManager could store the

cached data and compare it against the Build System cached data and compare it against the Build System data on startupdata on startup Build System settings are change detectionBuild System settings are change detection

Page 19: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Configuration concept Configuration concept adoptionadoption

PDOMPDOM Configuration concept is not supportedConfiguration concept is not supported It will be possible to select It will be possible to select

configuration to be used for indexing – configuration to be used for indexing – “index” configuration“index” configuration

CModelCModel Configuration concept is not supportedConfiguration concept is not supported The “index” configuration information The “index” configuration information

will be used for CModel calculationwill be used for CModel calculation

Page 20: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

New Project New Project Model: Build Model: Build

SystemSystem

Page 21: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Build System Build System requirementsrequirements

Multi-language supportMulti-language support Associating language with tool InputTypeAssociating language with tool InputType Per-language/tool Includes/Macros calculationPer-language/tool Includes/Macros calculation

ConfigurabilityConfigurability Standard and Managed Build System Standard and Managed Build System

incorporationincorporation Tool-chain modifications (changing Tool-chain, Tool-chain modifications (changing Tool-chain,

tools, builder)tools, builder) Per-folder settingsPer-folder settings Dynamically adding extension tool-chain Dynamically adding extension tool-chain

information during eclipse/CDT sessioninformation during eclipse/CDT session One consistent way of tool integrationOne consistent way of tool integration

Standard and Managed Build System Standard and Managed Build System incorporationincorporation

Page 22: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Build System Build System EnhancementsEnhancements

Standard and Managed Build System Standard and Managed Build System incorporationincorporation

Tool-chain modificationTool-chain modification Real ToolsReal Tools Build PropertiesBuild Properties Language settingsLanguage settings Per-Folder SettingsPer-Folder Settings Dynamic extension elements providingDynamic extension elements providing Integration with the New Core Project Integration with the New Core Project

ModelModel Internal Builder integrationInternal Builder integration

Page 23: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

““Standard” and “Managed” Standard” and “Managed” incorporationincorporation

One Build System implemented in two plug-insOne Build System implemented in two plug-ins org.eclipse.cdt.build.coreorg.eclipse.cdt.build.core org.eclipse.cdt.build.uiorg.eclipse.cdt.build.ui

One CConfigurationDataProvider extension point contributionOne CConfigurationDataProvider extension point contribution org.eclipse.cdt.managedbuilder.* and org.eclipse.cdt.make.* plugins are org.eclipse.cdt.managedbuilder.* and org.eclipse.cdt.make.* plugins are

removedremoved The Build functionality will function in several modes: The Build functionality will function in several modes:

Build flow/logic is defined by the user-written makefileBuild flow/logic is defined by the user-written makefile Project BuildProject Build Make Target BuildMake Target Build

Build flow/logic is calculated automatically based upon the Build System settingsBuild flow/logic is calculated automatically based upon the Build System settings Buildfile is generated and External Builder is usedBuildfile is generated and External Builder is used

Project BuildProject Build Internal Builder is usedInternal Builder is used

Project BuildProject Build Selected resources buildSelected resources build

Tool-chain functionalityTool-chain functionality Build Logic (“Managed” build mode only)Build Logic (“Managed” build mode only) Settings grouping/adjustmentSettings grouping/adjustment

extended buildDefinition ext.pointextended buildDefinition ext.point one common mechanism for tool integrationone common mechanism for tool integration

ScannerDiscoveryProfile ext.pointScannerDiscoveryProfile ext.point Makefile parsing functionalityMakefile parsing functionality IMakeBuilderInfo mechanismIMakeBuilderInfo mechanism Building selected files (“Managed” build mode only)Building selected files (“Managed” build mode only) Building specified target (“Managed” build mode only)Building specified target (“Managed” build mode only)

Page 24: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Incorporation benefits for Incorporation benefits for “Standard” and “Managed”“Standard” and “Managed”

BothBoth One consistent way of tool integrationOne consistent way of tool integration Common Program and UI interfacesCommon Program and UI interfaces Easy maintenanceEasy maintenance

Standard makeStandard make Tool-chain conceptTool-chain concept

Settings grouping/adjustmentSettings grouping/adjustment

Managed makeManaged make IMakeBuilderInfo mechanism in Managed BuildIMakeBuilderInfo mechanism in Managed Build

Correct handling of Building selected filesCorrect handling of Building selected files

Page 25: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Build mode specific Build mode specific functionalityfunctionality

““Managed”-specific functionalityManaged”-specific functionality Buildfile generationBuildfile generation Internal BuilderInternal Builder Building selected filesBuilding selected files

““Standard”-specific functionalityStandard”-specific functionality Building specified targetBuilding specified target MakeTargetBuilder extension pointMakeTargetBuilder extension point

Page 26: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Tool-chain modificationTool-chain modification Supported modificationsSupported modifications

Tool-chain substitutionTool-chain substitution Tool list modificationTool list modification Builder substitutionBuilder substitution

Settings preserved when possibleSettings preserved when possible Option valuesOption values

Converter mechanismConverter mechanism Build propertiesBuild properties Values for specific option types (Includes, Macros, Values for specific option types (Includes, Macros,

Libraries)Libraries) Settings adjustedSettings adjusted

EnvironmentEnvironment environmentSuplier on tool and builder levelsenvironmentSuplier on tool and builder levels

Error parsersError parsers Installation support informationInstallation support information

isSupported call-back on tool and builder levelsisSupported call-back on tool and builder levels Includes/macros calculationIncludes/macros calculation

Scanner discovery profile on tool levelScanner discovery profile on tool level Language informationLanguage information

Language ID on InputType levelLanguage ID on InputType level

Page 27: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

““Real” toolsReal” tools The “Real” concept is applicable for tool-chains, The “Real” concept is applicable for tool-chains,

tools and builderstools and builders ““Real” tool/builder - Regular extension tool/builder Real” tool/builder - Regular extension tool/builder

definition representing an external tool. definition representing an external tool. Used for:Used for:

Obtaining the set of supported tools/buildersObtaining the set of supported tools/builders Tool-chain modificationsTool-chain modifications

Determined viaDetermined via isReal tool attributeisReal tool attribute AutomaticallyAutomatically

““Real” tool-chain – represents the unique tool-Real” tool-chain – represents the unique tool-chainchain Used for:Used for:

Obtaining the set of supported tool-chainsObtaining the set of supported tool-chains Tool-chain substitutionTool-chain substitution

Determined viaDetermined via isReal tool attributeisReal tool attribute AutomaticallyAutomatically

Page 28: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Build PropertiesBuild Properties Property definition Property definition

property IDproperty ID human-readable property name human-readable property name Extendible set of values the property supportsExtendible set of values the property supports

Property-value pairs are associated with the Property-value pairs are associated with the configurationsconfigurations

Tools and tool-chains specify the supported properties Tools and tool-chains specify the supported properties and valesand vales

Option enablement expressions used for adjusting tool Option enablement expressions used for adjusting tool settings based upon the Build Property valuessettings based upon the Build Property values

The Build System pre-defines some common general The Build System pre-defines some common general propertiesproperties Artifact TypeArtifact Type

ExecutableExecutable Static LibraryStatic Library Shared LibraryShared Library

Build TypeBuild Type DebugDebug ReleaseRelease

Page 29: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Multi-language supportMulti-language support Language ID on InputType levelLanguage ID on InputType level

Static Language ID association (via attribute)Static Language ID association (via attribute) Dynamic language ID calculation Dynamic language ID calculation

call-backcall-back Build Variables(Macros) Build Variables(Macros) Option enablement expressionOption enablement expression

Per-InputType/Tool Path entry info Per-InputType/Tool Path entry info calculationcalculation IncludesIncludes MacrosMacros LibrariesLibraries

Per-InputType Scanner Discovery ProfilePer-InputType Scanner Discovery Profile

Page 30: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Per-Folder SettingsPer-Folder Settings

FolderConfiguration element – folder settings FolderConfiguration element – folder settings containercontainer Contains Tool-ChainContains Tool-Chain

Some Tool-chain information is ignoredSome Tool-chain information is ignored Builder setingsBuilder setings The tool “conflicting” with the “target artifact” The tool “conflicting” with the “target artifact”

producer toolproducer tool InputTypes of the tool and the “target artifact” tool refer InputTypes of the tool and the “target artifact” tool refer

to the same file type (content type or file extension)to the same file type (content type or file extension) The tool “conflicting” with the tool with the The tool “conflicting” with the tool with the

“multiple of type” primary input type defined at the “multiple of type” primary input type defined at the project level.project level.

Page 31: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Dynamic extension Dynamic extension elements providingelements providing

Dynamic element provider.1. Dynamic element info

maintenance

CDT Build System

Extension element in-memory registry

Data source

Public API to get/set extension elements

API for providing the data source, e.g. file location

buildDefinitions ext. point1. dynamicElementProvider2. buildDefinitionStartup

Custom functionalityBuild System functionality Dynamic Dynamic element provider element provider responsible for responsible for maintaining maintaining dynamically dynamically added infoadded info adding an adding an

extension extension element element information information during during Eclipse/CDT Eclipse/CDT sessionsession

loading the loading the dynamically dynamically added added extension extension information on information on startup.startup.

Page 32: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Integration with the New Integration with the New Core Project ModelCore Project Model

One CConfigurationDataProvider One CConfigurationDataProvider extension contributedextension contributed

Build System Information is stored Build System Information is stored within the tool-chainwithin the tool-chain

If no tool-chain is associated with If no tool-chain is associated with the configuration (“Standard” make the configuration (“Standard” make mode), the dummy tool-chain is mode), the dummy tool-chain is created to maintain the settingscreated to maintain the settings

Page 33: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Internal BuilderInternal Builder

IntegrationIntegration Internal Builder will be presented as a Builder Internal Builder will be presented as a Builder

object of the buildDefinitions schemaobject of the buildDefinitions schema Tool-integrators will be able to use the Internal Tool-integrators will be able to use the Internal

Builder in their tool-chain integrationsBuilder in their tool-chain integrations Switching on/off the Internal Builder will be Switching on/off the Internal Builder will be

implemented internally as Builder substitutionimplemented internally as Builder substitution Current issuesCurrent issues

Dependency trackingDependency tracking

Page 34: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Backward CompatibilityBackward Compatibility

CoreCore Build SystemBuild System

Page 35: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Core Backward Core Backward CompatibilityCompatibility

Extension points and API will be deprecated by Extension points and API will be deprecated by the new CConfigurationDataProvider extension the new CConfigurationDataProvider extension point/CProjectDescription API:point/CProjectDescription API: CDescriptorCDescriptor

APIAPI CProject extension point(COwner)CProject extension point(COwner)

PathEntryPathEntry APIAPI PathEntryPathEntryStore extension pointPathEntryPathEntryStore extension point PathEntryContainerInitializer extension pointPathEntryContainerInitializer extension point

Deprecated functionality could be supported, but Deprecated functionality could be supported, but removed in the future (e.g. post-4.0)removed in the future (e.g. post-4.0)

Question: do we need to support deprecated Question: do we need to support deprecated functionality?functionality?

Page 36: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Build System Backward Build System Backward CompatibilityCompatibility

Existing projects support, provided Existing projects support, provided that the tool definitions are updatedthat the tool definitions are updated to 4.0 to 4.0 ((requiredrequired))

Existing integrations support (as Existing integrations support (as much as possible)much as possible)

Page 37: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Existing project supportExisting project support 4.0 tool-chain integration must be available4.0 tool-chain integration must be available If converter is provided converter is used, otherwise If converter is provided converter is used, otherwise

project elements refer to 4.0 extension elements of the project elements refer to 4.0 extension elements of the same IDs as specified in the .cdtbuild filesame IDs as specified in the .cdtbuild file

Conversion is initiated once the project data gets loadedConversion is initiated once the project data gets loaded The user is notified that the project has to be updated. The user is notified that the project has to be updated. The user will be asked to either accept or reject the The user will be asked to either accept or reject the

project conversion.project conversion. In case the user accepts the project conversion, the project data In case the user accepts the project conversion, the project data

is converted to the 4.0 format. After the conversion is is converted to the 4.0 format. After the conversion is performed, it is not be possible to load the project data using performed, it is not be possible to load the project data using the older versions of the CDT. the older versions of the CDT.

In case the user rejects the conversion, the project Data will be In case the user rejects the conversion, the project Data will be available in the read-only mode, the converted info will not be available in the read-only mode, the converted info will not be persisted.persisted.

Page 38: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Existing integrations Existing integrations supportsupport

IssuesIssues *.managedbuilder.* and *.make.* plug-ins removal/replacement*.managedbuilder.* and *.make.* plug-ins removal/replacement

Managedbuilder and make extension points disappearManagedbuilder and make extension points disappear Plug-in dependencies failurePlug-in dependencies failure Package renamePackage rename

API renameAPI rename *.managedbuilder.* and *.make.* packages rename*.managedbuilder.* and *.make.* packages rename Public interface name changes to provide better API name clarity and Public interface name changes to provide better API name clarity and

consistencyconsistency

Solutions, options:Solutions, options: Implement the Build System based upon one of the current build plug-Implement the Build System based upon one of the current build plug-

ins, i.e. either based on the *.make.* or *.managedbuilder.* plug-ins.ins, i.e. either based on the *.make.* or *.managedbuilder.* plug-ins. Using *.managedbuilder.* as a base is preferredUsing *.managedbuilder.* as a base is preferred

Preserve API “names” only, e.g. the Preserve API “names” only, e.g. the org.eclipse.cdt.managedbuilder.core.IConfiguration would become org.eclipse.cdt.managedbuilder.core.IConfiguration would become org.eclipse.cdt.build.core.IConfiguration instead. org.eclipse.cdt.build.core.IConfiguration instead.

Rename the API as well to provide better API name clarity and Rename the API as well to provide better API name clarity and consistency, but leave the old API supported and deprecated.consistency, but leave the old API supported and deprecated.

Rename the API as well to provide better API name clarity and Rename the API as well to provide better API name clarity and consistency, do not support the old APIconsistency, do not support the old API

Page 39: New Project Model Primary author: Mikhail Sennikovsky Contributors: Leo Treggiari Intel Corp. September, 2006.

Q & AQ & A