Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikhail Sennikovsky2007-06-21 14:01:23 -0400
committerMikhail Sennikovsky2007-06-21 14:01:23 -0400
commit4103ce448d64d729122b87cc622b35f8b6bce7cb (patch)
tree1f870aa2c88b9e80d7d433085d3867025edc2b22 /doc/org.eclipse.cdt.doc.isv
parentabc471dd3a0bdee9ca35117722015c04c7d1f758 (diff)
downloadorg.eclipse.cdt-4103ce448d64d729122b87cc622b35f8b6bce7cb.tar.gz
org.eclipse.cdt-4103ce448d64d729122b87cc622b35f8b6bce7cb.tar.xz
org.eclipse.cdt-4103ce448d64d729122b87cc622b35f8b6bce7cb.zip
New Project Model Build System docs update:
1. What's new in CDT Build System 2. Tool-chain Migration guide
Diffstat (limited to 'doc/org.eclipse.cdt.doc.isv')
-rw-r--r--doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migrat1.gifbin0 -> 43358 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html250
-rw-r--r--doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_1.gifbin0 -> 30735 bytes
-rw-r--r--doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_new_CBS_40.html1172
-rw-r--r--doc/org.eclipse.cdt.doc.isv/topics_Guide.xml2
5 files changed, 1424 insertions, 0 deletions
diff --git a/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migrat1.gif b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migrat1.gif
new file mode 100644
index 0000000000..f40bdcd715
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migrat1.gif
Binary files differ
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
new file mode 100644
index 0000000000..7795ae1cc3
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html
@@ -0,0 +1,250 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns="http://www.w3.org/TR/REC-html40">
+<head>
+ <meta http-equiv="Content-Type"
+ content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="Microsoft FrontPage 6.0">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+
+ <title>Managed Build System Extensibility Document</title>
+ <link rel="stylesheet"
+ href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/cdt-home/cdt.css?cvsroot=Tools_Project"
+ type="text/css">
+ <link rel="stylesheet" href="cdt.css" type="text/css">
+ <style>
+<!--
+h3
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:13.0pt;
+ font-family:Arial}
+-->
+ </style>
+ <!--[if !mso]>
+ <style>h2
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:14.0pt;
+ font-family:Arial;
+ font-style:italic}
+table.MsoTableGrid
+ {border:1.0pt solid windowtext;
+ font-size:10.0pt;
+ font-family:"Times New Roman";
+ }
+ li.MsoNormal
+ {mso-style-parent:"";
+ margin-bottom:.0001pt;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ margin-left:0in; margin-right:0in; margin-top:0in}
+ h4
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:.6in;
+ text-indent:-.6in;
+ page-break-after:avoid;
+ tab-stops:list .6in;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ }
+ table.MsoNormalTable
+ {mso-style-parent:"";
+ font-size:10.0pt;
+ font-family:"Times New Roman";
+ }
+</style>
+ <![endif]-->
+</head>
+<body>
+<!-- Document Header -->
+<table border="0" cellpadding="2" width="100%">
+ <tbody>
+ <tr>
+ <td align="left" width="72%"><font class="indextop">Migrating your
+ tool-chain integration to CDT 4.0</font><br>
+ <font class="indexsub">This document describes </font>steps needed to be
+ done to migrate the existing tool-chain integrations to the CDT 4.0</td>
+ <td width="28%"><img src="http://dev.eclipse.org/images/Idea.jpg"
+ alt="" height="86" width="120"></td>
+ </tr>
+ </tbody>
+</table>
+<table border="1">
+ <tr>
+ <td width="50%" rowspan="2">Authors</td>
+ </tr>
+ <tr>
+ <td width="50%"><a href="mailto:mikhail.sennikovsky@intel.com">Mikhail
+ Sennikovsky</a></td>
+ </tr>
+ <tr>
+ <td width="50%" rowspan="2">Revision Date</td>
+ </tr>
+ <tr>
+ <td width="50%">06/21/07 - Version 4.0</td>
+ </tr>
+ <tr>
+ <td width="50%" rowspan="2">Change History</td>
+ </tr>
+ <tr>
+ <td width="50%">4.0 - Document Creation</td>
+ </tr>
+</table>
+<br>
+<!-- End of Document Header --><!-- Table of Contents -->
+<div class="section">Table of Contents</div>
+<br>
+<div class="indent"><a href="#_TocSectionIntro">1 </a>
+ <A href="#_TocSectionIntro">Scope of the document</A></div>
+<div class="indent"><a href="#_TocSectionUIModel">2 Migration Steps</a></div>
+<!-- End of Table of Contents --><br>
+<p class="section"><a name="_TocSectionIntro">1 Scope of the document</a></p>
+<p style="margin-top: 0; margin-bottom: 0">The document describes steps needed to be done to migrate the existing
+tool-chain integrations to the CDT 4.0. </p>
+<p style="margin-top: 0; margin-bottom: 0">The documents outlines the main steps
+needed for migration without focusing on details of the new Build System
+functionality. For more detail on the new functionality presented in the CDT 4.0
+please refer to the &quot;What's New in the CDT Build System&quot; document.</p>
+<p class="section"><a name="_TocSectionUIModel">2 Migration Steps</a></p>
+<ol>
+ <li>
+ <p class="MsoNormal" style="margin-top:6.0pt">The Build System now supports
+ the per-folder settings. The new interface
+ org.eclipse.cdt.managedbuilder.core.IFolderInfo is presented to represent
+ the folder-specific settings. Thus the implementers of the following
+ interfaces should now expect to receive the IFolderInfo in addition to the
+ IFileInfo (IResourceConfiguration) and IConfiguration as the &quot;IBuildObject
+ configuration&quot; argument:</p>
+ <ul>
+ <li>
+ <p class="MsoNormal" style="margin-top:6.0pt">
+ org.eclipse.cdt.managedbuilder.core.IOptionApplicability</p></li>
+ <li>
+ <p class="MsoNormal" style="margin-top:6.0pt">
+ org.eclipse.cdt.managedbuilder.core.IManagedOptionValueHandler</p></li>
+ <li>
+ <p class="MsoNormal" style="margin-top:6.0pt">
+ org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyGenerator2</p>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <p class="MsoNormal" style="margin-top:6.0pt">The new New Project wizard now
+ operates with tool-chains allowing to select the tool-chain(s) to be used on
+ project creation. Also the &quot;Tool-chain editor&quot; functionality now allows to
+ modify/change the tool-chain of the already created project. Thus it is
+ required that all toolChain/tool/builder build definitions representing
+ 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.</p>
+ <p class="MsoNormal" style="margin-top:0; margin-bottom:0"><b>&nbsp;&nbsp;&nbsp;
+ Example:</b> to illustrate the above requirement here is how this is handled
+ in the gnu tool-chain definitions:</p>
+ <p class="MsoNormal" style="margin-top:0; margin-bottom:0">&nbsp;&nbsp;&nbsp;
+ The gnu plug-in contains the gcc linker tool on Linux is defined as</p>
+ <p class="MsoNormal" style="margin-top:0; margin-bottom:0">&nbsp;&nbsp;&nbsp;&nbsp;
+ &lt;tool<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; natureFilter=&quot;cnature&quot;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name=&quot;%ToolName.linker.gnu.c&quot;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputFlag=&quot;-o&quot;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command=&quot;gcc&quot;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id=&quot;cdt.managedbuild.tool.gnu.c.linker&quot;</p>
+ <p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ ...</p>
+ <p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">&nbsp;&nbsp;&nbsp;
+ </p>
+ <p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">&nbsp;&nbsp;&nbsp;
+ At the same time the gnu tool-chain definitions refers to the gcc linker by
+ defining a new tool as a super-class of the &quot;cdt.managedbuild.tool.gnu.c.linker&quot;
+ tool</p>
+ <p class="MsoNormal" style="margin-top:6.0pt">&nbsp;&nbsp;&nbsp;&nbsp; &lt;tool<br>
+&nbsp;&nbsp;&nbsp; id=&quot;cdt.managedbuild.tool.gnu.c.linker.base&quot;<br>
+&nbsp;&nbsp;&nbsp; superClass=&quot;cdt.managedbuild.tool.gnu.c.linker&quot;&gt;</p>
+ <p class="MsoNormal" style="margin-top:6.0pt">...</p>
+ <p class="MsoNormal" style="margin-top:6.0pt">Both tool definitions listed
+ above are actually treated as two different tools by the Build System, while
+ both of them refer to one and&nbsp; the same &quot;gcc&quot; executable. To make the
+ build system aware that both tool definitions refer to one and the same tool/executable
+ it is required that both tool definitions specify one and the same name. In
+ the above sample the tool of id=&quot;cdt.managedbuild.tool.gnu.c.linker.base&quot;
+ does not specify any name thus making the name to be inherited from the
+ super-class tool, so both tools have the same name.</p>
+ <p class="MsoNormal" style="margin-top:6.0pt">On the other hand the cygwin
+ gcc linker is defined as </p>
+ <p class="MsoNormal" style="margin-top:6.0pt">&nbsp;&lt;tool<br>
+ id=&quot;cdt.managedbuild.tool.gnu.c.linker.cygwin&quot;<br>
+ name=&quot;%ToolName.linker.cygwin.gnu.c&quot;<br>
+ superClass=&quot;cdt.managedbuild.tool.gnu.c.linker&quot;&gt;<br>
+ ...</p>
+ <p class="MsoNormal" style="margin-top:6.0pt">although the tool definitions
+ is defined as a super-class of the linux gcc linker, it refers to the
+ different tool(executable) than the Linux linker definition. The cygwin
+ linker definition specifies the name=&quot;%ToolName.linker.cygwin.gnu.c&quot; that
+ differs from the one defined by the Linux gcc linker.</p></li>
+ <li>
+ <p class="MsoNormal" style="margin-top:6.0pt">The CDT Build System now
+ support the <a href="../../whats_new/4.0/whats_new_CBS_40.html#_TocSectionUIModel_7">Custom
+ Configuration Builds</a>. For Managed builds (makefiles
+are generated automatically) this functionality works only in case the buildfile
+generator implements the
+org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator2. This
+interface extends the old IManagedBuilderMakefileGenerator by defining a new
+initialize() method which accepts IConfiguration and IBuilder rather than
+IManagedBuildInfo thus removing an assumption that only active configuration can
+be used for building.</p>
+<p style="margin-top: 0; margin-bottom: 0">The default GnuMakefileGenerator
+supplied with the CDT now implements this interface, so in case the builder is
+using this default implementation, no changes are needed.</p>
+ </li>
+ <li>
+ <p class="MsoNormal" style="margin-top:6.0pt">There are some modifications
+ in Eclipse Platform's org.eclipse.core.runtime.Path class behavior that
+ might affect some of the current MBS integrations, namely </p>
+ <p class="MsoNormal" style="margin-top:6.0pt">The changes are related to the
+ way the dot (&quot;./&quot;) prefix are treated by the path constructors, i.e. with
+ Eclipse 3.2.x the Path(String) constructor and also Path.from*String()
+ methods generate the &#8220;./some/path&#8221; path given a &#8220;./some/path&#8221; string<br>
+ <br>
+ With Eclipse 3.3 the above generate &#8220;some/path&#8221; for the same string (note
+ the &#8220;./&#8221; stripped)<br>
+ <br>
+ Historically the Managed Build System contains some logic that behaves
+ differently depending on whether the &#8220;./&#8221; is prefixed or not, e.g.
+ org.eclipse.cdt.managedbuilder.core.IManagedOutputNameProvider is expected
+ to return a one-segment path to force the path to be prepended by the build
+ output [sub]directory path, so returning &#8220;./foo.o&#8221; and &#8220;foo.o&#8221; would have
+ different meaning and behavior, i.e. the &#8220;./foo.o&#8221; would force the foo.o to
+ be located in the root output directory, while &#8220;foo.o&#8221; would result in
+ putting the foo.o in the output_dir/source/relative/directory/foo.o<br>
+ <br>
+ There was some code in MBS relying on the 3.2 Path behavior, e.g. something
+ like path = Path.fromOSString(&#8220;./&#8221; + name + extension); Stripping the &#8220;./&#8221;
+ in eclipse 3.3 resulted in incorrect output calculation for the case the
+ tool wanted to force the output to be located in the build output root
+ directory for.<br>
+ <br>
+ If your tool-chain needs to specify the &quot;./&quot; prefix to the paths, they could
+ do it by using the following construction</p>
+ <p class="MsoNormal" style="margin-top:6.0pt">path = new Path(&#8220;./&#8221;).append(fileName);</p>
+ <p class="MsoNormal" style="margin-top:6.0pt">instead of </p>
+ <p class="MsoNormal" style="margin-top:6.0pt">path = new Path(&quot;./&quot; +
+ fileName);</p></li>
+ <li>
+ <p class="MsoNormal" style="margin-top:6.0pt">Integrating with the new New
+ Project Wizard</p>
+ <p class="MsoNormal" style="margin-top:6.0pt">If no modifications are made
+ the old-style project types should be presented as separate entries in the
+ &quot;Project Types&quot; list of the wizard. In case a tool-integrator is willing to
+ use general project type entries, he/she should refer to the New Project
+ Wizard description for detail.</p></li>
+</ol>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_1.gif b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_1.gif
new file mode 100644
index 0000000000..53a07e6b74
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_1.gif
Binary files differ
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
new file mode 100644
index 0000000000..ec942609ac
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_new_CBS_40.html
@@ -0,0 +1,1172 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns="http://www.w3.org/TR/REC-html40">
+<head>
+ <meta http-equiv="Content-Type"
+ content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="Microsoft FrontPage 6.0">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+
+ <title>Managed Build System Extensibility Document</title>
+ <link rel="stylesheet"
+ href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/cdt-home/cdt.css?cvsroot=Tools_Project"
+ type="text/css">
+ <link rel="stylesheet" href="cdt.css" type="text/css">
+ <style>
+<!--
+h3
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:13.0pt;
+ font-family:Arial}
+-->
+ </style>
+ <!--[if !mso]>
+ <style>h2
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:14.0pt;
+ font-family:Arial;
+ font-style:italic}
+table.MsoTableGrid
+ {border:1.0pt solid windowtext;
+ font-size:10.0pt;
+ font-family:"Times New Roman";
+ }
+ li.MsoNormal
+ {mso-style-parent:"";
+ margin-bottom:.0001pt;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ margin-left:0in; margin-right:0in; margin-top:0in}
+ h4
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:.6in;
+ text-indent:-.6in;
+ page-break-after:avoid;
+ tab-stops:list .6in;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ }
+ table.MsoNormalTable
+ {mso-style-parent:"";
+ font-size:10.0pt;
+ font-family:"Times New Roman";
+ }
+</style>
+ <![endif]-->
+</head>
+<body>
+<!-- Document Header -->
+<table border="0" cellpadding="2" width="100%">
+ <tbody>
+ <tr>
+ <td align="left" width="72%"><font class="indextop">What's New in CDT
+ Build System 4.0</font><br>
+ <font class="indexsub">This document outlines the new features presented
+ in the new
+ CDT build system in CDT 4.0</font></td>
+ <td width="28%"><img src="http://dev.eclipse.org/images/Idea.jpg"
+ alt="" height="86" width="120"></td>
+ </tr>
+ </tbody>
+</table>
+<table border="1">
+ <tr>
+ <td width="50%" rowspan="2">Authors</td>
+ </tr>
+ <tr>
+ <td width="50%"><a href="mailto:mikhail.sennikovsky@intel.com">Mikhail
+ Sennikovsky</a></td>
+ </tr>
+ <tr>
+ <td width="50%" rowspan="2">Revision Date</td>
+ </tr>
+ <tr>
+ <td width="50%">06/21/07 - Version 4.0</td>
+ </tr>
+ <tr>
+ <td width="50%" rowspan="2">Change History</td>
+ </tr>
+ <tr>
+ <td width="50%">4.0 - Document Creation</td>
+ </tr>
+</table>
+<br>
+<!-- End of Document Header --><!-- Table of Contents -->
+<div class="section">Table of Contents</div>
+&nbsp;<div class="indent">
+ <p style="margin-top: 0; margin-bottom: 0"><a href="#_TocSectionIntro">1 </a>
+ <A href="#_TocSectionIntro">Scope of the document</A></div>
+<div class="indent">
+ <p style="margin-top: 0; margin-bottom: 0"><a href="#_TocSectionUIModel">2
+ New features</a></p>
+<div class="indent">
+ <p style="margin-top: 0; margin-bottom: 0"><a href="#_TocSectionUIModel_1">2.1 Standard and
+ Managed Build system incorporation</a></p>
+ <p style="margin-top: 0; margin-bottom: 0">
+ <a href="#_TocSectionUIModel_1_1">2.1.1 Build Definitions Model Schema</a><p style="margin-top: 0; margin-bottom: 0">
+ <a href="#_TocSectionUIModel_2">2.2 New New Project Wizard</a><p style="margin-top: 0; margin-bottom: 0">
+ <a href="#_TocSectionUIModel_3">2.3 Multi-configuration support for Makefile projects.</a><p style="margin-top: 0; margin-bottom: 0">
+ <a href="#_TocSectionUIModel_4">2.4 Tool-chain support for Makefile Projects</a><p style="margin-top: 0; margin-bottom: 0">
+ <a href="#_TocSectionUIModel_5">2.5 Per-folder settings</a><p style="margin-top: 0; margin-bottom: 0">
+ <a href="#_TocSectionUIModel_6">2.6 Internal Builder</a><p style="margin-top: 0; margin-bottom: 0">
+ <a href="#_TocSectionUIModel_7">2.7 Customized Configuration Builds</a><p style="margin-top: 0; margin-bottom: 0">
+ <a href="#_TocSectionUIModel_8">2.8 Make target build for Managed Build projects</a><p style="margin-top: 0; margin-bottom: 0">
+ <a href="#_TocSectionUIModel_9">2.9 Tool-chain modification</a><p style="margin-top: 0; margin-bottom: 0">
+ <a href="#_TocSectionUIModel_10">2.10 Build Properties</a></div>
+</div>
+<p>&nbsp;</p>
+<p class="section"><a name="_TocSectionIntro">1 Scope of the document</a></p>
+<p>The document highlights the new features that were introduced in
+the New CDT Build System 4.0 from the ISV point of view. The document mostly
+focuses on the API details rather than on UI ones.</p>
+<p>The document should be useful for ISVs willing to migrate or integrate their
+tool-chains to the CDT 4.0 and should serve as as a valuable addition to the the
+<a href="../../migration_guides/4.0/migration_guide_40.html">Migration Guide
+document</a>, although despite of the
+<a href="../../migration_guides/4.0/migration_guide_40.html">Migration Guide</a>
+it mostly focuses on highlighting feature details rather than on the migration
+problems. Please also refer to the
+<a href="../../migration_guides/4.0/migration_guide_40.html">Migration Guide
+document</a> for additional detail on migration to the 4.0</p>
+<p>&nbsp;</p>
+<p class="section"><a name="_TocSectionUIModel">2 New features</a></p>
+<p class="MsoNormal" style="margin-top:6.0pt">The CDT 4.0 introduces a lot of
+Build System functionality updates. The list of the new features is given below:</p>
+<ol>
+ <li>
+ <p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">
+ <a href="#_TocSectionUIModel_1">Standard and
+ Managed Build system incorporation</a></p></li>
+ <li>
+ <p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">
+ <a href="#_TocSectionUIModel_2">New New Project Wizard</a></p></li>
+ <li>
+ <p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">
+ <a href="#_TocSectionUIModel_3">Multi-configuration support for Makefile projects.</a></p></li>
+ <li>
+ <p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">
+ <a href="#_TocSectionUIModel_4">Tool-chain
+ support for Makefile Projects</a></p></li>
+ <li>
+ <p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">
+ <a href="#_TocSectionUIModel_5">Per-folder
+ settings</a></p></li>
+ <li>
+ <p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">
+ <a href="#_TocSectionUIModel_6">Internal
+ Builder</a></p></li>
+ <li>
+ <p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">
+ <a href="#_TocSectionUIModel_7">Customized
+ Configuration Builds</a></p></li>
+ <li>
+ <p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">
+ <a href="#_TocSectionUIModel_8">Make target
+ build for Managed Build projects</a></p></li>
+ <li>
+ <p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">
+ <a href="#_TocSectionUIModel_9">Tool-chain
+ modification</a></p></li>
+ <li>
+ <p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">
+ <a href="#_TocSectionUIModel_10">Build
+ Properties</a></p></li>
+</ol>
+<p class="subsection"><a name="_TocSectionUIModel_1">2.1 Standard and Managed
+Build System incorporation</a></p>
+<p>In CDT 4.0 Standard and Managed Build Systems are incorporated into one CDT
+Build System. This allows all Standard Make features to be used for the Managed
+Build Projects and vice a versa and also provides one common API and UI
+interface for the build settings.</p>
+<p>The CDT Build System is created based upon the Managed Build System
+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</p>
+<p style="margin-top: 0; margin-bottom: 0">The <b>
+org.eclipse.cdt.managedbuilder.core.buildDefinitions</b> extension point serves
+as an entry-point for the tool integration into the Build System.</p>
+<p style="margin-top: 0; margin-bottom: 0">The <b>
+org.eclipse.cdt.managedbuilder.core.ManagedBuildManager</b> class serves as an
+entry-point for accessing/manipulating the Build Settings information.</p>
+<p>From the API point of view there is no principal difference between
+the Makefile and Managed Build Projects. From the Build System perspective the
+difference between the &quot;Makefile&quot; and the &quot;Managed&quot; modes is that in case of the
+Managed build the makefile generation is performed (or the Internal Builder is
+used), while for the Makefile Build no makefile generation is done, so it is
+expected that the makefile is supplied by the user. Switching between the
+Managed and the Makefile modes is actually switching the Makefile generation
+either on or off.</p>
+<p>A toolChain, tool, builder definitions now have have the &quot;supportsManagedBuild&quot;
+property to specify whether or not the managed build is supported for the given
+object. </p>
+<p class="subsection"><a name="_TocSectionUIModel_1_1">2.1.1 Build Definitions
+Model schema</a></p>
+<p class="MsoNormal" style="margin-top:6.0pt">The figure below shows a UML model
+of the schema elements.&nbsp; It is simplified by leaving out the fact that the
+configuration, toolChain, tool, targetPlatform, and builder definition elements
+can be defined at the top level in a manifest file.</p>
+<p class="MsoNormal" style="margin-top:6.0pt"><img border="0" src="whats_1.gif"></p>
+<p>&nbsp;</p>
+<p class="subsection"><a name="_TocSectionUIModel_2">2.2 New New Project Wizard</a></p>
+<p>The CDT 4.0 presents a new New Project Wizard. This section primarily
+focusing and describing the ways a tool-integrator can influence on how his/her tool-chains and project types
+are presented in the wizard on the first wizard page. Please refer to the &quot;New
+Project Wizard&quot; user description for more detail on the New Project Wizard UI.</p>
+<p>The first wizard page presents the wizard allows user to select a project
+type and tool-chain(s) to be used with the project type.</p>
+<p>&nbsp;</p>
+<p><img border="0" src="../../migration_guides/4.0/migrat1.gif"></p>
+<p><b>Presenting project-types and tool-chains in the New Project Wizard</b></p>
+<p>A tool-integrator has two options of presenting his project-types in the
+wizard.</p>
+<ol>
+ <li>Define a new custom Project Type entry.</li>
+ <li>Use the general project type entries mechanism.</li>
+</ol>
+<p><b><font color="#FF0000">NOTE:</font></b>&nbsp; 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.</p>
+<p class="MsoNormal" style="margin-top:0; margin-bottom:0"><b>&nbsp;&nbsp;&nbsp;
+ Example:</b> to illustrate the above requirement here is how this is handled
+ in the gnu tool-chain definitions:</p>
+<p class="MsoNormal" style="margin-top:0; margin-bottom:0">&nbsp;&nbsp;&nbsp;
+ The gnu plug-in contains the gcc linker tool on Linux is defined as</p>
+<p class="MsoNormal" style="margin-top:0; margin-bottom:0">&nbsp;&nbsp;&nbsp;&nbsp;
+ &lt;tool<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; natureFilter=&quot;cnature&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name=&quot;%ToolName.linker.gnu.c&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputFlag=&quot;-o&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command=&quot;gcc&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id=&quot;cdt.managedbuild.tool.gnu.c.linker&quot;</p>
+<p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ ...</p>
+<p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">&nbsp;&nbsp;&nbsp;
+ </p>
+<p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">&nbsp;&nbsp;&nbsp;
+ At the same time the gnu tool-chain definitions refers to the gcc linker by
+ defining a new tool as a super-class of the &quot;cdt.managedbuild.tool.gnu.c.linker&quot;
+ tool</p>
+<p class="MsoNormal" style="margin-top:6.0pt">&nbsp;&nbsp;&nbsp;&nbsp; &lt;tool<br>&nbsp;&nbsp;&nbsp; id=&quot;cdt.managedbuild.tool.gnu.c.linker.base&quot;<br>&nbsp;&nbsp;&nbsp; superClass=&quot;cdt.managedbuild.tool.gnu.c.linker&quot;&gt;</p>
+<p class="MsoNormal" style="margin-top:6.0pt">...</p>
+<p class="MsoNormal" style="margin-top:6.0pt">Both tool definitions listed
+ above are actually treated as two different tools by the Build System, while
+ both of them refer to one and&nbsp; the same &quot;gcc&quot; executable. To make the
+ build system aware that both tool definitions refer to one and the same tool/executable
+ it is required that both tool definitions specify one and the same name. In
+ the above sample the tool of id=&quot;cdt.managedbuild.tool.gnu.c.linker.base&quot;
+ does not specify any name thus making the name to be inherited from the
+ super-class tool, so both tools have the same name.</p>
+<p class="MsoNormal" style="margin-top:6.0pt">On the other hand the cygwin
+ gcc linker is defined as </p>
+<p class="MsoNormal" style="margin-top:6.0pt">&nbsp;&lt;tool<br>id=&quot;cdt.managedbuild.tool.gnu.c.linker.cygwin&quot;<br>name=&quot;%ToolName.linker.cygwin.gnu.c&quot;<br>superClass=&quot;cdt.managedbuild.tool.gnu.c.linker&quot;&gt;<br>...</p>
+<p class="MsoNormal" style="margin-top:6.0pt">although the tool definitions
+ is defined as a super-class of the linux gcc linker, it refers to the
+ different tool(executable) than the Linux linker definition. The cygwin
+ linker definition specifies the name=&quot;%ToolName.linker.cygwin.gnu.c&quot; that
+ differs from the one defined by the Linux gcc linker.</p>
+<p><b>Defining new Project Type entries</b></p>
+<p>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
+&quot;name&quot; property, e.g.</p>
+<p><font color="#FF0000">TODO: insert a picture here</font></p>
+<p>When the project type entry is selected in the wizard the &quot;Toolchain:&quot;
+pane will display the list of tool-chains defined/associated with the project type</p>
+<p><b>Using general project type entries</b></p>
+<p>The &quot;general project types&quot; 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
+different tool-chains and integrations. When the general project type entry is selected the
+&quot;ToolChains:&quot; 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.</p>
+<p><b>What are the general project type entries?</b></p>
+<p>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 &quot;buildArtefactType&quot; property which represents the build
+artifact type. The New Project wizard searches for the tool-chains supporting
+each of the defined build artifact types and displays them in the &quot;ToolChains:&quot;
+pane for each of the build artifact type.</p>
+<p>CDT pre-defines the following values of the build artifact type property:</p>
+<p>&quot;org.eclipse.cdt.build.core.buildArtefactType.exe&quot; - to represent executable</p>
+<p>&quot;org.eclipse.cdt.build.core.buildArtefactType.staticLib&quot; - to represent
+static library</p>
+<p>&quot;org.eclipse.cdt.build.core.buildArtefactType.sharedLib&quot; - to represent
+shared library</p>
+<p>ISVs can define their own custom build artifact values by contributing to the
+org.eclipse.cdt.managedbuilder.core.buildProperties extension point.</p>
+<p>See the &quot;Build Properties&quot; section for more detail on the Build Properties
+mechanism.</p>
+<p><b>Contributing to the general project type entries</b></p>
+<p>The minimal steps needed to specify that the general project type entry should be used, a project-type
+definition should specify the &quot;buildArtefact&quot; attribute and assign it to one of
+the values of the buildArtefactType build property, e.g.</p>
+<p>&nbsp;&lt;projectType <br>
+&nbsp;&nbsp;&nbsp; buildArtefactType=&quot;org.eclipse.cdt.build.core.buildArtefactType.exe&quot;<br>
+&nbsp;&nbsp;&nbsp; id=&quot;cdt.managedbuild.target.gnu.exe&quot;&gt;</p>
+<p>&nbsp;&nbsp; ...</p>
+<p><font color="#FF0000">TODO: insert a picture here</font></p>
+<p>&nbsp;</p>
+<p class="subsection"><a name="_TocSectionUIModel_3">2.3 Multi-configuration support for makefile
+projects</a></p>
+<p>The new CDT Build System supports multiple configuration settings. This is
+applicable for the Managed and Makefile projects now. As with the Managed
+projects the org.eclipse.cdt.managedbuilder.core.IConfiguration interface serves
+as a holder of the configuration settings.</p>
+<p>&nbsp;</p>
+<p class="subsection"><a name="_TocSectionUIModel_4">2.4 Tool-chain support for makefile projects</a></p>
+<p>The new CDT Build System provider the notion of the tool-chain/tool/builder
+definitions. The tool-chain are used for the Makefile projects as
+holders/profiles containing/grouping different settings applicable for the given
+tool-chain thus allowing the project seyttings to be automatically configured
+based upon the tool-chain being used. This includes adjusting error parser,
+binary parser settings, scanner discovery profile settings, etc.</p>
+<p class="subsection"><a name="_TocSectionUIModel_5">2.5 Per-folder settings</a></p>
+<p>It is now possible to specify custom settings on the per-folder&nbsp; level.
+It is as well possible to exclude folders from build. A new interface folderInfo
+schema element is presented. See the buildDefinitions model above for more
+detail.</p>
+<p class="subsection"><a name="_TocSectionUIModel_6">2.6 Internal Builder</a></p>
+<p style="margin-top: 0; margin-bottom: 0">It is now possible to use the Internal Builder in the tool-chain definitions.
+The Internal Builder is treated as a regular builder by the Build System. To
+associate the Internal Builder with the tool-chain the tool-chain should define
+the builder specifying the Internal Builder as its super-class via a builder#superClass
+attribute. The Internal Builder id is &quot;org.eclipse.cdt.build.core.internal.builder&quot;.
+E.g.</p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">&lt;builder</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+id=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;cdt.managedbuild.tool.gnu.builder.mingw.base&quot;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-family: Courier New"><font size="2" color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</font><span style="font-size: 10.0pt; color: navy">&nbsp;...</span></span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+superClass=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;org.eclipse.cdt.build.core.internal.builder&quot;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">&gt;
+</span><span style="font-size: 10.0pt; font-family: Courier New; color: black">
+&lt;- setting the Internal Builder id as a super-class ID specifies that the
+Internal Builder will be used</span></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">
+&lt;/builder&gt;</span></p>
+<p style="margin-top: 0; margin-bottom: 0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+...</p>
+<p class="subsection"><a name="_TocSectionUIModel_7">2.7 Customized configuration builds</a></p>
+<p style="margin-top: 0; margin-bottom: 0">It is now possible to initiate the
+project build that will use customized settings that differ from those of the
+currently active configuration.</p>
+<p style="margin-top: 0; margin-bottom: 0">The following modes are supported:</p>
+<ol>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">Building any number of project
+ build configurations with one build request</p></li>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">Building any number of
+ configurations with builder settings customized</p></li>
+</ol>
+<p style="margin-top: 0; margin-bottom: 0">This functionality can be used
+programmatically via the
+org.eclipse.cdt.managedbuilder.core.ManagedBuildManager.buildConfigurations(...)
+methods.</p>
+<p style="margin-top: 0; margin-bottom: 0">It is also accessible in UI via the
+&quot;Build Configurations&quot; -&gt; &quot;Build&quot; project context menu.</p>
+<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p style="margin-top: 0; margin-bottom: 0">NOTE: For Managed builds (makefiles
+are generated automatically) this functionality works only in case the buildfile
+generator implements the
+org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator2. This
+interface extends the old IManagedBuilderMakefileGenerator by defining a new
+initialize() method which accepts IConfiguration and IBuilder rather than
+IManagedBuildInfo thus removing an assumption that only active configuration can
+be used for building.</p>
+<p style="margin-top: 0; margin-bottom: 0">The default GnuMakefileGenerator
+supplied with the CDT now implements this interface, so in case the builder is
+using this default implementation, no changes are needed.</p>
+<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p class="subsection"><a name="_TocSectionUIModel_8">2.8 Make Target Build for Managed Build
+Projects</a></p>
+<p style="margin-top: 0; margin-bottom: 0">As a result of combining the features
+of old Managed and Standard Build systems, the make target build is now
+available for Managed Projects also.</p>
+<p style="margin-top: 0; margin-bottom: 0">Internally&nbsp; it is actually
+treated as a special case of the Custom configuration build (see the &quot;Custom
+configuration builds&quot; section).</p>
+<p class="subsection"><a name="_TocSectionUIModel_9">2.9 Tool-chain modification</a></p>
+<p style="margin-top: 0; margin-bottom: 0">The CDT Build System now allows
+changing tool-chains used in the configurations for the already created
+projects.</p>
+<p style="margin-top: 0; margin-bottom: 0">The following modifications are
+supported</p>
+<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<table border="1" width="725" height="45">
+ <tr>
+ <td height="12" width="352" align="center"><b>Modification type</b></td>
+ <td height="12" width="357" align="center"><b>Possible levels of
+ modifications</b></td>
+ </tr>
+ <tr>
+ <td height="11" width="352">Changing/substituting the entire tool-chain</td>
+ <td height="11" width="357">
+ <ol>
+ <li>Project-wide</li>
+ <li>Per-folder</li>
+ </ol>
+ </td>
+ </tr>
+ <tr>
+ <td height="11" width="352">Adding/removing tools to the tool-chain
+ currently used</td>
+ <td height="11" width="357">
+ <ol>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">Project-wide</li>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">Per-folder</li>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">Per-file</li>
+ </ol>
+ </td>
+ </tr>
+ <tr>
+ <td height="11" width="352">Changing builder </td>
+ <td height="11" width="357">
+ <ol>
+ <li>Project-wide</li>
+ </ol>
+ </td>
+ </tr>
+</table>
+<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p style="margin-top: 0; margin-bottom: 0">To make the tool-chain modification
+mechanism work properly a tool-integrator is responsible for providing an
+information that would allow to preserve/adjust the necessary settings while
+conversion. There are several mechanisms that could be used for these purposes.</p>
+<ol>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">Specifying a tool-chain/tool
+ converter</p></li>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">Specifying build properties
+ supported and enablement expressions for automatic settings adjustment. (See
+ the &quot;Build Properties mechanism&quot; section for detail on the Build Properties
+ mechanism)</p></li>
+</ol>
+<p style="margin-top: 0; margin-bottom: 0">When the tool-chain modification is
+performed the Build System checks whether there mechanism is performed in the
+following </p>
+<ol>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">In case there is an appropriate
+ converter defined that could be used for conversion, the converter is used
+ while modification</p></li>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">Otherwise the Build properties
+ mechanism is used. In this case settings adjustment is performed based upon
+ adjustment expressions defined for the tool-chain/tools and the set of build
+ properties associated with the configuration. (See the &quot;Build Properties
+ mechanism&quot; section for detail on the Build Properties mechanism)</p></li>
+</ol>
+<p><font color="#FF0000"><b>NOTE: </b></font>&nbsp;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.</p>
+<p class="MsoNormal" style="margin-top:0; margin-bottom:0"><b>&nbsp;&nbsp;&nbsp;
+ Example:</b> to illustrate the above requirement here is how this is handled
+ in the gnu tool-chain definitions:</p>
+<p class="MsoNormal" style="margin-top:0; margin-bottom:0">&nbsp;&nbsp;&nbsp;
+ The gnu plug-in contains the gcc linker tool on Linux is defined as</p>
+<p class="MsoNormal" style="margin-top:0; margin-bottom:0">&nbsp;&nbsp;&nbsp;&nbsp;
+ &lt;tool<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; natureFilter=&quot;cnature&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name=&quot;%ToolName.linker.gnu.c&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputFlag=&quot;-o&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command=&quot;gcc&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id=&quot;cdt.managedbuild.tool.gnu.c.linker&quot;</p>
+<p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ ...</p>
+<p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">&nbsp;&nbsp;&nbsp;
+ </p>
+<p class="MsoNormal" style="margin-top:0pt; margin-bottom:0">&nbsp;&nbsp;&nbsp;
+ At the same time the gnu tool-chain definitions refers to the gcc linker by
+ defining a new tool as a super-class of the &quot;cdt.managedbuild.tool.gnu.c.linker&quot;
+ tool</p>
+<p class="MsoNormal" style="margin-top:6.0pt">&nbsp;&nbsp;&nbsp;&nbsp; &lt;tool<br>&nbsp;&nbsp;&nbsp; id=&quot;cdt.managedbuild.tool.gnu.c.linker.base&quot;<br>&nbsp;&nbsp;&nbsp; superClass=&quot;cdt.managedbuild.tool.gnu.c.linker&quot;&gt;</p>
+<p class="MsoNormal" style="margin-top:6.0pt">...</p>
+<p class="MsoNormal" style="margin-top:6.0pt">Both tool definitions listed
+ above are actually treated as two different tools by the Build System, while
+ both of them refer to one and&nbsp; the same &quot;gcc&quot; executable. To make the
+ build system aware that both tool definitions refer to one and the same tool/executable
+ it is required that both tool definitions specify one and the same name. In
+ the above sample the tool of id=&quot;cdt.managedbuild.tool.gnu.c.linker.base&quot;
+ does not specify any name thus making the name to be inherited from the
+ super-class tool, so both tools have the same name.</p>
+<p class="MsoNormal" style="margin-top:6.0pt">On the other hand the cygwin
+ gcc linker is defined as </p>
+<p class="MsoNormal" style="margin-top:6.0pt">&nbsp;&lt;tool<br>id=&quot;cdt.managedbuild.tool.gnu.c.linker.cygwin&quot;<br>name=&quot;%ToolName.linker.cygwin.gnu.c&quot;<br>superClass=&quot;cdt.managedbuild.tool.gnu.c.linker&quot;&gt;<br>...</p>
+<p class="MsoNormal" style="margin-top:6.0pt">although the tool definitions
+ is defined as a super-class of the linux gcc linker, it refers to the
+ different tool(executable) than the Linux linker definition. The cygwin
+ linker definition specifies the name=&quot;%ToolName.linker.cygwin.gnu.c&quot; that
+ differs from the one defined by the Linux gcc linker.</p>
+<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p class="subsection"><a name="_TocSectionUIModel_10">2.10 Build Properties mechanism</a></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><span lang="EN-US">
+The Build Properties mechanism allows defining a set of properties along with
+the possible property values for each property.</span></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">It is possible to
+associate some set of properties with the configuration/project type.</p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">The tool-chains and
+tools in their turn are allowed to specify the set of supported properties and
+their supported values for those properties.</p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">Given these
+capabilities the Build Properties mechanism is used to facilitate the following
+functionality:</p>
+<ol>
+ <li>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">The New Project
+ Wizard is now now creating the set of &quot;general&quot; project type entries based
+ upon the available values for the &quot;org.eclipse.cdt.build.core.buildArtefactType&quot;
+ build property and allows associating tool-chains with those project type
+ entries given the information on the build artefact type values supported by
+ the tool-chains and defined for the project types.</li>
+ <li>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">With the
+ tool-chain modification functionality <span lang="EN-US">tool-chains, tools
+ and builders can use the build properties mechanism to adjust their settings
+ (e.g. option values for tools, etc. ) using enablement expressions
+ mechanism. This allows easy tool-chain/tool/builder switching without the
+ necessity to implement a converter. Having this mechanism it is possible to
+ define tools whose default option values will depend on the set build
+ properties associated with the configuration. Thus it is possible to have
+ one tool-chain definition whose values will be automatically adjusted
+ depending on whether the tool-chain is being used to create executable or
+ library, etc. or depending on whether the tool-chain is used in the
+ &quot;release&quot; or &quot;debug&quot; build, etc.</span></li>
+ <li>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">It is now
+ possible to change the build artifact type of the already created project by
+ changing the value of the buildArtefactType property in case the tool-chain
+ supports that.</li>
+</ol>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><b>Defining new
+Build Properties and their values</b></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">Build Properties
+are defined with the org.eclipse.cdt.managedbuilder.core.buildVariables
+extension point. Please refer to the extension point description for the
+detailed info on extension point schema.</p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><span lang="EN-US">
+The Build Property definition consists of the property ID, a human-readable
+property name and the set of values this property supports.</span></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">The property value
+definition in its turn consist of the value id and <span lang="EN-US">a
+human-readable value name.</span></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+&lt;extension</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+id=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;baseProperties&quot;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+name=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;Base
+Build Properties Definition&quot;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">
+point=</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:green">&quot;org.eclipse.cdt.managedbuilder.core.buildProperties&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">&gt;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">&lt;propertyType</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span>
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">
+id=</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:green">&quot;org.eclipse.cdt.build.core.buildType&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span>
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">
+name=</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:green">&quot;%BuildProperty.type.name.buildType&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">/&gt;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">&lt;propertyType</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span>
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">
+id=</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:green">&quot;org.eclipse.cdt.build.core.buildArtefactType&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span>
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">
+name=</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:green">&quot;%BuildProperty.type.name.buildArtefactType&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">/&gt;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">&lt;propertyValue</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">property=</span><span style="font-size:
+10.0pt;font-family:&quot;Courier New&quot;;color:green">&quot;org.eclipse.cdt.build.core.buildType&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">id=</span><span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:green">&quot;org.eclipse.cdt.build.core.buildType.debug&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">name=</span><span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:green">&quot;%BuildProperty.value.name.debug&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">/&gt;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">&lt;propertyValue</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">property=</span><span style="font-size:
+10.0pt;font-family:&quot;Courier New&quot;;color:green">&quot;org.eclipse.cdt.build.core.buildType&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">id=</span><span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:green">&quot;org.eclipse.cdt.build.core.buildType.release&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">name=</span><span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:green">&quot;%BuildProperty.value.name.release&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">/&gt;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">&lt;propertyValue</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">property=</span><span style="font-size:
+10.0pt;font-family:&quot;Courier New&quot;;color:green">&quot;org.eclipse.cdt.build.core.buildArtefactType&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">id=</span><span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:green">&quot;org.eclipse.cdt.build.core.buildArtefactType.exe&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">name=</span><span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:green">&quot;%BuildProperty.type.name.executable&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">/&gt;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">&lt;propertyValue</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">property=</span><span style="font-size:
+10.0pt;font-family:&quot;Courier New&quot;;color:green">&quot;org.eclipse.cdt.build.core.buildArtefactType&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">id=</span><span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:green">&quot;org.eclipse.cdt.build.core.buildArtefactType.staticLib&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">name=</span><span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:green">&quot;%BuildProperty.type.name.staticLibrary&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">/&gt;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">&lt;propertyValue</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">property=</span><span style="font-size:
+10.0pt;font-family:&quot;Courier New&quot;;color:green">&quot;org.eclipse.cdt.build.core.buildArtefactType&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">id=</span><span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:green">&quot;org.eclipse.cdt.build.core.buildArtefactType.sharedLib&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">name=</span><span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:green">&quot;%BuildProperty.type.name.sharedLibrary&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">/&gt;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;</span></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;
+color:black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">
+&lt;/extension&gt;</span></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><span lang="EN-US">
+The values are defined separately from the property, so it is possible for the
+property values set to be customized and extended by an ISV.</span></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><span lang="EN-US">
+&nbsp;</span></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><span lang="EN-US">
+The Build System will pre-define some common general build properties listed in
+the table below and the set of values for each of those properties, but it will
+be possible for the tool-integrators to define their own properties as well as
+to add some new custom values to the already defined properties.</span></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><span lang="EN-US">
+<br>
+Build System-predefined properties</span></p>
+<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse; border: medium none; margin-left: 5.4pt" id="table18">
+ <tr style="height: 13.5pt">
+ <td width="120" valign="top" style="width: 1.25in; height: 13.5pt; border: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0in; padding-bottom: 0in">
+ <p class="MsoNormal" align="center" style="text-align: center; margin-top: 0; margin-bottom: 0">
+ <b><span lang="EN-US">Property id</span></b></td>
+ <td width="324" valign="top" style="width: 243.0pt; height: 13.5pt; border-left: medium none; border-right: 1.0pt solid windowtext; border-top: 1.0pt solid windowtext; border-bottom: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0in; padding-bottom: 0in">
+ <p class="MsoNormal" align="center" style="text-align: center; margin-top: 0; margin-bottom: 0">
+ <b><span lang="EN-US">Description</span></b></td>
+ <td width="168" valign="top" style="width: 1.75in; height: 13.5pt; border-left: medium none; border-right: 1.0pt solid windowtext; border-top: 1.0pt solid windowtext; border-bottom: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0in; padding-bottom: 0in">
+ <p class="MsoNormal" align="center" style="text-align: center; margin-top: 0; margin-bottom: 0">
+ <b><span lang="EN-US">Pre-defined Values</span></b></td>
+ </tr>
+ <tr style="height: 8.25pt">
+ <td width="120" valign="top" style="width: 1.25in; height: 8.25pt; border-left: 1.0pt solid windowtext; border-right: 1.0pt solid windowtext; border-top: medium none; border-bottom: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0in; padding-bottom: 0in">
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span style="font-size: 10.0pt; font-family: Courier New; color: green">
+ org.eclipse.cdt.build.core.buildArtefactType</span></td>
+ <td width="324" valign="top" style="width: 243.0pt; height: 8.25pt; border-left: medium none; border-right: 1.0pt solid windowtext; border-top: medium none; border-bottom: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0in; padding-bottom: 0in">
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span lang="EN-US">Represents the type of the build artifact built by
+ this project-type, configuration</span></td>
+ <td width="168" valign="top" style="width: 1.75in; height: 8.25pt; border-left: medium none; border-right: 1.0pt solid windowtext; border-top: medium none; border-bottom: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0in; padding-bottom: 0in">
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span style="font-size: 10.0pt; font-family: Courier New; color: green">
+ org.eclipse.cdt.build.core.buildArtefactType.exe</span></p>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ (Executable)</p>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span style="font-size: 10.0pt; font-family: Courier New; color: green">
+ org.eclipse.cdt.build.core.buildArtefactType.sharedLib</span></p>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span lang="EN-US">(Shared Library)</span></p>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span style="font-size: 10.0pt; font-family: Courier New; color: green">
+ org.eclipse.cdt.build.core.buildArtefactType.staticLib</span></p>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span lang="EN-US">Static Library</span></td>
+ </tr>
+ <tr style="height: 11.25pt">
+ <td width="120" valign="top" style="width: 1.25in; height: 11.25pt; border-left: 1.0pt solid windowtext; border-right: 1.0pt solid windowtext; border-top: medium none; border-bottom: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0in; padding-bottom: 0in">
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span style="font-size: 10.0pt; font-family: Courier New; color: green">
+ org.eclipse.cdt.build.core.buildType</span></td>
+ <td width="324" valign="top" style="width: 243.0pt; height: 11.25pt; border-left: medium none; border-right: 1.0pt solid windowtext; border-top: medium none; border-bottom: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0in; padding-bottom: 0in">
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span lang="EN-US">Represents the build type for this configuration</span></td>
+ <td width="168" valign="top" style="width: 1.75in; height: 11.25pt; border-left: medium none; border-right: 1.0pt solid windowtext; border-top: medium none; border-bottom: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0in; padding-bottom: 0in">
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span style="font-size: 10.0pt; font-family: Courier New; color: green">
+ org.eclipse.cdt.build.core.buildType.debug</span></p>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span lang="EN-US">(Debug)</span></p>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span style="font-size: 10.0pt; font-family: Courier New; color: green">
+ org.eclipse.cdt.build.core.buildType.release</span></p>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span lang="EN-US">(Release)</span></td>
+ </tr>
+ <tr style="height: 9.75pt">
+ <td width="120" valign="top" style="width: 1.25in; height: 9.75pt; border-left: 1.0pt solid windowtext; border-right: 1.0pt solid windowtext; border-top: medium none; border-bottom: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0in; padding-bottom: 0in">
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span lang="EN-US">&nbsp;</span></td>
+ <td width="324" valign="top" style="width: 243.0pt; height: 9.75pt; border-left: medium none; border-right: 1.0pt solid windowtext; border-top: medium none; border-bottom: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0in; padding-bottom: 0in">
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span lang="EN-US">&nbsp;</span></td>
+ <td width="168" valign="top" style="width: 1.75in; height: 9.75pt; border-left: medium none; border-right: 1.0pt solid windowtext; border-top: medium none; border-bottom: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0in; padding-bottom: 0in">
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span lang="EN-US">&nbsp;</span></td>
+ </tr>
+</table>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><span lang="EN-US">
+&nbsp;</span></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><b>Automatic tool
+settings adjustment with Build Properties</b></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">Tool-chain ant tool
+definitions can specify enablement expressions to make their default settings be
+automatically adjusted depending on the value of Build Properties, other
+options, Strings, etc. </p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">Below is the
+snippet of the gcc compiler tool definition that specifies dynamic option value
+adjustment depending on the &quot;buildType&quot; property value.</p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">&lt;option</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp; &nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+name=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;%Option.Posix.DebugLevel&quot;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+...</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp; &nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+valueType=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;enumerated&quot;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">&gt;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+&lt;enablement</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+type=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;CONTAINER_ATTRIBUTE&quot;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&lt;- specifying that enablement is applicable for the option attribute</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+attribute=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;value&quot;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&lt;- attribute name the enablement is applicable to</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+value=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;gnu.c.debugging.level.none&quot;</span><span style="font-size: 10.0pt; font-family: Courier New; color: black">
+&lt;- the value that is to be assigned to the attribute in case enablement
+expression is true</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+extensionAdjustment=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;false&quot;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">&gt;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&lt;- specifying that enablement is applicable for non-extension (project) elements</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+&lt;checkBuildProperty</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&lt;- evaluates the build property value. treated as true if the property value
+equals to the one defined in the value attribute</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+property=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;org.eclipse.cdt.build.core.buildType&quot;</span><span style="font-size: 10.0pt; font-family: Courier New; color: black">
+&lt;- property id of the property to be checked</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+value=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;org.eclipse.cdt.build.core.buildType.release&quot;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">/&gt;</span><span style="font-size: 10.0pt; font-family: Courier New; color: black">
+&lt;- expected property value id </span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+&lt;/enablement&gt; </span>
+<span style="font-size: 10.0pt; font-family: Courier New; color: black">&lt;- in
+case the buildType property value is &quot;release&quot; debugging level is set to &quot;none&quot;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">&lt;enablement</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+type=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;CONTAINER_ATTRIBUTE&quot;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+attribute=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;value&quot;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+value=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;gnu.c.debugging.level.max&quot;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+extensionAdjustment=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;false&quot;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">&gt;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+&lt;checkBuildProperty</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+property=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;org.eclipse.cdt.build.core.buildType&quot;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+value=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;org.eclipse.cdt.build.core.buildType.debug&quot;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">/&gt;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp; &nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">&lt;/enablement&gt; </span>
+<span style="font-size: 10.0pt; font-family: Courier New; color: black">&lt;- in
+case the buildType property value is &quot;debug&quot; debugging level is set to &quot;max&quot;</span></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;
+color:black">&nbsp;&nbsp;</span><span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">&lt;/option&gt;</span></p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">For more
+information on using enablement expressions please refer to the description of
+the org.eclipse.cdt.managedbuilder.core.buildDefinitions extension-point.</p>
+<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p style="margin-top: 0; margin-bottom: 0"><b>Specifying the set of supported
+build properties</b></p>
+<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p style="margin-top: 0; margin-bottom: 0">The tool-chain modification and New
+Project Wizard mechanisms need to know the set of build properties each
+tool/tool-chain support for filtering incompatible tools/tool-chains.</p>
+<ol>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">Specifying the set of supported
+ build properties for tools.</p>
+ <p style="margin-top: 0; margin-bottom: 0">There are several options of how
+ the tool can specify the build properties supported</p>
+ <ul>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">A tool can specify a &quot;supportedProperties&quot;
+ element listing all properties and property values supported, e.g.</p>
+ <p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+ <span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+ &nbsp;&nbsp;&nbsp;&nbsp;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">&lt;supportedProperties&gt;</span></p>
+ <p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+ <span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+ <span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+ &lt;property</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+ </span>
+ <span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+ id=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;org.eclipse.cdt.build.core.buildType&quot;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">&gt;</span></p>
+ <p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+ <span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+ &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+ <span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+ &lt;value</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+ </span>
+ <span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+ id=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;org.eclipse.cdt.build.core.buildType.debug&quot;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">/&gt;</span></p>
+ <p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+ <span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+ &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">&nbsp;&nbsp;&nbsp;
+ &lt;value</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+ </span>
+ <span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+ id=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;org.eclipse.cdt.build.core.buildType.release&quot;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">/&gt;</span></p>
+ <p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+ <span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">&lt;/property&gt;</span></p>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">
+ <span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;
+color:black">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">&lt;/supportedProperties&gt;</span></li>
+ <li>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">In case the
+ &quot;supportedProperties&quot; element is not specified the supported properties
+ will be automatically calculated: all build properties referenced in the
+ tool's enablement expressions will be treated as supported</li>
+ </ul>
+ </li>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">Specifying the set of supported
+ build properties for tool-chains.</p>
+ <ul>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">All build properties and
+ their values supported by the tool-chain's tools will be treated as
+ supported by the given tool-chain. </p></li>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">A tool-chain may specify
+ additional supported properties and property value</p>
+ <ul>
+ <li>
+ <p style="margin-top: 0; margin-bottom: 0">A tool-chain can specify
+ a &quot;supportedProperties&quot; element listing additional properties and
+ property values supported in the same way as for tool elements, e.g.</p>
+ </li>
+ <li>
+ <p class="MsoNormal" style="margin-top: 0; margin-bottom: 0">In case
+ the &quot;supportedProperties&quot; element is not specified but the
+ tool-chain contains enablement expressions, all build properties
+ referenced in the tool-chain's enablement expressions will be
+ treated as supported</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+</ol>
+<p style="margin-top: 0; margin-bottom: 0"><b>Assigning the set of build
+properties for configurations/project-types</b></p>
+<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p style="margin-top: 0; margin-bottom: 0">Once the tools/tool-chains has
+specified the setting adjustment expressions it is possible to use one and the
+same tools in different configurations and project types without a necessity to
+override/specify any project-type/configuration-specific options, e.g. debug
+level, optimization level, etc.</p>
+<p style="margin-top: 0; margin-bottom: 0">For this purpose it is possible to
+assign the set of build properties and their values for project-types and
+configurations</p>
+<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+&lt;projectType</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+buildArtefactType=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;org.eclipse.cdt.build.core.buildArtefactType.exe&quot;</span><span style="font-size: 10.0pt; font-family: Courier New; color: black">
+&lt;- the project-type level build properties will be applied for all
+configurations. The buildArtefactType is a convenience attribute that allows to
+specify the value for the &quot;buildArtefactType&quot; property.</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<font size="2"><span style="font-family: Courier New">It is possible to specify
+the &quot;buildProperties&quot; attribute for the project type and define the set of build
+properties there in the same way as for configuration (see below)</span></font></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .....</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">&gt;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+&lt;configuration</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<font size="2" color="#000080"><span style="font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+...</span></font></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+buildProperties=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug&quot;
+</span><span style="font-size: 10.0pt; font-family: Courier New; color: black">
+&lt;- defines/assigns the set of build properties for the configuration in the form
+of comma-separated list of &lt;property_id&gt;=&lt;property_value_id&gt; pairs</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:navy">
+cleanCommand=</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:green">&quot;rm
+-rf&quot;</span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;
+color:navy">&gt;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+&lt;toolChain</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">&gt;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<font size="2" color="#000080"><span style="font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+...</span></font></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+&lt;tool</span><span style="font-size: 10.0pt; font-family: Courier New; color: black">
+&lt;- note that we are not defining any configuration specific options here (debug
+level, optimization level, etc.) Those option values will be automatically
+adjusted based upon enablement/adjustment expressions defined for the tool's
+options and the set of build properties and their values assigned for the
+configuration</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+id=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;cdt.managedbuild.tool.gnu.c.compiler.exe.debug&quot;</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
+<span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">
+superClass=</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: green">&quot;cdt.managedbuild.tool.gnu.c.compiler.base&quot;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: navy">&gt;</span><span lang="EN-US" style="font-size: 10.0pt; font-family: Courier New; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></p>
+<p class="MsoNormal" style="text-autospace: none; margin-top: 0; margin-bottom: 0">
+<span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:black">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; </span>
+<span style="font-size:10.0pt;
+font-family:&quot;Courier New&quot;;color:navy">&nbsp;&lt;/toolChain&gt;</span></p>
+<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
+<p style="margin-top: 0; margin-bottom: 0">&nbsp;&nbsp; </p>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/org.eclipse.cdt.doc.isv/topics_Guide.xml b/doc/org.eclipse.cdt.doc.isv/topics_Guide.xml
index 81b595bbd3..d837e64919 100644
--- a/doc/org.eclipse.cdt.doc.isv/topics_Guide.xml
+++ b/doc/org.eclipse.cdt.doc.isv/topics_Guide.xml
@@ -7,4 +7,6 @@
<topic label="CDT DOM" href="guide/dom/index.html"/>
<topic label="Managed Build System Extensibility Document" href="guide/mbs/extensibilityGuide/Managed_Build_Extensibility.html"/>
<topic label="Project Template Engine" href="guide/projectTemplateEngine/index.html"/>
+ <topic label="What's new in CDT Build System 4.0" href="guide/cdt_build_system/whats_new/4.0/whats_new_CBS_40.html"/>
+ <topic label="Migrating your tool-chain integration to CDT 4.0" href="guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html"/>
</toc>

Back to the top