diff --git a/doc/org.eclipse.cdt.doc.isv/book.css b/doc/org.eclipse.cdt.doc.isv/book.css index 139eb28a09b..0d00c10b7e0 100644 --- a/doc/org.eclipse.cdt.doc.isv/book.css +++ b/doc/org.eclipse.cdt.doc.isv/book.css @@ -1 +1 @@ -P.Code { display: block; text-align: left; text-indent: 0.00pt; margin-top: 0.000000pt; margin-bottom: 0.000000pt; margin-right: 0.000000pt; margin-left: 15pt; font-size: 10.000000pt; font-weight: medium; font-style: Regular; color: #4444CC; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Courier New"; } H6.CaptionFigColumn { display: block; text-align: left; text-indent: 0.000000pt; margin-top: 3.000000pt; margin-bottom: 11.000000pt; margin-right: 0.000000pt; margin-left: 0.000000pt; font-size: 9.000000pt; font-weight: medium; font-style: Italic; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Arial"; } P.Note { display: block; text-align: left; text-indent: 0pt; margin-top: 19.500000pt; margin-bottom: 19.500000pt; margin-right: 0.000000pt; margin-left: 30pt; font-size: 11.000000pt; font-weight: medium; font-style: Italic; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Arial"; } EM.UILabel { font-weight: Bold; font-style: Regular; text-decoration: none; vertical-align: baseline; text-transform: none; } EM.CodeName { font-weight: Bold; font-style: Regular; text-decoration: none; vertical-align: baseline; text-transform: none; font-family:"Courier New"; } /* following font face declarations need to be removed for DBCS */ body, h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-family: Arial, Helvetica, sans-serif; color: #000000} pre { font-family: Courier, monospace} /* end font face declarations */ /* following font size declarations should be OK for DBCS */ body, h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-size: 10pt; } pre { font-size: 10pt} /* end font size declarations */ body { background: #FFFFFF} h1 { font-size: 18pt; margin-top: 5; margin-bottom: 1 } h2 { font-size: 14pt; margin-top: 25; margin-bottom: 3 } h3 { font-size: 11pt; margin-top: 20; margin-bottom: 3 } h4 { font-size: 10pt; margin-top: 20; margin-bottom: 3; font-style: italic } p { margin-top: 10px; margin-bottom: 10px } pre { margin-left: 6; font-size: 9pt } a:link { color: #0000FF } a:hover { color: #000080 } a:visited { text-decoration: underline } ul { margin-top: 0; margin-bottom: 10 } li { margin-top: 0; margin-bottom: 0 } li p { margin-top: 0; margin-bottom: 0 } ol { margin-top: 0; margin-bottom: 10 } dl { margin-top: 0; margin-bottom: 10 } dt { margin-top: 0; margin-bottom: 0; font-weight: bold } dd { margin-top: 0; margin-bottom: 0 } strong { font-weight: bold} em { font-style: italic} var { font-style: italic} div.revision { border-left-style: solid; border-left-width: thin; border-left-color: #7B68EE; padding-left:5 } th { font-weight: bold } \ No newline at end of file +P.Code { display: block; text-align: left; text-indent: 0.00pt; margin-top: 0.000000pt; margin-bottom: 0.000000pt; margin-right: 0.000000pt; margin-left: 15pt; font-size: 10.000000pt; font-weight: medium; font-style: Regular; color: #4444CC; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Courier New"; } H6.CaptionFigColumn { display: block; text-align: left; text-indent: 0.000000pt; margin-top: 3.000000pt; margin-bottom: 11.000000pt; margin-right: 0.000000pt; margin-left: 0.000000pt; font-size: 9.000000pt; font-weight: medium; font-style: Italic; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Arial"; } P.Note { display: block; text-align: left; text-indent: 0pt; margin-top: 19.500000pt; margin-bottom: 19.500000pt; margin-right: 0.000000pt; margin-left: 30pt; font-size: 11.000000pt; font-weight: medium; font-style: Italic; color: #000000; text-decoration: none; vertical-align: baseline; text-transform: none; font-family: "Arial"; } EM.UILabel { font-weight: Bold; font-style: Regular; text-decoration: none; vertical-align: baseline; text-transform: none; } EM.CodeName { font-weight: Bold; font-style: Regular; text-decoration: none; vertical-align: baseline; text-transform: none; font-family:"Courier New"; } /* following font face declarations need to be removed for DBCS */ body, h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-family: Arial, Helvetica, sans-serif; color: #000000} pre { font-family: Courier, monospace} /* end font face declarations */ /* following font size declarations should be OK for DBCS */ body, h1, h2, h3, h4, h5, h6, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-size: 10pt; } pre { font-size: 10pt} /* end font size declarations */ body { background: #FFFFFF} h1 { font-size: 18pt; margin-top: 5; margin-bottom: 1 } h2 { font-size: 14pt; margin-top: 25; margin-bottom: 3 } h3 { font-size: 11pt; margin-top: 20; margin-bottom: 3 } h4 { font-size: 10pt; margin-top: 20; margin-bottom: 3; font-style: italic } p { margin-top: 10px; margin-bottom: 10px } pre { margin-left: 6; font-size: 9pt } a:link { color: #0000FF } a:hover { color: #000080 } a:visited { text-decoration: underline } ul { margin-top: 0; margin-bottom: 10 } li { margin-top: 0; margin-bottom: 0 } li p { margin-top: 0; margin-bottom: 0 } ol { margin-top: 0; margin-bottom: 10 } dl { margin-top: 0; margin-bottom: 10 } dt { margin-top: 0; margin-bottom: 0; font-weight: bold } dd { margin-top: 0; margin-bottom: 0 } strong { font-weight: bold} em { font-style: italic} var { font-style: italic} div.revision { border-left-style: solid; border-left-width: thin; border-left-color: #7B68EE; padding-left:5 } th { font-weight: bold } .typewriter {font-family:monospace;} .bold {font-weight:600;} .linethrough {text-decoration: line-through;} .underline {text-decoration: underline;} \ No newline at end of file diff --git a/doc/org.eclipse.cdt.doc.isv/cdtOptions b/doc/org.eclipse.cdt.doc.isv/cdtOptions index 608b90c040e..a7614513108 100644 --- a/doc/org.eclipse.cdt.doc.isv/cdtOptions +++ b/doc/org.eclipse.cdt.doc.isv/cdtOptions @@ -7,7 +7,7 @@ -splitIndex -windowtitle "Eclipse CDT API Specification" -doctitle "Eclipse CDT API Specification" --header "Eclipse CDT
Pre-release 3.0" +-header "Eclipse CDT
Pre-release 3.0" -bottom "Copyright (c) IBM Corp. and others 2004. All Rights Reserved." -group "C/C++ Development Tools Core Plug-in Packages" "org.eclipse.cdt.core:org.eclipse.cdt.core.*" -group "C/C++ Development Tools Debug Core Plug-in Packages" "org.eclipse.cdt.debug.core:org.eclipse.cdt.debug.core.*" diff --git a/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html index c0161b509bc..3d2641aef8e 100644 --- a/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html +++ b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html @@ -67,10 +67,10 @@ table.MsoTableGrid - + @@ -144,8 +144,8 @@ please refer to the "What's New in the CDT Build System" document.

different tool-chain/tool/builder must have different names as well as toolChain/tool/builder build definitions representing one and the same tool-chain/tool/builder must have identical names.

-

    - Example: to illustrate the above requirement here is how this is handled +

    + Example: to illustrate the above requirement here is how this is handled in the gnu tool-chain definitions:

    The gnu plug-in contains the gcc linker tool on Linux is defined as

diff --git a/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_new_CBS_40.html b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_new_CBS_40.html index be0d827295a..5136b3e2288 100644 --- a/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_new_CBS_40.html +++ b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_new_CBS_40.html @@ -31,7 +31,7 @@ h3 margin-left:0in; page-break-after:avoid; font-size:14.0pt; - font-family:Arial; + font-family:"Arial"; font-style:italic} table.MsoTableGrid {border:1.0pt solid windowtext; @@ -68,11 +68,11 @@ table.MsoTableGrid
Migrating your - tool-chain integration to CDT 4.0
- This document describes steps needed to be - done to migrate the existing tool-chain integrations to the CDT 4.0
Migrating your + tool-chain integration to CDT 4.0
+ This document describes steps needed to be + done to migrate the existing tool-chain integrations to the CDT 4.0
- + CDT build system in CDT 4.0 @@ -196,11 +196,11 @@ functionality (org.eclipse.cdt.managedbuilder.core and org.eclipse.cdt.managedbuilder.ui plug-ins). So all the API that were used for the Managed Build Projects in the CDT 3.x becomes valid for the Makefile Projects in the 4.0, i.e

-

The -org.eclipse.cdt.managedbuilder.core.buildDefinitions extension point serves +

The +org.eclipse.cdt.managedbuilder.core.buildDefinitions extension point serves as an entry-point for the tool integration into the Build System.

-

The -org.eclipse.cdt.managedbuilder.core.ManagedBuildManager class serves as an +

The +org.eclipse.cdt.managedbuilder.core.ManagedBuildManager class serves as an entry-point for accessing/manipulating the Build Settings information.

From the API point of view there is no principal difference between the Makefile and Managed Build Projects. From the Build System perspective the @@ -230,21 +230,21 @@ Project Wizard" user description for more detail on the New Project Wizard type and tool-chain(s) to be used with the project type.

 

New project wizard dialog

-

Presenting project-types and tool-chains in the New Project Wizard

+

Presenting project-types and tool-chains in the New Project Wizard

A tool-integrator has two options of presenting his project-types in the wizard.

  1. Define a new custom Project Type entry.
  2. Use the general project type entries mechanism.
-

NOTE:  The new New Project Wizard now +

NOTE:  The new New Project Wizard now operates with tool-chains allowing to select the tool-chain(s) to be used on project creation. Thus it is required that all toolChain/tool/builder build definitions representing different tool-chains/tools/builders must have different names as well as toolChain/tool/builder build definitions representing one and the same tool-chain/tool/builder must have identical names.

-

    - Example: to illustrate the above requirement here is how this is handled +

    + Example: to illustrate the above requirement here is how this is handled in the gnu tool-chain definitions:

    The gnu plug-in contains the gcc linker tool on Linux is defined as

@@ -276,14 +276,14 @@ wizard.

different tool(executable) than the Linux linker definition. The cygwin linker definition specifies the name="%ToolName.linker.cygwin.gnu.c" that differs from the one defined by the Linux gcc linker.

-

Defining new Project Type entries

+

Defining new Project Type entries

In case a tool-integrator is willing his/her project type to be displayed as separate entries with custom names, his project-type definition must specify a "name" property for the project-type, e.g.

Project type definition and new project wizard

When the project type entry is selected in the wizard the "Toolchain:" pane will display the list of tool-chains defined/associated with the project type

-

Using general project type entries

+

Using general project type entries

The "general project types" mechanism allows grouping multiple project types/tool-chains under one project-type entry thus ensuring the compactness of the project-type information and ensuring a common user experience across @@ -291,7 +291,7 @@ different tool-chains and integrations. When the general project type entry is s "ToolChains:" pane will list all tool-chains contributed from different project types allowing user to select the tool-chain to be used with the given project-type.

-

What are the general project type entries?

+

What are the general project type entries?

The general project type entries mechanism is made based upon the new Build Properties mechanism introduces in the new CDT Build System. Each general project type entry is a value of the "buildArtefactType" property which represents the build @@ -308,7 +308,7 @@ shared library

org.eclipse.cdt.managedbuilder.core.buildProperties extension point.

See the "Build Properties" section for more detail on the Build Properties mechanism.

-

Contributing to the general project type entries

+

Contributing to the general project type entries

The minimal steps needed to specify that the general project type entry should be used, a project-type definition should specify the "buildArtefact" attribute and assign it to one of the values of the buildArtefactType build property, e.g.

@@ -353,8 +353,8 @@ E.g.

id="cdt.managedbuild.tool.gnu.builder.mingw.base"

-       - ...

+       + ...

        @@ -418,9 +418,9 @@ supported

 

What's New in CDT - Build System 4.0
- This document outlines the new features presented +
What's New in CDT + Build System 4.0
+ This document outlines the new features presented in the new - CDT build system in CDT 4.0
idea
- - + + @@ -484,12 +484,12 @@ following

properties associated with the configuration. (See the "Build Properties mechanism" section for detail on the Build Properties mechanism)

-

NOTE:  In order to function properly +

NOTE:  In order to function properly the tool-chain modification functionality requires that all toolChain/tool/builder build definitions representing different tool-chains/tools/builders must have different names as well as toolChain/tool/builder build definitions representing one and the same tool-chain/tool/builder must have identical names.

-

    - Example: to illustrate the above requirement here is how this is handled +

    + Example: to illustrate the above requirement here is how this is handled in the gnu tool-chain definitions:

    The gnu plug-in contains the gcc linker tool on Linux is defined as

@@ -562,8 +562,8 @@ functionality:

changing the value of the buildArtefactType property in case the tool-chain supports that. -

Defining new -Build Properties and their values

+

Defining new +Build Properties and their values

 

Build Properties are defined with the org.eclipse.cdt.managedbuilder.core.buildProperties @@ -776,13 +776,13 @@ Build System-predefined properties

+ Property id + Description + Pre-defined Values + The unique identifier of the projectType that this projectType is derived from. + The unique identifier of the projectType that was used when + creating this project. parent + The unique identifier of the configuration that this + configuration is derived from. @@ -1096,8 +1096,8 @@ track of this specific configuration. artifactName + The name of the build goal defined by the configuration.  + This can be set by the user in the UI. @@ -1108,8 +1108,8 @@ track of this specific configuration. artifactExtension + The extension that the build goal will have, for example + ‘.exe’ or ‘.so’ @@ -1120,8 +1120,8 @@ track of this specific configuration. cleanCommand + The command to remove intermediary and output files on the + build machine. + specified, this overrides the tool-chain errorParsers attribute. + The unique identifier of the toolChain that this toolChain + is derived from. @@ -1341,11 +1341,11 @@ the schema table below.

isAbstract + is false. @@ -1356,10 +1356,10 @@ the schema table below.

targetTool + versions of a target tool that are used with different project natures. + get built. + operating systems, unless the user has turned off filtering. + turned off filtering. @@ -1431,13 +1431,13 @@ the schema table below.

valign="top">errorParsers + the tool-chain and the builder child of the tool-chain. @@ -1486,8 +1486,8 @@ the schema table below.

method to be called to determine if support for the tool-chain is currently installed on the system.  MBS uses this information in order to filter the choices presented to the CDT user and to inform the - user when support needed by their project is not installed. If the - isToolChainSupported callback is not provided by the tool-chain + user when support needed by their project is not installed. If the + isToolChainSupported callback is not provided by the tool-chain definition, the tool-chain is treated as supported.  If all configurations defined for the given project type are not supported the project type is treated as unsupported. @@ -1575,9 +1575,9 @@ the schema table below.

3.6 Builder

The builder element represents the utility that drives the build process (typically, but not necessarily, a variant -of “make”).  It defines the command needed to invoke the build utility in the -command attribute. Any special flags that need to be passed to the builder -are defined in the arguments attribute.   The builder can specify the +of “make”).  It defines the command needed to invoke the build utility in the +command attribute. Any special flags that need to be passed to the builder +are defined in the arguments attribute.   The builder can specify the error parser(s) to be used to parse its output.  The builder also specifies a Java class that generates the build file.  MBS provides built-in gnu makefile generation.

@@ -1585,7 +1585,7 @@ generation.

build macros and how they interact with the build file generator. 

The builder can specify the template of how to convert a build macro that contains an environment variable into the build file -environment variable format by specifying the variableFormat attribute. +environment variable format by specifying the variableFormat attribute.

The builder can specify the builder internal (reserved) macro names and the macro names reserved by a build file generator (used to @@ -1593,24 +1593,24 @@ store the list of objects files, input files, etc.). This information will be used by the build file generator in the case where the build environment variable macros are not to be expanded in the build file. If an environment variable build macro name conflicts with the name of some reserved macro, it -always gets resolved in the build file. See the reservedMacroNames and -reservedMacroNameSupplier attributes below.

+always gets resolved in the build file. See the reservedMacroNames and +reservedMacroNameSupplier attributes below.

The builder can provide the values for the file-context -build macros.  To provide the value for the macro ${<macro_name>}, the -macro<macro_name>Value attribute should be specified. The value of this +build macros.  To provide the value for the macro ${<macro_name>}, the +macro<macro_name>Value attribute should be specified. The value of this attribute should be set to the value of the given macro. MBS will resolve the value of unsupported file-context macros to their actual macro value. In this case, a separate rule for each file will be generated when file-specific macros are used.  See the gnu tool-chain for an example of setting these attributes for gnu make.

MBS supports multiple versions of -a builder.  The versionsSupported attribute contains a list +a builder.  The versionsSupported attribute contains a list of supported versions of a particular builder. This indicates that there is no need to perform a conversion when user imports/loads a project with one of the supported builder versions. When a tool integrator decides to no longer support a version of a builder, they continue to ship the old builder definition and -specify the id with version number of the new builder to convert to in the -convertToId attribute.  If changes to the project information need to be +specify the id with version number of the new builder to convert to in the +convertToId attribute.  If changes to the project information need to be performed by the conversion, the tool chain definition must provide a converter extension to perform the conversion.  If no converter extension is provided, then there won’t be any conversion.  See § 8.2 for additional information.

@@ -1636,87 +1636,87 @@ the schema table below.

+ id + A unique identifier that the model manager will use to keep +track of this specific builder. + yes + name + Human-readable name for the builder to be used in the UI. + no + superClass + The unique identifier of the builder that this builder is + derived from. + no + isAbstract + will inherit its attributes and children.  The default value is false. + no + command + The default is "make". + no + arguments + is “-k”. + no + errorParsers + no + buildfileGenerator + no + variableFormat contain environment variables are resolved by MBS to their actual value.  The user can also specify that build macros that contain environment variables be resolved to their actual value, as explained - earlier. + earlier. + no + isVariableCase + Sensitive + in the buildfile. + no + reservedMacro + Names + these names will always be treated as reserved. + no + reservedMacro + NameSupplier + no + macroInputFile + NameValue 2. If a tool accepts building multiple files of the primary input type with one tool invocation the input file is undefined and the macros representing the input file contain information about one of the inputs - of the primary input type being built. + of the primary input type being built. + no + macroInputFile + ExtValue + Represents the InputFileExt macro value. The macro + specifies the extension of the input file. + no + macroInputFile + BaseNameValue + extension stripped. + no + macroInputFile + RelPathValue + Represents the InputFileRelPath macro value. The macro + specifies the input file path relative to the builder current directory. + no + macroInputDir + RelPathValue + directory. + no + macroInputDir + RelPathValue + directory. + no
Modification typePossible levels of - modificationsModification typePossible levels of + modifications
Changing/substituting the entire tool-chain

- Property id

- Description

- Pre-defined Values

@@ -848,8 +848,8 @@ Build System-predefined properties

 

 

-

Automatic tool -settings adjustment with Build Properties

+

Automatic tool +settings adjustment with Build Properties

 

Tool-chain ant tool definitions can specify enablement expressions to make their default settings be @@ -994,8 +994,8 @@ font-family:"Courier New";color:navy"></option>

information on using enablement expressions please refer to the description of the org.eclipse.cdt.managedbuilder.core.buildDefinitions extension-point.

 

-

Specifying the set of supported -build properties

+

Specifying the set of supported +build properties

 

The tool-chain modification and New Project Wizard mechanisms need to know the set of build properties each @@ -1077,8 +1077,8 @@ color:black">    Assigning the set of build -properties for configurations/project-types

+

Assigning the set of build +properties for configurations/project-types

 

Once the tools/tool-chains has specified the setting adjustment expressions it is possible to use one and the @@ -1102,9 +1102,9 @@ buildArtefactType= -It is possible to specify +It is possible to specify the "buildProperties" attribute for the project type and define the set of build -properties there in the same way as for configuration (see below)

+properties there in the same way as for configuration (see below)

            .......>

@@ -1114,8 +1114,8 @@ properties there in the same way as for configuration (see below)< <configuration

-                -...

+                +...

               @@ -1138,8 +1138,8 @@ color:navy">>

                        .....>

-                    -...

+                    +...

                  @@ -1172,9 +1172,9 @@ font-family:"Courier New";color:navy"> </toolChain>< The folderInfo is a new element presented in 4.0. The element represents the per-folder settings - - - + + + @@ -1202,9 +1202,9 @@ path, while the fileInfo specifies project-relative resource path in the same way as the folderInfo does.

PropertyDescriptionDefault ValuePropertyDescriptionDefault Value
resourcePath
- - - + + + @@ -1249,9 +1249,9 @@ way as the folderInfo does.

the default value is used ONLY in case the property is undefined for all tool-chain's super-classes
PropertyDescriptionDefault ValuePropertyDescriptionDefault Value
resourcePath
- - - + + + @@ -1266,9 +1266,9 @@ tool-chain's super-classes
PropertyDescriptionDefault ValuePropertyDescriptionDefault Value
supportsManagedBuild
the default value is used ONLY in case the property is undefined for all tool's super-classes
- - - + + + @@ -1283,9 +1283,9 @@ super-classes
PropertyDescriptionDefault ValuePropertyDescriptionDefault Value
supportsManagedBuild
the default value is used ONLY in case the property is undefined for all input types's super-classes
- - - + + + @@ -1320,9 +1320,9 @@ types's super-classes
PropertyDescriptionDefault ValuePropertyDescriptionDefault Value
languageId
the default value is used ONLY in case the property is undefined for all input types's super-classes
- - - + + + diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dom/index/prebuiltIndexes.html b/doc/org.eclipse.cdt.doc.isv/guide/dom/index/prebuiltIndexes.html index b4a95d726c5..4fc587350a4 100644 --- a/doc/org.eclipse.cdt.doc.isv/guide/dom/index/prebuiltIndexes.html +++ b/doc/org.eclipse.cdt.doc.isv/guide/dom/index/prebuiltIndexes.html @@ -541,8 +541,8 @@ table.MsoTableGrid

 

-

 

+

 

-

 

+style='mso-element:field-end'> 

-

 

+

 

Overview

@@ -864,8 +864,8 @@ sufficient.

The call-back for project creation must implement the following interface

-

org.eclipse.cdt.core.index.export.IExportProjectProvider

+org.eclipse.cdt.core.index.export.IExportProjectProvider

 

@@ -993,7 +993,7 @@ release.

A default implementation of this interface, which is also intended to be sub-classed, is            org.eclipse.cdt.core.index.export.ExternalExportProjectProvider

+style='mso-tab-count:1'>            org.eclipse.cdt.core.index.export.ExternalExportProjectProvider

 

@@ -1559,9 +1559,9 @@ style='mso-bookmark:_Toc164570192'> -

            org.eclipse.cdt.core.CIndex.ReadOnlyPDOMProvider

+            org.eclipse.cdt.core.CIndex.ReadOnlyPDOMProvider

 

@@ -1581,12 +1581,12 @@ _Toc164570193'>
has the concept of project configurations, which in terms of code corresponds to the interface:

-

org.eclipse.cdt.core.settings.model.ICConfigurationDescription

+org.eclipse.cdt.core.settings.model.ICConfigurationDescription -

 

+ 

The index model allows content to be associated with ICConfigurationDescription objects diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dom/index/prebuiltVersioning.html b/doc/org.eclipse.cdt.doc.isv/guide/dom/index/prebuiltVersioning.html index ec4fabde8f7..74bbf9e27ef 100644 --- a/doc/org.eclipse.cdt.doc.isv/guide/dom/index/prebuiltVersioning.html +++ b/doc/org.eclipse.cdt.doc.isv/guide/dom/index/prebuiltVersioning.html @@ -167,7 +167,7 @@ another.

diff --git a/doc/org.eclipse.cdt.doc.isv/guide/mbs/extensibilityGuide/Managed_Build_Extensibility.html b/doc/org.eclipse.cdt.doc.isv/guide/mbs/extensibilityGuide/Managed_Build_Extensibility.html index 2dd20a15d48..47fe067d3f6 100644 --- a/doc/org.eclipse.cdt.doc.isv/guide/mbs/extensibilityGuide/Managed_Build_Extensibility.html +++ b/doc/org.eclipse.cdt.doc.isv/guide/mbs/extensibilityGuide/Managed_Build_Extensibility.html @@ -68,10 +68,10 @@ table.MsoTableGrid
PropertyDescriptionDefault ValuePropertyDescriptionDefault Value
parallelBuildCmd -

Built With \ Use With

+ Built With \ Use With
-

 

+  
- + @@ -219,8 +219,8 @@ managed build system and how to extend it.

1 Introduction

-

NOTE: -the document describes the CDT Managed Build System (MBS) 3.x functionality. +

NOTE: +the document describes the CDT Managed Build System (MBS) 3.x functionality. Although there have been lots of significant changes made to the Build System in the 4.0, the document still remains valid since all the 4.0 build system changes were made by extending the MBS functionality described in this document.

@@ -439,7 +439,7 @@ contains the following primary objects: 

Managed Build -System Extensibility Document
- This document describes the design of the -managed build system and how to extend it.
Managed Build +System Extensibility Document
+ This document describes the design of the +managed build system and how to extend it.
idea

2.1 User Scenarios

The following sections describe how the user interacts with MBS.  Text -in red indicates MBS functionality that is not yet +in red indicates MBS functionality that is not yet implemented, but is intended to be implemented in future releases of MBS.

2.1.1 Creating a New Project

The CDT user’s experience with the @@ -464,7 +464,7 @@ consideration by turning them off in the MBS Preferences page.

filtering, however configurations that use tool-chains that are not installed will not be able to be built on the host system.

After selecting the project type, -the user selects 1 … n configurations for her new project from the list +the user selects 1 … n configurations for her new project from the list of configurations defined in the project type.  Different configurations can use different tool-chains. The list of configurations is, by default, filtered by:

@@ -501,63 +501,63 @@ tool-chain.  It should be easy for a user to take an existing CDT project t different host system and quickly create a configuration that builds on that host system using a version of the tool-chain that supports the new host.

The user -can also pick 1 … n configurations from the list of default +can also pick 1 … n configurations from the list of default configurations defined in the project type.  The list of configurations is, by default, filtered as specified above.

2.1.3 Modifying the Tool-chain of the Configuration

The user can select a configuration and modify the following attributes of the tool-chain:

    -
  1. - The command used to invoke a - particular tool in the tool-chain.
  2. -
  3. - The set of error parsers to +
  4. + The command used to invoke a + particular tool in the tool-chain.
  5. +
  6. + The set of error parsers to be used with the build output and the order that the error parsers will be - invoked
  7. -
  8. - The binary parser to be used - with the build binary outputs.
  9. -
  10. - The set of file extensions - that are processed by a tool.
  11. -
  12. - The + invoked
  13. +
  14. + The binary parser to be used + with the build binary outputs.
  15. +
  16. + The set of file extensions + that are processed by a tool.
  17. +
  18. + The addition of Custom Build steps before or after the build.  The user specifies the commands - to be executed by the step.
  19. -
  20. - The mapping of an individual + to be executed by the step.
  21. +
  22. + The mapping of an individual resource to a Custom Build step.  The user specifies the commands to be executed by the step, the input dependencies of the step, and the output files that are created by the - step.
  23. -
  24. - The mapping of + step.
  25. +
  26. + The mapping of a set of file extensions to a Custom Build step.  The user specifies the commands to be executed by the step, the input dependencies of the step, and the output resources that are created by the - step.
  27. -
  28. - The + step.
  29. +
  30. + The tool-chain itself:  The user can change the tool-chain to be used with the configuration.  All applicable settings are automatically transferred to the - new tool-chain.
  31. -
  32. - The + new tool-chain.
  33. +
  34. + The mapping of an individual resource to a tool:  The available tools come from the configuration’s - tool-chain, from a different tool-chain or from individually defined tools.
  35. -
  36. - The + tool-chain, from a different tool-chain or from individually defined tools.
  37. +
  38. + The mapping of a set file extensions to a category of tools or a specific tool:  The user can modify the current assignments and add new assignments.  The available tools come from the configuration’s tool-chain, - from a different tool-chain or from individually defined tools.
  39. + from a different tool-chain or from individually defined tools.

2.1.4 Modifying the Tool Options of the Configuration

The user can modify the options of -an individual configuration, or he can make changes to a set of configurations -that he has selectedThe user can select a set of configurations individually +an individual configuration, or he can make changes to a set of configurations +that he has selectedThe user can select a set of configurations individually or by selecting a “category” of configurations.  The names of the categories are defined by the configuration provider – “debug” and “release” are commonly supported.  Categories which group configurations by target platform could also @@ -612,18 +612,18 @@ project file (.cdtbuild).

When MBS reads a project file with an older version number:

    -
  1. - MBS asks the user to confirm - the conversion.
  2. -
  3. - If the user confirms the +
  4. + MBS asks the user to confirm + the conversion.
  5. +
  6. + If the user confirms the conversion, the project file is converted and the project can no longer be - loaded by previous versions of MBS.
  7. -
  8. - If the user does not confirm + loaded by previous versions of MBS.
  9. +
  10. + If the user does not confirm the conversion, the MBS information is loaded in a read-only mode, and any changes made to the MBS information will be discarded when the project is - closed.
  11. + closed.

When MBS reads a project file with a newer version number, it displays an error message, and does not load the MBS @@ -634,38 +634,38 @@ also define a version number.  The version number is appended to the end of the element id, and stored by MBS with each reference to the element.  MBS attempts to resolve references in the following manner:

    -
  1. - MBS looks up the id with the - version specified with the reference. 
  2. -
  3. - If not found, MBS looks up +
  4. + MBS looks up the id with the + version specified with the reference. 
  5. +
  6. + If not found, MBS looks up all occurrences of the id, and selects a match in the following order: - +
      -
    1. - the id with the closest - higher version number that lists the referenced version in its - versionsSupported attribute
    2. -
    3. - the id with no version - information specified
    4. +
    5. + the id with the closest + higher version number that lists the referenced version in its + versionsSupported attribute
    6. +
    7. + the id with no version + information specified

If a match is found, there are 2 scenarios:

    -
  1. - The version is still +
  2. + The version is still actively supported by the tool integrator, and the MBS information is - loaded.
  3. -
  4. - The version specifies that a + loaded.
  5. +
  6. +The version specifies that a conversion to a later version of the tool-chain/tool/builder is required.  At the discretion of the tool-chain/tool/builder, the conversion may occur automatically, or the converter may prompt the user to confirm the upgrade.  The same rules apply as above for whether or not the user confirms the - conversion.
  7. + conversion.

If no match is found, MBS displays an error message, and does not load the MBS information.  None of the MBS @@ -681,16 +681,16 @@ describes the format of the grammar and what the information is used for by the build model.  See the CDT 3.0 Gnu tool-chain definitions for an example of using the managed build object model.

Common Attributes

-

Many of the MBS elements require the specification of the id +

Many of the MBS elements require the specification of the id attribute.  The attribute value typically takes a form similar to Eclipse -package names, e.g. "cdt.managedbuild.tool.gnu.c.linker".  Each id +package names, e.g. "cdt.managedbuild.tool.gnu.c.linker".  Each id must be unique within MBS and among all of the loaded manifest files.  It is suggested that you include your company/organization name in -the ids that you create.

-

Many of the MBS elements can specify the name attribute.  The +the ids that you create.

+

Many of the MBS elements can specify the name attribute.  The attribute value is used in the MBS user interface, and may therefore change if your tool-chain supports more than one language.  You can use a plugin.properties file in order to define these strings in an external file (see the Gnu tool-chain definitions for an example).

-

Many of the MBS elements can specify the superClass attribute.  +

Many of the MBS elements can specify the superClass attribute.  The attribute value is the id of an element of the same type as this element.  For most attributes, when the value of an attribute is not specified in an element, the value will default to the value defined by the first super-class @@ -708,8 +708,8 @@ that the attribute is required by the schema for every instance of the element.& "No" means that the attribute is never required and an appropriate default is supplied if necessary.  "In Hierarchy" means that the attribute is not required by the schema, but MBS requires that the attribute be specified -either by the element itself, or inherited from one of its ancestors (see the superClass - attribute). +either by the element itself, or inherited from one of its ancestors (see the superClass + attribute).

3.1 Model

The figure below shows a UML model @@ -729,7 +729,7 @@ template for the projects that a user will create.  The projectType contain or more children of type configuration.  These are the default configurations that the user can choose from.  Note that there is no reason to define a projectType element in a .cdtbuild file.  It would never be used since projectType elements are used to populate the New Project dialog boxes.

-

You must provide a unique identifier for the project-type in the id +

You must provide a unique identifier for the project-type in the id attribute. The build model uses this information to distinguish between the project-type definitions it finds.  You must also @@ -739,22 +739,22 @@ in the UI and new project wizards.

Project-types can be arranged into hierarchies to promote the efficient sharing of configurations. If you have defined a project-type that should not be selected by the user, but is a root -for other project-types, it may be declared abstract by setting the -isAbstract attribute to ‘true’. Abstract project-types do not appear in the +for other project-types, it may be declared abstract by setting the +isAbstract attribute to ‘true’. Abstract project-types do not appear in the UI.  Descendents of an abstract project-type will have the same configurations that the abstract project-type has. For these children to -function properly, their superClass attribute must contain +function properly, their superClass attribute must contain the unique identifier of the super-class project-type.

A concrete project type must have at least one configuration defined for it. A configuration must define (or inherit) a set of tool-chain definitions that work together to produce the build goal as an output.

A projectType may define a project -level environment variable provider in the projectEnvironmentSupplier attribute.  See § +level environment variable provider in the projectEnvironmentSupplier attribute.  See § 7.6 for additional information.

A projectType may define a project -level macro provider in the projectMacroSupplier attribute.  See § +level macro provider in the projectMacroSupplier attribute.  See § 7.8 for additional information.

3.2.1 Schema

@@ -820,7 +820,7 @@ UI.

- The unique identifier of the projectType that this projectType is derived from. @@ -835,10 +835,10 @@ UI.

-

Flags the projectType as abstract.  An abstract +

Flags the projectType as abstract.  An abstract projectType can not be selected by the user in the UI, but projectTypes derived from this projectType will inherit its attributes and children.  - The default value is false.

+ The default value is false.

-

A projectType can be flagged for test purposes only.  It +

A projectType can be flagged for test purposes only.  It can be manipulated programmatically, in JUnit tests for example, but not - selected by the user in the UI.  The default value is false.

+ selected by the user in the UI.  The default value is false.

The following steps occur when a CDT user creates a new Managed Build project:

    -
  1. A new managedProject element is - created.  Its projectType attribute is set to the projectType that - the user selected.  Its name attribute is set to the project name - that the user entered.
  2. -
  3. When the user adds a +
  4. A new managedProject element is + created.  Its projectType attribute is set to the projectType that + the user selected.  Its name attribute is set to the project name + that the user entered.
  5. +
  6. When the user adds a default configuration, the selected configuration element is cloned to - become a child of the managedProject element created in step 1.
  7. -
  8. Add a tool-chain element - that specifies as its superClass the tool-chain that is the child of - the selected configuration element.
  9. -
  10. For each tool element + become a child of the managedProject element created in step 1.
  11. +
  12. Add a tool-chain element + that specifies as its superClass the tool-chain that is the child of + the selected configuration element.
  13. +
  14. For each tool element child of the tool-chain that is the child of the selected configuration element, create a tool element child of the cloned configuration’s - tool-chain element that specifies the original tool element as its - superClass.
  15. + tool-chain element that specifies the original tool element as its + superClass.

This prepares the new project/configurations for modification by the user.

@@ -998,8 +998,8 @@ UI. This is the name that the user entered in the New Project wizard.
- The unique identifier of the projectType that was used when - creating this project. @@ -1019,8 +1019,8 @@ configuration.

child of type tool-chain.  This describes how the project’s resources are transformed into the build artifact.  The configuration is responsible for maintaining the name of the final build goal. The user selects the name of the -build artifact in the UI, and the configuration maintains it in the -artifactName and artifactExtension attributes.  The +build artifact in the UI, and the configuration maintains it in the +artifactName and artifactExtension attributes.  The configuration can contain one or more children of type resourceConfiguration.  These describe build settings of individual resources that are different from the configuration as a whole. 

@@ -1029,10 +1029,10 @@ attribute that will be used by the build model to manage the configuration. It must also have a name that will be displayed in the UI in the build property page and new project wizards.  The configuration contains the information needed to “clean” the build files on -the host machine.  The configuration can specify the cleanCommand +the host machine.  The configuration can specify the cleanCommand attribute which specifies a command that removes the build files.

-

The prebuildStep, -preannounceBuildStep, postbuildStep and postannouncebuildStep +

The prebuildStep, +preannounceBuildStep, postbuildStep and postannouncebuildStep attributes define a custom build step to be run before and/or after the the build steps defined by the tool-chain.  These attributes are not typically defined in the manifest file, but are instead added by a user from the @@ -1084,8 +1084,8 @@ track of this specific configuration.

- The unique identifier of the configuration that this - configuration is derived from. no - The name of the build goal defined by the configuration.  - This can be set by the user in the UI. no - The extension that the build goal will have, for example - ‘.exe’ or ‘.so’ in hierarchy - The command to remove intermediary and output files on the - build machine. @@ -1135,13 +1135,13 @@ track of this specific configuration. - The semi-colon separated list of the default error parsers + The semi-colon separated list of the default error parsers to be used with this configuration. The list is ordered with the first error parser on the list invoked first, the second error parser second, and so on.  The list may contain the error parsers defined by CDT and/or other installed error parser extensions.  The list of error parsers to be used may be changed by the user on a per-configuration basis.  When - specified, this overrides the tool-chain errorParsers attribute. @@ -1249,33 +1249,33 @@ only on a limited subset of operating system/architecture combinations. For example, it does not make much sense to allow a user to try to build a Solaris shared library project if they are running Eclipse and CDT on Windows. You can specify the operating systems and architectures that the tool-chain is supported -on as a comma-separated list in the osList and archList +on as a comma-separated list in the osList and archList attributes.

-

A tool-chain should specify the -targetTool attribute to identify the tool that runs to generate the primary +

A tool-chain should specify the +targetTool attribute to identify the tool that runs to generate the primary build output.  If this is not specified, MBS uses the file extension of the build artifact name supplied by the user.  This will work when the user uses one of the extensions expected by the tool, but will not work if they do not.

MBS supports multiple versions of -a tool-chain.  The versionsSupported attribute contains a +a tool-chain.  The versionsSupported attribute contains a list of supported versions of a particular tool chain. This indicates that there is no need to perform a conversion when user imports/loads a project with one of the supported tool chain versions. When a tool integrator decides to no longer support a version of a tool chain, they continue to ship the old tool chain definition and specify the id with version number of the tool chain definition -to convert to in the convertToId attribute.  If changes to the project +to convert to in the convertToId attribute.  If changes to the project information need to be performed by the conversion, the tool chain must provide a converter extension to perform the conversion.  If no converter extension is provided, then there won’t be any conversion.  See § 8.2 for additional information.

A tool-chain may define a -configuration level environment variable provider in the configurationEnvironmentSupplier attribute.  See § +configuration level environment variable provider in the configurationEnvironmentSupplier attribute.  See § 7.6 for additional information.

A tool-chain may define a configuration -level macro provider in the configurationMacroSupplier attribute.  See § +level macro provider in the configurationMacroSupplier attribute.  See § 7.8 for additional information.

A tool-chain may be associated @@ -1329,8 +1329,8 @@ the schema table below.

superClass
- The unique identifier of the toolChain that this toolChain - is derived from. no - Flags the toolChain as abstract.  An abstract toolChain + Flags the toolChain as abstract.  An abstract toolChain must be defined as a top level object in the model definition and cannot be selected by the user in the UI, but tool-chains derived from this tool-chain will inherit its attributes and children.  The default value - is false. no - A semi-colon separated + A semi-colon separated list of the identifiers of the tools that can be used to create the build artifact.  A list is required, for example, when there are 2 - versions of a target tool that are used with different project natures. @@ -1371,11 +1371,11 @@ the schema table below.

secondaryOutputs
- A semi-colon separated + A semi-colon separated list of the identifiers of other output types, besides the primary output of the targetTool, that are also considered to be build artifacts.  The build file generator will ensure that the outputs - get built. @@ -1387,15 +1387,15 @@ the schema table below.

osList
- + The comma separated list of operating systems that the tool-chain is supported on.  The - valid list of operating systems - is the string values returned by Platform.getOS().
- I
f + valid list of operating systems + is the string values returned by Platform.getOS().
+ If the osList attribute is not specified, or if the value is "all", then the tool-chain is supported on all operating systems.  Otherwise, the tool-chain is only displayed when CDT is running on one of the specified - operating systems, unless the user has turned off filtering.
@@ -1409,20 +1409,20 @@ the schema table below.

- + The comma separated list of architectures that the tool-chain is supported on.  The - valid list of - - architectures is the string values returned by Platform.getOSArch().
-
- If the archList attribute is not + valid list of + + architectures is the string values returned by Platform.getOSArch().
+ + If the archList attribute is not specified, or if the value is "all", then the tool-chain is supported on all architectures.  Otherwise, the tool-chain is only displayed when CDT is running on one of the specified architectures, unless the user has - turned off filtering.
+ valign="top"> no
The semi-colon separated list of the default error + valign="top">The semi-colon separated list of the default error parsers to be used with this tool-chain. The list is ordered with the first error parser on the list invoked first, the second error parser second, and so on.  The list may contain the error parsers defined by CDT and/or other installed error parser extensions.  When specified, this overrides the tool errorParsers attributes of the tool children of - the tool-chain and the builder child of the tool-chain. no - id - A unique identifier that the model manager will use to keep -track of this specific builder. - yes
- name - Human-readable name for the builder to be used in the UI. - no
- superClass - The unique identifier of the builder that this builder is - derived from. - no
- isAbstract - Flags the builder as abstract.  An abstract builder must be + Flags the builder as abstract.  An abstract builder must be defined as a top level object in the model definition and cannot be selected by the user in the UI, but builders derived from this builder - will inherit its attributes and children.  The default value is false. - no
- command - Specifies the default command to start the build + Specifies the default command to start the build utility for your toolchain. If the user changes this through the UI, the overriden value will be stored in the project build file. The build model will default to this value if the user ever resets a change.  - The default is "make". - no
- arguments - Specifies the additional, default arguments + Specifies the additional, default arguments that will be passed to the build utility when it is called by the builder. If the user changes the flags through the UI, the overriden value will be stored in the project build settings file. The build model will default to this value if the user ever resets a change. The default - is “-k”. - no
- errorParsers Specifies the default list of error parsers used by the builder. These @@ -1727,32 +1727,32 @@ track of this specific builder. - no
- buildfileGenerator - The name of a class that implements IManagedBuilderMakefileGenerator.  + The name of a class that implements IManagedBuilderMakefileGenerator.  See § 7.2 for additional information. - no
- variableFormat -

The value of this attribute should +

The value of this attribute should be set to the expression representing the variable format. For example, to generate macros with the ${macro} format, the attribute would contain ${=}.  To generate macros with the @macro format, the attribute would @@ -1762,107 +1762,107 @@ track of this specific builder.

- no
- isVariableCase - Sensitive - Specifies whether the + Specifies whether the builder variables are case sensitive or not. Can be set to either “true” or “false”. The default is “true”. If the builder does not support case-sensitive variables and there are some build environment variables that differ only in case (Environment variables on Unix-like operating systems are case sensitive), then those macros will always get resolved - in the buildfile. - no
- reservedMacro - Names -

Comma-separated list of reserved +

Comma-separated list of reserved macro names. The macro name could contain either the exact name or the java regular expression. The latter could be used to supply the pattern of variable names that are generated by MBS in case the “buildVariable” attribute of the “InputType” element is not specified, etc.  If this attribute is specified and the reservedMacroNameSupplier is not - specified, the following macro names will be treated as reserved:

+ specified, the following macro names will be treated as reserved:

- 1.   a + 1.   a macro name that is equal to one of the names specified in the - reservedMacroNames value

+ reservedMacroNames value

- 2.   a + 2.   a macro name that matches one of the regexp patterns specified in the - reservedMacroNames value

+ reservedMacroNames value

- 3.   a + 3.   a macro name that is equal to one of the build variable names specified - InputType elements of the tools used in the tool-chain

- If this attribute is not + InputType elements of the tools used in the tool-chain

+ If this attribute is not specified, MBS will assume that there are no reserved macro names that could conflict with the build environment variable macros, except names specified in the “buildVariable” attribute of the “InputType” elements: - these names will always be treated as reserved.
- no
- reservedMacro - NameSupplier -

Should be set to the name of the +

Should be set to the name of the class that implements the IReservedMacroNameSupplier interface. If this attribute is specified the reservedMacroNames attribute is ignored, and - the following macro names will be treated as reserved:

+ the following macro names will be treated as reserved:

- 1.   macro - names that the IReservedMacroNamesSupplier specifies as reserved

+ 1.   macro + names that the IReservedMacroNamesSupplier specifies as reserved

- 2.   a macro + 2.   a macro name that is equal to one of the build variable names specified - InputType elements in the tools used in the tool-chain.  + InputType elements in the tools used in the tool-chain. 

- no
- macroInputFile - NameValue - Represents the InputFileName macro value. The macro + Represents the InputFileName macro value. The macro specifies the input file name. The input file has the following meaning:
1. If a tool does not accept building multiple files of the primary input type with one tool invocation, the input file is the file of the @@ -1870,94 +1870,94 @@ track of this specific builder.
- no
- macroInputFile - ExtValue - Represents the InputFileExt macro value. The macro - specifies the extension of the input file. - no
- macroInputFile - BaseNameValue - Represents the InputFileBaseName macro value. The macro + Represents the InputFileBaseName macro value. The macro specifies the base name of the input file. That is the file name with an - extension stripped. - no
- macroInputFile - RelPathValue - Represents the InputFileRelPath macro value. The macro - specifies the input file path relative to the builder current directory. - no
- macroInputDir - RelPathValue - Represents the InputDirRelPath macro value. The macro + Represents the InputDirRelPath macro value. The macro specifies the input file directory path relative to the builder current - directory. - no
- macroInputDir - RelPathValue - Represents the InputDirRelPath macro value. The macro + Represents the InputDirRelPath macro value. The macro specifies the input file directory path relative to the builder current - directory. - no

3.7 Target Platform

The targetPlatform element represents the os/architecture -combination(s) upon which the output of a tool-chain can be deployed.  The -osList and archList attributes contain the Eclipse names of the +combination(s) upon which the output of a tool-chain can be deployed.  The +osList and archList attributes contain the Eclipse names of the operating systems and architectures described by this element. 

CDT offers a facility for parsing binary files if it knows which output format the build artifact has been -produced with. The binaryParser attribute must contain the id of the +produced with. The binaryParser attribute must contain the id of the appropriate parser if you want build artifacts of the tool-chain to be parsed in the workspace.

3.7.1 Schema

@@ -2133,8 +2133,8 @@ the workspace.

superClass - The unique identifier of the targetPlatform that this - targetPlatform is derived from. + The unique identifier of the targetPlatform that this + targetPlatform is derived from. no @@ -2145,11 +2145,11 @@ the workspace.

isAbstract - Flags the targetPlatform as abstract.  An abstract + Flags the targetPlatform as abstract.  An abstract targetPlatform must be defined as a top level object in the model definition and can not be selected by the user in the UI, but target platforms derived from this target platform will inherit its attributes - and children.  The default value is false. + and children.  The default value is false. no @@ -2160,12 +2160,12 @@ the workspace.

osList - + The list of operating systems that is valid for this target platform. -  The valid list of operating systems - is the string values returned by Platform.getOS().  If +  The valid list of operating systems + is the string values returned by Platform.getOS().  If the osList attribute is not specified, or if the value is "all", then - the target platform supports all operating systems. + the target platform supports all operating systems. @@ -2179,12 +2179,12 @@ the workspace.

- + The list of architectures that is valid for this target platform.  The - valid list of architectures - is the string values returned by Platform.getOSArch().  If + valid list of architectures + is the string values returned by Platform.getOSArch().  If the archList attribute is not specified, or if the value is "all", then - the target platform supports all architectures. + the target platform supports all architectures. @@ -2196,8 +2196,8 @@ the workspace.

valign="top">binaryParser Semi-colon separated list of the ids of the appropriate parser(s) for the build - artifact + valign="top">Semi-colon separated list of the ids of the appropriate parser(s) for the build + artifact no @@ -2207,7 +2207,7 @@ the workspace.

3.8 Tool

The tool element represents the tool in the user model.  A tool must have a -unique id for the build model, and a name that is displayed to a +unique id for the build model, and a name that is displayed to a user through the UI.  A tool can be defined as part of a tool-chain, or as an independent specification.

A tool may contain one or more @@ -2227,29 +2227,29 @@ library paths.

Certain tools logically belong to certain kinds of projects. For example, the Gnu compiler is invoked differently for C and C++ source files. You can specify a filter for a tool based on the -nature of a project using the natureFilter attribute. When a new C +nature of a project using the natureFilter attribute. When a new C project is created, a “cnature” is added to it. New C++ projects have both a “cnature” and “ccnature”. The build model interprets the filter as follows. If you specify a ‘cnature’ filter, then the tool will only be displayed if the -project has a “cnature” and does not have a “ccnature”. If you specify a +project has a “cnature” and does not have a “ccnature”. If you specify a ‘ccnature’ filter, then the tool will be displayed if the project has a “ccnature”. The default if no filter is specified is to display the tool for all projects.

-

Each tool specifies a command +

Each tool specifies a command that will be placed in the build file during the build file generation stage of building.  If the tool requires a special output flag, such as ‘-o’ for a compiler or linker, the -implementer must specify that in the outputFlag attribute.

-

The commandLineGenerator +implementer must specify that in the outputFlag attribute.

+

The commandLineGenerator attribute allows the implementer to specify a class that implements the IManagedCommandLineGenerator interface.  An explanation of how to replace the default command line generator can be found in § 7.4.

MBS supports multiple versions of -a tool.  The versionsSupported attribute contains a list of +a tool.  The versionsSupported attribute contains a list of supported versions of a particular tool. This indicates that there is no need to perform a conversion when user imports/loads a project with one of the supported tool versions. When a tool integrator decides to no longer support a version of a tool, they continue to ship the old tool definition and specify the id with -version number of the tool to convert to in the convertToId attribute.  +version number of the tool to convert to in the convertToId attribute.  If changes to the project information need to be performed by the conversion, the tool chain must provide a converter extension to perform the conversion.  If no converter extension is provided, then there won’t be any conversion.  @@ -2318,8 +2318,8 @@ build model.

- The unique identifier of the tool that this tool is derived - from. + The unique identifier of the tool that this tool is derived + from. @@ -2333,10 +2333,10 @@ build model.

- Flags the tool as abstract.  An abstract tool must be + Flags the tool as abstract.  An abstract tool must be defined as a top level object in the model definition and can not be selected by the user in the UI, but tools derived from this tool will - inherit its attributes and children.  The default value is false. + inherit its attributes and children.  The default value is false. @@ -2469,7 +2469,7 @@ Gnu C compiler, or g++ for the Gnu C++ compiler. - Specifies a command “pattern” that indicates how the parts + Specifies a command “pattern” that indicates how the parts of the command line are used to create the entire command line.  The pattern consists of the replaceable variables COMMAND, FLAGS, OUTPUT_FLAG, OUTPUT_PREFIX, OUTPUT and INPUTS.  The default command line @@ -2477,7 +2477,7 @@ Gnu C compiler, or g++ for the Gnu C++ compiler. ${COMMAND} ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}, except when customBuildStep is true, where the default is $(COMMAND).  White space and other characters are significant and are copied to the - generated command. + generated command. @@ -2491,13 +2491,13 @@ Gnu C compiler, or g++ for the Gnu C++ compiler. - When True, indicates that + When True, indicates that the Tool represents a CDT end-user-defined custom build step.  The default is False.  When True, the default value of the commandLinePattern attribute changes to “$(command)”.  This attribute is used by the implementation of Custom Build Steps on the MBS configuration property page.  It is not intended for use by tools defined by a - tool-integrator. + tool-integrator. @@ -2511,12 +2511,12 @@ Gnu C compiler, or g++ for the Gnu C++ compiler. - Contains a semi-colon separated, ordered, list of error + Contains a semi-colon separated, ordered, list of error parser ids.  MBS adds the error parser(s) to the end of the toolChain error parser list, if not already present, when a project resource is defined to use the tool.  The error parser(s) can be removed by the CDT user, and is automatically removed when there are no more project - resources that use the tool. + resources that use the tool. @@ -2727,8 +2727,8 @@ attributes of the InputType element are described in the table below.

- A unique identifier that - the MBS will use to track this element. + A unique identifier that + the MBS will use to track this element. @@ -2742,8 +2742,8 @@ attributes of the InputType element are described in the table below.

- The name of the input type - that is displayed to the user in the UI. + The name of the input type + that is displayed to the user in the UI. @@ -2757,8 +2757,8 @@ attributes of the InputType element are described in the table below.

- The unique identifier of - the inputType that this inputType is derived from. + The unique identifier of + the inputType that this inputType is derived from. @@ -2772,10 +2772,10 @@ attributes of the InputType element are described in the table below.

- The id of an Eclipse + The id of an Eclipse content type that describes this input type.  If both the sources attribute and the sourceContentType attribute are specified, the - sourceContentType will be used if it is defined in Eclipse. + sourceContentType will be used if it is defined in Eclipse. @@ -2789,10 +2789,10 @@ attributes of the InputType element are described in the table below.

- A comma-separated list of + A comma-separated list of file extensions that the tool will produce output for.  Note that the user will not be able to modify the set of file extensions as they can - when sourceContentType is specified. + when sourceContentType is specified. @@ -2806,11 +2806,11 @@ attributes of the InputType element are described in the table below.

- The id of an Eclipse + The id of an Eclipse content type used for dependency files.  If both the dependencyExtensions attribute and the dependencyContentType attribute are specified, the dependencyContentType will be used if it is defined - in Eclipse. + in Eclipse. @@ -2824,10 +2824,10 @@ attributes of the InputType element are described in the table below.

- A comma-separated list of + A comma-separated list of file extensions used by dependency files. Note that the user will not be able to modify the set of file extensions as they can when - dependencyContentType is specified. + dependencyContentType is specified. @@ -2876,10 +2876,10 @@ attributes of the InputType element are described in the table below.

- True if all of the inputs + True if all of the inputs of this category are used in one invocation of the tool.  The inputs can be project resources, or the outputs of other tools in the tool-chain.  - The default is False. + The default is False. @@ -2893,8 +2893,8 @@ attributes of the InputType element are described in the table below.

- True is this is considered - the primary input of the tool.  The default is False. + True is this is considered + the primary input of the tool.  The default is False. @@ -2908,10 +2908,10 @@ attributes of the InputType element are described in the table below.

- The name of a class that + The name of a class that provides the source file dependency calculation for the input type.  The class implements the IManagedDependencyGenerator2 interface.  The default - is none. + is none. @@ -2925,13 +2925,13 @@ attributes of the InputType element are described in the table below.

- A variable used in the + A variable used in the build file to represent the list of input files.  The same variable name can be used by an outputType to identify a set of output files that contribute to this tool’s input (i.e., those using the same buildVariable name).  A build variable is ignored when multipleOfType is false and this is the primary input of the tool.  The default name is - chosen by MBS. + chosen by MBS. @@ -2970,12 +2970,12 @@ specified by the user (or tool integrator).

- Defines a semi-colon + Defines a semi-colon separated list of the relative or absolute path of the resource(s) to which this element applies.  The resource(s) must be a member of the project, the output from another tool in the tool-chain, or an external file.  The file name of a path can use GNU Make pattern rule syntax (in - order to generate the name from the output file name). + order to generate the name from the output file name). @@ -3005,7 +3005,7 @@ specified by the user (or tool integrator).

AdditionalInputDependency – added as both. - The default is + The default is AdditionalInputDependency.
    -
  1. +
  2. If this is the “target” tool in the tool-chain, and this is the primary - OutputType, use the user-defined artifact name and extension.
  3. -
  4. - If the option attribute is specified, use the value of the option.
  5. -
  6. - If the nameProvider attribute is specified, call the nameProvider and use - the returned name(s).
  7. -
  8. - If the outputNames attribute is specified, use the value of the attribute.
  9. -
  10. - Use the namePattern attribute value to construct the name from the input - file name.
  11. + OutputType, use the user-defined artifact name and extension. +
  12. + If the option attribute is specified, use the value of the option.
  13. +
  14. + If the nameProvider attribute is specified, call the nameProvider and use + the returned name(s).
  15. +
  16. + If the outputNames attribute is specified, use the value of the attribute.
  17. +
  18. + Use the namePattern attribute value to construct the name from the input + file name.

 If the output of the tool usually has a special prefix, like the prefix -‘lib’ for libraries on POSIX systems, the implementer must specify this in the outputPrefix +‘lib’ for libraries on POSIX systems, the implementer must specify this in the outputPrefix attribute.

3.11.1 Schema

3.12 Option Category

-

The optionCategory element represents the option category in -the user model.  A tool can have a large number of options. To help organize the user +

The optionCategory element represents the option category in +the user model.  A tool can have a large number of options. To help organize the user interface for these options, a hierarchical set of option categories can be defined. A unique identifier must be specified in the id @@ -3401,12 +3401,12 @@ Options'. This will be the name the user sees displayed in the UI.

The option element represents the option in the user model.  Options are used to organize and maintain the command arguments that are sent to tools during the build. Users interact with the build model through the UI to -set the value of options.  Each option must have a unique id for the -build model to properly manage it. A descriptive name that will appear in +set the value of options.  Each option must have a unique id for the +build model to properly manage it. A descriptive name that will appear in the UI must be specified. Options can be organized into categories to keep the UI more manageable. If an option category has been defined for the tool, and the option should be displayed as part of that category, then the unique identifier -of the option category must be specified in the category attribute.

+of the option category must be specified in the category attribute.

3.13.1 Option Types

Some options contain commands to turn a feature off or on, such as setting a flag to see descriptive messages from a tool. Others contain @@ -3434,7 +3434,7 @@ in respectively.

commands that take a user-defined value.  The UI representation for a string option is a text box.

3.12.1.2 Boolean Options

-

Boolean options are used to specify an option that is +

Boolean options are used to specify an option that is either true or false. The UI representation for a boolean option is a check box. The value of the option is set true by selecting the check box, and false by deselecting it. If true, the command @@ -3485,21 +3485,21 @@ is ignored for all other option types.

3.13.2 Values and Default Values

An option can define a default value that applies to the option until a value has been specified. An option -defines its default value using the defaultValue attribute.  When an +defines its default value using the defaultValue attribute.  When an option has a value that has been specifically set, the value is contained in the -value attribute.  In order to determine the current value of an option, +value attribute.  In order to determine the current value of an option, MBS performs the following steps until a value is found:

    -
  1. Examine the value - attribute of the option.
  2. -
  3. Examine the value - attribute of the option’s superClass recursively.
  4. -
  5. Examine the - defaultValue attribute of the option.
  6. -
  7. Examine the - defaultValue attribute of the option’s superClass recursively.
  8. -
  9. Use the default value for - the option type.
  10. +
  11. Examine the value + attribute of the option.
  12. +
  13. Examine the value + attribute of the option’s superClass recursively.
  14. +
  15. Examine the + defaultValue attribute of the option.
  16. +
  17. Examine the + defaultValue attribute of the option’s superClass recursively.
  18. +
  19. Use the default value for + the option type.

The type of option will determine how the build model treats the value it finds associated with the attribute. @@ -3512,18 +3512,18 @@ enumerated options search through the defined enumerated values for the default. are passed to build tools with unique flags, depending on the compiler and the option. For example, an option defining the paths a linker should search for libraries might contain a large number of search paths, but each path is passed -to the linker with a ‘-L’ flag. The command attribute is used to hold the +to the linker with a ‘-L’ flag. The command attribute is used to hold the actual flag to pass along with the option value.

The build model handles the value it finds associated with the command attribute differently depending on the type of value the option is managing based on the following heuristic. For string -options the option value is appended to the value of the command -attribute. The command attribute can be empty in order to support an area -for typing in additional options.  For enumerated options, the command +options the option value is appended to the value of the command +attribute. The command attribute can be empty in order to support an area +for typing in additional options.  For enumerated options, the command associated with the selected enumerated value is used, not the command defined -in the option. For boolean options, the command is used if the option -value is set to true, otherwise the value of the commandFalse attribute -is used. For list options, the command is applied to each element of the +in the option. For boolean options, the command is used if the option +value is set to true, otherwise the value of the commandFalse attribute +is used. For list options, the command is applied to each element of the list.

@@ -3697,8 +3697,8 @@ build model.

superClass + The unique identifier of the option that this option is + derived from. @@ -3709,10 +3709,10 @@ build model.

isAbstract + will inherit its attributes and children.  The default value is false. @@ -3760,8 +3760,8 @@ can be the id of the tool which is also a category.  The default category value + individual file’s options.  Specifying “file” indicates the opposite. @@ -4122,8 +4122,8 @@ attributes are specified in the schema table below.

resourcePath + The path of the project resource to which this + resourceConfiguration applies. @@ -4134,10 +4134,10 @@ attributes are specified in the schema table below.

exclude + exist, even when excluded from the build. @@ -4256,7 +4256,7 @@ attributes are specified in the schema table below.

The name of a class that implements the IBuildPathResolver interface that the tool-integrator can supply in order to provide his/her own logic of resolving the variable values to the build paths

-

Design note: the reason why this callback is +

Design note: the reason why this callback is needed is because some tools may store the build paths in some special way or in the format other than <path1><delimiter><path2><delimiter>…<pathN>.  The example of such a tool is gcc for Win32 Cygwin.  The cygwin @@ -4800,7 +4800,7 @@ to expand it. Click on the expansion icon beside META-INF, and then double click the MANIFEST.MF file to edit its contents.

  • We have to add a dependency between our project and the org.eclipse.cdt.managedbuilder.core -plug-in where the extension point is defined. Click on the Dependencies +plug-in where the extension point is defined. Click on the Dependencies tab located along the bottom of the manifest editor. Click the Add… button located beside the Required Plug-Ins @@ -4845,7 +4845,7 @@ property in the Extension Element Details column. For now, let’s use the name Example Executable for our projectType.
  • Make sure that the values of isTest - and isAbstract are set + and isAbstract are set to false.
  • @@ -4881,8 +4881,8 @@ following list org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.G org.eclipse.cdt.core.VCErrorParser

    - -6.6 Adding a ToolChain

    + +6.6 Adding a ToolChain

    Each configuration requires a toolChain child that defines the set of tools used by the configuration.

    @@ -4908,8 +4908,8 @@ you are running on a version of Solaris, or other if none of the above apply.

    - -6.7 Adding a Builder

    + +6.7 Adding a Builder

    Each toolChain can have a builder child that describes the build utility used by the tool-chain to create the build artifacts of the configuration.

    @@ -4946,8 +4946,8 @@ property and  to be Example Target Platform  and the valu style="font-weight: bold;">id to be example.toolchain.targetplatform.
  • Our target platform is the same as our host platform.  Enter the - same value for the osList property as entered for the ToolChain - osList.
  • + same value for the osList property as entered for the ToolChain + osList.
  • Set the value of the binary parser property based on the platform you will be using to create your example projects on. For example, if you @@ -4955,8 +4955,8 @@ are running this tutorial on Linux or Solaris, enter the value org.eclipse If you are running the tutorial on Windows, enter the value org.eclipse.cdt.core.PE.
  • - -6.9 Adding a Tool

    + +6.9 Adding a Tool

    Each toolChain describes the set of tools used by the build utility to create the build artifacts of the configuration.

    @@ -4981,41 +4981,41 @@ property.

    - -6.10 Adding Input and Output Types

    + +6.10 Adding Input and Output Types

    Each tool describes its inputs and outputs in InputType and OutputType elements. 

    1. -

      Right click on Compiler to get the - context menu and select New > inputType.  Name the inputType - Compiler Input and make - its id - example.toolchain.compiler.input.

    2. +

      Right click on Compiler to get the + context menu and select New > inputType.  Name the inputType + Compiler Input and make + its id + example.toolchain.compiler.input.

    3. Our imaginary compiler only works on c source files. Locate the sourceContentType property and set it to - org.eclipse.cdt.core.cSource.

    4. + org.eclipse.cdt.core.cSource.

    5. The build model needs to know if there are any special file extensions that indicate a file is a ‘header’ file. Set the dependencyContentType -property to be org.eclipse.cdt.core.cHeader - and the - dependencyCalculator property to be - - org.eclipse.cdt.managedbuilder.makegen.internal.DefaultIndexerDependencyCalculator. +property to be org.eclipse.cdt.core.cHeader + and the + dependencyCalculator property to be + + org.eclipse.cdt.managedbuilder.makegen.internal.DefaultIndexerDependencyCalculator.

    6. -

      Set the primaryInput property to - true.

    7. +

      Set the primaryInput property to + true.

    8. -

      Right click on Compiler to get the - context menu and select New > outputType.  Name the outputType - Compiler Output and make - its id - example.toolchain.compiler.output.

    9. +

      Right click on Compiler to get the + context menu and select New > outputType.  Name the outputType + Compiler Output and make + its id + example.toolchain.compiler.output.

    10. Let us assume that the output of the compiler is an object module that has the @@ -5025,14 +5025,14 @@ tool to o.

    11. The object modules created by your compiler are typically used as a group by another tool, for example a linker or - archiver.  Set the buildVariable property to be - OBJS. You would use the + archiver.  Set the buildVariable property to be + OBJS. You would use the same name as the buildVariable with - the inputType of this other tool.

      + the inputType of this other tool.

    12. -

      Set the primaryOutput property to - true.

    13. +

      Set the primaryOutput property to + true.

    6.11 Testing the ProjectType

    @@ -5073,8 +5073,8 @@ Projects view to access the context menu, and select Properties to open the property browser for the project. Select C/C++ Build -from the choices, select the Tool Settings tab, and note that the tool we defined appears in the list. -
  • Select the Build Settings tab.  The user can change the +from the choices, select the Tool Settings tab, and note that the tool we defined appears in the list.
  • +
  • Select the Build Settings tab.  The user can change the build output name and the build command from here, and the MBS will manage that selection between sessions.
  • Select the Error Parsers @@ -5148,12 +5148,12 @@ the category that you entered in step 4.
  • compiler (remember, you add the option to the tool and set its category via the category property). Set the name of the option to Other -flags, its id to example.toolchain.compiler.general.otherflags, its valueType +flags
    , its id to example.toolchain.compiler.general.otherflags, its valueType to string, and its defaultValue to -c.
  • Add a check-box option to the 'General' category of the compiler. Name it Error messages, - set the id to example.toolchain.compiler.general.errmsgs, and set its - valueType to boolean. + set the id to example.toolchain.compiler.general.errmsgs, and set its + valueType to boolean. This is a boolean option, so it might have a command associated with the selected and unselected states. In this case we want to turn on reporting when it is selected, and turn it off when it is deselected. @@ -5202,7 +5202,7 @@ the preprocessor symbols defined for the project.

    MBS gathers information about the defined symbols and include paths from a number of sources:

    -

    User-defined symbols and include paths:  You can flag certain +

    User-defined symbols and include paths:  You can flag certain tool options as special so the build model will know to pay special attention to them. As the implementer of the tool integration, you should make sure your @@ -5210,16 +5210,16 @@ specification has options of type “includePaths” and “definedS The build model will pay special attention to these options and provide them to the appropriate clients in the CDT core without any further intervention on your part.

    -

    Pre-defined symbols and include paths:  A toolChain may specify +

    Pre-defined symbols and include paths:  A toolChain may specify the id of scanner configuration discovery profile for gathering the built-in compiler settings.  See the org.eclipse.cdt.make.core.ScannerConfigurationDiscoveryProfile extension point description in the reference documentation for more information.  If a collector is specified, MBS invokes it to return the pre-defined symbols and include paths.  If a collector is not specified, MBS searches for -options of type “includePaths” and “definedSymbols” with the builtIn +options of type “includePaths” and “definedSymbols” with the builtIn attribute set to true.

    -

    Environment include paths:  Your build definition may specify a -envVarBuildPath element with the pathType attribute set to "buildpathInclude".  +

    Environment include paths:  Your build definition may specify a +envVarBuildPath element with the pathType attribute set to "buildpathInclude".  If specified, MBS will read the environment variable(s) for additional include paths.  See § 3.17 for additional information regarding the envVarBuildPath element.

    @@ -5268,8 +5268,8 @@ not difficult. You must supply the plugin manifest we created inside the Eclipse platform's plug-in directory. The plug-in directory is named plugins and is typically located underneath the main directory where you installed the Eclipse -platform. -

    +platform. +

    1. From the Plug-in @@ -5282,9 +5282,9 @@ page, chose Deployable Plugins and FragmentsNext > button.
    2. -
    3. In the Deployable Plugins and Fragments - dialog, Export - Destination section, select Directory and click the Browse... button. +
    4. In the Deployable Plugins and Fragments + dialog, Export + Destination section, select Directory and click the Browse... button. Browse to your Eclipse installation. Deselect all Export Options.  Click the Finish button.
    5. Restart Eclipse, switch to the C/C++ @@ -5366,34 +5366,34 @@ dependencyCalculator attribute.  Typically, dependency calculators are only relevant for a "compiler" tool, but what tool you use to specify the generator (or generators) is arbitrary.

      By design, a dependency calculator must answer what type of -dependency generation it will do.  There are two major, +dependency generation it will do.  There are two major, and multiple minor, modes of dependency calculation supported by the MBS.  -The major modes are:

      +The major modes are:

        -
      1. The build file generator invokes tool integrator +
      2. The build file generator invokes tool integrator provided methods that calculate all dependencies using whatever method the tool integrator wants.  The build file generator then adds the dependencies to the build file using the appropriate build file syntax.  This is a TYPE_CUSTOM dependency calculator as defined below.  See the - IManagedDependencyCalculator - interface discussion below for more information. 
      3. -
      4. The build file generator and the tool-chain cooperate + IManagedDependencyCalculator + interface discussion below for more information. 
      5. +
      6. The build file generator and the tool-chain cooperate in creating and using separate "dependency" files.  In this case, dependency calculation is done at "build time", rather than at "build file generation time" as in mode #1.  This currently supports the GNU concept of using .d files in GNU make.  This is either a TYPE_BUILD_COMMANDS dependency calculator or a TYPE_PREBUILD_COMMANDS - dependency calculator as defined below.  See the - IManagedDependencyCommands - and IManagedDependencyPreBuild - interfaces discussion below for more information.
      7. + dependency calculator as defined below.  See the + IManagedDependencyCommands + and IManagedDependencyPreBuild + interfaces discussion below for more information.
      -

      public interface IManagedDependencyGeneratorType {
      -    /**
      +

      public interface IManagedDependencyGeneratorType {
      +    /**
           *  Constants returned by getCalculatorType
           */
          -
      public int TYPE_NODEPS = 0; //  Deprecated - use + public int TYPE_NODEPS = 0; //  Deprecated - use TYPE_NODEPENDENCIES
          public int TYPE_COMMAND = 1; //  Deprecated - use @@ -5405,8 +5405,8 @@ TYPE_BUILD_COMMANDS
          public int TYPE_OLD_TYPE_LIMIT = 3;

      -     //  Use these types
      -
          +     //  Use these types
      +
          public int TYPE_NODEPENDENCIES = 4;
          public int TYPE_BUILD_COMMANDS = 5;
      @@ -5415,7 +5415,7 @@ TYPE_BUILD_COMMANDS
          public int TYPE_CUSTOM = 7;

      -    /**
      +    /**
           * Returns the type of dependency generator that is implemented. 
           *
      @@ -5463,25 +5463,25 @@ dependency files need to be re-generated.
           * @return int
           */
              -
      public int getCalculatorType();
      -}

      -

      After deciding upon the type of dependency calculator, you -must implement the methods in IManagedDependencyGenerator2.  -The method getDependencySourceInfo -returns an instance of the -IManagedDependencyInfo interface.  This can be -any one of the 3 interfaces that derive from -IManagedDependencyInfo  - -IManagedDependencyCalculator, -IManagedDependencyCommands or -IManagedDependencyPreBuild + public int getCalculatorType();
      +}

      +

      After deciding upon the type of dependency calculator, you +must implement the methods in IManagedDependencyGenerator2.  +The method getDependencySourceInfo +returns an instance of the +IManagedDependencyInfo interface.  This can be +any one of the 3 interfaces that derive from +IManagedDependencyInfo  - +IManagedDependencyCalculator, +IManagedDependencyCommands or +IManagedDependencyPreBuild which are discussed below.  The returned interface is called to get the dependency information for a particular source file in the configuration.  -See the descriptions of the other methods in IManagedDependencyGenerator2 -in the code comments below.

      +See the descriptions of the other methods in IManagedDependencyGenerator2 +in the code comments below.

      public interface IManagedDependencyGenerator2 extends IManagedDependencyGeneratorType {
       	
      -    /**
      +    /**
            * Returns an instance of IManagedDependencyInfo for this source file.
            * IManagedDependencyCalculator, IManagedDependencyCommands
            * and IManagedDependencyPreBuild are all derived from
      @@ -5498,13 +5498,13 @@ in the code comments below.

      * the working directory for the tool. This IPath is relative to the project directory. * @return IManagedDependencyInfo */ - public IManagedDependencyInfo getDependencySourceInfo( + public IManagedDependencyInfo getDependencySourceInfo( IPath source, IBuildObject buildContext, ITool tool, IPath topBuildDirectory); - /** + /** * Returns the file extension used by dependency files created * by this dependency generator. * This is called when getCalculatorType returns TYPE_BUILD_COMMANDS or @@ -5515,11 +5515,11 @@ in the code comments below.

      * * @return String */ - public String getDependencyFileExtension( + public String getDependencyFileExtension( IConfiguration buildContext, ITool tool); - /** + /** * Called to allow the dependency calculator to post-process dependency files. * This method is called after the build has completed for at least every * dependency file that has changed, and possibly for those that have not @@ -5539,20 +5539,20 @@ in the code comments below.

      * * @return boolean True if the method modified the dependency (e.g., .d) file */ - public boolean postProcessDependencyFile( + public boolean postProcessDependencyFile( IPath dependencyFile, IConfiguration buildContext, ITool tool, IPath topBuildDirectory); }
      -

      7.3.1 TYPE_CUSTOM dependency calculator -

      -

      A TYPE_CUSTOM dependency calculator must implement the -IManagedDependencyCalculator -interface.

      +

      7.3.1 TYPE_CUSTOM dependency calculator +

      +

      A TYPE_CUSTOM dependency calculator must implement the +IManagedDependencyCalculator +interface.

      public interface IManagedDependencyCalculator extends IManagedDependencyInfo {
       	
      -    /**
      +    /**
            * Returns the list of source file specific dependencies.
            *   
            * The paths can be either relative to the project directory, or absolute 
      @@ -5560,9 +5560,9 @@ interface.

      * * @return IPath[] */ - public IPath[] getDependencies(); + public IPath[] getDependencies(); - /** + /** * Returns the list of source file specific additional targets that the * source file creates. Most source files will return null. An example * of where additional targets should be returned is for a Fortran 90 @@ -5578,7 +5578,7 @@ interface.

      * * @return IPath[] */ - public IPath[] getAdditionalTargets(); + public IPath[] getAdditionalTargets(); }

      An example TYPE_CUSTOM dependency calculator can be found in the MBS test suite - org.eclipse.cdt.managedbuilder.core.tests\DefaultFortranDependencyCalculator.

      @@ -5592,76 +5592,76 @@ to complete its work before it will answer, so your build may take longer to complete.  See the org.eclipse.cdt.managedbuilder.makegen.internal\DefaultIndexerDependencyCalculator class for an example of how this was implemented using the old, deprecated -IManagedDependencyGenerator +IManagedDependencyGenerator interface.  However, it doesn't seem as if it worked with CDT 3.0.  Readers are encouraged to update this method to the new interfaces and -contribute the implementation to CDT.

      -

      7.3.2 TYPE_BUILD_COMMANDS dependency -calculator

      +contribute the implementation to CDT.

      +

      7.3.2 TYPE_BUILD_COMMANDS dependency +calculator

      When using a TYPE_BUILD_COMMANDS dependency calculator, the build file generator and the tool-chain cooperate in creating and using separate "dependency" files. The build file generator calls the dependency calculator to get the dependency file names and to get commands that need to be added to the build file. In this case, dependency calculation is done at "build time", rather than at "build file generation time" as with TYPE_CUSTOM. This currently supports the GNU concept of using .d files in GNU make.

      -There are multiple ways that these separate dependency files can +There are multiple ways that these separate dependency files can be created by the tool-chain and used by the builder.  In some cases (e.g., Fortran 90 using modules) the dependency files must be created/updated prior to invoking the build of the project artifact (e.g., an application). In this case, the dependency generation step must occur separately before the main build. See -TYPE_PREBUILD_COMMANDS for more information.  In other cases (e.g., C/C++) the dependency files can be created as +TYPE_PREBUILD_COMMANDS for more information.  In other cases (e.g., C/C++) the dependency files can be created as a side effect of the main build. This implies that the up to date dependency files are not required for the current build, but for the next build. C/C++ builds can be treated in this manner as is described in the following link: - http://sourceware.org/automake/automake.html#Dependency-Tracking-Evolution.  Use the IManagedDependencyCommands interface for this mode.

      -

      Two sub-scenarios of this mode are to: -

      + http://sourceware.org/automake/automake.html#Dependency-Tracking-Evolution.  Use the IManagedDependencyCommands interface for this mode.

      +

      Two sub-scenarios of this mode are to: +

        -
      1. Create dependency files in the same invocation of the tool that +
      2. Create dependency files in the same invocation of the tool that creates the tool's build artifact - by adding additional options - to the tool invocation command line.
      3. -
      4. Create dependency files in a separate invocation of the tool, or - by the invocation of another tool
      5. + to the tool invocation command line. +
      6. Create dependency files in a separate invocation of the tool, or + by the invocation of another tool
      -

      MBS can also help in the generation of the dependency files. Prior to +

      MBS can also help in the generation of the dependency files. Prior to CDT 3.1, MBS and gcc cooperated in generating dependency files using the - following steps:

      + following steps:

        -
      1. Gcc is invoked to perform the compilation that generates the object - file.
      2. -
      3. An "echo" command creates the .d file, adding the name of the .d +
      4. Gcc is invoked to perform the compilation that generates the object + file.
      5. +
      6. An "echo" command creates the .d file, adding the name of the .d file to the beginning of the newly created .d file. Note that this causes problems with some implementations of "echo" that don't work exactly the way that we want (e.g., it doesn't support the -n - switch).
      7. -
      8. Gcc is invoked again with the appropriate additional command line + switch).
      9. +
      10. Gcc is invoked again with the appropriate additional command line options to append its dependency file information to the .d file - that was created by "echo".
      11. -
      12. Steps 1 - 3 are invoked in the make file. Step 4 occurs after the + that was created by "echo".
      13. +
      14. Steps 1 - 3 are invoked in the make file. Step 4 occurs after the make invocation has finished. In step 4, MBS code post-processes the .d files to add a dummy dependency for each header file, for - the reason explained in the link above.
      15. + the reason explained in the link above.
      -

      This mode is no longer used by the default gcc implementation, but can - still be used by selecting the DefaultGCCDependencyCalculator3Commands class.

      -

      Note for GNU make: these separate dependency files are "include"d by +

      This mode is no longer used by the default gcc implementation, but can + still be used by selecting the DefaultGCCDependencyCalculator3Commands class.

      +

      Note for GNU make: these separate dependency files are "include"d by a main makefile. Therefore, if the dependency files are required to be up to date before the main build begins, they must be updated by a separate invocation of make. Also, the configuration "clean" step must be invoked by a separate invocation of make. This is so that we can exclude the dependency files for a "make clean" invocation - using syntax like:

      -

      ifneq ($(MAKECMDGOALS), clean)

      -

      -include $(DEPS)

      -

      endif -

      -

      Otherwise, because GNU make attempts to re-make make files, we + using syntax like:

      +

      ifneq ($(MAKECMDGOALS), clean)

      +

      -include $(DEPS)

      +

      endif +

      +

      Otherwise, because GNU make attempts to re-make make files, we can end up with out of date or missing dependency files being - re-generated and then immediately "clean"ed.

      -

      Examples of the use of TYPE_BUILD_COMMANDS -can be found in org.eclipse.cdt.managedbuilder.makegen.gnu\DefaultGCCDependencyCalculator2Commands -and DefaultGCCDependencyCalculator3Commands.

      + re-generated and then immediately "clean"ed.

      +

      Examples of the use of TYPE_BUILD_COMMANDS +can be found in org.eclipse.cdt.managedbuilder.makegen.gnu\DefaultGCCDependencyCalculator2Commands +and DefaultGCCDependencyCalculator3Commands.

      public interface IManagedDependencyCommands extends IManagedDependencyInfo {
       	
      -    /**
      +    /**
            * Returns the list of generated dependency files.
            *   
            * The paths can be either relative to the top build directory, or absolute 
      @@ -5669,9 +5669,9 @@ and DefaultGCCDependencyCalculator3Commands.

      * * @return IPath[] */ - public IPath[] getDependencyFiles(); + public IPath[] getDependencyFiles(); - /** + /** * Returns the command lines to be invoked before the normal tool invocation * to calculate dependencies. * @@ -5679,9 +5679,9 @@ and DefaultGCCDependencyCalculator3Commands.

      * generation command needs to be invoked before the normal * tool invocation. */ - public String[] getPreToolDependencyCommands(); + public String[] getPreToolDependencyCommands(); - /** + /** * Returns the command line options to be used to calculate dependencies. * The options are added to the normal tool invocation. * @@ -5689,9 +5689,9 @@ and DefaultGCCDependencyCalculator3Commands.

      * arguments need to be added to the tool invocation. * SHOULD THIS RETURN AN IOption[]? */ - public String[] getDependencyCommandOptions(); + public String[] getDependencyCommandOptions(); - /** + /** * Returns the command lines to be invoked after the normal tool invocation * to calculate dependencies. * @@ -5699,9 +5699,9 @@ and DefaultGCCDependencyCalculator3Commands.

      * generation commands needs to be invoked after the normal * tool invocation */ - public String[] getPostToolDependencyCommands(); + public String[] getPostToolDependencyCommands(); - /** + /** * Returns true if the command lines and/or options returned by this interface * are not specific to the particular source file, but are only specific to, * at most, the configuration and tool. If the build context is a resource @@ -5712,10 +5712,10 @@ and DefaultGCCDependencyCalculator3Commands.

      * * @return boolean */ - public boolean areCommandsGeneric(); + public boolean areCommandsGeneric(); }
      -

      7.3.3 TYPE_PREBUILD_COMMANDS dependency -calculator

      +

      7.3.3 TYPE_PREBUILD_COMMANDS dependency +calculator

      When using a TYPE_BUILD_PRECOMMANDS dependency calculator, the build file generator and the tool-chain cooperate in creating and using separate "dependency" files. For GNU make, these separate dependency files are "include"d by a main makefile. Make performs special processing on make files:
      @@ -5740,10 +5740,10 @@ include $(DEPS)
      endif

      The restriction with this is that it only works if "clean" is the only target specified on the make command line. Therefore, the build "clean" step must be -invoked separately.

      Examples of the use of TYPE_PREBUILD_COMMANDS -can be found in org.eclipse.cdt.managedbuilder.makegen.gnu\DefaultGCCDependencyCalculatorPreBuildCommands.

      public interface IManagedDependencyPreBuild extends IManagedDependencyInfo {
      -	
      -    /**
      +invoked separately.

      Examples of the use of TYPE_PREBUILD_COMMANDS +can be found in org.eclipse.cdt.managedbuilder.makegen.gnu\DefaultGCCDependencyCalculatorPreBuildCommands.

      public interface IManagedDependencyPreBuild extends IManagedDependencyInfo {
      +
      +    /**
            * Returns the list of generated dependency files.
            *   
            * The paths can be either relative to the top build directory, or absolute 
      @@ -5751,9 +5751,9 @@ invoked separately.

      Examples of the use of TYPE_PREB * * @return IPath[] */ - public IPath[] getDependencyFiles(); + public IPath[] getDependencyFiles(); - /** + /** * Returns the name to be used in the build file to identify the separate * build step. Note that this name should be unique to the tool since * multiple tools in a tool-chain may be using this method of @@ -5761,17 +5761,17 @@ invoked separately.

      Examples of the use of TYPE_PREB * * @return String */ - public String getBuildStepName(); + public String getBuildStepName(); - /** + /** * Returns the command line(s) to be invoked in the separate * dependencies pre-build step. * * @return String[] */ - public String[] getDependencyCommands(); + public String[] getDependencyCommands(); - /** + /** * Returns true if the command lines returned by this interface * are not specific to the particular source file, but are only specific to, * at most, the configuration and tool. If the build context is a resource @@ -5782,7 +5782,7 @@ invoked separately.

      Examples of the use of TYPE_PREB * * @return boolean */ - public boolean areCommandsGeneric(); + public boolean areCommandsGeneric(); }

      7.4 Replacing the Command Line Generator

      You can specify a replacement command line generator for a tool. You must specify and supply a class @@ -5849,7 +5849,7 @@ getInputResources();

      MBS calls IManagedCommandLineGenerator.generateCommandLineInfo to generate the command line information.  The supplied IManagedCommandLineGenerator could modify the command line parts if necessary and then provide the modified values, as well as -the complete command line, in the IManagedCommandLineInfo interface.  The +the complete command line, in the IManagedCommandLineInfo interface.  The default MBS implementation does not modify any of the command line parts.  It uses the parts and the pattern to generate the complete command line that can be retrieved using IManagedCommandLineInfo.getCommandLine.

      @@ -5864,17 +5864,17 @@ given project type are not supported the project type is treated as unsupported.

      In order to provide this functionality, the “isToolChainSupported” attribute in the toolChain definition must be specified. The value of this attribute should be set to the -name of the class which implements the IManagedIsToolChainSupported +name of the class which implements the IManagedIsToolChainSupported interface.

      -public interface -IManagedIsToolChainSupported{

      +public interface +IManagedIsToolChainSupported{

      -        boolean +        boolean isSupported(IToolChain toolChain, PluginVersionIdentifier version, String -instance);

      +instance);

      -}

      +}

       

      The version argument specifies the version of the ToolChain, or null if the ToolChain does @@ -5894,815 +5894,815 @@ Configuration-level environment variable suppliers separately: 

      To provide a Configuration-level supplier the “configurationEnvironmentSupplier” attribute in the toolChain definition must be specified. The value of this attribute should be set to the -name of the class which implements the IConfigurationEnvironmentVariableSupplier +name of the class which implements the IConfigurationEnvironmentVariableSupplier interface

      -public interface -IConfigurationEnvironmentVariableSupplier{

      +public interface +IConfigurationEnvironmentVariableSupplier{

      -  /**

      +  /**

      -   *

      +   *

      -   * @variableName the variable mane

      +   * @variableName the variable mane

      -   * @param configuration configuration

      +   * @param configuration configuration

      -   * @param provider the instance of the -environment variable provider to be used for querying the

      +   * @param provider the instance of the +environment variable provider to be used for querying the

      -   * environment variables from within -the supplier. The supplier should use this provider to obtain

      +   * environment variables from within +the supplier. The supplier should use this provider to obtain

      -  +   * the already defined environment instead of using -the “default” provider returned by the

      +the “default” provider returned by the

      -  +   * -ManagedBuildManager.getEnvironmentVariableProvider().

      +ManagedBuildManager.getEnvironmentVariableProvider().

      -   * -The provider passed to a supplier will ignore -searching the variables for the levels

      +   * +The provider passed to a supplier will ignore +searching the variables for the levels

      -  +   * higher than the current supplier level, will -query only the lower-precedence suppliers

      +query only the lower-precedence suppliers

      -  +   * for the current level and will query all -suppliers for the lower levels.

      +suppliers for the lower levels.

      -  +   * This is done to avoid infinite loops that could -be caused if the supplier calls the provider

      +be caused if the supplier calls the provider

      -  +   * and the provider in turn calls that supplier -again. Also the supplier should not know anything

      +again. Also the supplier should not know anything

      -  +   * about the environment variables defined for the -higher levels.

      +higher levels.

      - +    * @return the reference to the IBuildEnvironmentVariable interface representing -

      +

      -  - * the variable of a given name

      +  + * the variable of a given name

      -   */

      +   */

      -   IBuildEnvironmentVariable getVariable(String variableName, -

      +   IBuildEnvironmentVariable getVariable(String variableName, +

      -IConfiguration configuration,

      +IConfiguration configuration,

      -IEnvironmentVariableProvider provider);

      +IEnvironmentVariableProvider provider);

       

      -  /**

      +  /**

      -   * @param configuration configuration

      +   * @param configuration configuration

      -   * @param provider the instance of the -environment variable provider to be used for querying the

      +   * @param provider the instance of the +environment variable provider to be used for querying the

      -   * environment variables from within -the supplier. The supplier should use this provider to obtain

      +   * environment variables from within +the supplier. The supplier should use this provider to obtain

      -   * the already defined environment instead of using -the “default” provider returned by the

      +   * the already defined environment instead of using +the “default” provider returned by the

      -   -* -ManagedBuildManager.getEnvironmentVariableProvider().

      +   +* +ManagedBuildManager.getEnvironmentVariableProvider().

      -  +   * The provider passed to a supplier will ignore -searching the variables for the levels

      +searching the variables for the levels

      -  +   * higher than the current supplier level, will -query only the lower-precedence suppliers

      +query only the lower-precedence suppliers

      -  +   * for the current level and will query all -suppliers for the lower levels. 

      +suppliers for the lower levels. 

      -  +   * This is done to avoid infinite loops that could -be caused if the supplier calls the provider

      +be caused if the supplier calls the provider

      -  +   * and the provider in turn calls that supplier -again. Also the supplier should not know anything

      +again. Also the supplier should not know anything

      -  +   * about the environment variables defined for the -higher levels.

      +higher levels.

      -   * @return the array of IBuildEnvironmentVariable that represents the environment variables

      +   * @return the array of IBuildEnvironmentVariable that represents the environment variables

      -   */

      +   */

      -   IBuildEnvironmentVariable[] getVariables (IConfiguration configuration,

      +   IBuildEnvironmentVariable[] getVariables (IConfiguration configuration,

      -IEnvironmentVariableProvider provider);

      +IEnvironmentVariableProvider provider);

      -}

      +}

      To provide a Project-level supplier the “projectEnvironmentSupplier” attribute in the projectType definition must be specified. The value of this attribute should be set to the -name of the class which implements the IProjectEnvironmentVariableSupplier +name of the class which implements the IProjectEnvironmentVariableSupplier interface.

      -public interface -IProjectEnvironmentVariableSupplier{

      +public interface +IProjectEnvironmentVariableSupplier{

      - -  /**

      + +  /**

      -   * @variableName the variable mane

      +   * @variableName the variable mane

      -   * @param project the managed project

      +   * @param project the managed project

      -   * @param provider the instance of the -environment variable provider to be used for querying the

      +   * @param provider the instance of the +environment variable provider to be used for querying the

      -   * environment variables from within -the supplier. The supplier should use this provider to obtain

      +   * environment variables from within +the supplier. The supplier should use this provider to obtain

      -   -* the already defined environment instead of using -the “default” provider returned by the

      +   +* the already defined environment instead of using +the “default” provider returned by the

      -   -* -ManagedBuildManager.getEnvironmentVariableProvider().

      +   +* +ManagedBuildManager.getEnvironmentVariableProvider().

      -  +   * The provider passed to a supplier will ignore -searching the variables for the levels

      +searching the variables for the levels

      -  +   * higher than the current supplier level, will -query only the lower-precedence suppliers

      +query only the lower-precedence suppliers

      -  +   * for the current level and will query all -suppliers for the lower levels.

      +suppliers for the lower levels.

      -  +   * This is done to avoid infinite loops that could -be caused if the supplier calls the provider

      +be caused if the supplier calls the provider

      -  +   * and the provider in turn calls that supplier -again. Also the supplier should not know anything

      +again. Also the supplier should not know anything

      -  +   * about the environment variables defined for the -higher levels.

      +higher levels.

      - +    * @return the reference to the IBuildEnvironmentVariable interface representing -

      +

      -  - * the variable of a given name

      +  + * the variable of a given name

      - -   */

      + +   */

      -   IBuildEnvironmentVariable getVariable(String variableName, -

      +   IBuildEnvironmentVariable getVariable(String variableName, +

      -IManagedProject project,

      +IManagedProject project,

      -IEnvironmentVariableProvider provider);

      +IEnvironmentVariableProvider provider);

       

      - -  /**

      + +  /**

      - -   *

      + +   *

      - -   * @param project the managed project

      + +   * @param project the managed project

      - +    * @param provider the instance of the -environment variable provider to be used for querying the

      +environment variable provider to be used for querying the

      - +    * environment variables from within -the supplier. The supplier should use this provider to obtain

      +the supplier. The supplier should use this provider to obtain

      -   -* the already defined environment instead of using -the “default” provider returned by the

      +   +* the already defined environment instead of using +the “default” provider returned by the

      -   -* -ManagedBuildManager.getEnvironmentVariableProvider().

      +   +* +ManagedBuildManager.getEnvironmentVariableProvider().

      -  +   * The provider passed to a supplier will ignore -searching the variables for the levels

      +searching the variables for the levels

      -  +   * higher than the current supplier level, will -query only the lower-precedence suppliers

      +query only the lower-precedence suppliers

      -  +   * for the current level and will query all -suppliers for the lower levels.

      +suppliers for the lower levels.

      -  +   * This is done to avoid infinite loops that could -be caused if the supplier calls the provider

      +be caused if the supplier calls the provider

      -  +   * and the provider in turn calls that supplier -again. Also the supplier should not know anything

      +again. Also the supplier should not know anything

      -  +   * about the environment variables defined for the -higher levels.

      +higher levels.

      - +    * @return the array of IBuildEnvironmentVariable that represents the environment variables -

      +

      - -   */

      + +   */

      -   IBuildEnvironmentVariable[] getVariables (IManagedProject project,

      +   IBuildEnvironmentVariable[] getVariables (IManagedProject project,

      -IEnvironmentVariableProvider provider);

      +IEnvironmentVariableProvider provider);

      -}

      -

      The IBuildEnvironmentVariable interface returns information regarding an +}

      +

      The IBuildEnvironmentVariable interface returns information regarding an individual environment variable. 

      -public interface -IBuildEnvironmentVariable{

      +public interface +IBuildEnvironmentVariable{

      -    -public static final int ENVVAR_REPLACE = 1;

      +    +public static final int ENVVAR_REPLACE = 1;

      -    -public static final int ENVVAR_REMOVE = 2;

      +    +public static final int ENVVAR_REMOVE = 2;

      -    -public static final int ENVVAR_PREPEND = 3;

      +    +public static final int ENVVAR_PREPEND = 3;

      -    -public static final int ENVVAR_APPEND = 4;

      +    +public static final int ENVVAR_APPEND = 4;

       

      -    String getName();

      +    String getName();

       

      -    String getValue();

      +    String getValue();

       

      - -   /**

      + +   /**

      - -    * @return one of the IBuildEnvironmentVariable.ENVVAR_* operation types

      + +    * @return one of the IBuildEnvironmentVariable.ENVVAR_* operation types

      - -    */

      + +    */

      -    int -getOperation();

      +    int +getOperation();

       

      - -   /**

      + +   /**

      - +     * @return if the variable can hold the -list of values this method returns the String representing

      +list of values this method returns the String representing

      -   - * the delimiter that is used to separate values. -This information is used for the following:

      +   + * the delimiter that is used to separate values. +This information is used for the following:

      -   - *

      +   + *

      -   - * 1. in append and prepend operations:

      +   + * 1. in append and prepend operations:

      -   - * If the variable already exists and contains some -value the new

      +   + * If the variable already exists and contains some +value the new

      -   - * value will be calculated in the following way:

      +   + * value will be calculated in the following way:

      -   - * For the “prepend” operation:

      +   + * For the “prepend” operation:

      -   - *         <New value> = <the value from the -getValue() method><delimiter><Old value>

      +   + *         <New value> = <the value from the +getValue() method><delimiter><Old value>

      -   - * For the “append” operation:

      +   + * For the “append” operation:

      -   - *         <New value> = <Old value><delimiter><the -value from the getValue() method>

      +   + *         <New value> = <Old value><delimiter><the +value from the getValue() method>

      -   - *

      +   + *

      -   - * The Environment Variable Provider will also -remove the duplicates of “sub-values”

      +   + * The Environment Variable Provider will also +remove the duplicates of “sub-values”

      -   - * in the resulting value. -

      +   + * in the resulting value. +

      -   - * For example:

      +   + * For example:

      -   - * If the current value is +   + * If the current value is “string1:string2:string3”, the getDelimiter() method returns “:” -

      +

      -   - * and getValue() method returns “string4:string2” -the new value will contain:

      +   + * and getValue() method returns “string4:string2” +the new value will contain:

      -   - * For the “prepend” operation: -“string4:string2:string1:string3”

      +   + * For the “prepend” operation: +“string4:string2:string1:string3”

      -   - * For the “append” operation: -“string1:string3:string4:string2”

      +   + * For the “append” operation: +“string1:string3:string4:string2”

      -   - *
      +   + *
          * 2. Since the environment variables are also -treated as build macros the delimiter is also used

      +treated as build macros the delimiter is also used

      -   - * by the BuildMacroProvider to determine the type -of the macro used to represent the

      +   + * by the BuildMacroProvider to determine the type +of the macro used to represent the

      -   - * given environment variable. If the variable has -the delimiter it is treated as the Text-List macro

      +   + * given environment variable. If the variable has +the delimiter it is treated as the Text-List macro

      -   - * otherwise it is treated as the Text macro. (See -Build Macro design for more details)

      +   + * otherwise it is treated as the Text macro. (See +Build Macro design for more details)

      -   - *

      +   + *

      -   - * To specify that no delimiter should be used, the +   + * To specify that no delimiter should be used, the getDelimiter() method should
      -    * return null or an empty string

      +    * return null or an empty string

      - -    */

      + +    */

      -    String getDelimiter();

      +    String getDelimiter();

      -}

      +}

      7.7 Defining a Build Path Resolver 

      To provide a build path resolver, the buildPathResolver attribute in the envVarBuildPath definition must be specified. The value of this attribute should be set to the -name of the class which implements the IBuildPathResolver interface.  This +name of the class which implements the IBuildPathResolver interface.  This allows the tool-integrator to provide his/her own logic for resolving the environment variable values to build paths.

      -public interface -IBuildPathResolver {

      +public interface +IBuildPathResolver {

       

      - -   /**

      + +   /**

      - -    *

      + +    *

      - +     * @param pathType one of the -IEnvVarBuildPath.BUILDPATH _xxx

      +IEnvVarBuildPath.BUILDPATH _xxx

      -   - * @param variableName represents the name of the -variable that holds the build paths

      +   + * @param variableName represents the name of the +variable that holds the build paths

      -   - * @param variableValue represents the value of the -value specified with the

      +   + * @param variableValue represents the value of the +value specified with the

      -   - *     variableName argument

      +   + *     variableName argument

      -   - * @param configuration represents configuration -for which the build paths are requested

      +   + * @param configuration represents configuration +for which the build paths are requested

      - -    */

      + +    */

      -    -String[] resolveBuildPaths(

      +    +String[] resolveBuildPaths(

      -                 int pathType,

      +                 int pathType,

      -                 -String variableName,

      +                 +String variableName,

      -                 -String variableValue,

      +                 +String variableValue,

      -                 -IConfiguration configuration);

      +                 +IConfiguration configuration);

      -}

      +}

       

      See org.eclipse.cdt.managedbuilder.gnu.cygwin.CygwinPathResolver for an example of a build path resolver.  It converts Cygwin-style paths to Windows paths.

      7.8 Defining Build Macros

      -

      The IConfigurationBuildMacroSupplier interface and the -IProjectBuildMacroSupplier interface allow a tool-integrator to define build +

      The IConfigurationBuildMacroSupplier interface and the +IProjectBuildMacroSupplier interface allow a tool-integrator to define build macros and their values.

      -

      All methods of the IConfigurationBuildMacroSupplier +

      All methods of the IConfigurationBuildMacroSupplier interface MUST return macros ONLY for the configuration context, and MUST NOT search for macro values for contexts with lower precedence. This is up to BuildMacroProvider to query macro suppliers passing lower-precedence context if necessary in case the macro value was not found for some specified context

      -public interface -IConfigurationBuildMacroSupplier {

      +public interface +IConfigurationBuildMacroSupplier {

      -   /**

      +   /**

      - -    *

      + +    *

      - -    * @ macroName the macro name

      + +    * @ macroName the macro name

      - -    * @param configuration configuration

      + +    * @param configuration configuration

      - +     * @param provider the instance of the -build macro provider to be used for querying the

      +build macro provider to be used for querying the

      - +     * build macros from within the -supplier. The supplier should use this provider to obtain

      +supplier. The supplier should use this provider to obtain

      -    -* the already defined build macros instead of using -the “default” provider returned by the

      +    +* the already defined build macros instead of using +the “default” provider returned by the

      -    -* ManagedBuildManager.getBuildMacroProvider().

      +    +* ManagedBuildManager.getBuildMacroProvider().

      -   - * The provider passed to a supplier will ignore +   + * The provider passed to a supplier will ignore searching macros for the levels
          * higher than the current supplier level, will -query only the lower-precedence suppliers

      +query only the lower-precedence suppliers

      -   - * for the current level and will query all -suppliers for the lower levels.

      +   + * for the current level and will query all +suppliers for the lower levels.

      -   - * This is done to avoid infinite loops that could -be caused if the supplier calls the provider

      +   + * This is done to avoid infinite loops that could +be caused if the supplier calls the provider

      -   - * and the provider in turn calls that supplier +   + * and the provider in turn calls that supplier again. Also the supplier should not know anything
          * about the build macros defined for the higher -levels.

      +levels.

      - +     * @return the reference to the IBuildMacro interface representing -

      +

      -   - * the build macro of a given name or null if the -macro of  that name is not defined

      +   + * the build macro of a given name or null if the +macro of  that name is not defined

      - -    */

      + +    */

      -    -IBuildMacro getMacro(String macroName,

      +    +IBuildMacro getMacro(String macroName,

      -IConfiguration configuration,

      +IConfiguration configuration,

      -IBuildMacroProvider provider);

      +IBuildMacroProvider provider);

       

      - -   /**

      + +   /**

      - -    *

      + +    *

      - -    * @param configuration configuration

      + +    * @param configuration configuration

      - +     * @param provider the instance of the -build macro provider to be used for querying the

      +build macro provider to be used for querying the

      - +     * build macros from within the -supplier. The supplier should use this provider to obtain

      +supplier. The supplier should use this provider to obtain

      -    -* the already defined build macros instead of using -the “default” provider returned by the

      +    +* the already defined build macros instead of using +the “default” provider returned by the

      -    -* ManagedBuildManager.getBuildMacroProvider().

      +    +* ManagedBuildManager.getBuildMacroProvider().

      -    -* The provider passed to a supplier will ignore -searching macros for the levels

      +    +* The provider passed to a supplier will ignore +searching macros for the levels

      -    -* higher than the current supplier level, will -query only the lower-precedence suppliers

      +    +* higher than the current supplier level, will +query only the lower-precedence suppliers

      -   - * for the current level and will query all -suppliers for the lower levels.

      +   + * for the current level and will query all +suppliers for the lower levels.

      -   - * This is done to avoid infinite loops that could -be caused if the supplier calls the provider

      +   + * This is done to avoid infinite loops that could +be caused if the supplier calls the provider

      -   - * and the provider in turn calls that supplier -again. Also the supplier should not know anything

      +   + * and the provider in turn calls that supplier +again. Also the supplier should not know anything

      -   - * about the build macros defined for the higher -levels.

      +   + * about the build macros defined for the higher +levels.

      - +     * @return the IBuildMacro[] array -representing defined macros

      +representing defined macros

      - -    */

      + +    */

      -    -IBuildMacro[] getMacros(IConfiguration configuration,

      +    +IBuildMacro[] getMacros(IConfiguration configuration,

      -IBuildMacroProvider provider);

      +IBuildMacroProvider provider);

      -}

      -

      All methods of the IProjectBuildMacroSupplier interface +}

      +

      All methods of the IProjectBuildMacroSupplier interface MUST return macros ONLY for the Project context, and MUST NOT search for macro values for contexts with lower precedence. This is up to the BuildMacroProvider to query macro suppliers passing lower-precedence context if necessary in case the macro value was not found for some specified context.

      -public interface -IProjectBuildMacroSupplier {

      +public interface +IProjectBuildMacroSupplier {

      - -   /**

      + +   /**

      - -    *

      + +    *

      - -    * @ macroName the macro mane

      + +    * @ macroName the macro mane

      - +     * @param project the instance of the -managed project

      +managed project

      - +     * @param provider the instance of the -build macro provider to be used for querying the

      +build macro provider to be used for querying the

      - +     * build macros from within the -supplier. The supplier should use this provider to obtain

      +supplier. The supplier should use this provider to obtain

      -    -* the already defined build macros instead of using -the “default” provider returned by the

      +    +* the already defined build macros instead of using +the “default” provider returned by the

      -    -* ManagedBuildManager.getBuildMacroProvider().

      +    +* ManagedBuildManager.getBuildMacroProvider().

      -   - * The provider passed to a supplier will ignore -searching macros for the levels

      +   + * The provider passed to a supplier will ignore +searching macros for the levels

      -   - * higher than the current supplier level, will -query only the lower-precedence suppliers

      +   + * higher than the current supplier level, will +query only the lower-precedence suppliers

      -   - * for the current level and will query all -suppliers for the lower levels.

      +   + * for the current level and will query all +suppliers for the lower levels.

      -   - * This is done to avoid infinite loops that could -be caused if the supplier calls the provider

      +   + * This is done to avoid infinite loops that could +be caused if the supplier calls the provider

      -   - * and the provider in turn calls that supplier -again. Also the supplier should not know anything

      +   + * and the provider in turn calls that supplier +again. Also the supplier should not know anything

      -   - * about the build macros defined for the higher -levels.

      +   + * about the build macros defined for the higher +levels.

      - +     * @return the reference to the IBuildMacro interface representing -

      +

      -   - * the build macro of a given name or null if the -macro of  that name is not defined

      +   + * the build macro of a given name or null if the +macro of  that name is not defined

      - -    */

      + +    */

      -    -IBuildMacro getMacro(String macroName,

      +    +IBuildMacro getMacro(String macroName,

      -IManagedProject project,

      +IManagedProject project,

      -IBuildMacroProvider provider);

      +IBuildMacroProvider provider);

       

      - -   /**

      + +   /**

      - -    *

      + +    *

      - +     * @param project the instance of the -managed project

      +managed project

      - +     * @param provider the instance of the -build macro provider to be used for querying the

      +build macro provider to be used for querying the

      - +     * build macros from within the -supplier. The supplier should use this provider to obtain

      +supplier. The supplier should use this provider to obtain

      -    -* the already defined build macros instead of using -the “default” provider returned by the

      +    +* the already defined build macros instead of using +the “default” provider returned by the

      -    -* ManagedBuildManager.getBuildMacroProvider().

      +    +* ManagedBuildManager.getBuildMacroProvider().

      -   - * The provider passed to a supplier will ignore -searching macros for the levels

      +   + * The provider passed to a supplier will ignore +searching macros for the levels

      -   - * higher than the current supplier level, will -query only the lower-precedence suppliers

      +   + * higher than the current supplier level, will +query only the lower-precedence suppliers

      -   - * for the current level and will query all -suppliers for the lower levels.

      +   + * for the current level and will query all +suppliers for the lower levels.

      -   - * This is done to avoid infinite loops that could -be caused if the supplier calls the provider

      +   + * This is done to avoid infinite loops that could +be caused if the supplier calls the provider

      -   - * and the provider in turn calls that supplier -again. Also the supplier should not know anything

      +   + * and the provider in turn calls that supplier +again. Also the supplier should not know anything

      -   - * about the build macros defined for the higher -levels.

      +   + * about the build macros defined for the higher +levels.

      - +     * @return the IBuildMacro[] array -representing defined macros

      +representing defined macros

      - -    */

      + +    */

      -    -IBuildMacro[] getMacros(IManagedProject project,

      +    +IBuildMacro[] getMacros(IManagedProject project,

      -IBuildMacroProvider provider);

      +IBuildMacroProvider provider);

      -}

      -

      The IBuildMacro interface returns information regarding an +}

      +

      The IBuildMacro interface returns information regarding an individual build macro. 

      -public interface -IBuildMacro{

      +public interface +IBuildMacro{

      -    public -static final int VALUE_TEXT = 1; //can hold any text string

      +    public +static final int VALUE_TEXT = 1; //can hold any text string

      -    public -static final int VALUE_TEXT_LIST = 2; //can hold the array of text string values

      +    public +static final int VALUE_TEXT_LIST = 2; //can hold the array of text string values

      -    public -static final int VALUE_PATH_FILE = 3; //can hold file path

      +    public +static final int VALUE_PATH_FILE = 3; //can hold file path

      -    public +    public static final int VALUE_PATH_FILE_LIST = 4; //can hold the array of file path -values

      +values

      -    public -static final int VALUE_PATH_DIR = 5; //can hold dir path

      +    public +static final int VALUE_PATH_DIR = 5; //can hold dir path

      -    public +    public static final int VALUE_PATH_DIR_LIST = 6; //can hold the array of dir path -values

      +values

      -    public -static final int VALUE_PATH_ANY = 7; //can hold both file and dir path

      +    public +static final int VALUE_PATH_ANY = 7; //can hold both file and dir path

      -    public -static final int VALUE_PATH_ANY_LIST = 8; //can hold the array of  PATH_ANY

      +    public +static final int VALUE_PATH_ANY_LIST = 8; //can hold the array of  PATH_ANY

      -// values 

      +// values 

       

      -    String getName();

      +    String getName();

      -            -

      +            +

      - -    /**

      + +    /**

      - -     * @returns IBuildMacro.VALUE_xxx

      + +     * @returns IBuildMacro.VALUE_xxx

      - -     */

      + +     */

      -    int -getMacroValueType();

      +    int +getMacroValueType();

       

      - -    /**

      + +    /**

      - +      * @throws BuildMacroException if macro -holds StringList-type value

      +holds StringList-type value

      - -     */

      + +     */

      -    String getStringValue() throws BuildMacroException;

      +    String getStringValue() throws BuildMacroException;

       

      -    /**

      +    /**

      -     * @throws BuildMacroException if macro -holds single String-type value

      +     * @throws BuildMacroException if macro +holds single String-type value

      -     */

      +     */

      -    -String[] getStringListValue() throws BuildMacroException;

      +    +String[] getStringListValue() throws BuildMacroException;

      -}

      +}

      7.9 Defining a Configuration Name Provider

      All the configuration names must be unique within a project.  You can provide unique configuration names in your build @@ -6721,14 +6721,14 @@ configurations.  You can define unique names statically in your build definitions (for example, "Debug_1.0", "Debug_2.0", etc.)  However, these names are not very "user-friendly", particularly for a user who intends to use a single version of your tool-chain.  The alternative is to dynamically -assign unique configuration names using a configuration name provider (see the  -getNewConfigurationName method below.)  The first configuration +assign unique configuration names using a configuration name provider (see the  +getNewConfigurationName method below.)  The first configuration that is created gets to use the most “basic” name – for example, “Debug”.  When another configuration is created that uses a different tool-chain version, it would see that “Debug” was already chosen, so it could return a more qualified name - for example, “Debug_2.0”.  The same technique could be used when your tool-chain supports multiple host/target platforms.

      -

      public interface +

      public interface IConfigurationNameProvider {

         /*
      @@ -6741,12 +6741,12 @@ in the project.

          String getNewConfigurationName(IConfiguration configuration, String [] usedConfigurationNames );
      -}

      +}

      7.10 Defining an Output Name Provider

      You can specify an output name provider for an outputType. You must specify and supply a class that implements the IManagedOutputNameProvider interface shown below.  The class name is assigned to the outputType element, -nameProvider attribute.

      +nameProvider attribute.

      public interface IManagedOutputNameProvider{

      @@ -6767,8 +6767,8 @@ corresponding to the primary input name(s)

      getOutputPaths(ITool tool, IPath[] primaryInputs);

      }

      -

      When multipleOfType -is true, an output name provider, or the outputNames attribute, is required +

      When multipleOfType +is true, an output name provider, or the outputNames attribute, is required in order for MBS to know the names of the output files.

      The returned paths must be relative to the top-level build directory. However, if only a file @@ -6779,10 +6779,10 @@ build directory, regardless of the source file directory structure, return "./path".

      7.11 Defining an Option Value Handler

      You can specify a value handler for an option.  You must specify and -supply a class that implements the -IManagedOptionValueHandler interface shown below.  This interface is +supply a class that implements the +IManagedOptionValueHandler interface shown below.  This interface is used to dynamically manage the value of an option.

      -

      public interface IManagedOptionValueHandler{
      +

      public interface IManagedOptionValueHandler{

          public final int EVENT_OPEN = 1;  /** The option is opened, i.e. its UI element
      @@ -6902,18 +6902,18 @@ to
              IOption option,
              String extraArgument,
              String enumValue);
      -}

      -

      See the Shared Tool Options design document in bugzilla #90481 -for additional information.

      +}

      +

      See the Shared Tool Options design document in bugzilla #90481 +for additional information.

      7.12 Defining an Option Applicability Calculator

      You can specify an option applicability calculator for an option.  You must specify and supply a -class that implements the IManagedOutputNameProvider +class that implements the IManagedOutputNameProvider interface shown below.  The class name is assigned to the outputType element, -nameProvider attribute.  You should implement this interface when an +nameProvider attribute.  You should implement this interface when an option is not always applicable - for example, when an option is only used if -another option has a particular value.

      -

      public interface IOptionApplicability {
      +another option has a particular value.

      +

      public interface IOptionApplicability {
        /**
        @@ -7008,7 +7008,7 @@ public boolean isOptionEnabled(
          IHoldsOptions holder,
          IOption option);

      -}

      +}

      7.13 Defining a Dynamic Element Provider

      Tool integrators may supply a dynamic element provider to dynamically provide the definitions that are otherwise specified in the buildDefinitions extension point.  To specify a dynamic element provider, your build @@ -7161,8 +7161,8 @@ Element Schema:

      Specifies the Java class which implements the added page.  This class must implement the org.eclipse.jface.wizard.IWizardPage + name="OLE_LINK7"> + org.eclipse.jface.wizard.IWizardPage interface

  • - The unique identifier of the option that this option is - derived from. no - Flags the option as abstract.  An abstract option must be + Flags the option as abstract.  An abstract option must be defined as a top level object in the model definition and can not be selected by the user in the UI, but options derived from this option - will inherit its attributes and children.  The default value is false. no - Value assigned to the option by the end user or in a - default configuration.  For options containing a Boolean + Value assigned to the option by the end user or in a + default configuration.  For options containing a Boolean value, the string ‘true’ is treated as true, any other value as false. @@ -3795,12 +3795,12 @@ not edited it. For options containing a Boolean value, the string style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; padding: 0in 5.4pt;" valign="top">

    An optional value that specifies the actual command that will -be passed to the tool on the command line.  The command +be passed to the tool on the command line.  The command provides a “pattern” for specifying where the value should be placed for options of type string and stringlist.  The pattern can contain the replaceable variable “value”.  If no ${value} is specified in the command, the option value is appended to the end of the specified - command.

    + command.

    valign="top">resourceFilter Specifies the resource types that this option + valign="top">Specifies the resource types that this option applies to.  The values are “project”, “file”, and “all”.  The default is “all”.  Specifying “project” indicates that the option is displayed when modifying a configuration’s options, but not when modifying an - individual file’s options.  Specifying “file” indicates the opposite. no - The path of the project resource to which this - resourceConfiguration applies. yes - Specifies whether the resource is excluded from building in + Specifies whether the resource is excluded from building in the parent configuration.  The default value is false.  The resourceConfiguration element retains its tool children, if any - exist, even when excluded from the build. no which implements the operations associated with this page.  The class must implement the - java.lang.Runnable interface

    + java.lang.Runnable interface

    The Target attributes name, id, -isTest and isAbstract should be transferred to a new ProjectType -element in the new model.  The id assigned to the Target must be +

    The Target attributes name, id, +isTest and isAbstract should be transferred to a new ProjectType +element in the new model.  The id assigned to the Target must be transferred to the new ProjectType element without change.  Otherwise, projects created using your integration with CDT 1.2 or 2.0.x will not be able to be converted.  There is no tool integrator intervention into the conversion process @@ -7649,46 +7649,46 @@ yet, but this is a high priority for CDT 3.0.

    8.1.3 MBS 2.0 Configuration Element

    The Configuration children of the Target element are made Configuration children of the new ProjectType element.  -The Configuration name and  id attributes should be transferred -with the Configuration.  The id assigned to the Configuration must remain +The Configuration name and  id attributes should be transferred +with the Configuration.  The id assigned to the Configuration must remain unchanged in order to support the conversion of old model project files.  The -Target attributes artifactName, cleanCommand and errorParsers -attributes should be transferred to the Configuration element.  The Target -defaultExtension attribute should be transferred to the Configuration +Target attributes artifactName, cleanCommand and errorParsers +attributes should be transferred to the Configuration element.  The Target +defaultExtension attribute should be transferred to the Configuration element -as the artifactExtension attribute (Note the name change).

    +as the artifactExtension attribute (Note the name change).

    A new ToolChain element should be -created as the child of each Configuration element.  The name and id +created as the child of each Configuration element.  The name and id of the ToolChain are not dependent upon the name of any of the old model objects.  However, if you allow users to create CDT 2.1 projects using your CDT -2.0 manifest file, then the id of your new ToolChain must be the parent -Configuration id, appended with “.toolchain”.  The Target isAbstract, -osList, archList and scannerInfoCollector attributes are +2.0 manifest file, then the id of your new ToolChain must be the parent +Configuration id, appended with “.toolchain”.  The Target isAbstract, +osList, archList and scannerInfoCollector attributes are transferred to the ToolChain element.

    A new Builder element can be -created as the child of each ToolChain element.  The name and id of +created as the child of each ToolChain element.  The name and id of the Builder are not dependent upon the name of any of the old model elements.  However, if you allow users to create CDT 2.1 projects using your CDT 2.0 -manifest file, then the id of your new Builder must be the parent -Configuration id, appended with “.builder”.  The target isAbstract -attribute is transferred to the Builder element.   The target -makeCommand attribute should be transferred to the Builder element as the -command attribute (Note the name change).  The target -makeArguments attribute should be transferred to the Builder element as the -arguments attribute (Note the name change).  The target -makefileGenerator attribute should be transferred to the Builder element as -the buildfileGenerator attribute (Note the name change).

    +manifest file, then the id of your new Builder must be the parent +Configuration id, appended with “.builder”.  The target isAbstract +attribute is transferred to the Builder element.   The target +makeCommand attribute should be transferred to the Builder element as the +command attribute (Note the name change).  The target +makeArguments attribute should be transferred to the Builder element as the +arguments attribute (Note the name change).  The target +makefileGenerator attribute should be transferred to the Builder element as +the buildfileGenerator attribute (Note the name change).

    A new TargetPlatform element can be -created as the child of each ToolChain element.  The name and id of +created as the child of each ToolChain element.  The name and id of the TargetPlatform are not dependent upon the name of any of the old model elements.  However, if you allow users to create CDT 2.1 projects using your CDT -2.0 manifest file, then the id of your new TargetPlatform must be the -parent Configuration id, appended with “.targetplatform”.  The target -isAbstract and binaryParser attributes are transferred to the -TargetPlatform element.  The TargetPlatform element contains osList and -archList attributes that specify the architecture(s) and operating system(s) +2.0 manifest file, then the id of your new TargetPlatform must be the +parent Configuration id, appended with “.targetplatform”.  The target +isAbstract and binaryParser attributes are transferred to the +TargetPlatform element.  The TargetPlatform element contains osList and +archList attributes that specify the architecture(s) and operating system(s) on which the Configuration’s build artifact(s) execute.  You can transfer the -Target osList and archList attributes if appropriate.

    +Target osList and archList attributes if appropriate.

    8.1.4 MBS 2.0 Tool Element

    The old model allows Tools to be defined at the top level scope in the manifest file.  This is still true in the new model.  In addition, @@ -7699,21 +7699,21 @@ also be specified as the children of Target elements.  In the new model, To elements are children of ToolChain elements.  Old model Tool elements need to be added as the child of each ToolChain that uses the Tool.  All of the old model Tool attributes are supported by the new model.

    -

    The id assigned to the Tool +

    The id assigned to the Tool must remain unchanged in order to support the conversion of old model project -files.  The outputs attribute no longer defaults to an empty string.  If +files.  The outputs attribute no longer defaults to an empty string.  If your Tool produces files by default with no extension, you must specify -‘outputs=””’ in the definition of the Tool or one of its ancestors (superClass).

    +‘outputs=””’ in the definition of the Tool or one of its ancestors (superClass).

    8.1.5 MBS 2.0 ToolReference Element

    The new model does not define a ToolReference element.  -Instead, a Tool element can specify the superClass attribute in order to +Instead, a Tool element can specify the superClass attribute in order to provide the same functionality.  That is, specifying a Tool that inherits attributes from another Tool and can override one or more attributes.

    The old model uses ToolReferences in two ways.  They can be specified as the child of a Configuration element.  In this case, the ToolReference should be converted a Tool element child of the -Configuration’s ToolChain, transferring the value of the id attribute to -the Tool superClass attribute.

    +Configuration’s ToolChain, transferring the value of the id attribute to +the Tool superClass attribute.

    A ToolReference can also be specified as the child of a Target element.  In this case, the ToolReference applies to all of the Configuration children of the Target.  These ToolReference @@ -7721,17 +7721,17 @@ elements need to be converted to Tool elements and added as the child of each To

    8.1.6 MBS 2.0 Option Element

    All of the old model Option attributes are supported by the new model.

    -

    The id assigned to the +

    The id assigned to the Option must remain unchanged in order to support the conversion of old model project files.

    8.1.7 MBS 2.0 OptionReference Element

    The new model does not define an OptionReference element.  -Instead, an Option element can specify the superClass attribute in order +Instead, an Option element can specify the superClass attribute in order to provide the same functionality.  That is, specifying an Option that inherits attributes from another Option and can override one or more attributes.

    All OptionReference elements should -be converted to Option elements, transferring the value of the id -attribute to the Option superClass attribute.

    +be converted to Option elements, transferring the value of the id +attribute to the Option superClass attribute.

    8.1.8 MBS 2.0 OptionCategory, EnumeratedOptionValue, ListOptionValue Elements

    There are no changes to these elements.

    diff --git a/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtodeveloptemplates.html b/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtodeveloptemplates.html index 4976df14e8e..d18706f98a5 100644 --- a/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtodeveloptemplates.html +++ b/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtodeveloptemplates.html @@ -447,7 +447,7 @@ The following is a list of process types provided by the Template Engine:
  • -org.eclipse.cdt.managedbuilder.core.NewManagedProject: It defines all the parameters +org.eclipse.cdt.managedbuilder.core.NewManagedProject: It defines all the parameters required for a new managed project and provides the fully qualified name of the class, which processes these parameters.

    @@ -521,7 +521,7 @@ configurations for the managed project. It is of type simple.
  • -org.eclipse.cdt.core.Copy: It defines all the parameters required to copy +org.eclipse.cdt.core.Copy: It defines all the parameters required to copy files and provides the fully qualified name of the class, which processes these parameters.

    @@ -559,14 +559,14 @@ location.
  • -org.eclipse.cdt.core.Append: It defines all the parameters required to append +org.eclipse.cdt.core.Append: It defines all the parameters required to append files to a project and provides the fully qualified name of the class, which processes these parameters. For more information about the parameters, refer to the Copy process type described above.

  • -org.eclipse.cdt.core.AddFile: It defines all the parameters required to add a +org.eclipse.cdt.core.AddFile: It defines all the parameters required to add a file to the project and provides the fully qualified name of the class, which processes these parameters.

    @@ -591,7 +591,7 @@ process type described above.
  • -org.eclipse.cdt.core.AddFiles: It defines all the parameters required to add +org.eclipse.cdt.core.AddFiles: It defines all the parameters required to add files to a project and provides the fully qualified name of the class, which processes these parameters.

    @@ -616,7 +616,7 @@ process type described above.
  • -org.eclipse.cdt.core.CreateSourceFolder: It defines all the parameters +org.eclipse.cdt.core.CreateSourceFolder: It defines all the parameters required to create a folder for the source files in a project and provides the fully qualified name of the class, which processes these parameters.

    @@ -640,7 +640,7 @@ created. It is of simple type.
  • -org.eclipse.cdt.core.AddLink: It defines all the parameters required to +org.eclipse.cdt.core.AddLink: It defines all the parameters required to create a linked file and provides the fully qualified name of the class, which processes these parameters.

    @@ -670,7 +670,7 @@ file should be created. It is of simple type.
  • -org.eclipse.cdt.managedbuilder.core.CreateIncludeFolder: It defines all the parameters +org.eclipse.cdt.managedbuilder.core.CreateIncludeFolder: It defines all the parameters required to create a folder for the header files in a project and provides the fully qualified name of the class, which processes these parameters. For information about the parameters, refer to the CreateSourceFolder @@ -678,7 +678,7 @@ process type described above.

  • -org.eclipse.cdt.managedbuilder.core.ExcludeResources: It defines all the parameters +org.eclipse.cdt.managedbuilder.core.ExcludeResources: It defines all the parameters required to exclude resources from a CDT project and provides the fully qualified name of the class, which processes these parameters.

    @@ -696,7 +696,7 @@ type.

    configIdPattern: Use this parameter to specify a regular expression of java.util.regex.Pattern syntax for matching against project configuration ids. -The resources that match any of the regular expressions given in the filePatterns argument +The resources that match any of the regular expressions given in the filePatterns argument will be excluded from all matching project configurations. It is of simple type.

  • @@ -706,7 +706,7 @@ will be excluded from all matching project configurations. It is of simple will be matched against are workspace relative (include the project folder) and use forward slash as the file separator. That this argument is an array is purely to allow logically separate patterns to be given separately rather than as one big string. If any of the regular expressions matches then the resource in question will be excluded for the matching configuration(s). -The resources that match any of the regular expressions given in the filePatterns argument +The resources that match any of the regular expressions given in the filePatterns argument will be excluded for all matching project configurations. It is of simple-array type.
  • @@ -719,7 +719,7 @@ files should not be excluded for without having to know what other configuration

  • -org.eclipse.cdt.managedbuilder.core.SetMBSStringOptionValue: It defines all the parameters +org.eclipse.cdt.managedbuilder.core.SetMBSStringOptionValue: It defines all the parameters required to create a string option value and provides the fully qualified name of the class, which processes these parameters.

    @@ -762,7 +762,7 @@ the resource. It is of simple type.
  • -org.eclipse.cdt.managedbuilder.core.SetMBSStringListOptionValues: It defines all the +org.eclipse.cdt.managedbuilder.core.SetMBSStringListOptionValues: It defines all the parameters required to create a string list of option values and provides the fully qualified name of the class, which processes these parameters. The parameters required are similar to that of SetMBSStringOptionValue @@ -772,7 +772,7 @@ option values. For information about the parameters, refer to the

  • -org.eclipse.cdt.managedbuilder.core.SetMBSBooleanOptionValue: It defines all the parameters +org.eclipse.cdt.managedbuilder.core.SetMBSBooleanOptionValue: It defines all the parameters required to create a boolean option value and provides the fully qualified name of the class, which processes these parameters. The parameters required are similar to that of SetMBSStringOptionValue process type, only @@ -782,7 +782,7 @@ For information about the parameters, refer to the

  • -org.eclipse.cdt.managedbuilder.core.AppendToMBSStringOptionValue: It defines all the +org.eclipse.cdt.managedbuilder.core.AppendToMBSStringOptionValue: It defines all the parameters required to append a string option value to an existing string option. It also provides the fully qualified name of the class, which processes these parameters. For information about the parameters, refer to the @@ -790,21 +790,21 @@ these parameters. For information about the parameters, refer to the

  • -org.eclipse.cdt.managedbuilder.core.AppendToMBSStringListOptionValues: It defines all the +org.eclipse.cdt.managedbuilder.core.AppendToMBSStringListOptionValues: It defines all the parameters required to append a string list of option values to an existing string list of option value. It also provides the fully qualified name of the class, which processes these parameters. For information about the parameters, refer to the SetMBSStringListOptionValues process type described above.

  • -org.eclipse.cdt.core.AppendCreate: It defines all the parameters required to +org.eclipse.cdt.core.AppendCreate: It defines all the parameters required to append or create a file in a project. It also provides the fully qualified name of the class, which processes these parameters. For information about the parameters, refer to the AddFiles process type described above.

  • -org.eclipse.cdt.core.CreateResourceIdentifier: It defines all the parameters +org.eclipse.cdt.core.CreateResourceIdentifier: It defines all the parameters required to append or create a resource identifier. It also provides the fully qualified name of the class, which processes these parameters.

    @@ -827,7 +827,7 @@ type.
  • -org.eclipse.cdt.managedbuilder.core.GenerateMakefileWithBuildDescription: +org.eclipse.cdt.managedbuilder.core.GenerateMakefileWithBuildDescription:

    • diff --git a/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtoregistertemplates.html b/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtoregistertemplates.html index 393eef136bf..845ef76bf14 100644 --- a/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtoregistertemplates.html +++ b/doc/org.eclipse.cdt.doc.isv/guide/projectTemplateEngine/Howtoregistertemplates.html @@ -59,9 +59,9 @@ header files, source files, resource files etc.

      Open the plug-in manifest editor and select the Dependencies page. For more information on plug-in manifest -editor, refer to PDE +editor, refer to PDE Guide > Getting Started > Basic Plug-in Tutorial -> Plug-in manifest editor. +> Plug-in manifest editor.

    • diff --git a/doc/org.eclipse.cdt.doc.user/book.css b/doc/org.eclipse.cdt.doc.user/book.css index 8f09f90e7b3..39391cd1cac 100644 --- a/doc/org.eclipse.cdt.doc.user/book.css +++ b/doc/org.eclipse.cdt.doc.user/book.css @@ -1,51 +1,56 @@ -/* following font face declarations need to be removed for DBCS */ - - -body, h1, h2, h3, h4, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-family: Arial, sans-serif; color: #000000} -pre { font-family: Courier, monospace} - -/* end font face declarations */ - -/* following font size declarations should be OK for DBCS */ -body, h1, h2, h3, h4, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-size: 10pt; } -pre { font-size: 10pt} - -/* end font size declarations */ - -body { background: #FFFFFF} -h1 { font-size: 18pt; margin-top: 5; margin-bottom: 1 } -h2 { font-size: 14pt; margin-top: 25; margin-bottom: 3 } -h3 { font-size: 11pt; margin-top: 20; margin-bottom: 3 } -h4 { font-size: 10pt; margin-top: 20; margin-bottom: 3; font-style: italic } -p { font-size: 10pt; } -pre { margin-left: 6; font-size: 9pt } - -a:link { color: #006699 } -a:visited { color: #996699 } -a:hover { color: #006699 } - -ul { margin-top: 0; margin-bottom: 10 } -li { margin-top: 0; margin-bottom: 0 } -li p { margin-top: 0; margin-bottom: 0 } -ol { margin-top: 0; margin-bottom: 10 } -dl { margin-top: 0; margin-bottom: 10 } -dt { margin-top: 0; margin-bottom: 0; font-weight: bold } -dd { margin-top: 0; margin-bottom: 0 } -strong { font-weight: bold} -em { font-style: italic} -var { font-style: italic} -div.revision { border-left-style: solid; border-left-width: thin; - border-left-color: #7B68EE; padding-left:5 } -th { font-weight: bold } - -/* Mike Behm's addition to the style sheet */ -.userinput { font-family: monospace; } -.guitab, .important, .guibutton, .selectblue, .guimenu, .guilabel, -.notetitle { - color: #000000; - font-family: helvetica, arial, sans-serif; - font-weight: bold; - } -div.linux {display:none;} -.firsterm {font-style:italic;} - +/* following font face declarations need to be removed for DBCS */ + + +body, h1, h2, h3, h4, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-family: Arial, sans-serif; color: #000000} +pre { font-family: Courier, monospace} + +/* end font face declarations */ + +/* following font size declarations should be OK for DBCS */ +body, h1, h2, h3, h4, p, table, td, caption, th, ul, ol, dl, li, dd, dt {font-size: 10pt; } +pre { font-size: 10pt} + +/* end font size declarations */ + +body { background: #FFFFFF} +h1 { font-size: 18pt; margin-top: 5; margin-bottom: 1 } +h2 { font-size: 14pt; margin-top: 25; margin-bottom: 3 } +h3 { font-size: 11pt; margin-top: 20; margin-bottom: 3 } +h4 { font-size: 10pt; margin-top: 20; margin-bottom: 3; font-style: italic } +p { font-size: 10pt; } +pre { margin-left: 6; font-size: 9pt } + +a:link { color: #006699 } +a:visited { color: #996699 } +a:hover { color: #006699 } + +ul { margin-top: 0; margin-bottom: 10 } +li { margin-top: 0; margin-bottom: 0 } +li p { margin-top: 0; margin-bottom: 0 } +ol { margin-top: 0; margin-bottom: 10 } +dl { margin-top: 0; margin-bottom: 10 } +dt { margin-top: 0; margin-bottom: 0; font-weight: bold } +dd { margin-top: 0; margin-bottom: 0 } +strong { font-weight: bold} +em { font-style: italic} +var { font-style: italic} +div.revision { border-left-style: solid; border-left-width: thin; + border-left-color: #7B68EE; padding-left:5 } +th { font-weight: bold } + +/* Mike Behm's addition to the style sheet */ +.userinput { font-family: monospace; } +.guitab, .important, .guibutton, .selectblue, .guimenu, .guilabel, +.notetitle { + color: #000000; + font-family: helvetica, arial, sans-serif; + font-weight: bold; + } +div.linux {display:none;} +.firsterm {font-style:italic;} + +.typewriter {font-family:monospace;} +.bold {font-weight:600;} +.linethrough {text-decoration: line-through;} +.underline {text-decoration: underline;} + diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_before_you_begin.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_before_you_begin.htm index 34058b5a6c9..fee67ae4d25 100644 --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_before_you_begin.htm +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_before_you_begin.htm @@ -28,7 +28,7 @@ For instructions about installing the GNU toolchain for Linux, see the instructi

      Windows

      For windows, MinGW, and Cygwin are the two main choices for acquiring the GNU toolchain:

        -
      • Cygwin is a port of the Linux environment to Windows. +
      • Cygwin is a port of the Linux environment to Windows. It provides a compatibility layer in a set of DLLs. These DLLs are GPL licensed, making any code that links to them also subject to the GPL. @@ -38,7 +38,7 @@ Note: currently Cygwin >= version 3.4.4-999 is not supported since gcc and g+ be launched from the windows' native shell.


      • -
      • MinGW is a port of the GNU toolchain to the Windows platform. +

      • MinGW is a port of the GNU toolchain to the Windows platform. The biggest difference over Cygwin is that MinGW uses the Windows C runtime libraries (mscvrt) instead of GNU's libc. As a result, a compatibility layer is not required, thus avoiding the GPL issues with Cygwin. There are differences, though, between the Windows and GNU C runtime libraries that will make @@ -59,7 +59,7 @@ MinGW File Release section for the latest versions.

      • Select download and install the MinGW base tools and the g++ compiler. You may select the Current or Candidate version of these tools. You may also install any of the other available compilers as well. -

        Do not install the MinGW Make feature as the MSYS version of make from step 5 +

        Do not install the MinGW Make feature as the MSYS version of make from step 5 is a more complete implementation of make.

      • The MinGW setup program currently does not install the gdb debugger. To install the debugger, download the file from the following location: diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_brkpnts.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_brkpnts.htm index 38920296715..96dddd88536 100644 --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_brkpnts.htm +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_brkpnts.htm @@ -13,13 +13,13 @@

        A breakpoint suspends the execution of a program at the location where the breakpoint is set. To set a line breakpoint, right-click in the marker bar area on the left side of an editor beside -the line where you want the program to be suspended, then choose Toggle Breakpoint. You can +the line where you want the program to be suspended, then choose Toggle Breakpoint. You can also double-click on the marker bar next to the source code line. A new breakpoint marker appears on the marker bar, directly to the left of the line where you added the breakpoint. Also, the new breakpoint appears in the Breakpoints view list.

        Once set, a breakpoint can be enabled and disabled by right-clicking on its icon or by -right-clicking on its description in the Breakpoints view. +right-clicking on its description in the Breakpoints view.

          @@ -37,11 +37,11 @@ Disabled breakpoints are indicated with a white -

          Note: Execution will also suspend -if Stop at main() on startup is enabled -on the Launch Configuration dialog. -To access the Launch Configuration dialog, -from the menu bar choose Run > Debug. +

          Note: Execution will also suspend +if Stop at main() on startup is enabled +on the Launch Configuration dialog. +To access the Launch Configuration dialog, +from the menu bar choose Run > Debug.


          diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_build_over.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_build_over.htm index 59040616644..511aa7c231b 100644 --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_build_over.htm +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_build_over.htm @@ -21,13 +21,13 @@ project and providing the makefile yourself.

        • Compile (e.g. gcc).
        • Debug (e.g. gdb).
        -Note: while make, gcc and gdb are the examples used in the +Note: while make, gcc and gdb are the examples used in the documentation, virtually any similar set of tools or utilities could be used.

        -

        Tip: Cygwin contains these utilities (make, gcc and gdb) for +

        Tip: Cygwin contains these utilities (make, gcc and gdb) for a Windows environment.  While running the cygwin installation, -ensure gcc and make are selected since they are not +ensure gcc and make are selected since they are not installed by default. For more information, see http://www.cygwin.com. If you are a Red Hat user, all that you need to do to build your project is included @@ -46,8 +46,8 @@ particular project are built.

        modified since the last build. A rebuild is a clean followed by a build.

        For more information on builds, see:

          -
        • Workbench User Guide > Concepts > Workbench > Builds
        • -
        • Workbench User Guide > Tasks > Building resources
        • +
        • Workbench User Guide > Concepts > Workbench > Builds
        • +
        • Workbench User Guide > Tasks > Building resources

        Build-related information is displayed as follows:

          @@ -57,67 +57,67 @@ related to your projects.
        • For Standard Make projects, the Makefile targets are displayed in the Make Targets view.
        -

        For more information about the Tasks view, see Workbench User +

        For more information about the Tasks view, see Workbench User Guide > Reference > User interface information > Views and -editors > Tasks view.

        +editors > Tasks view.

        Getting a makefile

        -

        You can either create a C/C++ project for which you supply the makefile +

        You can either create a C/C++ project for which you supply the makefile or create a C/C++ project for which the CDT generates makefiles automatically.

        -

        To create a new project, from the menu bar choose File > New -> Project. In the dialog that appears, expand the C/C++ group +

        To create a new project, from the menu bar choose File > New +> Project. In the dialog that appears, expand the C/C++ group and choose e.g. C Project

          -
        • In the resulting wizard page, to create a project for which you supply the makefile, -select Makefile project and choose one of the alternatives under that. +
        • In the resulting wizard page, to create a project for which you supply the makefile, +select Makefile project and choose one of the alternatives under that. An empty project, or a simple "Hello World" can be created. You edit and manage the makefile yourself.

           

        • -
        • To create a project for which the CDT supplies a basic makefile, -select another project type, e.g. Executable and choose one of the examples -under that, or choose Empty Project. +
        • To create a project for which the CDT supplies a basic makefile, +select another project type, e.g. Executable and choose one of the examples +under that, or choose Empty Project.

        Setting build preferences

        You can set build preferences in Eclipse:

        Build order
        -
        If certain projects must be built before others, you can set the build -order. If your project refers to another project, the CDT must +
        If certain projects must be built before others, you can set the build +order. If your project refers to another project, the CDT must build the other project first. To set the build order, from the menu -bar select Window > Preferences and choose General > Preferences > Build Order. +bar select Window > Preferences and choose General > Preferences > Build Order.

        When you set the build order, the CDT does not rebuild projects that depend on a project; you must rebuild all projects to ensure all changes are propagated.

        Automatic save
        -
        You can set the CDT to perform an automatic save of all +
        You can set the CDT to perform an automatic save of all modified resources when you perform a manual build. In the preferences dialog, -select General > Workspace and check Save automatically before build. +select General > Workspace and check Save automatically before build. By default, -this feature is not enabled.
        +this feature is not enabled.

        Controlling the building of your project

        For a Makefile project, the C/C++ compiler that a project uses -is controlled by the project's Properties setting. -To view a project's properties, right-click on the project and select Properties. -In the dialog that appears, the C/C++ Build +is controlled by the project's Properties setting. +To view a project's properties, right-click on the project and select Properties. +In the dialog that appears, the C/C++ Build page enables you to control a variety of settings, including:

        Build Command
        -
        On the Builder Settings tab, this controls which make is used. To change it, uncheck Use - default build command and change it or add arguments to the make command.
        +
        On the Builder Settings tab, this controls which make is used. To change it, uncheck Use + default build command and change it or add arguments to the make command.
        Build Setting
        -
        On the Behaviour tab, this controls whether the compiler will Stop on first build error or not - (keep going). Unchecking Stop on first build error will force the compiler to attempt to build all referenced +
        On the Behaviour tab, this controls whether the compiler will Stop on first build error or not + (keep going). Unchecking Stop on first build error will force the compiler to attempt to build all referenced projects even if the current project has errors.
        Workbench Build Behavior
        -
        On the Behaviour tab, this controls which makefile target will be built depending on the scope of the +
        On the Behaviour tab, this controls which makefile target will be built depending on the scope of the build, e.g. all or clean.

        For a standard (non-Makefile) project (often called "Managed Build" or "Managed Make" project from @@ -125,19 +125,19 @@ earlier CDT version), the project properties dialog enables you to manage the build configurations of your project. For additional information see:

          -
        • Reference > C/C++ Properties > C/C++ Project Properties > Managed Make -Projects
        • -
        • Reference > C/C++ Properties > C/C++ Project Properties > Managed Make File -Properties
        • +
        • Reference > C/C++ Properties > C/C++ Project Properties > Managed Make +Projects
        • +
        • Reference > C/C++ Properties > C/C++ Project Properties > Managed Make File +Properties

        Viewing build information

        Build-related information is displayed as follows:

          -
        • The Console view displays the output of the make utility.
        • -
        • The Tasks view displays a list of compiler errors and +
        • The Console view displays the output of the make utility.
        • +
        • The Tasks view displays a list of compiler errors and warnings related to your projects.
        • -
        • For a Standard Make project, build actions display in the Make -Targets view.
        • +
        • For a Standard Make project, build actions display in the Make +Targets view.

        Related concepts diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_comments.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_comments.htm index 2573ad2b11d..c6f3de47a57 100644 --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_comments.htm +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_comments.htm @@ -21,18 +21,18 @@ Two styles of comments are supported by current C/C++ compilers:

        Comment

        You can quickly comment out one or more lines of code by inserting the leading characters // at the beginning of the line. To do so, select the line -(or lines) of code you want to comment out and press CTRL+/ (slash).

        +(or lines) of code you want to comment out and press CTRL+/ (slash).

        Uncomment

        -

        To uncomment select the line (or lines) of code, and press CTRL+\ +

        To uncomment select the line (or lines) of code, and press CTRL+\ (backslash). -

        Tip: The characters /* */ on lines that are +

        Tip: The characters /* */ on lines that are already commented out, are not affected when you comment and uncomment code.

        Multiline comment

        You can use the Content Assist feature to insert a multi-line comment before a function. -Type com+Ctrl+Space, and the following code is entered at the cursor location: +Type com+Ctrl+Space, and the following code is entered at the cursor location:

         /*
          * author userid
        @@ -42,7 +42,7 @@ Type com+Ctrl+Space, and the following code is entered at the cursor lo
          */
          
        - To change the default comment click Window > Preferences > C > Templates. For more information see the + To change the default comment click Window > Preferences > C > Templates. For more information see the Content Assist section.

        Related concepts diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_content_assist.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_content_assist.htm index 2587fead256..e3ced62fd7e 100644 --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_content_assist.htm +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_content_assist.htm @@ -34,8 +34,8 @@ the relevance of each proposal is determined in the following order:

      • Enumerations
      -You trigger the Code completion feature when you call Content Assist (such as when you type Ctrl+Space), but it is auto-activated when you type -".", "->" or "::".

      +You trigger the Code completion feature when you call Content Assist (such as when you type Ctrl+Space), but it is auto-activated when you type +".", "->" or "::".

      C++ example showing Code Assist popup

      @@ -46,7 +46,7 @@ You trigger the Code completion feature when you call Content Assist (such as wh

      You can create and save templates for frequently used sections of code, which will be inserted according to scope. The Content Assist feature also provides quick access to code templates.

      -

      When you enter a letter combination in the C/C++ editor, and type CTRL+SPACE (or right-click and click Content Assist), a +

      When you enter a letter combination in the C/C++ editor, and type CTRL+SPACE (or right-click and click Content Assist), a list of code elements and templates that start with the letter combination that you typed is displayed.

      You can then select a template from the list and it is inserted directly into your code.

      @@ -64,7 +64,7 @@ list of code elements and templates that start with the letter combination that

      If the completion engine finds only one proposal in your templates, that proposal is inserted at the current cursor position. -For example if you create a new .cpp file and type mai+CTRL+SPACE the following code is inserted at the cursor location:

      +For example if you create a new .cpp file and type mai+CTRL+SPACE the following code is inserted at the cursor location:

      int
       main(int argc, char **argv) {
       	
      diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_dbg_info.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_dbg_info.htm
      index 6b9a9a64de0..42e4a8a6d6e 100644
      --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_dbg_info.htm
      +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_dbg_info.htm
      @@ -14,11 +14,11 @@
       
       

      Debug information

      -

      The Debug perspective lets you manage the debugging or running of a program +

      The Debug perspective lets you manage the debugging or running of a program in the Workbench. You can control the execution of your program by setting breakpoints, suspending launched programs, stepping through your code, and examining the contents of variables.

      -

       The Debug perspective displays the following information:

      +

       The Debug perspective displays the following information:

      • The stack frame for the suspended threads @@ -26,8 +26,8 @@ for each target that you are debugging
      • Each thread in your program represented as a node in the tree
      • The process for each program that you are running
      -

      The Debug perspective also drives the C/C++ Editor. As you step -through your program, the C/C++ Editor highlights the location of the +

      The Debug perspective also drives the C/C++ Editor. As you step +through your program, the C/C++ Editor highlights the location of the execution pointer.

      Variables

      diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_discovery_options.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_discovery_options.htm index f9836fd920a..93a105341d5 100644 --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_discovery_options.htm +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_discovery_options.htm @@ -13,13 +13,13 @@

      For projects where the IDE generates a makefile to build the project automatically, the IDE has more information about the internal build state of the make project compared to those projects where you provide a makefile to build the project. -

      For example, a makefile includes build information and other settings, such as include file paths (-I) and macro definitions (-D), which are standard to the build tools (such as the compiler and linker). When the makefile is automatically created for you, this information is known to Eclipse to a greater extent then when you create and manage the makefile for a project yourself. The type of information affects the search capabilities and Code Assist abilities of Eclipse. Therefore, in this example, the purpose of Discovery Options is for improved search and Code Assist capability for projects where Eclipse does not manage the makefile for you. For example, in an open source file of an editor view, to see the declaration for a function that the code calls, you select the function, right click, and select Open Declaration from the context menu. If the location of the include file (that was coded in the makefile for the project) containing the function declaration was in some directory, the CDT would not find the declaration because it has no visibility for that include path. Consequently, you can use Discovery Options in the CDT to enhance the IDE build state by parsing the build process output to extract build path information that the CDT searching mechanism uses to locate and open the include file. By default, the CDT uses GNU* tools (gcc, etc.). If you want to build your projects using another compiler, use the settings described here.

      +

      For example, a makefile includes build information and other settings, such as include file paths (-I) and macro definitions (-D), which are standard to the build tools (such as the compiler and linker). When the makefile is automatically created for you, this information is known to Eclipse to a greater extent then when you create and manage the makefile for a project yourself. The type of information affects the search capabilities and Code Assist abilities of Eclipse. Therefore, in this example, the purpose of Discovery Options is for improved search and Code Assist capability for projects where Eclipse does not manage the makefile for you. For example, in an open source file of an editor view, to see the declaration for a function that the code calls, you select the function, right click, and select Open Declaration from the context menu. If the location of the include file (that was coded in the makefile for the project) containing the function declaration was in some directory, the CDT would not find the declaration because it has no visibility for that include path. Consequently, you can use Discovery Options in the CDT to enhance the IDE build state by parsing the build process output to extract build path information that the CDT searching mechanism uses to locate and open the include file. By default, the CDT uses GNU* tools (gcc, etc.). If you want to build your projects using another compiler, use the settings described here.

      Scanner configuration discovery is tightly linked to project's build process. The first part of scanner discovery begins during the make build for make projects where you provide the makefile. The Eclipse CDT parses the build output for compiler commands with options that specify the definition of the preprocessor symbols and include search paths (for the gcc compiler, -D and -I), and then it stores the information as the project's discovered scanner configuration.

      Next, after the build process completes, it is implemented as a separate Eclipse builder where it runs a generate scanner info command, and then parses the output (properties specified on the Discover Options tab for Builds in the Project Properties window). -

      For C++, the default generate scanner information command is gcc -E -P -v myfile.c | myfile.cpp. This command reads the compiler's configuration file and prints the information that includes compiler's internally defined preprocessor symbols and include search paths. +

      For C++, the default generate scanner information command is gcc -E -P -v myfile.c | myfile.cpp. This command reads the compiler's configuration file and prints the information that includes compiler's internally defined preprocessor symbols and include search paths.

      A single scanner configuration is applicable to all the files in a project. Although Eclipse discovers the information for each compilation unit, it stores the scanner configuration on a per project basis. This means that Eclipse applies a single, cumulative scanner configuration to all files in a project. @@ -31,7 +31,7 @@

    -

    Note: Only basic command line options are supported. In addition, only basic scanner configuration related command line options are recognized (for example, -D and -I for gcc). For some of the commands, their relative position in the command line is important. For information about these options, see the documentation for the utilities you are using. +

    Note: Only basic command line options are supported. In addition, only basic scanner configuration related command line options are recognized (for example, -D and -I for gcc). For some of the commands, their relative position in the command line is important. For information about these options, see the documentation for the utilities you are using.

    Related concepts
    CDT Overview diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_editor.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_editor.htm index b3b7f8556ec..4c1de237cc0 100644 --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_editor.htm +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_editor.htm @@ -21,7 +21,7 @@ This C/C++ editor is invoked automatically when you edit a C/C++ source file.

    Integrated debugging features
  • -

    You can customize some of the operation of the Editor view from the Window > Preferences > C/C++ > Editor preferences dialog.

    +

    You can customize some of the operation of the Editor view from the Window > Preferences > C/C++ > Editor preferences dialog.

    diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_makefile.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_makefile.htm index a87315263c6..26f57d0e634 100644 --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_makefile.htm +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_makefile.htm @@ -102,7 +102,7 @@ Test2.o : Test2.h

    Frequently Asked Questions:

    Your Console view can be very useful for debugging a build. -

    Q1. My Console view says "Error launching builder". What does that mean?

    +

    Q1. My Console view says "Error launching builder". What does that mean?

     Error launching builder (make -k clean all )
     (Exec error:Launching failed)
    @@ -111,7 +111,7 @@ Error launching builder (make -k clean all )
     

    Most probably, the build command (by default "make") is not on your path. You can put it on your path and restart Eclipse.
    You can also change the build command to something that is on your path. If you are using MinGW tools to compile, you should replace the build command with "mingw32-make".

    -

    Q2. My Console view says "No rule to make target 'X'".

    +

    Q2. My Console view says "No rule to make target 'X'".

     make -k clean all 
     make: *** No rule to make target 'clean'.
    @@ -124,11 +124,11 @@ contain rules for the command line goals ("clean" and "all" in this case), it wi
     with an error message similar to those shown.  

    If you already have a valid Makefile, you may need to change the working directory of your build. The default working directory for the build command is the project's root directory. You can change this by specifying an alternate Build Directory in the Make Project properties. -Or, if your Makefile is named something else (eg. buildFile.mk), you can specify the name by setting the default Build command to make -f buildFile.mk.

    +Or, if your Makefile is named something else (eg. buildFile.mk), you can specify the name by setting the default Build command to make -f buildFile.mk.

    If you do not have a valid Makefile, create a new file named Makefile in the root directory. You can then add the contents of the sample Makefile (above), and modify it as appropriate.

    -

    Q3. My Console view says "missing separator".

    +

    Q3. My Console view says "missing separator".

     make -k clean all 
     makefile:12: *** missing separator.  Stop.
    @@ -138,7 +138,7 @@ This Tab character is often accidentally replaced with spaces, and because both
     this problem is easily overlooked.  In the sample provided, the error message can be pinpointed to line 12 of the 
     file "makefile"; to fix the problem, insert a tab at the beginning of that line.

    -

    Q4. My Console view says "Target 'all' not remade because of errors".

    +

    Q4. My Console view says "Target 'all' not remade because of errors".

     make -k clean all 
     make: *** [clean] Error 255
    @@ -155,13 +155,13 @@ make: Target 'all' not remade because of errors.
     

    The Error 255 is produced by make as a result of its command shell not being able to find a command for a particular rule.
    Messages from the standard error stream (the lines saying Error 255) and standard output stream (all the other lines) are merged in the Console view here.

    -

    Q5. What's with the -k flag?

    +

    Q5. What's with the -k flag?

    The -k flag tells make to continue making other independent rules even when one rule fails. This is helpful for build large projects.

    You can remove the -k flag by turning on Project Properties > C/C++ Make Project > Make Builder > Stop on first build error

    -

    Q6. My Console view looks like:

    +

    Q6. My Console view looks like:

     mingw32-make clean all 
     process_begin: CreateProcess((null), rm -f Test1.o Test2.o Main.o test_me.exe, ...) failed.
    diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_outlineview.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_outlineview.htm
    index 40dd24715b4..0d5fadafd00 100644
    --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_outlineview.htm
    +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_outlineview.htm
    @@ -47,8 +47,8 @@ editor highlights both the selected item and the marker bar (left margin). For e
     to the start of main() in the C/C++ editor, click main() in the Outline 
     view.

    -

    For more information about the marker bar, see Workbench User Guide > Reference > User interface -information > Views and editors > Editor area.

    +

    For more information about the marker bar, see Workbench User Guide > Reference > User interface +information > Views and editors > Editor area.

    Filtering the Outline View

    @@ -91,8 +91,8 @@ items:

    -

    For more information about the Eclipse workbench, see Workbench User Guide > Tasks > Upgrading Eclipse.

    -

    For more information about Working sets, see Workbench User Guide > Concepts > Working sets.

    +

    For more information about the Eclipse workbench, see Workbench User Guide > Tasks > Upgrading Eclipse.

    +

    For more information about Working sets, see Workbench User Guide > Concepts > Working sets.

    Related concepts diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_over_cdt.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_over_cdt.htm index c5ebcfe76e3..47f9ac35345 100644 --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_over_cdt.htm +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_over_cdt.htm @@ -11,7 +11,7 @@

    CDT Overview

    The C/C++ Development Toolkit (CDT) is a set of Eclipse plug-ins that provide C and C++ extensions to the Eclipse workbench. For more information about -Eclipse, see Workbench User Guide > Concepts > Workbench.

    +Eclipse, see Workbench User Guide > Concepts > Workbench.

    The CDT provides a C/C++ IDE that simplifies many of the same tools that you can use from the command line. The CDT can also communicate with many external utilities and interpret their responses, for example:

    -Note: while make, gcc and gdb are the examples used in the documentation, virtually any similar set of tools or utilities could be used.

    +Note: while make, gcc and gdb are the examples used in the documentation, virtually any similar set of tools or utilities could be used.

    The CDT opens as the C/C++ perspective of the Eclipse workbench. The @@ -36,15 +36,15 @@ views:

    Search
    Shows the results of searches for files or text.
    Tasks
    Lists tasks that you want to keep track of, either as a schedule of things to do or a history of things that have been done.
    -

    For more information, see Workbench User Guide > Concepts > Perspectives.

    +

    For more information, see Workbench User Guide > Concepts > Perspectives.

    CDT updates

    -

    The Install/Update wizard provides information about your current Eclipse installation and provides the framework to manage your updates. -For more information, see Workbench User Guide > Tasks > Updating and installing software.

    +

    The Install/Update wizard provides information about your current Eclipse installation and provides the framework to manage your updates. +For more information, see Workbench User Guide > Tasks > Updating and installing software.

    To view a list of the updates available for the toolsets that you -installed, click Help > Check for Updates.

    +installed, click Help > Check for Updates.

    Additional information

    diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_over_dbg.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_over_dbg.htm index 0f898cc0196..7f4f14cfa99 100644 --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_over_dbg.htm +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_over_dbg.htm @@ -23,7 +23,7 @@ generated from that original source.

    The CDT debugger uses GDB as the underlying debug engine. It translates each user interface action into a sequence of GDB commands and processes the output from GDB to display the current state of the program being debugged.

    -

    Tip: Editing the source after compiling causes the line numbering to be out of +

    Tip: Editing the source after compiling causes the line numbering to be out of step because the debug information is tied directly to the source. Similarly, debugging optimized binaries can also cause unexpected jumps in the execution trace.

    diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_perspectives.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_perspectives.htm index f832c54287f..e1a0cbf16ec 100644 --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_perspectives.htm +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_perspectives.htm @@ -14,16 +14,16 @@

    A perspective is a layout of views (development tools) in the Workbench window. Each type of perspective is a combination of views, menus, and toolbars that enable you to perform a particular task. For example, the C/C++ perspective has views that are organized to help you develop C/C++ programs; -the Debug perspective has views that enable you to debug those programs. +the Debug perspective has views that enable you to debug those programs.

    To Open the C/C++ Perspective, select Window > Open Perspective > Other... and select C/C++

    -Selecting / Opening Views: +Selecting / Opening Views:
    diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_projects.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_projects.htm index e84083cd31a..2a5285bb16d 100644 --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_projects.htm +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_projects.htm @@ -15,7 +15,7 @@ source code, makefiles, binaries, and related files. C/C++ projects are displayed in the C/C++ Projects view.

    -

    Tip: Nested projects are not supported. Each project must be organized as a +

    Tip: Nested projects are not supported. Each project must be organized as a discrete entity. Project dependencies are supported by allowing a project to reference other projects that reside in your workspace. For more information, see Selecting referenced projects.

    @@ -23,8 +23,8 @@ see Selecting referenced p

    For more information about projects and where they are stored, see:

    Project types

    @@ -39,22 +39,22 @@ at any time for existing project. Use
    diff --git a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_search.htm b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_search.htm index ccbfafd1ca7..7fea9893f13 100644 --- a/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_search.htm +++ b/doc/org.eclipse.cdt.doc.user/concepts/cdt_c_search.htm @@ -32,7 +32,7 @@ through the use of search delimiters, correct syntax, and wildcards.

    -For information on working sets, see Workbench User Guide > Concepts > Workbench > Working sets
    +For information on working sets, see Workbench User Guide > Concepts > Workbench > Working sets

    What you can search for

    @@ -42,8 +42,8 @@ For information on working sets, see Workbench User Guide > Concepts > specify. If you choose to search for matching elements, all types, macros, and typdefs are included in the search.

    - - + + @@ -119,13 +119,13 @@ is to be searched:

    You can use wildcard characters to further refine your search.

    ElementNoteElementNote
     Class/Struct
    - - + + - @@ -138,7 +138,7 @@ is to be searched:

    Use this wildcard characterTo search for thisUse this wildcard characterTo search for this
     *Any string

    Tip:
    -
    Use the character sequence \* to search for +

    Any string

    Tip:
    +
    Use the character sequence \* to search for operators that begin with *. See syntax examples in the table below.

    @@ -144,7 +144,7 @@ may contain other information. -

    Implicit references and overloaded operators

    +

    Implicit references and overloaded operators

    @@ -179,7 +179,7 @@ may contain other information. -

    System Includes

    +

    System Includes

    @@ -197,7 +197,7 @@ may contain other information. -

    Indexer Accuracy

    +

    Indexer Accuracy