Managed Build Definitions

Identifier:
org.eclipse.cdt.managedbuilder.core.buildDefinitions

Since:
This extension point was added in CDT 2.1

Description:
The managed build object model describes project-types, configurations, tool-chains, etc. for the managed build system.

Configuration Markup:

<!ELEMENT extension (projectType* , configuration* , toolChain* , tool* , targetPlatform* , builder* , dynamicElementProvider* , managedBuildRevision? , buildDefinitionStartup*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT projectType (configuration*)>

<!ATTLIST projectType

id                         CDATA #REQUIRED

name                       CDATA #IMPLIED

superClass                 CDATA #IMPLIED

isAbstract                 (true | false) "false"

unusedChildren             CDATA #IMPLIED

isTest                     (true | false)

projectEnvironmentSupplier CDATA #IMPLIED

projectMacroSupplier       CDATA #IMPLIED

configurationNameProvider  CDATA #IMPLIED

convertToId                CDATA #IMPLIED

buildProperties            CDATA #IMPLIED

buildArtefactType          CDATA #IMPLIED>

Represents a class of project which acts as a template for the projects that the user will create, for example, a Linux static library. A project type contains a sequence of configurations. Project types are arranged in an inheritance hierarchy where a project type inherits the list of configurations from it's parent and can add to or override configurations in this list.



<!ELEMENT project (configuration+)>

<!ATTLIST project

name        CDATA #REQUIRED

projectType CDATA #REQUIRED>

The project element is an instance of a projectType element. It appears in the .cdtbuild file, not in an extension definition.



<!ELEMENT configuration (toolChain? , resourceConfiguration* , enablement* , folderInfo* , fileInfo*)>

<!ATTLIST configuration

id                        CDATA #REQUIRED

name                      CDATA #IMPLIED

parent                    CDATA #IMPLIED

artifactName              CDATA #IMPLIED

artifactExtension         CDATA #IMPLIED

cleanCommand              CDATA #IMPLIED

errorParsers              CDATA #IMPLIED

languageSettingsProviders CDATA #IMPLIED

prebuildStep              CDATA #IMPLIED

postbuildStep             CDATA #IMPLIED

preannouncebuildStep      CDATA #IMPLIED

postannouncebuildStep     CDATA #IMPLIED

description               CDATA #IMPLIED

buildProperties           CDATA #IMPLIED

buildArtefactType         CDATA #IMPLIED>

A configuration is used to gather together certain default tools and options to build project a certain way. For example, a "Debug" configuration might supply tools with the options set to build with debugging symbols, whereas a "Release" configuration would supply tools with options set to create the best performance.



<!ELEMENT toolChain (tool* , targetPlatform? , builder? , optionCategory* , option* , supportedProperties?)>

<!ATTLIST toolChain

id                               CDATA #REQUIRED

name                             CDATA #IMPLIED

superClass                       CDATA #IMPLIED

isAbstract                       (true | false) "false"

unusedChildren                   CDATA #IMPLIED

osList                           CDATA #IMPLIED

archList                         CDATA #IMPLIED

errorParsers                     CDATA #IMPLIED

languageSettingsProviders        CDATA #IMPLIED

scannerConfigDiscoveryProfileId  CDATA #IMPLIED

targetTool                       CDATA #IMPLIED

secondaryOutputs                 CDATA #IMPLIED

isToolChainSupported             CDATA #IMPLIED

configurationEnvironmentSupplier CDATA #IMPLIED

configurationMacroSupplier       CDATA #IMPLIED

versionsSupported                CDATA #IMPLIED

convertToId                      CDATA #IMPLIED

optionPathConverter              CDATA #IMPLIED

supportsManagedBuild             (true | false)

isSystem                         (true | false) >

A tool-integrator-defined, ordered set of tools that tranform the project's resources into the project's outputs. A tool-chain can be defined as part of a configuration, or as an independent specification that is referenced from a separate configuration via the tool-chain superClass attribute.



<!ELEMENT resourceConfiguration (tool+)>

<!ATTLIST resourceConfiguration

resourcePath      CDATA #REQUIRED

exclude           (true | false)

rcbsApplicability (before|after|override|disable)

toolsToInvoke     CDATA #IMPLIED>

A place to store build attributes of individual resources that are different from the configuration as a whole.



<!ELEMENT tool (option* , optionCategory* , inputType* , outputType* , envVarBuildPath* , enablement* , supportedProperties?)>

<!ATTLIST tool

id                    CDATA #REQUIRED

name                  CDATA #IMPLIED

superClass            CDATA #IMPLIED

isAbstract            (true | false) "false"

unusedChildren        CDATA #IMPLIED

sources               CDATA #IMPLIED

headerExtensions      CDATA #IMPLIED

outputs               CDATA #IMPLIED

outputFlag            CDATA #IMPLIED

outputPrefix          CDATA #IMPLIED

natureFilter          (cnature|ccnature|both)

command               CDATA #IMPLIED

commandLinePattern    CDATA #IMPLIED

commandLineGenerator  CDATA #IMPLIED

dependencyCalculator  CDATA #IMPLIED

errorParsers          CDATA #IMPLIED

advancedInputCategory (true | false)

customBuildStep       (true | false)

announcement          CDATA #IMPLIED

icon                  CDATA #IMPLIED

versionsSupported     CDATA #IMPLIED

convertToId           CDATA #IMPLIED

optionPathConverter   CDATA #IMPLIED

supportsManagedBuild  (true | false)

isSystem              (true | false)

isHidden              (true | false) >

Defines a tool used in the build process.



<!ELEMENT inputType (inputOrder* , additionalInput* , enablement*)>

<!ATTLIST inputType

id                              CDATA #REQUIRED

name                            CDATA #IMPLIED

superClass                      CDATA #IMPLIED

sourceContentType               CDATA #IMPLIED

sources                         CDATA #IMPLIED

dependencyContentType           CDATA #IMPLIED

dependencyExtensions            CDATA #IMPLIED

option                          CDATA #IMPLIED

assignToOption                  CDATA #IMPLIED

multipleOfType                  (true | false)

primaryInput                    (true | false)

dependencyCalculator            CDATA #IMPLIED

buildVariable                   CDATA #IMPLIED

scannerConfigDiscoveryProfileId CDATA #IMPLIED

languageId                      CDATA #IMPLIED

languageInfoCalculator          CDATA #IMPLIED>

Defines a type of input for the tool. Note that the calculated dependencies of an input type are not described by a separate input type, but are described by attributes of this element.



<!ELEMENT inputOrder EMPTY>

<!ATTLIST inputOrder

path     CDATA #REQUIRED

order    CDATA #IMPLIED

excluded (true | false) >

Describes optional, ordering, information regarding the inputs of an inputType. Note: This element is not yet implemented



<!ELEMENT additionalInput EMPTY>

<!ATTLIST additionalInput

paths CDATA #REQUIRED

kind  (additionalinput|additionalinputdependency|additionaldependency) >

Describes optional information regarding additional inputs and/or dependencies.



<!ELEMENT outputType (enablement*)>

<!ATTLIST outputType

id                CDATA #REQUIRED

name              CDATA #IMPLIED

superClass        CDATA #IMPLIED

outputContentType CDATA #IMPLIED

outputs           CDATA #IMPLIED

option            CDATA #IMPLIED

multipleOfType    (true | false)

primaryInputType  CDATA #IMPLIED

primaryOutput     (true | false)

outputPrefix      CDATA #IMPLIED

outputNames       CDATA #IMPLIED

namePattern       CDATA #IMPLIED

nameProvider      CDATA #IMPLIED

buildVariable     CDATA #IMPLIED>

Defines a type of output for the tool.



<!ELEMENT optionCategory (enablement*)>

<!ATTLIST optionCategory

id                      CDATA #REQUIRED

name                    CDATA #REQUIRED

owner                   CDATA #IMPLIED

icon                    CDATA #IMPLIED

applicabilityCalculator CDATA #IMPLIED>

An optional, but useful, mechanism for grouping options together.



<!ELEMENT option ((listOptionValue* | enumeratedOptionValue* | treeOptionRoot?) , enablement*)>

<!ATTLIST option

id                          CDATA #REQUIRED

name                        CDATA #IMPLIED

superClass                  CDATA #IMPLIED

isAbstract                  (true | false) "false"

unusedChildren              CDATA #IMPLIED

category                    CDATA #IMPLIED

resourceFilter              (project|file|all) "all"

valueType                   (string|stringList|boolean|enumerated|includePath|definedSymbols|libs|userObjs|symbolFiles|includeFiles|libPaths|libFiles|undefIncludePath|undefDefinedSymbols|undefLibPaths|undefLibFiles|undefIncludeFiles|undefSymbolFiles|tree) "string"

browseType                  (none|file|directory)

browseFilterPath            CDATA #IMPLIED

browseFilterExtensions      CDATA #IMPLIED

value                       CDATA #IMPLIED

defaultValue                CDATA #IMPLIED

defaultValueGenerator       CDATA #IMPLIED

command                     CDATA #IMPLIED

commandGenerator            CDATA #IMPLIED

commandFalse                CDATA #IMPLIED

useByScannerDiscovery       (true | false)

excludeFromScannerDiscovery (true | false)

helpSupplier                CDATA #IMPLIED

tip                         CDATA #IMPLIED

contextId                   CDATA #IMPLIED

valueHandler                CDATA #IMPLIED

valueHandlerExtraArgument   CDATA #IMPLIED

applicabilityCalculator     CDATA #IMPLIED

contextId                   CDATA #IMPLIED

fieldEditor                 IDREF #IMPLIED

fieldEditorExtraArgument    CDATA #IMPLIED>

An option is associated with a tool. Options can contain boolean values, a simple text string, a selection from an enumerated list, or a list of values. Options also map the value they contain to a command-line flag, such as '-g' in the case of debugging symbol information for compilers. Options can also be associated with a toolchain. However in such a case the option must be contained in a optionCategory.



<!ELEMENT enumeratedOptionValue (enablement*)>

<!ATTLIST enumeratedOptionValue

id        CDATA #REQUIRED

name      CDATA #REQUIRED

isDefault (true | false)

command   CDATA #IMPLIED>

Defines a single value of an enumerated option.



<!ELEMENT listOptionValue EMPTY>

<!ATTLIST listOptionValue

value   CDATA #REQUIRED

builtIn (true | false) >

A value for defining individual elements of a list option.



<!ELEMENT treeOption (treeOption)*>

<!ATTLIST treeOption

id          CDATA #REQUIRED

name        CDATA #REQUIRED

description CDATA #IMPLIED

command     CDATA #IMPLIED

isDefault   (true | false)

icon        CDATA #IMPLIED

order       CDATA #IMPLIED>


<!ELEMENT treeOptionRoot (treeOption)+>

<!ATTLIST treeOptionRoot

id             CDATA #REQUIRED

name           CDATA #REQUIRED

icon           CDATA #IMPLIED

selectLeafOnly (true | false) >

Represents the root of a tree of options. Note that the root is never shown to the user and can't be selected. It is a place holder for settings affecting the options tree behavior



<!ELEMENT builder (option*)>

<!ATTLIST builder

id                           CDATA #REQUIRED

name                         CDATA #IMPLIED

superClass                   CDATA #IMPLIED

isAbstract                   (true | false) "false"

unusedChildren               CDATA #IMPLIED

command                      CDATA #IMPLIED

arguments                    CDATA #IMPLIED

buildfileGenerator           CDATA #IMPLIED

errorParsers                 CDATA #IMPLIED

variableFormat               CDATA #IMPLIED

isVariableCaseSensitive      (true | false) "false"

reservedMacroNames           CDATA #IMPLIED

reservedMacroNameSupplier    CDATA #IMPLIED

macroInputFileNameValue      CDATA #IMPLIED

macroInputFileExtValue       CDATA #IMPLIED

macroInputFileBaseNameValue  CDATA #IMPLIED

macroInputFileRelPathValue   CDATA #IMPLIED

macroInputDirRelPathValue    CDATA #IMPLIED

macroOutputFileNameValue     CDATA #IMPLIED

macroOutputFileExtValue      CDATA #IMPLIED

macroOutputFileBaseNameValue CDATA #IMPLIED

macroOutputFileRelPathValue  CDATA #IMPLIED

macroOutputDirRelPathValue   CDATA #IMPLIED

versionsSupported            CDATA #IMPLIED

convertToId                  CDATA #IMPLIED

supportsManagedBuild         (true | false)

autoBuildTarget              CDATA #IMPLIED

incrementalBuildTarget       CDATA #IMPLIED

cleanBuildTarget             CDATA #IMPLIED

ignoreErrCmd                 CDATA #IMPLIED

parallelBuildCmd             CDATA #IMPLIED

parallelBuildOn              (true | false)

parallelizationNumber        CDATA #IMPLIED

isSystem                     (true | false)

commandLauncher              CDATA #IMPLIED

buildRunner                  CDATA #IMPLIED>

Represents the utility that drives the build process (typically, but not necessarily, a variant of "make").



<!ELEMENT targetPlatform EMPTY>

<!ATTLIST targetPlatform

id             CDATA #REQUIRED

name           CDATA #IMPLIED

superClass     CDATA #IMPLIED

isAbstract     (true | false) "false"

unusedChildren CDATA #IMPLIED

osList         CDATA #IMPLIED

archList       CDATA #IMPLIED

binaryParser   CDATA #IMPLIED>

Represents the os/architecture combination(s) upon which the outputs of a tool-chain can be deployed.



<!ELEMENT dynamicElementProvider EMPTY>

<!ATTLIST dynamicElementProvider

class CDATA #REQUIRED

name  CDATA #REQUIRED>

An optional element that allows a tool implementor to supply a class that creates one or more dynamic toolchain elements. For example, the class might create a new tool reference based on the contents of a special file, and a new target that uses that reference.



<!ELEMENT buildDefinitionStartup EMPTY>

<!ATTLIST buildDefinitionStartup

class CDATA #REQUIRED

name  CDATA #REQUIRED>

An optional element that allows a tool implementor to supply a class that insures a plugin that modifies any build configruation attributes (e.g. the build config id) will get loaded before initial project information is created.



<!ELEMENT managedBuildRevision EMPTY>

<!ATTLIST managedBuildRevision

fileVersion CDATA #REQUIRED>

Version identifier for the managed build extension point. It is a string representation, consisting of three (3) tokens separated by a decimal point. The 3 tokens are positive integer numbers. For example, the following are valid version identifiers:



<!ELEMENT envVarBuildPath EMPTY>

<!ATTLIST envVarBuildPath

pathType          (buildpathInclude|buildpathLibrary)

variableList      CDATA #REQUIRED

pathDelimiter     CDATA #IMPLIED

buildPathResolver CDATA #IMPLIED>

Defines a set of environment variables used by a tool to represent the build paths (include paths or library paths).



<!ELEMENT enablement (and* | or* | not* | checkOption* | checkString* | false* | checkHolder* | checkBuildProperty* | hasNature*)>

<!ATTLIST enablement

type                CDATA "ALL"

attribute           (command|commandFalse|defaultValue|value|artifactExtension)

value               CDATA #IMPLIED

extensionAdjustment (true | false) >

Contains boolean expression that specifies option applicability



<!ELEMENT and (and* , or* , not* , checkOption* , checkString* , checkHolder* , checkBuildProperty*)>

Represents boolean "and" operation



<!ELEMENT or (and* , or* , not* , checkOption* , checkString* , checkHolder* , checkBuildProperty*)>

Represents boolean "or" operation



<!ELEMENT not (and* | or* | not* | checkOption* | checkString* | checkHolder* | checkBuildProperty*)>

Represents boolean "not" operation



<!ELEMENT checkOption EMPTY>

<!ATTLIST checkOption

optionId      CDATA #IMPLIED

holderId      CDATA #IMPLIED

value         CDATA #IMPLIED

isRegex       CDATA "false"

otherOptionId CDATA #IMPLIED

otherHolderId CDATA #IMPLIED>

Performs an option value check. The option value can be checked either agains some pre-defined value or against the value of another option



<!ELEMENT checkString EMPTY>

<!ATTLIST checkString

string  CDATA #REQUIRED

value   CDATA #REQUIRED

isRegex CDATA "false">

Performs a string check.



<!ELEMENT false (#PCDATA)>

Represents the "false" value. This element can be used as a direct child of the "enablement" element to represent that the given option applicability is disabled. E.g. to specify that the option is never displayed in UI or never used in the command line.



<!ELEMENT checkHolder EMPTY>

<!ATTLIST checkHolder

holderId CDATA #REQUIRED>

Performs the holder check.



<!ELEMENT checkBuildProperty EMPTY>

<!ATTLIST checkBuildProperty

property CDATA #IMPLIED

value    CDATA #IMPLIED>

Performs the Build Property check



<!ELEMENT supportedProperties (property)>

contains the list of supported properties



<!ELEMENT property (value+)>

<!ATTLIST property

id CDATA #IMPLIED>

contains the supported values for the property



<!ELEMENT value EMPTY>

<!ATTLIST value

id CDATA #IMPLIED>

represents the property value



<!ELEMENT folderInfo (toolChain)>

<!ATTLIST folderInfo

resourcePath CDATA #REQUIRED

exclude      (true | false) >

Represents per-folder settings.



<!ELEMENT fileInfo EMPTY>

<!ATTLIST fileInfo

resourcePath      CDATA #IMPLIED

exclude           (true | false)

rcbsApplicability (before|after|override|disable)

toolsToInvoke     CDATA #IMPLIED>

Represents per-file settings. This element has the same meaning as resourceConfiguration. It is added for consistency with the folderInfo element. The only difference between this element and the resourceConfiguration is that resourceConfiguration specifies the resource full path, while the fileInfo specifies project-relative resource path in the same way as the folderInfo does.



<!ELEMENT hasNature EMPTY>

<!ATTLIST hasNature

natureId CDATA #IMPLIED>

Checks whether the project containing the resource has a given nature



Examples:
[Enter examples here.]

API Information:
[Enter API information here.]

Supplied Implementation:
An implementation of this extension point is supplied in org.eclipse.cdt.ui


Copyright (c) 2003, 2006 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available on the Eclipse website.