new project model primary author: mikhail sennikovsky contributors: leo treggiari intel corp....
TRANSCRIPT
New Project New Project ModelModel
Primary author: Mikhail SennikovskyPrimary author: Mikhail SennikovskyContributors: Leo TreggiariContributors: Leo Treggiari
Intel Corp.Intel Corp.September, 2006September, 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
AgendaAgenda
RequirementsRequirements New Project Model overviewNew Project Model overview Backward CompatibilityBackward Compatibility
RequirementsRequirements
Core RequirementsCore Requirements Build System RequirementsBuild System Requirements
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
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
New Project ModelNew Project Model
Core Project ModelCore Project Model CDT Build SystemCDT Build System
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
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
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
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
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
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
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
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
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
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
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
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
New Project New Project Model: Build Model: Build
SystemSystem
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
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
““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)
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
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
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
““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
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
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
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.
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.
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
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
Backward CompatibilityBackward Compatibility
CoreCore Build SystemBuild System
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?
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)
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.
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
Q & AQ & A