Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Fix for bugs 43490 (trivial), 44020 (partial) and 43980

Details in the change log.

The bulk of the patch lies in the plugin file where the tools are 
specified. 


Sean Evoy
Rational Software - IBM Software Group
Ottawa, Ontario, Canada
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/ChangeLog,v
retrieving revision 1.129
diff -u -r1.129 ChangeLog
--- ChangeLog	1 Oct 2003 17:10:20 -0000	1.129
+++ ChangeLog	1 Oct 2003 19:20:50 -0000
@@ -1,3 +1,14 @@
+2003-10-01 Sean Evoy
+	Fix for bugs 43490 (trivial) and 43980.
+	I added a new descriminator for the tool to determine which project nature 
+	it should apply to. I had to update the plugin.xml file to add the attribute. 
+	The build test just checks that the info is stored.
+	* plugin.xml
+	
+	I also updated the way IDs are assigned to targets, so the tests for expected
+	IDs are no longer valid.
+	* build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java
+
 2003-10-01 Andrew Niefer
 	added testBug43450 to ManagedBuildTests.java
 	added a user include to plugin.xml
Index: plugin.xml
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/plugin.xml,v
retrieving revision 1.15
diff -u -r1.15 plugin.xml
--- plugin.xml	1 Oct 2003 17:10:20 -0000	1.15
+++ plugin.xml	1 Oct 2003 19:20:50 -0000
@@ -40,6 +40,7 @@
             makeFlags="-k"
             osList="win32">
          <tool
+               natureFilter="cnature"
                sources="foo,bar"
                name="Root Tool"
                headerExtensions="baz"
@@ -159,6 +160,7 @@
                id="sub.config">
          </configuration>
          <tool
+               natureFilter="both"
                sources="yarf"
                name="Sub Tool"
                headerExtensions="arf,barf"
@@ -202,7 +204,7 @@
                </listOptionValue>
                <listOptionValue
 		             value="&quot;../includes&quot;"
-                     builIn="false">
+                     builtIn="false">
                </listOptionValue>
             </option>
             <option
Index: build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java,v
retrieving revision 1.13
diff -u -r1.13 ManagedBuildTests.java
--- build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java	1 Oct 2003 17:10:20 -0000	1.13
+++ build/org/eclipse/cdt/core/build/managed/tests/ManagedBuildTests.java	1 Oct 2003 19:20:50 -0000
@@ -286,11 +286,8 @@
 	 * 
 	 */
 	public void testConfigurations() throws CoreException, BuildException {
-		String rootConfigId = "test.root.1.0";
 		String rootName = "Root Config";
-		String overrideConfigId = "test.root.1.1";
 		String overrideName = "Root Override Config";
-		String completeOverrideConfigId = "test.root.1.2";
 		String completeOverrideName = "Complete Override Config";
 		
 		// Open the test project
@@ -303,11 +300,8 @@
 		IConfiguration[] definedConfigs = rootTarget.getConfigurations(); 		
 		assertEquals(3, definedConfigs.length);
 		IConfiguration baseConfig = definedConfigs[0];
-		assertEquals(definedConfigs[0].getId(), rootConfigId);
 		assertEquals(definedConfigs[0].getName(), rootName);
-		assertEquals(definedConfigs[1].getId(), overrideConfigId);
 		assertEquals(definedConfigs[1].getName(), overrideName);
-		assertEquals(definedConfigs[2].getId(), completeOverrideConfigId);
 		assertEquals(definedConfigs[2].getName(), completeOverrideName);
 		
 		// Create a new configuration and test the rename function
@@ -355,9 +349,7 @@
 		rootTarget.removeConfiguration(testConfigId);
 		definedConfigs = rootTarget.getConfigurations(); 		
 		assertEquals(3, definedConfigs.length);
-		assertEquals(definedConfigs[0].getId(), rootConfigId);
 		assertEquals(definedConfigs[0].getName(), rootName);
-		assertEquals(definedConfigs[1].getId(), overrideConfigId);
 		assertEquals(definedConfigs[1].getName(), overrideName);
 	}
 	
@@ -522,10 +514,8 @@
 		// There should be a default configuration defined for the project
 		ITarget buildTarget = info.getDefaultTarget();
 		assertNotNull(buildTarget);
-		assertEquals(buildTarget.getId(), "test.root.1");
 		IConfiguration buildConfig = info.getDefaultConfiguration(buildTarget);
 		assertNotNull(buildConfig);
-		assertEquals(buildConfig.getId(), "test.root.1.0");
 				
 		// The default target should be the same as the one-and-only target in the project
 		List targets = info.getTargets();
@@ -705,7 +695,8 @@
 		// The root tool defines one valid header file extension
 		assertTrue(rootTool.isHeaderFile("baz"));
 		assertTrue(tools[0].isHeaderFile("baz"));
-
+		assertEquals(ITool.FILTER_C, rootTool.getNatureFilter());
+		
 		// Partially Overriden Configuration
 		assertEquals("Root Override Config", configs[1].getName());
 		tools = configs[1].getTools();
@@ -834,7 +825,8 @@
 		assertEquals("lib", subTool.getOutputPrefix());
 		assertTrue(subTool.isHeaderFile("arf"));
 		assertTrue(subTool.isHeaderFile("barf"));
-
+		assertEquals(ITool.FILTER_BOTH, subTool.getNatureFilter());
+		
 		// Do a sanity check on the options 
 		assertEquals("Include Paths", subOpts[0].getName());
 		assertEquals(IOption.INCLUDE_PATH, subOpts[0].getValueType());
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/ChangeLog,v
retrieving revision 1.11
diff -u -r1.11 ChangeLog
--- ChangeLog	1 Oct 2003 14:25:35 -0000	1.11
+++ ChangeLog	1 Oct 2003 19:33:10 -0000
@@ -1,3 +1,30 @@
+2003-10-01 Sean Evoy
+	Fix for bugs 43490 (trivial) and 43980.
+	Added a new field to the schema for a tool. The attribute manages a list of 
+	project natures that the tool should be filtered against in the build model 
+	and UI.
+	* schema/ManagedBuildTools.exsd
+	
+	Updated the ITool interface and its mplementors to pay attention to this new 
+	attribute when loading from a plugin file. Clients can querry for a numeric 
+	constant indicating the filter.
+	* src/org/eclipse/cdt/managedbuilder/core/ITool.java
+	* src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java
+	* src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java
+	
+	All the methods in managed build manager that access information stored in a tool 
+	first check that the tool is valid for the project nature.
+	*  src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java
+	
+	Put a safety check in the option reference constructor when reading one in from 
+	a project file. I the option reference is to an option not managed by the build 
+	model, the constructor does not add itself to the runtime representation of the 
+	model.
+	* src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java
+
+	In preparation for 44020, each new target created is assigned a truly random ID.
+	* src/org/eclipse/cdt/managedbuilder/internal/core/Target.java
+
 2003-09-30 Sean Evoy
 	Fix for bug 41826.
 	
Index: schema/ManagedBuildTools.exsd
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/schema/ManagedBuildTools.exsd,v
retrieving revision 1.5
diff -u -r1.5 ManagedBuildTools.exsd
--- schema/ManagedBuildTools.exsd	1 Oct 2003 14:25:35 -0000	1.5
+++ schema/ManagedBuildTools.exsd	1 Oct 2003 19:33:10 -0000
@@ -118,6 +118,23 @@
                </documentation>
             </annotation>
          </attribute>
+         <attribute name="natureFilter" use="required">
+            <annotation>
+               <documentation>
+                  Filter the display (and use) of the tool by the nature of the project. Selecting a value of &apos;cnature&apos; insures that the tool will be displayed IFF there is a cnature associated with the project. A ccnature will filter this tool out. If &apos;ccnature&apos; is selected, the tool will only be available for C++ projects. If &apos;both&apos; is selected, the tool will be displayed when either nature is present.
+               </documentation>
+            </annotation>
+            <simpleType>
+               <restriction base="string">
+                  <enumeration value="cnature">
+                  </enumeration>
+                  <enumeration value="ccnature">
+                  </enumeration>
+                  <enumeration value="both">
+                  </enumeration>
+               </restriction>
+            </simpleType>
+         </attribute>
       </complexType>
    </element>
 
@@ -149,8 +166,8 @@
          <attribute name="valueType" use="default" value="string">
             <annotation>
                <documentation>
-                  General options can be one of the following types; &apos;string&apos; for catch-all entries for options that cannot be easily defined any other way, &apos;string list&apos; for entries that consist of a list of values such as defined symbols or paths, &apos;boolean&apos; for options that have two values, and &apos;enumerated&apos; for options that are one-of a list of values.
-
+                  General options can be one of the following types; &apos;string&apos; for catch-all entries for options that cannot be easily defined any other way, &apos;string list&apos; for entries that consist of a list of values such as defined symbols or paths, &apos;boolean&apos; for options that have two values, and &apos;enumerated&apos; for options that are one-of a list of values.
+
 Additional special types exist to flag options of special relevance to the build model; &apos;include&apos;, &apos;libs&apos;, &apos;userObjs&apos; and &apos;definedSymbols&apos;. You can pre-populate with optionValues, and they will display in the UI the same way the &apos;stringList&apos; options do. The build model will look specifically for these value types when clients query for include paths and preprocessor defines. The makefile generator will treat the libs and userObjs entries differently than other stringLists.
                </documentation>
             </annotation>
@@ -482,48 +499,48 @@
          <meta.section type="examples"/>
       </appInfo>
       <documentation>
-         The following is an example of the extension point usage:
-&lt;p&gt;
-&lt;pre&gt;
-   &lt;extension
-         id=&quot;buildExample&quot;
-         name=&quot;Tools for Build Example&quot;
-         point=&quot;org.eclipse.cdt.core.ManagedBuildInfo&quot;&gt;
-      &lt;target
-            makeFlags=&quot;-k&quot;
-            isTest=&quot;false&quot;
-            cleanCommand=&quot;rm -rf&quot;
-            name=&quot;Executable&quot;
-            defaultExtension=&quot;.exe&quot;
-            isAbstract=&quot;false&quot;
-            makeCommand=&quot;make&quot;
-            id=&quot;example.target.executable&quot;&gt;
-         &lt;tool
-               sources=&quot;C&quot;
-               name=&quot;Compiler&quot;
-               outputFlag=&quot;-o&quot;
-               outputs=&quot;exe&quot;
-               command=&quot;g++&quot;
-               id=&quot;executable.compiler&quot;&gt;
-            &lt;optionCategory
-                  owner=&quot;executable.compiler&quot;
-                  name=&quot;Flags&quot;
-                  id=&quot;compiler.category.flags&quot;&gt;
-            &lt;/optionCategory&gt;
-            &lt;option
-                  defaultValue=&quot;-c&quot;
-                  name=&quot;Compiler Flags&quot;
-                  category=&quot;compiler.category.flags&quot;
-                  valueType=&quot;string&quot;
-                  id=&quot;category.flags.comp_flags&quot;&gt;
-            &lt;/option&gt;
-         &lt;/tool&gt;
-         &lt;configuration
-               name=&quot;Default&quot;
-               id=&quot;example.config.default&quot;&gt;
-         &lt;/configuration&gt;
-      &lt;/target&gt;
-   &lt;/extension&gt;
+         The following is an example of the extension point usage:
+&lt;p&gt;
+&lt;pre&gt;
+   &lt;extension
+         id=&quot;buildExample&quot;
+         name=&quot;Tools for Build Example&quot;
+         point=&quot;org.eclipse.cdt.core.ManagedBuildInfo&quot;&gt;
+      &lt;target
+            makeFlags=&quot;-k&quot;
+            isTest=&quot;false&quot;
+            cleanCommand=&quot;rm -rf&quot;
+            name=&quot;Executable&quot;
+            defaultExtension=&quot;.exe&quot;
+            isAbstract=&quot;false&quot;
+            makeCommand=&quot;make&quot;
+            id=&quot;example.target.executable&quot;&gt;
+         &lt;tool
+               sources=&quot;C&quot;
+               name=&quot;Compiler&quot;
+               outputFlag=&quot;-o&quot;
+               outputs=&quot;exe&quot;
+               command=&quot;g++&quot;
+               id=&quot;executable.compiler&quot;&gt;
+            &lt;optionCategory
+                  owner=&quot;executable.compiler&quot;
+                  name=&quot;Flags&quot;
+                  id=&quot;compiler.category.flags&quot;&gt;
+            &lt;/optionCategory&gt;
+            &lt;option
+                  defaultValue=&quot;-c&quot;
+                  name=&quot;Compiler Flags&quot;
+                  category=&quot;compiler.category.flags&quot;
+                  valueType=&quot;string&quot;
+                  id=&quot;category.flags.comp_flags&quot;&gt;
+            &lt;/option&gt;
+         &lt;/tool&gt;
+         &lt;configuration
+               name=&quot;Default&quot;
+               id=&quot;example.config.default&quot;&gt;
+         &lt;/configuration&gt;
+      &lt;/target&gt;
+   &lt;/extension&gt;
 &lt;/pre&gt;
       </documentation>
    </annotation>
@@ -551,7 +568,7 @@
          <meta.section type="copyright"/>
       </appInfo>
       <documentation>
-         Copyright (c) 2003 IBM Corporation and others.
+         Copyright (c) 2003 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available on the &lt;a href=&quot;http://www.eclipse.org/legal/cpl-v10.html&quot;&gt; Eclipse&lt;/a&gt; website.
       </documentation>
    </annotation>
Index: src/org/eclipse/cdt/managedbuilder/core/ITool.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITool.java,v
retrieving revision 1.2
diff -u -r1.2 ITool.java
--- src/org/eclipse/cdt/managedbuilder/core/ITool.java	1 Oct 2003 14:25:35 -0000	1.2
+++ src/org/eclipse/cdt/managedbuilder/core/ITool.java	1 Oct 2003 19:33:11 -0000
@@ -15,8 +15,9 @@
  */
 public interface ITool extends IBuildObject {
 	// Schema element names
-	public static final String TOOL_ELEMENT_NAME = "tool";	//$NON-NLS-1$
 	public static final String COMMAND = "command";	//$NON-NLS-1$
+	public static final String INTERFACE_EXTS = "headerExtensions";	//$NON-NLS-1$
+	public static final String NATURE =	"natureFilter";	//$NON-NLS-1$
 	public static final String OPTION = "option";	//$NON-NLS-1$
 	public static final String OPTION_CAT = "optionCategory";	//$NON-NLS-1$
 	public static final String OPTION_REF = "optionReference";	//$NON-NLS-1$
@@ -24,8 +25,12 @@
 	public static final String OUTPUT_PREFIX = "outputPrefix";	//$NON-NLS-1$
 	public static final String OUTPUTS = "outputs";	//$NON-NLS-1$
 	public static final String SOURCES = "sources";	//$NON-NLS-1$
-	public static final String INTERFACE_EXTS = "headerExtensions";	//$NON-NLS-1$
+	public static final String TOOL_ELEMENT_NAME = "tool";	//$NON-NLS-1$
 	public static final String WHITE_SPACE = " ";	//$NON-NLS-1$
+	
+	public static final int FILTER_C = 0;
+	public static final int FILTER_CC = 1;
+	public static final int FILTER_BOTH = 2;
 
 	/**
 	 * Return <code>true</code> if the receiver builds files with the
@@ -35,6 +40,25 @@
 	 * @return boolean
 	 */
 	public boolean buildsFileType(String extension);
+	
+	/**
+	 * Answers a constant corresponding to the project nature the tool should be used 
+	 * for. Possible answers are:
+	 *  
+	 * <dl>
+	 * <dt>ITool.FILTER_C
+	 * <dd>The tool should only be displayed for C projects. <i>Notes:</i> even 
+	 * though a C++ project has a C nature, this flag will mask the tool for C++ 
+	 * projects. 
+	 * <dt>ITool.FILTER_CC
+	 * <dd>The tool should only be displayed for C++ projects.
+	 * <dt>ITool.FILTER_BOTH
+	 * <dd>The tool should be displayed for projects with both natures.
+	 * </dl>
+	 * 
+	 * @return int
+	 */
+	public int getNatureFilter();
 
 	/**
 	 * Get a particular option.
Index: src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java,v
retrieving revision 1.3
diff -u -r1.3 Configuration.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java	29 Sep 2003 01:42:26 -0000	1.3
+++ src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java	1 Oct 2003 19:33:11 -0000
@@ -15,12 +15,16 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.cdt.core.CCProjectNature;
+import org.eclipse.cdt.core.CProjectNature;
 import org.eclipse.cdt.managedbuilder.core.BuildException;
 import org.eclipse.cdt.managedbuilder.core.IConfiguration;
 import org.eclipse.cdt.managedbuilder.core.IOption;
 import org.eclipse.cdt.managedbuilder.core.ITarget;
 import org.eclipse.cdt.managedbuilder.core.ITool;
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -189,8 +193,50 @@
 			? parent.getTools()
 			: target.getTools();
 		
+		// Validate that the tools correspond to the nature
+		IProject project = (IProject)target.getOwner();
+		if (project != null) {
+			List validTools = new ArrayList();
+			
+			// The target is associated with a real project
+			for (int i = 0; i < tools.length; ++i) {
+				ITool tool = tools[i];
+				// Make sure the tool filter and project nature agree
+				switch (tool.getNatureFilter()) {
+					case ITool.FILTER_C:
+						try {
+							if (project.hasNature(CProjectNature.C_NATURE_ID) && !project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+								validTools.add(tool);
+							}
+						} catch (CoreException e) {
+							continue;
+						}
+						break;
+					case ITool.FILTER_CC:
+						try {
+							if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+								validTools.add(tool);
+							}
+						} catch (CoreException e) {
+							continue;
+						}
+						break;
+					case ITool.FILTER_BOTH:
+						validTools.add(tool);
+						break;
+				} 
+			}
+			// Now put the valid tools back into the array
+			tools = (ITool[]) validTools.toArray(new ITool[validTools.size()]);			
+		}
+		
 		// Replace tools with local overrides
 		for (int i = 0; i < tools.length; ++i) {
+			ITool tool = tools[i];
+			if (tool == null) {
+				// May have been filtered out
+				continue;
+			}
 			ToolReference ref = getToolReference(tools[i]);
 			if (ref != null)
 				tools[i] = ref;
Index: src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java,v
retrieving revision 1.6
diff -u -r1.6 ManagedBuildInfo.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java	1 Oct 2003 14:25:35 -0000	1.6
+++ src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java	1 Oct 2003 19:33:11 -0000
@@ -25,8 +25,12 @@
 import org.eclipse.cdt.managedbuilder.core.IOption;
 import org.eclipse.cdt.managedbuilder.core.ITarget;
 import org.eclipse.cdt.managedbuilder.core.ITool;
+import org.eclipse.cdt.core.CCProjectNature;
+import org.eclipse.cdt.core.CProjectNature;
 import org.eclipse.cdt.core.parser.IScannerInfo;
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.w3c.dom.Document;
@@ -34,7 +38,8 @@
 import org.w3c.dom.Node;
 
 public class ManagedBuildInfo implements IManagedBuildInfo, IScannerInfo {
-
+	
+	// Local variables
 	private boolean isDirty;
 	private IResource owner;
 	private Map targetMap;
@@ -97,13 +102,32 @@
 	 * @see org.eclipse.cdt.core.build.managed.IManagedBuildInfo#buildsFileType(java.lang.String)
 	 */
 	public boolean buildsFileType(String srcExt) {
+		// Make sure the owner is treated as a project for the duration
+		IProject project = (IProject)owner;
+
 		// Check to see if there is a rule to build a file with this extension
 		IConfiguration config = getDefaultConfiguration(getDefaultTarget());
 		ITool[] tools = config.getTools();
 		for (int index = 0; index < tools.length; index++) {
 			ITool tool = tools[index];
-			if (tool.buildsFileType(srcExt)) {
-				return true;
+			try {
+				// Make sure the tool is right for the project
+				switch (tool.getNatureFilter()) {
+					case ITool.FILTER_C:
+						if (project.hasNature(CProjectNature.C_NATURE_ID) && !project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							return tool.buildsFileType(srcExt);
+						}
+						break;
+					case ITool.FILTER_CC:
+						if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							return tool.buildsFileType(srcExt);
+						}
+						break;
+					case ITool.FILTER_BOTH:
+						return tool.buildsFileType(srcExt);
+				}
+			} catch (CoreException e) {
+				continue;
 			}
 		}
 		return false;
@@ -183,12 +207,33 @@
 	 * @see org.eclipse.cdt.core.build.managed.IScannerInfo#getDefinedSymbols()
 	 */
 	public Map getDefinedSymbols() {
+		IProject project = (IProject)owner;
 		// Return the defined symbols for the default configuration
 		HashMap symbols = new HashMap();
 		IConfiguration config = getDefaultConfiguration(getDefaultTarget());
 		ITool[] tools = config.getTools();
 		for (int i = 0; i < tools.length; i++) {
 			ITool tool = tools[i];
+			try {
+				// Make sure the tool is right for the project
+				switch (tool.getNatureFilter()) {
+					case ITool.FILTER_C:
+						if (!project.hasNature(CProjectNature.C_NATURE_ID) || project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							continue;
+						}
+						break;
+					case ITool.FILTER_CC:
+						if (!project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							continue;
+						}
+						break;
+					case ITool.FILTER_BOTH:
+						break;
+				}
+			} catch (CoreException e) {
+				continue;
+			}
+			// Now extract the valid tool's options
 			IOption[] opts = tool.getOptions();
 			for (int j = 0; j < opts.length; j++) {
 				IOption option = opts[j];
@@ -229,20 +274,36 @@
 	 * @see org.eclipse.cdt.core.build.managed.IManagedBuildInfo#getFlagsForSource(java.lang.String)
 	 */
 	public String getFlagsForSource(String extension) {
+		IProject project = (IProject)owner;
+
 		// Get all the tools for the current config
 		IConfiguration config = getDefaultConfiguration(getDefaultTarget());
 		ITool[] tools = config.getTools();
 		for (int index = 0; index < tools.length; index++) {
 			ITool tool = tools[index];
 			if (tool.buildsFileType(extension)) {
-				String flags = new String();
 				try {
-					flags = tool.getToolFlags();
+					// Make sure the tool is right for the project
+					switch (tool.getNatureFilter()) {
+						case ITool.FILTER_C:
+							if (project.hasNature(CProjectNature.C_NATURE_ID) && !project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+								return tool.getToolFlags();
+							}
+							break;
+						case ITool.FILTER_CC:
+							if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+								return tool.getToolFlags();
+							}
+							break;
+						case ITool.FILTER_BOTH:
+							return tool.getToolFlags();
+					}
+				} catch (CoreException e) {
+					continue;
 				} catch (BuildException e) {
 					// Give it your best shot with the next tool
 					continue;
 				}
-				return flags;
 			}
 		}
 		return null;
@@ -252,8 +313,9 @@
 	 * @see org.eclipse.cdt.core.build.managed.IManagedBuildInfo#getToolFlags(java.lang.String)
 	 */
 	public String getFlagsForTarget(String extension) {
+		IProject project = (IProject)owner;
 		// Treat null extensions as an empty string
-		String ext = extension == null ? new String()  :  extension;
+		String ext = extension == null ? new String() : extension;
 		
 		// Get all the tools for the current config
 		IConfiguration config = getDefaultConfiguration(getDefaultTarget());
@@ -261,14 +323,28 @@
 		for (int index = 0; index < tools.length; index++) {
 			ITool tool = tools[index];
 			if (tool.producesFileType(ext)) {
-				String flags = new String();
 				try {
-					flags = tool.getToolFlags();
+					// Make sure the tool is right for the project
+					switch (tool.getNatureFilter()) {
+						case ITool.FILTER_C:
+							if (project.hasNature(CProjectNature.C_NATURE_ID) && !project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+								return tool.getToolFlags();
+							}
+							break;
+						case ITool.FILTER_CC:
+							if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+								return tool.getToolFlags();
+							}
+							break;
+						case ITool.FILTER_BOTH:
+							return tool.getToolFlags();
+					}
+				} catch (CoreException e) {
+					continue;
 				} catch (BuildException e) {
-					// Somehow the model is out of sync for this item. Keep iterating
+					// Give it your best shot with the next tool
 					continue;
 				}
-				return flags;
 			}
 		}
 		return null;
@@ -278,6 +354,8 @@
 	 * @see org.eclipse.cdt.core.build.managed.IScannerInfo#getIncludePaths()
 	 */
 	public String[] getIncludePaths() {
+		IProject project = (IProject)owner;
+		
 		// Return the include paths for the default configuration
 		ArrayList paths = new ArrayList();
 		IConfiguration config = getDefaultConfiguration(getDefaultTarget());
@@ -285,6 +363,26 @@
 		ITool[] tools = config.getTools();
 		for (int i = 0; i < tools.length; i++) {
 			ITool tool = tools[i];
+			try {
+				// Make sure the tool is right for the project
+				switch (tool.getNatureFilter()) {
+					case ITool.FILTER_C:
+						if (!project.hasNature(CProjectNature.C_NATURE_ID) || project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							continue;
+						}
+						break;
+					case ITool.FILTER_CC:
+						if (!project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							continue;
+						}
+						break;
+					case ITool.FILTER_BOTH:
+						break;
+				}
+			} catch (CoreException e) {
+				continue;
+			}
+			// The tool checks out for this project, get its options
 			IOption[] opts = tool.getOptions();
 			for (int j = 0; j < opts.length; j++) {
 				IOption option = opts[j];
@@ -318,12 +416,34 @@
 	 * @see org.eclipse.cdt.core.build.managed.IManagedBuildInfo#getLibsForTarget(java.lang.String)
 	 */
 	public String[] getLibsForTarget(String extension) {
+		IProject project = (IProject)owner;
+		
 		ArrayList libs = new ArrayList();
 		// Get all the tools for the current config
 		IConfiguration config = getDefaultConfiguration(getDefaultTarget());
 		ITool[] tools = config.getTools();
 		for (int index = 0; index < tools.length; index++) {
 			ITool tool = tools[index];
+			try {
+				// Make sure the tool is right for the project
+				switch (tool.getNatureFilter()) {
+					case ITool.FILTER_C:
+						if (!project.hasNature(CProjectNature.C_NATURE_ID) || project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							continue;
+						}
+						break;
+					case ITool.FILTER_CC:
+						if (!project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							continue;
+						}
+						break;
+					case ITool.FILTER_BOTH:
+						break;
+				}
+			} catch (CoreException e) {
+				continue;
+			}
+			// The tool is OK for this project nature
 			if (tool.producesFileType(extension)) {
 				IOption[] opts = tool.getOptions();
 				// Look for the lib option type
@@ -398,14 +518,30 @@
 	 * @see org.eclipse.cdt.core.build.managed.IManagedBuildInfo#getOutputExtension(java.lang.String)
 	 */
 	public String getOutputExtension(String resourceExtension) {
+		IProject project = (IProject)owner;
 		// Get all the tools for the current config
 		IConfiguration config = getDefaultConfiguration(getDefaultTarget());
 		ITool[] tools = config.getTools();
 		for (int index = 0; index < tools.length; index++) {
 			ITool tool = tools[index];
-			String output = tool.getOutputExtension(resourceExtension);
-			if (output != null) {
-				return output;
+			try {
+				// Make sure the tool is right for the project
+				switch (tool.getNatureFilter()) {
+					case ITool.FILTER_C:
+						if (project.hasNature(CProjectNature.C_NATURE_ID) && !project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							return tool.getOutputExtension(resourceExtension);
+						}
+						break;
+					case ITool.FILTER_CC:
+						if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							return tool.getOutputExtension(resourceExtension);
+						}
+						break;
+					case ITool.FILTER_BOTH:
+						return tool.getOutputExtension(resourceExtension);
+				}
+			} catch (CoreException e) {
+				continue;
 			}
 		}
 		return null;
@@ -415,6 +551,7 @@
 	 * @see org.eclipse.cdt.core.build.managed.IManagedBuildInfo#getOutputFlag()
 	 */
 	public String getOutputFlag(String outputExt) {
+		IProject project = (IProject)owner;
 		// Treat null extension as an empty string
 		String ext = outputExt == null ? new String() : outputExt;
 		
@@ -424,6 +561,26 @@
 		ITool[] tools = config.getTools();
 		for (int index = 0; index < tools.length; index++) {
 			ITool tool = tools[index];
+			try {
+				// Make sure the tool is right for the project
+				switch (tool.getNatureFilter()) {
+					case ITool.FILTER_C:
+						if (!project.hasNature(CProjectNature.C_NATURE_ID) || project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							continue;
+						}
+						break;
+					case ITool.FILTER_CC:
+						if (!project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							continue;
+						}
+						break;
+					case ITool.FILTER_BOTH:
+						break;
+				}
+			} catch (CoreException e) {
+				continue;
+			}
+			// It's OK
 			if (tool.producesFileType(ext)) {
 				flags = tool.getOutputFlag();
 			}
@@ -435,6 +592,7 @@
 	 * @see org.eclipse.cdt.core.build.managed.IManagedBuildInfo#getOutputPrefix(java.lang.String)
 	 */
 	public String getOutputPrefix(String outputExtension) {
+		IProject project = (IProject)owner;
 		// Treat null extensions as empty string
 		String ext = outputExtension == null ? new String() : outputExtension;
 		
@@ -444,6 +602,25 @@
 		ITool[] tools = config.getTools();
 		for (int index = 0; index < tools.length; index++) {
 			ITool tool = tools[index];
+			try {
+				// Make sure the tool is right for the project
+				switch (tool.getNatureFilter()) {
+					case ITool.FILTER_C:
+						if (!project.hasNature(CProjectNature.C_NATURE_ID) || project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							continue;
+						}
+						break;
+					case ITool.FILTER_CC:
+						if (!project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							continue;
+						}
+						break;
+					case ITool.FILTER_BOTH:
+						break;
+				}
+			} catch (CoreException e) {
+				continue;
+			}
 			if (tool.producesFileType(ext)) {
 				flags = tool.getOutputPrefix();
 			}
@@ -473,13 +650,33 @@
 	 * @see org.eclipse.cdt.core.build.managed.IManagedBuildInfo#getToolForSource(java.lang.String)
 	 */
 	public String getToolForSource(String extension) {
+		IProject project = (IProject)owner;
+
 		// Get all the tools for the current config
 		IConfiguration config = getDefaultConfiguration(getDefaultTarget());
 		ITool[] tools = config.getTools();
 		for (int index = 0; index < tools.length; index++) {
 			ITool tool = tools[index];
 			if (tool.buildsFileType(extension)) {
-				return tool.getToolCommand();
+				try {
+					// Make sure the tool is right for the project
+					switch (tool.getNatureFilter()) {
+						case ITool.FILTER_C:
+							if (project.hasNature(CProjectNature.C_NATURE_ID) && !project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+								return tool.getToolCommand();
+							}
+							break;
+						case ITool.FILTER_CC:
+							if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+								return tool.getToolCommand();
+							}
+							break;
+						case ITool.FILTER_BOTH:
+							return tool.getToolCommand();
+					}
+				} catch (CoreException e) {
+					continue;
+				}
 			}
 		}
 		return null;
@@ -489,6 +686,8 @@
 	 * @see org.eclipse.cdt.core.build.managed.IManagedBuildInfo#getToolInvocation(java.lang.String)
 	 */
 	public String getToolForTarget(String extension) {
+		IProject project = (IProject)owner;
+
 		// Treat a null argument as an empty string
 		String ext = extension == null ? new String() : extension;
 		// Get all the tools for the current config
@@ -497,7 +696,25 @@
 		for (int index = 0; index < tools.length; index++) {
 			ITool tool = tools[index];
 			if (tool.producesFileType(ext)) {
-				return tool.getToolCommand();
+				try {
+					// Make sure the tool is right for the project
+					switch (tool.getNatureFilter()) {
+						case ITool.FILTER_C:
+							if (project.hasNature(CProjectNature.C_NATURE_ID) && !project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+								return tool.getToolCommand();
+							}
+							break;
+						case ITool.FILTER_CC:
+							if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+								return tool.getToolCommand();
+							}
+							break;
+						case ITool.FILTER_BOTH:
+							return tool.getToolCommand();
+					}
+				} catch (CoreException e) {
+					continue;
+				}
 			}
 		}
 		return null;
@@ -507,12 +724,33 @@
 	 * @see org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo#getUserObjectsForTarget(java.lang.String)
 	 */
 	public String[] getUserObjectsForTarget(String extension) {
+		IProject project = (IProject)owner;
 		ArrayList objs = new ArrayList();
 		// Get all the tools for the current config
 		IConfiguration config = getDefaultConfiguration(getDefaultTarget());
 		ITool[] tools = config.getTools();
 		for (int index = 0; index < tools.length; index++) {
 			ITool tool = tools[index];
+			try {
+				// Make sure the tool is right for the project
+				switch (tool.getNatureFilter()) {
+					case ITool.FILTER_C:
+						if (!project.hasNature(CProjectNature.C_NATURE_ID) || project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							continue;
+						}
+						break;
+					case ITool.FILTER_CC:
+						if (!project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							continue;
+						}
+						break;
+					case ITool.FILTER_BOTH:
+						break;
+				}
+			} catch (CoreException e) {
+				continue;
+			}
+			// The tool is OK for this project nature
 			if (tool.producesFileType(extension)) {
 				IOption[] opts = tool.getOptions();
 				// Look for the user object option type
@@ -543,13 +781,31 @@
 	 * @see org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo#isHeaderFile(java.lang.String)
 	 */
 	public boolean isHeaderFile(String ext) {
+		IProject project = (IProject)owner;
+
 		// Check to see if there is a rule to build a file with this extension
 		IConfiguration config = getDefaultConfiguration(getDefaultTarget());
 		ITool[] tools = config.getTools();
 		for (int index = 0; index < tools.length; index++) {
 			ITool tool = tools[index];
-			if (tool.isHeaderFile(ext)) {
-				return true;
+			try {
+				// Make sure the tool is right for the project
+				switch (tool.getNatureFilter()) {
+					case ITool.FILTER_C:
+						if (project.hasNature(CProjectNature.C_NATURE_ID) && !project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							return tool.isHeaderFile(ext);
+						}
+						break;
+					case ITool.FILTER_CC:
+						if (project.hasNature(CCProjectNature.CC_NATURE_ID)) {
+							return tool.isHeaderFile(ext);
+						}
+						break;
+					case ITool.FILTER_BOTH:
+						return tool.isHeaderFile(ext);
+				}
+			} catch (CoreException e) {
+				continue;
 			}
 		}
 		return false;
Index: src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java,v
retrieving revision 1.3
diff -u -r1.3 OptionReference.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java	26 Sep 2003 19:54:24 -0000	1.3
+++ src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java	1 Oct 2003 19:33:11 -0000
@@ -120,6 +120,12 @@
 		this.owner = owner;	
 		option = owner.getTool().getOption(element.getAttribute(ID));
 		
+		// Bail now if there's no option for the reference
+		if (option == null) {
+			return;
+		}
+		
+		// Hook the reference up		
 		owner.addOptionReference(this);
 
 		// value
Index: src/org/eclipse/cdt/managedbuilder/internal/core/Target.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Target.java,v
retrieving revision 1.4
diff -u -r1.4 Target.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/Target.java	26 Sep 2003 00:20:12 -0000	1.4
+++ src/org/eclipse/cdt/managedbuilder/internal/core/Target.java	1 Oct 2003 19:33:11 -0000
@@ -16,6 +16,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Random;
 import java.util.StringTokenizer;
 
 import org.eclipse.cdt.managedbuilder.core.IConfiguration;
@@ -66,7 +67,12 @@
 		
 		// Copy the parent's identity
 		this.parent = parent;
-		setId(parent.getId() + ".1");		
+		Random r = new Random();
+		int id = r.nextInt();
+		if (id < 0) {
+			id *= -1;
+		}
+		setId(owner.getName() + "." + parent.getId() + "." + id);		
 		setName(parent.getName());
 		this.artifactName = parent.getArtifactName();
 		this.binaryParserId = parent.getBinaryParserId();
Index: src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java,v
retrieving revision 1.3
diff -u -r1.3 Tool.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java	1 Oct 2003 14:25:35 -0000	1.3
+++ src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java	1 Oct 2003 19:33:11 -0000
@@ -41,6 +41,7 @@
 	private String command;
 	private List inputExtensions;
 	private List interfaceExtensions;
+	private int natureFilter;
 	private Map optionMap;
 	private List options;
 	private String outputExtension;
@@ -71,6 +72,18 @@
 		// name
 		setName(element.getAttribute(ITool.NAME));
 		
+		// Get the nature filter
+		String nature = element.getAttribute(NATURE);
+		if (nature == null || "both".equals(nature)) {
+			natureFilter = FILTER_BOTH;
+		} else if ("cnature".equals(nature)) {
+			natureFilter = FILTER_C;
+		} else if ("ccnature".equals(nature)) {
+			natureFilter = FILTER_CC;
+		} else {
+			natureFilter = FILTER_BOTH;
+		}
+		
 		// Get the supported input file extension
 		String inputs = element.getAttribute(ITool.SOURCES) == null ? 
 			new String() : 
@@ -348,6 +361,13 @@
 
 		myOptions.trimToSize();
 		return (IOption[])myOptions.toArray(new IOption[myOptions.size()]);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.managedbuilder.core.ITool#getNatureFilter()
+	 */
+	public int getNatureFilter() {
+		return natureFilter;
 	}
 
 	/* (non-Javadoc)
Index: src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java,v
retrieving revision 1.3
diff -u -r1.3 ToolReference.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java	1 Oct 2003 14:25:35 -0000	1.3
+++ src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java	1 Oct 2003 19:33:12 -0000
@@ -232,6 +232,7 @@
 	 * @see org.eclipse.cdt.core.build.managed.ITool#getOutputFlag()
 	 */
 	public String getOutputFlag() {
+		// The tool reference does not override this value
 		return parent.getOutputFlag();
 	}
 
@@ -239,6 +240,7 @@
 	 * @see org.eclipse.cdt.core.build.managed.ITool#getOutputPrefix()
 	 */
 	public String getOutputPrefix() {
+		// The tool reference does not override this value
 		return parent.getOutputPrefix();
 	}
 
@@ -253,6 +255,7 @@
 	 * @see org.eclipse.cdt.core.build.managed.ITool#getTopOptionCategory()
 	 */
 	public IOptionCategory getTopOptionCategory() {
+		// The tool reference does not override this value
 		return parent.getTopOptionCategory();
 	}
 
@@ -260,6 +263,7 @@
 	 * @see org.eclipse.cdt.managedbuilder.core.ITool#isHeaderFile(java.lang.String)
 	 */
 	public boolean isHeaderFile(String ext) {
+		// The tool reference does not override this value
 		return parent.isHeaderFile(ext);
 	}
 
@@ -267,6 +271,7 @@
 	 * @see org.eclipse.cdt.core.build.managed.ITool#producesFileType(java.lang.String)
 	 */
 	public boolean producesFileType(String outputExtension) {
+		// The tool reference does not override this value
 		return parent.producesFileType(outputExtension);
 	}
 
@@ -279,6 +284,7 @@
 	 * @see org.eclipse.cdt.core.build.managed.IBuildObject#getId()
 	 */
 	public String getId() {
+		// The tool reference does not override this value
 		return parent.getId();
 	}
 
@@ -286,23 +292,17 @@
 	 * @see org.eclipse.cdt.core.build.managed.IBuildObject#getName()
 	 */
 	public String getName() {
+		// The tool reference does not override this value
 		return parent.getName();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.build.managed.IBuildObject#setId(java.lang.String)
-	 */
-	public void setId(String id) {
-		// Not allowed
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.core.build.managed.IBuildObject#setName(java.lang.String)
+	/**
+	 * Answers <code>true</code> if the reference is a reference to the 
+	 * tool specified in the argument.
+	 * 
+	 * @param target the tool that should be tested
+	 * @return boolean
 	 */
-	public void setName(String name) {
-		// Not allowed
-	}
-
 	public boolean references(ITool target) {
 		if (equals(target)) {
 			// we are the target
@@ -367,10 +367,19 @@
 	 * @see org.eclipse.cdt.core.build.managed.ITool#handlesFileType(java.lang.String)
 	 */
 	public boolean buildsFileType(String extension) {
+		// The tool reference does not override this value
 		return parent.buildsFileType(extension);
 	}
 
 	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.managedbuilder.core.ITool#getNatureFilter()
+	 */
+	public int getNatureFilter() {
+		// The tool reference does not override this value
+		return parent.getNatureFilter();
+	}
+
+	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.core.build.managed.ITool#getOption(java.lang.String)
 	 */
 	public IOption getOption(String id) {
@@ -382,6 +391,7 @@
 	 * @see org.eclipse.cdt.core.build.managed.ITool#getOutput(java.lang.String)
 	 */
 	public String getOutputExtension(String inputExtension) {
+		// The tool reference does not override this value
 		return parent.getOutputExtension(inputExtension);
 	}
 
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.ui/ChangeLog,v
retrieving revision 1.7
diff -u -r1.7 ChangeLog
--- ChangeLog	1 Oct 2003 14:25:31 -0000	1.7
+++ ChangeLog	1 Oct 2003 19:33:22 -0000
@@ -1,3 +1,14 @@
+2003-10-01 Sean Evoy
+	Fix for bugs 43490 (trivial) and 43980.
+	Updated the plugin file to contain tool definitions for C compilers and linkers 
+	for all supported platforms. This effectively doubles the size! I also corrected a 
+	wizard specification that had the new ManagedCWizard using the C++ icon.
+	* plugin.xml
+	
+	Changed the new project wizard to generate a unique ID for each new target in 
+	preparation for bug 44020.
+	* src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectWizard.java
+
 2003-09-30 Sean Evoy
 	Fix for bug 41826.
 
Index: plugin.properties
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.ui/plugin.properties,v
retrieving revision 1.4
diff -u -r1.4 plugin.properties
--- plugin.properties	26 Sep 2003 19:54:33 -0000	1.4
+++ plugin.properties	1 Oct 2003 19:33:22 -0000
@@ -11,9 +11,11 @@
 ConfigName.Rel=Release
 ConfigName.Dbg=Debug
 ToolName.preprocessor = Preprocessor
-ToolName.compiler = Compiler
+ToolName.compiler.c = C Compiler
+ToolName.compiler.cpp = C++ Compiler
 ToolName.archiver = Archiver
-ToolName.linker = Linker
+ToolName.linker.c = C Linker
+ToolName.linker.cpp = C++ Linker
 OptionCategory.Preproc = Preprocessor
 OptionCategory.Dirs = Directories
 OptionCategory.General = General
@@ -36,6 +38,7 @@
 
 Option.Posix.Verbose=Verbose (-v)
 Option.OtherFlags=Other flags
+Option.Posix.Ansi=Support ANSI programs (-ansi)
 
 Option.Posix.Linker.NoStartFiles=Do not use standard start files (-nostartfiles)
 Option.Posix.Linker.NoDefLibs=Do not use default libraries (-nodefaultlibs)
Index: plugin.xml
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.ui/plugin.xml,v
retrieving revision 1.8
diff -u -r1.8 plugin.xml
--- plugin.xml	1 Oct 2003 14:25:31 -0000	1.8
+++ plugin.xml	1 Oct 2003 19:33:23 -0000
@@ -37,7 +37,7 @@
       </wizard>
       <wizard
             name="%MngCWizard.name"
-            icon="icons/full/wizban/newmngcc_app.gif"
+            icon="icons/full/wizban/newmngc_app.gif"
             category="org.eclipse.cdt.ui.newCWizards"
             class="org.eclipse.cdt.managedbuilder.ui.wizards.NewManagedCProjectWizard"
             project="true"
@@ -77,52 +77,46 @@
             makeFlags="-k"
             osList="win32">
          <tool
-               sources="c,cc,cpp,cxx,C"
-               name="%ToolName.compiler"
-               headerExtensions="h,H,hpp"
+               natureFilter="cnature"
+               sources="c"
+               name="%ToolName.compiler.c"
+               headerExtensions="h"
                outputFlag="-o"
                outputs="o"
-               command="g++"
-               id="org.eclipse.cdt.build.tool.cygwin.compiler">
+               command="gcc"
+               id="cdt.build.tool.cygwin.gnu.c.compiler">
             <optionCategory
-                  owner="org.eclipse.cdt.build.tool.cygwin.compiler"
+                  owner="cdt.build.tool.cygwin.gnu.c.compiler"
                   name="%OptionCategory.Preproc"
-                  id="cygwin.compiler.category.preprocessor">
+                  id="cygwin.gnu.c.compiler.category.preprocessor">
             </optionCategory>
             <option
                   defaultValue="false"
                   name="%Option.Posix.Nostdinc"
-                  category="cygwin.compiler.category.preprocessor"
+                  category="cygwin.gnu.c.compiler.category.preprocessor"
                   command="-nostdinc"
                   valueType="boolean"
-                  id="cygwin.gnu.compiler.preprocessor.nostdinc">
+                  id="cygwin.gnu.c.compiler.preprocessor.nostdinc">
             </option>
             <option
                   defaultValue="false"
                   name="%Option.Posix.PreprocOnly"
-                  category="cygwin.compiler.category.preprocessor"
+                  category="cygwin.gnu.c.compiler.category.preprocessor"
                   command="-E"
                   valueType="boolean"
-                  id="cygwin.gnu.compiler.preprocessor.preprocess">
-            </option>
-            <option
-                  name="Answers (-A)"
-                  category="cygwin.compiler.category.preprocessor"
-                  command="-A"
-                  valueType="stringList"
-                  id="cygwin.gnu.preprocessor.answers">
+                  id="cygwin.gnu.c.compiler.preprocessor.preprocess">
             </option>
             <optionCategory
-                  owner="org.eclipse.cdt.build.tool.cygwin.compiler"
+                  owner="cdt.build.tool.cygwin.gnu.c.compiler"
                   name="Symbols"
-                  id="cygwin.gnu.compiler.category.symbols">
+                  id="cygwin.gnu.c.compiler.category.symbols">
             </optionCategory>
             <option
                   name="%Option.Posix.DefSym"
-                  category="cygwin.gnu.compiler.category.symbols"
+                  category="cygwin.gnu.c.compiler.category.symbols"
                   command="-D"
                   valueType="definedSymbols"
-                  id="cygwin.preprocessor.def.symbols">
+                  id="cygwin.gnu.c.preprocessor.def.symbols">
                <listOptionValue
                      value="_X86_=1"
                      builtIn="true">
@@ -214,377 +208,901 @@
             </option>
             <option
                   name="%Option.Posix.UndefSym"
-                  category="cygwin.gnu.compiler.category.symbols"
+                  category="cygwin.gnu.c.compiler.category.symbols"
                   command="-U"
                   valueType="stringList"
-                  id="cygwin.preprocessor.undef.symbol">
+                  id="cygwin.gnu.c.preprocessor.undef.symbol">
             </option>
             <optionCategory
+                  owner="cdt.build.tool.cygwin.gnu.c.compiler"
                   name="%OptionCategory.Dirs"
-                  id="cygwin.gnu.compiler.category.dirs"
-                  owner="org.eclipse.cdt.build.tool.cygwin.compiler">
+                  id="cygwin.gnu.c.compiler.category.dirs">
             </optionCategory>
             <option
                   name="Include Paths"
-                  category="cygwin.gnu.compiler.category.dirs"
+                  category="cygwin.gnu.c.compiler.category.dirs"
                   command="-I"
                   valueType="includePath"
-                  id="cygwin.compiler.general.include.paths">
+                  id="cygwin.gnu.c.compiler.general.include.paths">
                <listOptionValue
                      value="C:\cygwin\usr\include\w32api"
                      builtIn="true">
                </listOptionValue>
             </option>
             <optionCategory
+                  owner="cdt.build.tool.cygwin.gnu.c.compiler"
                   name="%OptionCategory.Optimize"
-                  id="cygwin.gnu.compiler.category.optimization"
-                  owner="org.eclipse.cdt.build.tool.cygwin.compiler">
+                  id="cygwin.gnu.c.compiler.category.optimization">
             </optionCategory>
             <option
                   name="Optimization Level"
-                  category="cygwin.gnu.compiler.category.optimization"
+                  category="cygwin.gnu.c.compiler.category.optimization"
                   valueType="enumerated"
-                  id="cygwin.compiler.general.optimization.level">
+                  id="cygwin.gnu.c.compiler.general.optimization.level">
                <enumeratedOptionValue
                      name="%Option.Posix.Optimize.None"
                      isDefault="false"
                      command="-O0"
-                     id="cygwin.optimization.level.none">
+                     id="cygwin.gnu.c.optimization.level.none">
                </enumeratedOptionValue>
                <enumeratedOptionValue
                      name="%Option.Posix.Optimize.Optimize"
                      command="-O1"
-                     id="cygwin.optimization.level.optimize">
+                     id="cygwin.gnu.c.optimization.level.optimize">
                </enumeratedOptionValue>
                <enumeratedOptionValue
                      name="%Option.Posix.Optimize.More"
                      isDefault="true"
                      command="-O2"
-                     id="cygwin.optimization.level.more">
+                     id="cygwin.gnu.c.optimization.level.more">
                </enumeratedOptionValue>
                <enumeratedOptionValue
                      name="%Option.Posix.Optimize.Most"
                      command="-O3"
-                     id="cygwin.optimization.level.most">
+                     id="cygwin.gnu.c.optimization.level.most">
                </enumeratedOptionValue>
             </option>
             <option
-                  category="cygwin.gnu.compiler.category.optimization"
                   name="Other optimization flags"
-                  id="cygwin.compiler.optimization.flags"
-                  valueType="string">
+                  category="cygwin.gnu.c.compiler.category.optimization"
+                  valueType="string"
+                  id="cygwin.gnu.c.compiler.optimization.flags">
             </option>
             <optionCategory
+                  owner="cdt.build.tool.cygwin.gnu.c.compiler"
                   name="%OptionCategory.Debug"
-                  id="cygwin.gnu.compiler.category.debug"
-                  owner="org.eclipse.cdt.build.tool.cygwin.compiler">
+                  id="cygwin.gnu.c.compiler.category.debug">
             </optionCategory>
             <option
                   name="Debug Level"
-                  category="cygwin.gnu.compiler.category.debug"
+                  category="cygwin.gnu.c.compiler.category.debug"
                   valueType="enumerated"
-                  id="cygwin.compiler.debugging.level">
+                  id="cygwin.c.compiler.debugging.level">
                <enumeratedOptionValue
                      name="None"
                      isDefault="false"
-                     id="cygwin.debugging.level.none">
+                     id="cygwin.gnu.c.debugging.level.none">
                </enumeratedOptionValue>
                <enumeratedOptionValue
                      name="Minimal (-g1)"
                      command="-g1"
-                     id="cygwin.debugging.level.minimal">
+                     id="cygwin.gnu.c.debugging.level.minimal">
                </enumeratedOptionValue>
                <enumeratedOptionValue
                      name="Default (-g)"
                      isDefault="true"
                      command="-g"
-                     id="cygwin.debugging.level.default">
+                     id="cygwin.gnu.c.debugging.level.default">
                </enumeratedOptionValue>
                <enumeratedOptionValue
                      name="Maximum (-g3)"
                      isDefault="false"
                      command="-g3"
-                     id="cygwin.debugging.level.max">
+                     id="cygwin.gnu.c.debugging.level.max">
                </enumeratedOptionValue>
             </option>
             <option
-                  category="cygwin.gnu.compiler.category.debug"
                   name="Other debugging flags"
-                  id="cygwin.gnu.compiler.debugging.other"
-                  valueType="string">
+                  category="cygwin.gnu.c.compiler.category.debug"
+                  valueType="string"
+                  id="cygwin.gnu.c.compiler.debugging.other">
             </option>
             <option
-                  category="cygwin.gnu.compiler.category.debug"
-                  id="cygwin.gnu.compiler.debugging.prof"
-                  command="-p"
-                  name="Generate prof information (-p)"
                   defaultValue="false"
-                  valueType="boolean">
+                  name="Generate gprof information (-pg)"
+                  category="cygwin.gnu.c.compiler.category.debug"
+                  command="-pg"
+                  valueType="boolean"
+                  id="cygwin.gnu.c.compiler.debugging.gprof">
             </option>
             <option
-                  category="cygwin.gnu.compiler.category.debug"
-                  id="cygwin.gnu.compiler.debugging.gprof"
-                  command="-pg"
-                  name="Generate gprof information (-pg)"
                   defaultValue="false"
-                  valueType="boolean">
+                  name="Generate prof information (-p)"
+                  category="cygwin.gnu.c.compiler.category.debug"
+                  command="-p"
+                  valueType="boolean"
+                  id="cygwin.gnu.c.compiler.debugging.prof">
             </option>
             <optionCategory
-                  owner="org.eclipse.cdt.build.tool.cygwin.compiler"
+                  owner="cdt.build.tool.cygwin.gnu.c.compiler"
                   name="%OptionCategory.Warn"
-                  id="cygwin.compiler.category.warnings">
+                  id="cygwin.c.compiler.category.warnings">
             </optionCategory>
             <option
                   defaultValue="false"
                   name="Check syntax only (-fsyntax-only)"
-                  category="cygwin.compiler.category.warnings"
+                  category="cygwin.c.compiler.category.warnings"
                   command="-fsyntax-only"
                   valueType="boolean"
-                  id="cygwin.gnu.compiler.warnings.syntax">
+                  id="cygwin.gnu.c.compiler.warnings.syntax">
             </option>
             <option
                   defaultValue="false"
                   name="Pedantic (-pedantic)"
-                  category="cygwin.compiler.category.warnings"
+                  category="cygwin.c.compiler.category.warnings"
                   command="-pedantic"
                   valueType="boolean"
-                  id="cygwin.gnu.compiler.warnings.pedantic">
+                  id="cygwin.gnu.c.compiler.warnings.pedantic">
             </option>
             <option
                   defaultValue="false"
                   name="Pedantic warnings as errors (-pedantic-errors)"
-                  category="cygwin.compiler.category.warnings"
+                  category="cygwin.c.compiler.category.warnings"
                   command="-pedantic-errors"
                   valueType="boolean"
-                  id="cygwin.gnu.compiler.warnings.pedantic.error">
+                  id="cygwin.gnu.c.compiler.warnings.pedantic.error">
             </option>
             <option
                   defaultValue="false"
                   name="Inhibit all warnings (-w)"
-                  category="cygwin.compiler.category.warnings"
+                  category="cygwin.c.compiler.category.warnings"
                   command="-w"
                   valueType="boolean"
-                  id="cygwin.gnu.compiler.warnings.nowarn">
+                  id="cygwin.gnu.c.compiler.warnings.nowarn">
             </option>
             <option
                   defaultValue="true"
                   name="All warnings (-Wall)"
-                  category="cygwin.compiler.category.warnings"
+                  category="cygwin.c.compiler.category.warnings"
                   command="-Wall"
                   valueType="boolean"
-                  id="cygwin.gnu.compiler.warnings.allwarn">
+                  id="cygwin.gnu.c.compiler.warnings.allwarn">
             </option>
             <option
                   defaultValue="false"
                   name="Warnings as errors (-werror)"
-                  category="cygwin.compiler.category.warnings"
+                  category="cygwin.c.compiler.category.warnings"
                   command="-werror"
                   valueType="boolean"
-                  id="cygwin.gnu.compiler.warnings.toerrors">
+                  id="cygwin.gnu.c.compiler.warnings.toerrors">
             </option>
             <optionCategory
-                  owner="cdt.build.tool.linux.gnu.compiler"
+                  owner="cdt.build.tool.cygwin.gnu.c.compiler"
                   name="%OptionCategory.Misc"
-                  id="cygwin.compiler.category.other">
+                  id="cygwin.c.compiler.category.other">
             </optionCategory>
             <option
                   defaultValue="-c"
                   name="%Option.OtherFlags"
-                  category="cygwin.compiler.category.other"
+                  category="cygwin.c.compiler.category.other"
                   valueType="string"
-                  id="cygwin.compiler.misc.other">
+                  id="cygwin.gnu.c.compiler.misc.other">
             </option>
             <option
                   defaultValue="false"
                   name="%Option.Posix.Verbose"
-                  category="cygwin.compiler.category.other"
+                  category="cygwin.c.compiler.category.other"
                   command="-v"
                   valueType="boolean"
-                  id="cygwin.compiler.misc.verbose">
+                  id="cygwin.gnu.c.compiler.misc.verbose">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Ansi"
+                  category="cygwin.c.compiler.category.other"
+                  command="-ansi"
+                  valueType="boolean"
+                  id="cygwin.gnu.c.compiler.misc.ansi">
             </option>
          </tool>
-      </target>
-      <target
-            isTest="false"
-            name="Cygwin Executable"
-            parent="cygwin"
-            binaryParser="org.eclipse.cdt.core.PE"
-            defaultExtension="exe"
-            isAbstract="false"
-            id="cygwin.exec">
-         <configuration
-               name="%ConfigName.Rel"
-               id="cygwin.exec.release">
-            <toolReference
-                  id="org.eclipse.cdt.build.tool.cygwin.compiler">
-               <optionReference
-                     defaultValue="Optimize most (-O3)"
-                     command="-O3"
-                     id="cygwin.compiler.general.optimization.level">
-               </optionReference>
-               <optionReference
-                     defaultValue="None"
-                     id="cygwin.compiler.debugging.level">
-               </optionReference>
-            </toolReference>
-         </configuration>
-         <configuration
-               name="%ConfigName.Dbg"
-               id="cygwin.exec.debug">
-            <toolReference
-                  id="org.eclipse.cdt.build.tool.cygwin.compiler">
-               <optionReference
-                     defaultValue="None (-O0)"
-                     command="-O0"
-                     id="cygwin.compiler.general.optimization.level">
-               </optionReference>
-               <optionReference
-                     defaultValue="Maximum (-g3)"
-                     command="-g3"
-                     id="cygwin.compiler.debugging.level">
-               </optionReference>
-            </toolReference>
-         </configuration>
          <tool
-               name="%ToolName.linker"
+               natureFilter="ccnature"
+               sources="c,cc,cpp,cxx,C"
+               name="%ToolName.compiler.cpp"
+               headerExtensions="h,H,hpp"
                outputFlag="-o"
-               outputs="exe"
+               outputs="o"
                command="g++"
-               id="org.eclipse.cdt.build.tool.cygwin.link">
+               id="org.eclipse.cdt.build.tool.cygwin.compiler">
             <optionCategory
-                  owner="org.eclipse.cdt.build.tool.cygwin.link"
-                  name="%OptionCategory.General"
-                  id="cygwin.linker.category.general">
+                  owner="org.eclipse.cdt.build.tool.cygwin.compiler"
+                  name="%OptionCategory.Preproc"
+                  id="cygwin.compiler.category.preprocessor">
             </optionCategory>
             <option
                   defaultValue="false"
-                  name="%Option.Posix.Linker.NoStartFiles"
-                  category="cygwin.linker.category.general"
-                  command="-nostartfiles"
-                  valueType="boolean"
-                  id="linux.gnu.linker.options.nostart">
-            </option>
-            <option
-                  defaultValue="false"
-                  name="%Option.Posix.Linker.NoDefLibs"
-                  category="cygwin.linker.category.general"
-                  command="-nodefaultlibs"
-                  valueType="boolean"
-                  id="cygwin.gnu.linker.options.nodeflibs">
-            </option>
-            <option
-                  defaultValue="false"
-                  name="%Option.Posix.Linker.NoStdLibs"
-                  category="cygwin.linker.category.general"
-                  command="-nostdlib"
-                  valueType="boolean"
-                  id="cygwin.gnu.linker.options.nostdlibs">
-            </option>
-            <option
-                  defaultValue="false"
-                  name="%Option.Posix.Linker.Strip"
-                  category="linux.gnu.linker.category.options"
-                  command="-s"
+                  name="%Option.Posix.Nostdinc"
+                  category="cygwin.compiler.category.preprocessor"
+                  command="-nostdinc"
                   valueType="boolean"
-                  id="cygwin.gnu.linker.options.strip">
+                  id="cygwin.gnu.compiler.preprocessor.nostdinc">
             </option>
             <option
                   defaultValue="false"
-                  name="%Option.Posix.Linker.Static"
-                  category="cygwin.linker.category.general"
-                  command="-static"
+                  name="%Option.Posix.PreprocOnly"
+                  category="cygwin.compiler.category.preprocessor"
+                  command="-E"
                   valueType="boolean"
-                  id="cygwin.gnu.linker.options.noshared">
-            </option>
-            <optionCategory
-                  owner="org.eclipse.cdt.build.tool.cygwin.link"
-                  name="%OptionCategory.Libs"
-                  id="cygwin.gnu.linker.category.libs">
-            </optionCategory>
-            <option
-                  name="%Option.Posix.Libs"
-                  category="cygwin.gnu.linker.category.libs"
-                  command="-l"
-                  valueType="libs"
-                  id="cygwin.link.libs">
-            </option>
-            <option
-                  name="%Option.Posix.Libsearch"
-                  category="cygwin.gnu.linker.category.libs"
-                  command="-L"
-                  valueType="stringList"
-                  id="cygwin.link.ld.paths">
+                  id="cygwin.gnu.compiler.preprocessor.preprocess">
             </option>
             <optionCategory
-                  owner="org.eclipse.cdt.build.tool.cygwin.link"
-                  name="%OptionCategory.Misc"
-                  id="cygwin.gnu.linker.category.other">
+                  owner="org.eclipse.cdt.build.tool.cygwin.compiler"
+                  name="Symbols"
+                  id="cygwin.gnu.compiler.category.symbols">
             </optionCategory>
             <option
-                  name="Linker Flags"
-                  category="cygwin.gnu.linker.category.other"
-                  valueType="string"
-                  id="cygwin.link.ld.flags">
-            </option>
-            <option
-                  name="%Option.Posix.Linker.XLinker"
-                  category="cygwin.gnu.linker.category.other"
-                  command="-Xlinker"
-                  valueType="stringList"
-                  id="cygwin.gnu.linker.options.other">
-            </option>
-            <option
-                  name="%Option.Posix.UserObjs"
-                  category="cygwin.gnu.linker.category.other"
-                  valueType="userObjs"
-                  id="cygwin.gnu.link.ld.userobjs">
-            </option>
-         </tool>
-      </target>
-      <target
-            isTest="false"
-            name="Cygwin Shared Library"
-            parent="cygwin"
-            binaryParser="org.eclipse.cdt.core.PE"
-            defaultExtension="dll"
-            isAbstract="false"
-            id="cygwin.so">
-         <configuration
-               name="%ConfigName.Rel"
-               id="cygwin.so.release">
-            <toolReference
-                  id="org.eclipse.cdt.build.tool.cygwin.compiler">
-               <optionReference
-                     defaultValue="Optimize most (-O3)"
-                     command="-O3"
-                     id="cygwin.compiler.general.optimization.level">
-               </optionReference>
-               <optionReference
-                     defaultValue="None"
-                     id="cygwin.compiler.debugging.level">
-               </optionReference>
-            </toolReference>
-         </configuration>
-         <configuration
-               name="%ConfigName.Dbg"
-               id="cygwin.so.debug">
-            <toolReference
-                  id="org.eclipse.cdt.build.tool.cygwin.compiler">
-               <optionReference
-                     defaultValue="None (-O0)"
-                     command="-O0"
-                     id="cygwin.compiler.general.optimization.level">
-               </optionReference>
-               <optionReference
-                     defaultValue="Maximum (-g3)"
-                     command="-g3"
-                     id="cygwin.compiler.debugging.level">
-               </optionReference>
-            </toolReference>
-         </configuration>
-         <tool
-               name="%ToolName.linker"
-               outputFlag="-o"
+                  name="%Option.Posix.DefSym"
+                  category="cygwin.gnu.compiler.category.symbols"
+                  command="-D"
+                  valueType="definedSymbols"
+                  id="cygwin.preprocessor.def.symbols">
+               <listOptionValue
+                     value="_X86_=1"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__OPTIMIZE__"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__STDC_HOSTED__=1"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="i386"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__i386"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__i386__"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__tune_i686__"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__tune_pentiumpro__"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__tune_pentium2__"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__tune_pentium3__"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__stdcall=__attribute__((__stdcall__))"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__fastcall=__attribute__((__fastcall__))"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__cdecl=__attribute__((__cdecl__))"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="_stdcall=__attribute__((__stdcall__))"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="_fastcall=__attribute__((__fastcall__))"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="_cdecl=__attribute__((__cdecl__))"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__declspec(x)=__attribute__((x))"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__CYGWIN32__"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__CYGWIN__"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="unix"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__unix__"
+                     builtIn="true">
+               </listOptionValue>
+               <listOptionValue
+                     value="__unix"
+                     builtIn="true">
+               </listOptionValue>
+            </option>
+            <option
+                  name="%Option.Posix.UndefSym"
+                  category="cygwin.gnu.compiler.category.symbols"
+                  command="-U"
+                  valueType="stringList"
+                  id="cygwin.preprocessor.undef.symbol">
+            </option>
+            <optionCategory
+                  owner="org.eclipse.cdt.build.tool.cygwin.compiler"
+                  name="%OptionCategory.Dirs"
+                  id="cygwin.gnu.compiler.category.dirs">
+            </optionCategory>
+            <option
+                  name="Include Paths"
+                  category="cygwin.gnu.compiler.category.dirs"
+                  command="-I"
+                  valueType="includePath"
+                  id="cygwin.compiler.general.include.paths">
+               <listOptionValue
+                     value="C:\cygwin\usr\include\w32api"
+                     builtIn="true">
+               </listOptionValue>
+            </option>
+            <optionCategory
+                  owner="org.eclipse.cdt.build.tool.cygwin.compiler"
+                  name="%OptionCategory.Optimize"
+                  id="cygwin.gnu.compiler.category.optimization">
+            </optionCategory>
+            <option
+                  name="Optimization Level"
+                  category="cygwin.gnu.compiler.category.optimization"
+                  valueType="enumerated"
+                  id="cygwin.compiler.general.optimization.level">
+               <enumeratedOptionValue
+                     name="%Option.Posix.Optimize.None"
+                     isDefault="false"
+                     command="-O0"
+                     id="cygwin.optimization.level.none">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="%Option.Posix.Optimize.Optimize"
+                     command="-O1"
+                     id="cygwin.optimization.level.optimize">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="%Option.Posix.Optimize.More"
+                     isDefault="true"
+                     command="-O2"
+                     id="cygwin.optimization.level.more">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="%Option.Posix.Optimize.Most"
+                     command="-O3"
+                     id="cygwin.optimization.level.most">
+               </enumeratedOptionValue>
+            </option>
+            <option
+                  name="Other optimization flags"
+                  category="cygwin.gnu.compiler.category.optimization"
+                  valueType="string"
+                  id="cygwin.compiler.optimization.flags">
+            </option>
+            <optionCategory
+                  owner="org.eclipse.cdt.build.tool.cygwin.compiler"
+                  name="%OptionCategory.Debug"
+                  id="cygwin.gnu.compiler.category.debug">
+            </optionCategory>
+            <option
+                  name="Debug Level"
+                  category="cygwin.gnu.compiler.category.debug"
+                  valueType="enumerated"
+                  id="cygwin.compiler.debugging.level">
+               <enumeratedOptionValue
+                     name="None"
+                     isDefault="false"
+                     id="cygwin.debugging.level.none">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="Minimal (-g1)"
+                     command="-g1"
+                     id="cygwin.debugging.level.minimal">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="Default (-g)"
+                     isDefault="true"
+                     command="-g"
+                     id="cygwin.debugging.level.default">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="Maximum (-g3)"
+                     isDefault="false"
+                     command="-g3"
+                     id="cygwin.debugging.level.max">
+               </enumeratedOptionValue>
+            </option>
+            <option
+                  name="Other debugging flags"
+                  category="cygwin.gnu.compiler.category.debug"
+                  valueType="string"
+                  id="cygwin.gnu.compiler.debugging.other">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Generate prof information (-p)"
+                  category="cygwin.gnu.compiler.category.debug"
+                  command="-p"
+                  valueType="boolean"
+                  id="cygwin.gnu.compiler.debugging.prof">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Generate gprof information (-pg)"
+                  category="cygwin.gnu.compiler.category.debug"
+                  command="-pg"
+                  valueType="boolean"
+                  id="cygwin.gnu.compiler.debugging.gprof">
+            </option>
+            <optionCategory
+                  owner="org.eclipse.cdt.build.tool.cygwin.compiler"
+                  name="%OptionCategory.Warn"
+                  id="cygwin.compiler.category.warnings">
+            </optionCategory>
+            <option
+                  defaultValue="false"
+                  name="Check syntax only (-fsyntax-only)"
+                  category="cygwin.compiler.category.warnings"
+                  command="-fsyntax-only"
+                  valueType="boolean"
+                  id="cygwin.gnu.compiler.warnings.syntax">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Pedantic (-pedantic)"
+                  category="cygwin.compiler.category.warnings"
+                  command="-pedantic"
+                  valueType="boolean"
+                  id="cygwin.gnu.compiler.warnings.pedantic">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Pedantic warnings as errors (-pedantic-errors)"
+                  category="cygwin.compiler.category.warnings"
+                  command="-pedantic-errors"
+                  valueType="boolean"
+                  id="cygwin.gnu.compiler.warnings.pedantic.error">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Inhibit all warnings (-w)"
+                  category="cygwin.compiler.category.warnings"
+                  command="-w"
+                  valueType="boolean"
+                  id="cygwin.gnu.compiler.warnings.nowarn">
+            </option>
+            <option
+                  defaultValue="true"
+                  name="All warnings (-Wall)"
+                  category="cygwin.compiler.category.warnings"
+                  command="-Wall"
+                  valueType="boolean"
+                  id="cygwin.gnu.compiler.warnings.allwarn">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Warnings as errors (-werror)"
+                  category="cygwin.compiler.category.warnings"
+                  command="-werror"
+                  valueType="boolean"
+                  id="cygwin.gnu.compiler.warnings.toerrors">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.compiler"
+                  name="%OptionCategory.Misc"
+                  id="cygwin.compiler.category.other">
+            </optionCategory>
+            <option
+                  defaultValue="-c"
+                  name="%Option.OtherFlags"
+                  category="cygwin.compiler.category.other"
+                  valueType="string"
+                  id="cygwin.compiler.misc.other">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Verbose"
+                  category="cygwin.compiler.category.other"
+                  command="-v"
+                  valueType="boolean"
+                  id="cygwin.compiler.misc.verbose">
+            </option>
+         </tool>
+      </target>
+      <target
+            isTest="false"
+            name="Cygwin Executable"
+            parent="cygwin"
+            binaryParser="org.eclipse.cdt.core.PE"
+            defaultExtension="exe"
+            isAbstract="false"
+            id="cygwin.exec">
+         <configuration
+               name="%ConfigName.Rel"
+               id="cygwin.exec.release">
+            <toolReference
+                  id="org.eclipse.cdt.build.tool.cygwin.compiler">
+               <optionReference
+                     defaultValue="Optimize most (-O3)"
+                     command="-O3"
+                     id="cygwin.compiler.general.optimization.level">
+               </optionReference>
+               <optionReference
+                     defaultValue="None"
+                     id="cygwin.compiler.debugging.level">
+               </optionReference>
+            </toolReference>
+         </configuration>
+         <configuration
+               name="%ConfigName.Dbg"
+               id="cygwin.exec.debug">
+            <toolReference
+                  id="org.eclipse.cdt.build.tool.cygwin.compiler">
+               <optionReference
+                     defaultValue="None (-O0)"
+                     command="-O0"
+                     id="cygwin.compiler.general.optimization.level">
+               </optionReference>
+               <optionReference
+                     defaultValue="Maximum (-g3)"
+                     command="-g3"
+                     id="cygwin.compiler.debugging.level">
+               </optionReference>
+            </toolReference>
+         </configuration>
+         <tool
+               natureFilter="cnature"
+               name="%ToolName.linker.c"
+               outputFlag="-o"
+               outputs="exe"
+               command="gcc"
+               id="cdt.build.tool.cygwin.c.link">
+            <optionCategory
+                  owner="cdt.build.tool.cygwin.c.link"
+                  name="%OptionCategory.General"
+                  id="cygwin.gnu.c.linker.category.general">
+            </optionCategory>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoStartFiles"
+                  category="cygwin.gnu.c.linker.category.general"
+                  command="-nostartfiles"
+                  valueType="boolean"
+                  id="cygwin.gnu.c.link.options.nostart">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoDefLibs"
+                  category="cygwin.gnu.c.linker.category.general"
+                  command="-nodefaultlibs"
+                  valueType="boolean"
+                  id="cygwin.gnu.c.link.options.nodeflibs">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoStdLibs"
+                  category="cygwin.gnu.c.linker.category.general"
+                  command="-nostdlib"
+                  valueType="boolean"
+                  id="cygwin.gnu.c.link.options.nostdlibs">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Strip"
+                  category="cygwin.gnu.c.linker.category.general"
+                  command="-s"
+                  valueType="boolean"
+                  id="cygwin.gnu.c.link.options.strip">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Static"
+                  category="cygwin.gnu.c.linker.category.general"
+                  command="-static"
+                  valueType="boolean"
+                  id="cygwin.gnu.c.link.options.noshared">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.cygwin.c.link"
+                  name="%OptionCategory.Libs"
+                  id="cygwin.gnu.c.linker.category.libs">
+            </optionCategory>
+            <option
+                  name="%Option.Posix.Libs"
+                  category="cygwin.gnu.c.linker.category.libs"
+                  command="-l"
+                  valueType="libs"
+                  id="cygwin.gnu.c.link.libs">
+            </option>
+            <option
+                  name="%Option.Posix.Libsearch"
+                  category="cygwin.gnu.c.linker.category.libs"
+                  command="-L"
+                  valueType="stringList"
+                  id="cygwin.gnu.c.link.paths">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.cygwin.c.link"
+                  name="%OptionCategory.Misc"
+                  id="cygwin.gnu.c.linker.category.other">
+            </optionCategory>
+            <option
+                  name="Linker Flags"
+                  category="cygwin.gnu.c.linker.category.other"
+                  valueType="string"
+                  id="cygwin.gnu.c.link.ldflags">
+            </option>
+            <option
+                  name="%Option.Posix.Linker.XLinker"
+                  category="cygwin.gnu.c.linker.category.other"
+                  command="-Xlinker"
+                  valueType="stringList"
+                  id="cygwin.gnu.c.link.options.other">
+            </option>
+            <option
+                  name="%Option.Posix.UserObjs"
+                  category="cygwin.gnu.c.linker.category.other"
+                  valueType="userObjs"
+                  id="cygwin.gnu.c.link.ld.userobjs">
+            </option>
+         </tool>
+         <tool
+               natureFilter="ccnature"
+               name="%ToolName.linker.cpp"
+               outputFlag="-o"
+               outputs="exe"
+               command="g++"
+               id="org.eclipse.cdt.build.tool.cygwin.link">
+            <optionCategory
+                  owner="org.eclipse.cdt.build.tool.cygwin.link"
+                  name="%OptionCategory.General"
+                  id="cygwin.linker.category.general">
+            </optionCategory>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoStartFiles"
+                  category="cygwin.linker.category.general"
+                  command="-nostartfiles"
+                  valueType="boolean"
+                  id="cygwin.gnu.linker.options.nostart">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoDefLibs"
+                  category="cygwin.linker.category.general"
+                  command="-nodefaultlibs"
+                  valueType="boolean"
+                  id="cygwin.gnu.linker.options.nodeflibs">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoStdLibs"
+                  category="cygwin.linker.category.general"
+                  command="-nostdlib"
+                  valueType="boolean"
+                  id="cygwin.gnu.linker.options.nostdlibs">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Strip"
+                  category="cygwin.linker.category.general"
+                  command="-s"
+                  valueType="boolean"
+                  id="cygwin.gnu.linker.options.strip">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Static"
+                  category="cygwin.linker.category.general"
+                  command="-static"
+                  valueType="boolean"
+                  id="cygwin.gnu.linker.options.noshared">
+            </option>
+            <optionCategory
+                  owner="org.eclipse.cdt.build.tool.cygwin.link"
+                  name="%OptionCategory.Libs"
+                  id="cygwin.gnu.linker.category.libs">
+            </optionCategory>
+            <option
+                  name="%Option.Posix.Libs"
+                  category="cygwin.gnu.linker.category.libs"
+                  command="-l"
+                  valueType="libs"
+                  id="cygwin.link.libs">
+            </option>
+            <option
+                  name="%Option.Posix.Libsearch"
+                  category="cygwin.gnu.linker.category.libs"
+                  command="-L"
+                  valueType="stringList"
+                  id="cygwin.link.ld.paths">
+            </option>
+            <optionCategory
+                  owner="org.eclipse.cdt.build.tool.cygwin.link"
+                  name="%OptionCategory.Misc"
+                  id="cygwin.gnu.linker.category.other">
+            </optionCategory>
+            <option
+                  name="Linker Flags"
+                  category="cygwin.gnu.linker.category.other"
+                  valueType="string"
+                  id="cygwin.link.ld.flags">
+            </option>
+            <option
+                  name="%Option.Posix.Linker.XLinker"
+                  category="cygwin.gnu.linker.category.other"
+                  command="-Xlinker"
+                  valueType="stringList"
+                  id="cygwin.gnu.linker.options.other">
+            </option>
+            <option
+                  name="%Option.Posix.UserObjs"
+                  category="cygwin.gnu.linker.category.other"
+                  valueType="userObjs"
+                  id="cygwin.gnu.link.ld.userobjs">
+            </option>
+         </tool>
+      </target>
+      <target
+            isTest="false"
+            name="Cygwin Shared Library"
+            parent="cygwin"
+            binaryParser="org.eclipse.cdt.core.PE"
+            defaultExtension="dll"
+            isAbstract="false"
+            id="cygwin.so">
+         <configuration
+               name="%ConfigName.Rel"
+               id="cygwin.so.release">
+            <toolReference
+                  id="org.eclipse.cdt.build.tool.cygwin.compiler">
+               <optionReference
+                     defaultValue="Optimize most (-O3)"
+                     command="-O3"
+                     id="cygwin.compiler.general.optimization.level">
+               </optionReference>
+               <optionReference
+                     defaultValue="None"
+                     id="cygwin.compiler.debugging.level">
+               </optionReference>
+            </toolReference>
+         </configuration>
+         <configuration
+               name="%ConfigName.Dbg"
+               id="cygwin.so.debug">
+            <toolReference
+                  id="org.eclipse.cdt.build.tool.cygwin.compiler">
+               <optionReference
+                     defaultValue="None (-O0)"
+                     command="-O0"
+                     id="cygwin.compiler.general.optimization.level">
+               </optionReference>
+               <optionReference
+                     defaultValue="Maximum (-g3)"
+                     command="-g3"
+                     id="cygwin.compiler.debugging.level">
+               </optionReference>
+            </toolReference>
+         </configuration>
+         <tool
+               natureFilter="cnature"
+               name="%ToolName.linker.c"
+               outputFlag="-o"
+               outputs="dll"
+               outputPrefix="lib"
+               command="gcc -shared"
+               id="cdt.build.tool.cygwin.c.solink">
+            <optionCategory
+                  owner="cdt.build.tool.cygwin.c.solink"
+                  name="%OptionCategory.General"
+                  id="cygwin.gnu.c.solink.category.general">
+            </optionCategory>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoStartFiles"
+                  category="cygwin.gnu.c.solink.category.general"
+                  command="-nostartfiles"
+                  valueType="boolean"
+                  id="cygwin.gnu.c.solink.options.nostart">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoDefLibs"
+                  category="cygwin.gnu.c.solink.category.general"
+                  command="-nodefaultlibs"
+                  valueType="boolean"
+                  id="cygwin.gnu.c.solink.options.nodeflibs">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoStdLibs"
+                  category="cygwin.gnu.c.solink.category.general"
+                  command="-nostdlib"
+                  valueType="boolean"
+                  id="cygwin.gnu.c.solink.options.nostdlibs">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Strip"
+                  category="cygwin.gnu.c.solink.category.general"
+                  command="-s"
+                  valueType="boolean"
+                  id="cygwin.gnu.c.solink.options.strip">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Static"
+                  category="cygwin.gnu.c.solink.category.general"
+                  command="-static"
+                  valueType="boolean"
+                  id="cygwin.gnu.c.solink.options.noshared">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.cygwin.c.solink"
+                  name="%OptionCategory.Libs"
+                  id="cygwin.gnu.c.solink.category.libs">
+            </optionCategory>
+            <option
+                  name="%Option.Posix.Libs"
+                  category="cygwin.gnu.c.solink.category.libs"
+                  command="-l"
+                  valueType="libs"
+                  id="cygwin.gnu.c.solink.libs">
+            </option>
+            <option
+                  name="%Option.Posix.Libsearch"
+                  category="cygwin.gnu.c.solink.category.libs"
+                  command="-L"
+                  valueType="stringList"
+                  id="cygwin.gnu.c.solink.paths">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.cygwin.c.solink"
+                  name="%OptionCategory.Misc"
+                  id="cygwin.gnu.c.solink.category.other">
+            </optionCategory>
+            <option
+                  name="Linker Flags"
+                  category="cygwin.gnu.c.solink.category.other"
+                  valueType="string"
+                  id="cygwin.gnu.c.solink.ldflags">
+            </option>
+            <option
+                  name="%Option.Posix.Linker.XLinker"
+                  category="cygwin.gnu.c.solink.category.other"
+                  command="-Xlinker"
+                  valueType="stringList"
+                  id="cygwin.gnu.c.solink.options.other">
+            </option>
+            <option
+                  name="%Option.Posix.UserObjs"
+                  category="cygwin.gnu.c.solink.category.other"
+                  valueType="userObjs"
+                  id="cygwin.gnu.c.solink.userobjs">
+            </option>
+         </tool>
+         <tool
+               natureFilter="ccnature"
+               name="%ToolName.linker.cpp"
+               outputFlag="-o"
                outputs="dll"
                outputPrefix="lib"
                command="g++ -shared"
@@ -600,7 +1118,7 @@
                   category="cygwin.gnu.solink.category.general"
                   command="-nostartfiles"
                   valueType="boolean"
-                  id="linux.gnu.solink.options.nostart">
+                  id="cygwin.gnu.solink.options.nostart">
             </option>
             <option
                   defaultValue="false"
@@ -714,7 +1232,8 @@
             </toolReference>
          </configuration>
          <tool
-               name="%ToolName.linker"
+               natureFilter="ccnature"
+               name="%ToolName.linker.cpp"
                outputFlag="-o"
                outputs="dll"
                outputPrefix="cyg"
@@ -790,38 +1309,337 @@
             </toolReference>
          </configuration>
          <tool
+               natureFilter="both"
                name="%ToolName.archiver"
                outputs="a"
                outputPrefix="lib"
                command="ar"
                id="org.eclipse.cdt.build.tool.cygwin.ar">
             <optionCategory
-                  owner="org.eclipse.cdt.build.tool.cygwin.ar"
-                  name="%OptionCategory.General"
-                  id="cygwin.ar.category.general">
+                  owner="org.eclipse.cdt.build.tool.cygwin.ar"
+                  name="%OptionCategory.General"
+                  id="cygwin.ar.category.general">
+            </optionCategory>
+            <option
+                  defaultValue="-r"
+                  name="Archiver Flags"
+                  category="cygwin.ar.category.general"
+                  valueType="string"
+                  id="cygwin.ar.flags">
+            </option>
+         </tool>
+      </target>
+      <target
+            name="Linux"
+            id="linux.gnu"
+            cleanCommand="rm -rf"
+            isTest="false"
+            isAbstract="true"
+            makeCommand="make"
+            binaryParser="org.eclipse.cdt.core.ELF"
+            makeFlags="-k"
+            osList="linux">
+         <tool
+               natureFilter="cnature"
+               sources="c"
+               name="%ToolName.compiler.c"
+               headerExtensions="h"
+               outputFlag="-o"
+               outputs="o"
+               command="gcc"
+               id="cdt.build.tool.linux.gnu.c.compiler">
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.c.compiler"
+                  name="%OptionCategory.Preproc"
+                  id="linux.gnu.c.compiler.category.preprocessor">
+            </optionCategory>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Nostdinc"
+                  category="linux.gnu.c.compiler.category.preprocessor"
+                  command="-nostdinc"
+                  valueType="boolean"
+                  id="linux.gnu.c.compiler.preprocessor.nostdinc">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.PreprocOnly"
+                  category="linux.gnu.c.compiler.category.preprocessor"
+                  command="-E"
+                  valueType="boolean"
+                  id="linux.gnu.c.compiler.preprocessor.preprocess">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.c.compiler"
+                  name="Symbols"
+                  id="linux.gnu.c.compiler.category.symbols">
+            </optionCategory>
+            <option
+                  name="%Option.Posix.DefSym"
+                  category="linux.gnu.c.compiler.category.symbols"
+                  command="-D"
+                  valueType="definedSymbols"
+                  id="linux.gnu.c.preprocessor.def.symbols">
+               <listOptionValue
+                     builtIn="true"
+                     value="__ELF__">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="unix">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__gnu_linux__">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="linux">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__unix__">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__linux__">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__unix">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__linux">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__OPTIMIZE__">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__STDC_HOSTED__=1">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="_GNU_SOURCE">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="i386">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__i386">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__i386__">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__tune_i386__">
+               </listOptionValue>
+            </option>
+            <option
+                  name="%Option.Posix.UndefSym"
+                  category="linux.gnu.c.compiler.category.symbols"
+                  command="-U"
+                  valueType="stringList"
+                  id="linux.gnu.c.preprocessor.undef.symbol">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.c.compiler"
+                  name="%OptionCategory.Dirs"
+                  id="linux.gnu.c.compiler.category.dirs">
+            </optionCategory>
+            <option
+                  name="Include Paths"
+                  category="linux.gnu.c.compiler.category.dirs"
+                  command="-I"
+                  valueType="includePath"
+                  id="linux.gnu.c.compiler.general.include.paths">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.c.compiler"
+                  name="%OptionCategory.Optimize"
+                  id="linux.gnu.c.compiler.category.optimization">
+            </optionCategory>
+            <option
+                  name="Optimization Level"
+                  category="linux.gnu.c.compiler.category.optimization"
+                  valueType="enumerated"
+                  id="linux.gnu.c.compiler.general.optimization.level">
+               <enumeratedOptionValue
+                     name="%Option.Posix.Optimize.None"
+                     isDefault="false"
+                     command="-O0"
+                     id="linux.gnu.c.optimization.level.none">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="%Option.Posix.Optimize.Optimize"
+                     command="-O1"
+                     id="linux.gnu.c.optimization.level.optimize">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="%Option.Posix.Optimize.More"
+                     isDefault="true"
+                     command="-O2"
+                     id="linux.gnu.c.optimization.level.more">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="%Option.Posix.Optimize.Most"
+                     command="-O3"
+                     id="linux.gnu.c.optimization.level.most">
+               </enumeratedOptionValue>
+            </option>
+            <option
+                  name="Other optimization flags"
+                  category="linux.gnu.c.compiler.category.optimization"
+                  valueType="string"
+                  id="linux.gnu.c.compiler.optimization.flags">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.c.compiler"
+                  name="%OptionCategory.Debug"
+                  id="linux.gnu.c.compiler.category.debug">
+            </optionCategory>
+            <option
+                  name="Debug Level"
+                  category="linux.gnu.c.compiler.category.debug"
+                  valueType="enumerated"
+                  id="linux.c.compiler.debugging.level">
+               <enumeratedOptionValue
+                     name="None"
+                     isDefault="false"
+                     id="linux.gnu.c.debugging.level.none">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="Minimal (-g1)"
+                     command="-g1"
+                     id="linux.gnu.c.debugging.level.minimal">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="Default (-g)"
+                     isDefault="true"
+                     command="-g"
+                     id="linux.gnu.c.debugging.level.default">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="Maximum (-g3)"
+                     isDefault="false"
+                     command="-g3"
+                     id="linux.gnu.c.debugging.level.max">
+               </enumeratedOptionValue>
+            </option>
+            <option
+                  name="Other debugging flags"
+                  category="linux.gnu.c.compiler.category.debug"
+                  valueType="string"
+                  id="linux.gnu.c.compiler.debugging.other">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Generate gprof information (-pg)"
+                  category="linux.gnu.c.compiler.category.debug"
+                  command="-pg"
+                  valueType="boolean"
+                  id="linux.gnu.c.compiler.debugging.gprof">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Generate prof information (-p)"
+                  category="linux.gnu.c.compiler.category.debug"
+                  command="-p"
+                  valueType="boolean"
+                  id="linux.gnu.c.compiler.debugging.prof">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.c.compiler"
+                  name="%OptionCategory.Warn"
+                  id="linux.c.compiler.category.warnings">
+            </optionCategory>
+            <option
+                  defaultValue="false"
+                  name="Check syntax only (-fsyntax-only)"
+                  category="linux.c.compiler.category.warnings"
+                  command="-fsyntax-only"
+                  valueType="boolean"
+                  id="linux.gnu.c.compiler.warnings.syntax">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Pedantic (-pedantic)"
+                  category="linux.c.compiler.category.warnings"
+                  command="-pedantic"
+                  valueType="boolean"
+                  id="linux.gnu.c.compiler.warnings.pedantic">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Pedantic warnings as errors (-pedantic-errors)"
+                  category="linux.c.compiler.category.warnings"
+                  command="-pedantic-errors"
+                  valueType="boolean"
+                  id="linux.gnu.c.compiler.warnings.pedantic.error">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Inhibit all warnings (-w)"
+                  category="linux.c.compiler.category.warnings"
+                  command="-w"
+                  valueType="boolean"
+                  id="linux.gnu.c.compiler.warnings.nowarn">
+            </option>
+            <option
+                  defaultValue="true"
+                  name="All warnings (-Wall)"
+                  category="linux.c.compiler.category.warnings"
+                  command="-Wall"
+                  valueType="boolean"
+                  id="linux.gnu.c.compiler.warnings.allwarn">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Warnings as errors (-werror)"
+                  category="linux.c.compiler.category.warnings"
+                  command="-werror"
+                  valueType="boolean"
+                  id="linux.gnu.c.compiler.warnings.toerrors">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.c.compiler"
+                  name="%OptionCategory.Misc"
+                  id="linux.c.compiler.category.other">
             </optionCategory>
             <option
-                  defaultValue="-r"
-                  name="Archiver Flags"
-                  category="cygwin.ar.category.general"
+                  defaultValue="-c"
+                  name="%Option.OtherFlags"
+                  category="linux.c.compiler.category.other"
                   valueType="string"
-                  id="cygwin.ar.flags">
+                  id="linux.gnu.c.compiler.misc.other">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Verbose"
+                  category="linux.c.compiler.category.other"
+                  command="-v"
+                  valueType="boolean"
+                  id="linux.gnu.c.compiler.misc.verbose">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Ansi"
+                  category="linux.c.compiler.category.other"
+                  command="-ansi"
+                  valueType="boolean"
+                  id="linux.gnu.c.compiler.misc.ansi">
             </option>
          </tool>
-      </target>
-      <target
-            name="Linux"
-            id="linux.gnu"
-            cleanCommand="rm -rf"
-            isTest="false"
-            isAbstract="true"
-            makeCommand="make"
-            binaryParser="org.eclipse.cdt.core.ELF"
-            makeFlags="-k"
-            osList="linux">
          <tool
+               natureFilter="ccnature"
                sources="c,C,cc,cxx,cpp"
-               name="%ToolName.compiler"
+               name="%ToolName.compiler.cpp"
                headerExtensions="h,H,hpp"
                outputFlag="-o"
                outputs="o"
@@ -975,151 +1793,382 @@
                </enumeratedOptionValue>
             </option>
             <option
-                  name="Other optimization flags"
-                  category="linux.gnu.compiler.category.optimization"
-                  valueType="string"
-                  id="linux.compiler.optimization.flags">
+                  name="Other optimization flags"
+                  category="linux.gnu.compiler.category.optimization"
+                  valueType="string"
+                  id="linux.compiler.optimization.flags">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.compiler"
+                  name="%OptionCategory.Debug"
+                  id="linux.gnu.compiler.category.debug">
+            </optionCategory>
+            <option
+                  name="Debug Level"
+                  category="linux.gnu.compiler.category.debug"
+                  valueType="enumerated"
+                  id="linux.gnu.compiler.debugging.level">
+               <enumeratedOptionValue
+                     name="None"
+                     isDefault="false"
+                     id="linux.gnu.compiler.debugging.level.none">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="Minimal (-g1)"
+                     command="-g1"
+                     id="linux.gnu.compiler.debugging.level.minimal">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="Default (-g)"
+                     isDefault="true"
+                     command="-g"
+                     id="linux.gnu.compiler.debugging.level.default">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="Maximum (-g3)"
+                     isDefault="false"
+                     command="-g3"
+                     id="linux.gnu.compiler.debugging.level.max">
+               </enumeratedOptionValue>
+            </option>
+            <option
+                  name="Other debugging flags"
+                  category="linux.gnu.compiler.category.debug"
+                  valueType="string"
+                  id="linux.gnu.compiler.debugging.other">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Generate prof information (-p)"
+                  category="linux.gnu.compiler.category.debug"
+                  command="-p"
+                  valueType="boolean"
+                  id="linux.gnu.compiler.debugging.prof">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Generate gprof information (-pg)"
+                  category="linux.gnu.compiler.category.debug"
+                  command="-pg"
+                  valueType="boolean"
+                  id="linux.gnu.compiler.debugging.gprof">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.compiler"
+                  name="%OptionCategory.Warn"
+                  id="linux.gnu.compiler.category.warnings">
+            </optionCategory>
+            <option
+                  defaultValue="false"
+                  name="Check syntax only (-fsyntax-only)"
+                  category="linux.gnu.compiler.category.warnings"
+                  command="-fsyntax-only"
+                  valueType="boolean"
+                  id="linux.gnu.compiler.warnings.syntax">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Pedantic (-pedantic)"
+                  category="linux.gnu.compiler.category.warnings"
+                  command="-pedantic"
+                  valueType="boolean"
+                  id="linux.gnu.compiler.warnings.pedantic">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Pedantic warnings as errors (-pedantic-errors)"
+                  category="linux.gnu.compiler.category.warnings"
+                  command="-pedantic-errors"
+                  valueType="boolean"
+                  id="linux.gnu.compiler.warnings.pedantic.error">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Inhibit all warnings (-w)"
+                  category="linux.gnu.compiler.category.warnings"
+                  command="-w"
+                  valueType="boolean"
+                  id="linux.gnu.compiler.warnings.nowarn">
+            </option>
+            <option
+                  defaultValue="true"
+                  name="All warnings (-Wall)"
+                  category="linux.gnu.compiler.category.warnings"
+                  command="-Wall"
+                  valueType="boolean"
+                  id="linux.gnu.compiler.warnings.allwarn">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Warnings as errors (-werror)"
+                  category="linux.gnu.compiler.category.warnings"
+                  command="-werror"
+                  valueType="boolean"
+                  id="linux.gnu.compiler.warnings.toerrors">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.compiler"
+                  name="%OptionCategory.Misc"
+                  id="linux.gnu.compiler.category.other">
+            </optionCategory>
+            <option
+                  defaultValue="-c"
+                  name="%Option.OtherFlags"
+                  category="linux.gnu.compiler.category.other"
+                  valueType="string"
+                  id="linux.gnu.compiler.other.other">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Verbose"
+                  category="linux.gnu.compiler.category.other"
+                  command="-v"
+                  valueType="boolean"
+                  id="linux.gnu.compiler.other.verbose">
+            </option>
+         </tool>
+      </target>
+      <target
+            isTest="false"
+            name="Linux Executable"
+            parent="linux.gnu"
+            binaryParser="org.eclipse.cdt.core.ELF"
+            isAbstract="false"
+            id="linux.gnu.exec">
+         <configuration
+               name="%ConfigName.Rel"
+               id="linux.gnu.exec.release">
+            <toolReference
+                  id="cdt.build.tool.linux.gnu.compiler">
+               <optionReference
+                     defaultValue="Optimize most (-O3)"
+                     id="linux.gnu.compiler.optimization.level">
+               </optionReference>
+               <optionReference
+                     defaultValue="None"
+                     id="linux.gnu.compiler.debugging.level">
+               </optionReference>
+            </toolReference>
+         </configuration>
+         <configuration
+               name="%ConfigName.Dbg"
+               id="linux.gnu.exec.debug">
+            <toolReference
+                  id="cdt.build.tool.linux.gnu.compiler">
+               <optionReference
+                     defaultValue="None (-O0)"
+                     id="linux.gnu.compiler.optimization.level">
+               </optionReference>
+               <optionReference
+                     defaultValue="Maximum (-g3)"
+                     id="linux.gnu.compiler.debugging.level">
+               </optionReference>
+            </toolReference>
+         </configuration>
+         <tool
+               natureFilter="cnature"
+               sources="o"
+               name="%ToolName.linker.c"
+               outputFlag="-o"
+               command="gcc"
+               id="cdt.build.tool.linux.c.link">
+            <optionCategory
+                  owner="cdt.build.tool.linux.c.link"
+                  name="%OptionCategory.General"
+                  id="linux.gnu.c.linker.category.general">
+            </optionCategory>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoStartFiles"
+                  category="linux.gnu.c.linker.category.general"
+                  command="-nostartfiles"
+                  valueType="boolean"
+                  id="linux.gnu.c.link.options.nostart">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoDefLibs"
+                  category="linux.gnu.c.linker.category.general"
+                  command="-nodefaultlibs"
+                  valueType="boolean"
+                  id="linux.gnu.c.link.options.nodeflibs">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoStdLibs"
+                  category="linux.gnu.c.linker.category.general"
+                  command="-nostdlib"
+                  valueType="boolean"
+                  id="linux.gnu.c.link.options.nostdlibs">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Strip"
+                  category="linux.gnu.c.linker.category.options"
+                  command="-s"
+                  valueType="boolean"
+                  id="linux.gnu.c.link.options.strip">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Static"
+                  category="linux.gnu.c.linker.category.general"
+                  command="-static"
+                  valueType="boolean"
+                  id="linux.gnu.c.link.options.noshared">
             </option>
             <optionCategory
-                  owner="cdt.build.tool.linux.gnu.compiler"
-                  name="%OptionCategory.Debug"
-                  id="linux.gnu.compiler.category.debug">
+                  owner="cdt.build.tool.linux.c.link"
+                  name="%OptionCategory.Libs"
+                  id="linux.gnu.c.linker.category.libs">
             </optionCategory>
             <option
-                  name="Debug Level"
-                  category="linux.gnu.compiler.category.debug"
-                  valueType="enumerated"
-                  id="linux.gnu.compiler.debugging.level">
-               <enumeratedOptionValue
-                     name="None"
-                     isDefault="false"
-                     id="linux.gnu.compiler.debugging.level.none">
-               </enumeratedOptionValue>
-               <enumeratedOptionValue
-                     name="Minimal (-g1)"
-                     command="-g1"
-                     id="linux.gnu.compiler.debugging.level.minimal">
-               </enumeratedOptionValue>
-               <enumeratedOptionValue
-                     name="Default (-g)"
-                     isDefault="true"
-                     command="-g"
-                     id="linux.gnu.compiler.debugging.level.default">
-               </enumeratedOptionValue>
-               <enumeratedOptionValue
-                     name="Maximum (-g3)"
-                     isDefault="false"
-                     command="-g3"
-                     id="linux.gnu.compiler.debugging.level.max">
-               </enumeratedOptionValue>
+                  name="%Option.Posix.Libs"
+                  category="linux.gnu.c.linker.category.libs"
+                  command="-l"
+                  valueType="libs"
+                  id="linux.gnu.c.link.libs">
             </option>
             <option
-                  name="Other debugging flags"
-                  category="linux.gnu.compiler.category.debug"
+                  name="%Option.Posix.Libsearch"
+                  category="linux.gnu.c.linker.category.libs"
+                  command="-L"
+                  valueType="stringList"
+                  id="linux.gnu.c.link.paths">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.linux.c.link"
+                  name="%OptionCategory.Misc"
+                  id="linux.gnu.c.linker.category.other">
+            </optionCategory>
+            <option
+                  name="Linker Flags"
+                  category="linux.gnu.c.linker.category.other"
                   valueType="string"
-                  id="linux.gnu.compiler.debugging.other">
+                  id="linux.gnu.c.link.ldflags">
             </option>
             <option
-                  defaultValue="false"
-                  name="Generate prof information (-p)"
-                  category="linux.gnu.compiler.category.debug"
-                  command="-p"
-                  valueType="boolean"
-                  id="linux.gnu.compiler.debugging.prof">
+                  name="%Option.Posix.Linker.XLinker"
+                  category="linux.gnu.c.linker.category.other"
+                  command="-Xlinker"
+                  valueType="stringList"
+                  id="linux.gnu.c.link.options.other">
             </option>
             <option
-                  defaultValue="false"
-                  name="Generate gprof information (-pg)"
-                  category="linux.gnu.compiler.category.debug"
-                  command="-pg"
-                  valueType="boolean"
-                  id="linux.gnu.compiler.debugging.gprof">
+                  name="%Option.Posix.UserObjs"
+                  category="linux.gnu.c.linker.category.other"
+                  valueType="userObjs"
+                  id="linux.gnu.c.link.ld.userobjs">
             </option>
+         </tool>
+         <tool
+               natureFilter="ccnature"
+               sources="o"
+               name="%ToolName.linker.cpp"
+               outputFlag="-o"
+               command="g++"
+               id="cdt.build.tool.linux.gnu.link">
             <optionCategory
-                  owner="cdt.build.tool.linux.gnu.compiler"
-                  name="%OptionCategory.Warn"
-                  id="linux.gnu.compiler.category.warnings">
+                  owner="cdt.build.tool.linux.gnu.link"
+                  name="%OptionCategory.General"
+                  id="linux.gnu.linker.category.options">
             </optionCategory>
             <option
                   defaultValue="false"
-                  name="Check syntax only (-fsyntax-only)"
-                  category="linux.gnu.compiler.category.warnings"
-                  command="-fsyntax-only"
+                  name="%Option.Posix.Linker.NoStartFiles"
+                  category="linux.gnu.linker.category.options"
+                  command="-nostartfiles"
                   valueType="boolean"
-                  id="linux.gnu.compiler.warnings.syntax">
+                  id="linux.gnu.linker.options.nostart">
             </option>
             <option
                   defaultValue="false"
-                  name="Pedantic (-pedantic)"
-                  category="linux.gnu.compiler.category.warnings"
-                  command="-pedantic"
+                  name="%Option.Posix.Linker.NoDefLibs"
+                  category="linux.gnu.linker.category.options"
+                  command="-nodefaultlibs"
                   valueType="boolean"
-                  id="linux.gnu.compiler.warnings.pedantic">
+                  id="linux.gnu.linker.options.nodeflibs">
             </option>
             <option
                   defaultValue="false"
-                  name="Pedantic warnings as errors (-pedantic-errors)"
-                  category="linux.gnu.compiler.category.warnings"
-                  command="-pedantic-errors"
+                  name="%Option.Posix.Linker.NoStdLibs"
+                  category="linux.gnu.linker.category.options"
+                  command="-nostdlib"
                   valueType="boolean"
-                  id="linux.gnu.compiler.warnings.pedantic.error">
+                  id="linux.gnu.linker.options.nostdlibs">
             </option>
             <option
                   defaultValue="false"
-                  name="Inhibit all warnings (-w)"
-                  category="linux.gnu.compiler.category.warnings"
-                  command="-w"
+                  name="%Option.Posix.Linker.Strip"
+                  category="linux.gnu.linker.category.options"
+                  command="-s"
                   valueType="boolean"
-                  id="linux.gnu.compiler.warnings.nowarn">
+                  id="linux.gnu.linker.options.strip">
             </option>
             <option
-                  defaultValue="true"
-                  name="All warnings (-Wall)"
-                  category="linux.gnu.compiler.category.warnings"
-                  command="-Wall"
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Static"
+                  category="linux.gnu.linker.category.options"
+                  command="-static"
                   valueType="boolean"
-                  id="linux.gnu.compiler.warnings.allwarn">
+                  id="linux.gnu.linker.options.noshared">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.link"
+                  name="%OptionCategory.Libs"
+                  id="linux.gnu.linker.category.libs">
+            </optionCategory>
+            <option
+                  name="%Option.Posix.Libs"
+                  category="linux.gnu.linker.category.libs"
+                  command="-l"
+                  valueType="libs"
+                  id="linux.gnu.linker.libs.libs">
             </option>
             <option
-                  defaultValue="false"
-                  name="Warnings as errors (-werror)"
-                  category="linux.gnu.compiler.category.warnings"
-                  command="-werror"
-                  valueType="boolean"
-                  id="linux.gnu.compiler.warnings.toerrors">
+                  name="%Option.Posix.Libsearch"
+                  category="linux.gnu.linker.category.libs"
+                  command="-L"
+                  valueType="stringList"
+                  id="linux.gnu.linker.libs.paths">
             </option>
             <optionCategory
-                  owner="cdt.build.tool.linux.gnu.compiler"
+                  owner="cdt.build.tool.linux.gnu.link"
                   name="%OptionCategory.Misc"
-                  id="linux.gnu.compiler.category.other">
+                  id="linux.gnu.linker.category.other">
             </optionCategory>
             <option
-                  defaultValue="-c"
-                  name="%Option.OtherFlags"
-                  category="linux.gnu.compiler.category.other"
+                  name="%Option.Posix.Linker.Flags"
+                  category="linux.gnu.linker.category.other"
                   valueType="string"
-                  id="linux.gnu.compiler.other.other">
+                  id="linux.gnu.linker.libs.flags">
             </option>
             <option
-                  defaultValue="false"
-                  name="%Option.Posix.Verbose"
-                  category="linux.gnu.compiler.category.other"
-                  command="-v"
-                  valueType="boolean"
-                  id="linux.gnu.compiler.other.verbose">
+                  name="%Option.Posix.Linker.XLinker"
+                  category="linux.gnu.linker.category.other"
+                  command="-Xlinker"
+                  valueType="stringList"
+                  id="linux.gnu.linker.options.other">
+            </option>
+            <option
+                  name="%Option.Posix.UserObjs"
+                  category="linux.gnu.linker.category.other"
+                  valueType="userObjs"
+                  id="linux.gnu.linker.userobjs">
             </option>
          </tool>
       </target>
       <target
             isTest="false"
-            name="Linux Executable"
+            name="Linux Shared Library"
             parent="linux.gnu"
             binaryParser="org.eclipse.cdt.core.ELF"
+            defaultExtension="so"
             isAbstract="false"
-            id="linux.gnu.exec">
+            id="linux.gnu.so">
          <configuration
                name="%ConfigName.Rel"
-               id="linux.gnu.exec.release">
+               id="linux.gnu.so.release">
             <toolReference
                   id="cdt.build.tool.linux.gnu.compiler">
                <optionReference
@@ -1134,7 +2183,7 @@
          </configuration>
          <configuration
                name="%ConfigName.Dbg"
-               id="linux.gnu.exec.debug">
+               id="linux.gnu.so.debug">
             <toolReference
                   id="cdt.build.tool.linux.gnu.compiler">
                <optionReference
@@ -1148,112 +2197,205 @@
             </toolReference>
          </configuration>
          <tool
+               natureFilter="cnature"
                sources="o"
-               name="%ToolName.linker"
+               name="%ToolName.linker.c"
                outputFlag="-o"
-               command="g++"
-               id="cdt.build.tool.linux.gnu.link">
+               outputs="so"
+               outputPrefix="lib"
+               command="gcc -shared"
+               id="cdt.build.tool.linux.gnu.c.solink">
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.c.solink"
+                  name="%OptionCategory.General"
+                  id="linux.gnu.c.solink.category.general">
+            </optionCategory>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoStartFiles"
+                  category="linux.gnu.c.solink.category.general"
+                  command="-nostartfiles"
+                  valueType="boolean"
+                  id="linux.gnu.c.solink.options.nostart">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoDefLibs"
+                  category="linux.gnu.c.solink.category.general"
+                  command="-nodefaultlibs"
+                  valueType="boolean"
+                  id="linux.gnu.c.solink.options.nodeflibs">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoStdLibs"
+                  category="linux.gnu.c.solink.category.general"
+                  command="-nostdlib"
+                  valueType="boolean"
+                  id="linux.gnu.c.solink.options.nostdlibs">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Strip"
+                  category="linux.gnu.c.solink.category.general"
+                  command="-s"
+                  valueType="boolean"
+                  id="linux.gnu.c.solink.options.strip">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Static"
+                  category="linux.gnu.c.solink.category.general"
+                  command="-static"
+                  valueType="boolean"
+                  id="linux.gnu.c.solink.options.noshared">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.c.solink"
+                  name="%OptionCategory.Libs"
+                  id="linux.gnu.c.solink.category.libs">
+            </optionCategory>
+            <option
+                  name="%Option.Posix.Libs"
+                  category="linux.gnu.c.solink.category.libs"
+                  command="-l"
+                  valueType="libs"
+                  id="linux.gnu.c.solink.libs">
+            </option>
+            <option
+                  name="%Option.Posix.Libsearch"
+                  category="linux.gnu.c.solink.category.libs"
+                  command="-L"
+                  valueType="stringList"
+                  id="linux.gnu.c.solink.paths">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.linux.gnu.c.solink"
+                  name="%OptionCategory.Misc"
+                  id="linux.gnu.c.solink.category.other">
+            </optionCategory>
+            <option
+                  name="Linker Flags"
+                  category="linux.gnu.c.solink.category.other"
+                  valueType="string"
+                  id="linux.gnu.c.solink.ldflags">
+            </option>
+            <option
+                  name="%Option.Posix.Linker.XLinker"
+                  category="linux.gnu.c.solink.category.other"
+                  command="-Xlinker"
+                  valueType="stringList"
+                  id="linux.gnu.c.solink.options.other">
+            </option>
+            <option
+                  name="%Option.Posix.UserObjs"
+                  category="linux.gnu.c.solink.category.other"
+                  valueType="userObjs"
+                  id="linux.gnu.c.solink.userobjs">
+            </option>
+         </tool>
+         <tool
+               natureFilter="ccnature"
+               sources="o"
+               name="%ToolName.linker.cpp"
+               outputFlag="-o"
+               outputs="so"
+               outputPrefix="lib"
+               command="g++ -shared"
+               id="cdt.build.tool.linux.gnu.solink">
             <optionCategory
-                  owner="cdt.build.tool.linux.gnu.link"
+                  owner="cdt.build.tool.linux.gnu.solink"
                   name="%OptionCategory.General"
-                  id="linux.gnu.linker.category.options">
+                  id="linux.gnu.solink.category.options">
             </optionCategory>
             <option
                   defaultValue="false"
                   name="%Option.Posix.Linker.NoStartFiles"
-                  category="linux.gnu.linker.category.options"
+                  category="linux.gnu.solink.category.options"
                   command="-nostartfiles"
                   valueType="boolean"
-                  id="linux.gnu.linker.options.nostart">
+                  id="linux.gnu.solink.options.nostart">
             </option>
             <option
                   defaultValue="false"
                   name="%Option.Posix.Linker.NoDefLibs"
-                  category="linux.gnu.linker.category.options"
+                  category="linux.gnu.solink.category.options"
                   command="-nodefaultlibs"
                   valueType="boolean"
-                  id="linux.gnu.linker.options.nodeflibs">
+                  id="linux.gnu.solink.options.nodeflibs">
             </option>
             <option
                   defaultValue="false"
                   name="%Option.Posix.Linker.NoStdLibs"
-                  category="linux.gnu.linker.category.options"
+                  category="linux.gnu.solink.category.options"
                   command="-nostdlib"
                   valueType="boolean"
-                  id="linux.gnu.linker.options.nostdlibs">
+                  id="linux.gnu.solink.options.nostdlibs">
             </option>
             <option
                   defaultValue="false"
                   name="%Option.Posix.Linker.Strip"
-                  category="linux.gnu.linker.category.options"
+                  category="linux.gnu.solink.category.options"
                   command="-s"
                   valueType="boolean"
-                  id="linux.gnu.linker.options.strip">
-            </option>
-            <option
-                  defaultValue="false"
-                  name="%Option.Posix.Linker.Static"
-                  category="linux.gnu.linker.category.options"
-                  command="-static"
-                  valueType="boolean"
-                  id="linux.gnu.linker.options.noshared">
+                  id="linux.gnu.solink.options.strip">
             </option>
             <optionCategory
-                  owner="cdt.build.tool.linux.gnu.link"
+                  owner="cdt.build.tool.linux.gnu.solink"
                   name="%OptionCategory.Libs"
-                  id="linux.gnu.linker.category.libs">
+                  id="linux.gnu.solink.category.libs">
             </optionCategory>
             <option
                   name="%Option.Posix.Libs"
-                  category="linux.gnu.linker.category.libs"
+                  category="linux.gnu.solink.category.libs"
                   command="-l"
                   valueType="libs"
-                  id="linux.gnu.linker.libs.libs">
+                  id="linux.gnu.solink.libs.libs">
             </option>
             <option
                   name="%Option.Posix.Libsearch"
-                  category="linux.gnu.linker.category.libs"
+                  category="linux.gnu.solink.category.libs"
                   command="-L"
                   valueType="stringList"
-                  id="linux.gnu.linker.libs.paths">
+                  id="linux.gnu.solink.libs.paths">
             </option>
             <optionCategory
-                  owner="cdt.build.tool.linux.gnu.link"
+                  owner="cdt.build.tool.linux.gnu.solink"
                   name="%OptionCategory.Misc"
-                  id="linux.gnu.linker.category.other">
+                  id="linux.gnu.solink.category.other">
             </optionCategory>
             <option
                   name="%Option.Posix.Linker.Flags"
-                  category="linux.gnu.linker.category.other"
+                  category="linux.gnu.solink.category.other"
                   valueType="string"
-                  id="linux.gnu.linker.libs.flags">
+                  id="linux.gnu.solink.libs.flags">
             </option>
             <option
                   name="%Option.Posix.Linker.XLinker"
-                  category="linux.gnu.linker.category.other"
+                  category="linux.gnu.solink.category.other"
                   command="-Xlinker"
                   valueType="stringList"
-                  id="linux.gnu.linker.options.other">
+                  id="linux.gnu.solink.options.other">
             </option>
             <option
                   name="%Option.Posix.UserObjs"
-                  category="linux.gnu.linker.category.other"
+                  category="linux.gnu.solink.category.other"
                   valueType="userObjs"
-                  id="linux.gnu.linker.userobjs">
+                  id="linux.gnu.solink.userobjs">
             </option>
          </tool>
       </target>
       <target
             isTest="false"
-            name="Linux Shared Library"
+            name="Linux Static Library"
             parent="linux.gnu"
             binaryParser="org.eclipse.cdt.core.ELF"
-            defaultExtension="so"
+            defaultExtension="a"
             isAbstract="false"
-            id="linux.gnu.so">
+            id="linux.gnu.lib">
          <configuration
                name="%ConfigName.Rel"
-               id="linux.gnu.so.release">
+               id="linux.gnu.lib.release">
             <toolReference
                   id="cdt.build.tool.linux.gnu.compiler">
                <optionReference
@@ -1268,7 +2410,7 @@
          </configuration>
          <configuration
                name="%ConfigName.Dbg"
-               id="linux.gnu.so.debug">
+               id="linux.gnu.lib.debug">
             <toolReference
                   id="cdt.build.tool.linux.gnu.compiler">
                <optionReference
@@ -1282,167 +2424,330 @@
             </toolReference>
          </configuration>
          <tool
+               natureFilter="both"
                sources="o"
-               name="%ToolName.linker"
-               outputFlag="-o"
-               outputs="so"
+               name="%ToolName.archiver"
+               outputs="a"
                outputPrefix="lib"
-               command="g++ -shared"
-               id="cdt.build.tool.linux.gnu.solink">
+               command="ar"
+               id="cdt.build.tool.linux.gnu.lib">
             <optionCategory
-                  owner="cdt.build.tool.linux.gnu.solink"
+                  owner="cdt.build.tool.linux.gnu.lib"
                   name="%OptionCategory.General"
-                  id="linux.gnu.solink.category.options">
+                  id="linux.gnu.lib.category.general">
+            </optionCategory>
+            <option
+                  defaultValue="-r"
+                  name="Archiver Flags"
+                  category="linux.gnu.lib.category.general"
+                  valueType="string"
+                  id="linux.gnu.lib.flags">
+            </option>
+         </tool>
+      </target>
+      <target
+            name="Solaris"
+            id="solaris.gnu"
+            cleanCommand="rm -rf"
+            isTest="false"
+            isAbstract="true"
+            makeCommand="make"
+            binaryParser="org.eclipse.cdt.core.ELF"
+            makeFlags="-k"
+            osList="solaris">
+         <tool
+               natureFilter="cnature"
+               sources="c"
+               name="%ToolName.compiler.c"
+               headerExtensions="h"
+               outputFlag="-o"
+               outputs="o"
+               command="gcc"
+               id="cdt.build.tool.solaris.gnu.c.compiler">
+            <optionCategory
+                  owner="cdt.build.tool.solaris.gnu.c.compiler"
+                  name="%OptionCategory.Preproc"
+                  id="solaris.gnu.c.compiler.category.preprocessor">
             </optionCategory>
             <option
                   defaultValue="false"
-                  name="%Option.Posix.Linker.NoStartFiles"
-                  category="linux.gnu.solink.category.options"
-                  command="-nostartfiles"
+                  name="%Option.Posix.Nostdinc"
+                  category="solaris.gnu.c.compiler.category.preprocessor"
+                  command="-nostdinc"
                   valueType="boolean"
-                  id="linux.gnu.solink.options.nostart">
+                  id="solaris.gnu.c.compiler.preprocessor.nostdinc">
             </option>
             <option
                   defaultValue="false"
-                  name="%Option.Posix.Linker.NoDefLibs"
-                  category="linux.gnu.solink.category.options"
-                  command="-nodefaultlibs"
+                  name="%Option.Posix.PreprocOnly"
+                  category="solaris.gnu.c.compiler.category.preprocessor"
+                  command="-E"
                   valueType="boolean"
-                  id="linux.gnu.solink.options.nodeflibs">
+                  id="solaris.gnu.c.compiler.preprocessor.preprocess">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.solaris.gnu.c.compiler"
+                  name="Symbols"
+                  id="solaris.gnu.c.compiler.category.symbols">
+            </optionCategory>
+            <option
+                  name="%Option.Posix.DefSym"
+                  category="solaris.gnu.c.compiler.category.symbols"
+                  command="-D"
+                  valueType="definedSymbols"
+                  id="solaris.gnu.c.preprocessor.def.symbols">
+               <listOptionValue
+                     builtIn="true"
+                     value="sun">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="sparc">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="unix">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__svr4__">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__SVR4">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__GCC_NEW_VARARGS__">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__sun__">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__sparc__">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__unix__">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__sun">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__sparc">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__unix">
+               </listOptionValue>
+               <listOptionValue
+                     builtIn="true"
+                     value="__OPTIMIZE__">
+               </listOptionValue>
+            </option>
+            <option
+                  name="%Option.Posix.UndefSym"
+                  category="solaris.gnu.c.compiler.category.symbols"
+                  command="-U"
+                  valueType="stringList"
+                  id="solaris.gnu.c.preprocessor.undef.symbol">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.solaris.gnu.c.compiler"
+                  name="%OptionCategory.Dirs"
+                  id="solaris.gnu.c.compiler.category.dirs">
+            </optionCategory>
+            <option
+                  name="Include Paths"
+                  category="solaris.gnu.c.compiler.category.dirs"
+                  command="-I"
+                  valueType="includePath"
+                  id="solaris.gnu.c.compiler.general.include.paths">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.solaris.gnu.c.compiler"
+                  name="%OptionCategory.Optimize"
+                  id="solaris.gnu.c.compiler.category.optimization">
+            </optionCategory>
+            <option
+                  name="Optimization Level"
+                  category="solaris.gnu.c.compiler.category.optimization"
+                  valueType="enumerated"
+                  id="solaris.gnu.c.compiler.general.optimization.level">
+               <enumeratedOptionValue
+                     name="%Option.Posix.Optimize.None"
+                     isDefault="false"
+                     command="-O0"
+                     id="solaris.gnu.c.optimization.level.none">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="%Option.Posix.Optimize.Optimize"
+                     command="-O1"
+                     id="solaris.gnu.c.optimization.level.optimize">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="%Option.Posix.Optimize.More"
+                     isDefault="true"
+                     command="-O2"
+                     id="solaris.gnu.c.optimization.level.more">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="%Option.Posix.Optimize.Most"
+                     command="-O3"
+                     id="solaris.gnu.c.optimization.level.most">
+               </enumeratedOptionValue>
+            </option>
+            <option
+                  name="Other optimization flags"
+                  category="solaris.gnu.c.compiler.category.optimization"
+                  valueType="string"
+                  id="solaris.gnu.c.compiler.optimization.flags">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.solaris.gnu.c.compiler"
+                  name="%OptionCategory.Debug"
+                  id="solaris.gnu.c.compiler.category.debug">
+            </optionCategory>
+            <option
+                  name="Debug Level"
+                  category="solaris.gnu.c.compiler.category.debug"
+                  valueType="enumerated"
+                  id="solaris.c.compiler.debugging.level">
+               <enumeratedOptionValue
+                     name="None"
+                     isDefault="false"
+                     id="solaris.gnu.c.debugging.level.none">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="Minimal (-g1)"
+                     command="-g1"
+                     id="solaris.gnu.c.debugging.level.minimal">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="Default (-g)"
+                     isDefault="true"
+                     command="-g"
+                     id="solaris.gnu.c.debugging.level.default">
+               </enumeratedOptionValue>
+               <enumeratedOptionValue
+                     name="Maximum (-g3)"
+                     isDefault="false"
+                     command="-g3"
+                     id="solaris.gnu.c.debugging.level.max">
+               </enumeratedOptionValue>
+            </option>
+            <option
+                  name="Other debugging flags"
+                  category="solaris.gnu.c.compiler.category.debug"
+                  valueType="string"
+                  id="solaris.gnu.c.compiler.debugging.other">
             </option>
             <option
                   defaultValue="false"
-                  name="%Option.Posix.Linker.NoStdLibs"
-                  category="linux.gnu.solink.category.options"
-                  command="-nostdlib"
+                  name="Generate gprof information (-pg)"
+                  category="solaris.gnu.c.compiler.category.debug"
+                  command="-pg"
+                  valueType="boolean"
+                  id="solaris.gnu.c.compiler.debugging.gprof">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Generate prof information (-p)"
+                  category="solaris.gnu.c.compiler.category.debug"
+                  command="-p"
+                  valueType="boolean"
+                  id="solaris.gnu.c.compiler.debugging.prof">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.solaris.gnu.c.compiler"
+                  name="%OptionCategory.Warn"
+                  id="solaris.c.compiler.category.warnings">
+            </optionCategory>
+            <option
+                  defaultValue="false"
+                  name="Check syntax only (-fsyntax-only)"
+                  category="solaris.c.compiler.category.warnings"
+                  command="-fsyntax-only"
+                  valueType="boolean"
+                  id="solaris.gnu.c.compiler.warnings.syntax">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Pedantic (-pedantic)"
+                  category="solaris.c.compiler.category.warnings"
+                  command="-pedantic"
+                  valueType="boolean"
+                  id="solaris.gnu.c.compiler.warnings.pedantic">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="Pedantic warnings as errors (-pedantic-errors)"
+                  category="solaris.c.compiler.category.warnings"
+                  command="-pedantic-errors"
                   valueType="boolean"
-                  id="linux.gnu.solink.options.nostdlibs">
+                  id="solaris.gnu.c.compiler.warnings.pedantic.error">
             </option>
             <option
                   defaultValue="false"
-                  name="%Option.Posix.Linker.Strip"
-                  category="linux.gnu.solink.category.options"
-                  command="-s"
+                  name="Inhibit all warnings (-w)"
+                  category="solaris.c.compiler.category.warnings"
+                  command="-w"
                   valueType="boolean"
-                  id="linux.gnu.solink.options.strip">
+                  id="solaris.gnu.c.compiler.warnings.nowarn">
             </option>
-            <optionCategory
-                  owner="cdt.build.tool.linux.gnu.solink"
-                  name="%OptionCategory.Libs"
-                  id="linux.gnu.solink.category.libs">
-            </optionCategory>
             <option
-                  name="%Option.Posix.Libs"
-                  category="linux.gnu.solink.category.libs"
-                  command="-l"
-                  valueType="libs"
-                  id="linux.gnu.solink.libs.libs">
+                  defaultValue="true"
+                  name="All warnings (-Wall)"
+                  category="solaris.c.compiler.category.warnings"
+                  command="-Wall"
+                  valueType="boolean"
+                  id="solaris.gnu.c.compiler.warnings.allwarn">
             </option>
             <option
-                  name="%Option.Posix.Libsearch"
-                  category="linux.gnu.solink.category.libs"
-                  command="-L"
-                  valueType="stringList"
-                  id="linux.gnu.solink.libs.paths">
+                  defaultValue="false"
+                  name="Warnings as errors (-werror)"
+                  category="solaris.c.compiler.category.warnings"
+                  command="-werror"
+                  valueType="boolean"
+                  id="solaris.gnu.c.compiler.warnings.toerrors">
             </option>
             <optionCategory
-                  owner="cdt.build.tool.linux.gnu.solink"
+                  owner="cdt.build.tool.solaris.gnu.c.compiler"
                   name="%OptionCategory.Misc"
-                  id="linux.gnu.solink.category.other">
+                  id="solaris.c.compiler.category.other">
             </optionCategory>
             <option
-                  name="%Option.Posix.Linker.Flags"
-                  category="linux.gnu.solink.category.other"
+                  defaultValue="-c"
+                  name="%Option.OtherFlags"
+                  category="solaris.c.compiler.category.other"
                   valueType="string"
-                  id="linux.gnu.solink.libs.flags">
-            </option>
-            <option
-                  name="%Option.Posix.Linker.XLinker"
-                  category="linux.gnu.solink.category.other"
-                  command="-Xlinker"
-                  valueType="stringList"
-                  id="linux.gnu.solink.options.other">
+                  id="solaris.gnu.c.compiler.misc.other">
             </option>
             <option
-                  name="%Option.Posix.UserObjs"
-                  category="linux.gnu.solink.category.other"
-                  valueType="userObjs"
-                  id="linux.gnu.solink.userobjs">
+                  defaultValue="false"
+                  name="%Option.Posix.Verbose"
+                  category="solaris.c.compiler.category.other"
+                  command="-v"
+                  valueType="boolean"
+                  id="solaris.gnu.c.compiler.misc.verbose">
             </option>
-         </tool>
-      </target>
-      <target
-            isTest="false"
-            name="Linux Static Library"
-            parent="linux.gnu"
-            binaryParser="org.eclipse.cdt.core.ELF"
-            defaultExtension="a"
-            isAbstract="false"
-            id="linux.gnu.lib">
-         <configuration
-               name="%ConfigName.Rel"
-               id="linux.gnu.lib.release">
-            <toolReference
-                  id="cdt.build.tool.linux.gnu.compiler">
-               <optionReference
-                     defaultValue="Optimize most (-O3)"
-                     id="linux.gnu.compiler.optimization.level">
-               </optionReference>
-               <optionReference
-                     defaultValue="None"
-                     id="linux.gnu.compiler.debugging.level">
-               </optionReference>
-            </toolReference>
-         </configuration>
-         <configuration
-               name="%ConfigName.Dbg"
-               id="linux.gnu.lib.debug">
-            <toolReference
-                  id="cdt.build.tool.linux.gnu.compiler">
-               <optionReference
-                     defaultValue="None (-O0)"
-                     id="linux.gnu.compiler.optimization.level">
-               </optionReference>
-               <optionReference
-                     defaultValue="Maximum (-g3)"
-                     id="linux.gnu.compiler.debugging.level">
-               </optionReference>
-            </toolReference>
-         </configuration>
-         <tool
-               sources="o"
-               name="%ToolName.archiver"
-               outputs="a"
-               outputPrefix="lib"
-               command="ar"
-               id="cdt.build.tool.linux.gnu.lib">
-            <optionCategory
-                  owner="cdt.build.tool.linux.gnu.lib"
-                  name="%OptionCategory.General"
-                  id="linux.gnu.lib.category.general">
-            </optionCategory>
             <option
-                  defaultValue="-r"
-                  name="Archiver Flags"
-                  category="linux.gnu.lib.category.general"
-                  valueType="string"
-                  id="linux.gnu.lib.flags">
+                  defaultValue="false"
+                  name="%Option.Posix.Ansi"
+                  category="solaris.c.compiler.category.other"
+                  command="-ansi"
+                  valueType="boolean"
+                  id="solaris.gnu.c.compiler.misc.ansi">
             </option>
          </tool>
-      </target>
-      <target
-            name="Solaris"
-            id="solaris.gnu"
-            cleanCommand="rm -rf"
-            isTest="false"
-            isAbstract="true"
-            makeCommand="make"
-            binaryParser="org.eclipse.cdt.core.ELF"
-            makeFlags="-k"
-            osList="solaris">
          <tool
+               natureFilter="ccnature"
                sources="c,C,cc,cxx,cpp"
-               name="%ToolName.compiler"
+               name="%ToolName.compiler.cpp"
                headerExtensions="h,H,hpp"
                outputFlag="-o"
                outputs="o"
@@ -1754,8 +3059,105 @@
             </toolReference>
          </configuration>
          <tool
+               natureFilter="cnature"
+               sources="o"
+               name="%ToolName.linker.c"
+               outputFlag="-o"
+               command="gcc"
+               id="cdt.build.tool.solaris.gnu.c.link">
+            <optionCategory
+                  owner="cdt.build.tool.solaris.gnu.c.link"
+                  name="%OptionCategory.General"
+                  id="solaris.gnu.c.linker.category.general">
+            </optionCategory>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoStartFiles"
+                  category="solaris.gnu.c.linker.category.general"
+                  command="-nostartfiles"
+                  valueType="boolean"
+                  id="solaris.gnu.c.link.options.nostart">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoDefLibs"
+                  category="solaris.gnu.c.linker.category.general"
+                  command="-nodefaultlibs"
+                  valueType="boolean"
+                  id="solaris.gnu.c.link.options.nodeflibs">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoStdLibs"
+                  category="solaris.gnu.c.linker.category.general"
+                  command="-nostdlib"
+                  valueType="boolean"
+                  id="solaris.gnu.c.link.options.nostdlibs">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Strip"
+                  category="solaris.gnu.c.linker.category.options"
+                  command="-s"
+                  valueType="boolean"
+                  id="solaris.gnu.c.link.options.strip">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Static"
+                  category="solaris.gnu.c.linker.category.general"
+                  command="-static"
+                  valueType="boolean"
+                  id="solaris.gnu.c.link.options.noshared">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.solaris.gnu.c.link"
+                  name="%OptionCategory.Libs"
+                  id="solaris.gnu.c.linker.category.libs">
+            </optionCategory>
+            <option
+                  name="%Option.Posix.Libs"
+                  category="solaris.gnu.c.linker.category.libs"
+                  command="-l"
+                  valueType="libs"
+                  id="solaris.gnu.c.link.libs">
+            </option>
+            <option
+                  name="%Option.Posix.Libsearch"
+                  category="solaris.gnu.c.linker.category.libs"
+                  command="-L"
+                  valueType="stringList"
+                  id="solaris.gnu.c.link.paths">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.solaris.gnu.c.link"
+                  name="%OptionCategory.Misc"
+                  id="solaris.gnu.c.linker.category.other">
+            </optionCategory>
+            <option
+                  name="Linker Flags"
+                  category="solaris.gnu.c.linker.category.other"
+                  valueType="string"
+                  id="solaris.gnu.c.link.ldflags">
+            </option>
+            <option
+                  name="%Option.Posix.Linker.XLinker"
+                  category="solaris.gnu.c.linker.category.other"
+                  command="-Xlinker"
+                  valueType="stringList"
+                  id="solaris.gnu.c.link.options.other">
+            </option>
+            <option
+                  name="%Option.Posix.UserObjs"
+                  category="solaris.gnu.c.linker.category.other"
+                  valueType="userObjs"
+                  id="solaris.gnu.c.link.ld.userobjs">
+            </option>
+         </tool>
+         <tool
+               natureFilter="ccnature"
                sources="o"
-               name="%ToolName.linker"
+               name="%ToolName.linker.cpp"
                outputFlag="-o"
                command="g++"
                id="cdt.build.tool.solaris.gnu.link">
@@ -1888,8 +3290,107 @@
             </toolReference>
          </configuration>
          <tool
+               natureFilter="cnature"
+               sources="o"
+               name="%ToolName.linker.c"
+               outputFlag="-o"
+               outputs="so"
+               outputPrefix="lib"
+               command="gcc -shared"
+               id="cdt.build.tool.solaris.gnu.c.solink">
+            <optionCategory
+                  owner="cdt.build.tool.solaris.gnu.c.solink"
+                  name="%OptionCategory.General"
+                  id="solaris.gnu.c.solink.category.general">
+            </optionCategory>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoStartFiles"
+                  category="solaris.gnu.c.solink.category.general"
+                  command="-nostartfiles"
+                  valueType="boolean"
+                  id="solaris.gnu.c.solink.options.nostart">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoDefLibs"
+                  category="solaris.gnu.c.solink.category.general"
+                  command="-nodefaultlibs"
+                  valueType="boolean"
+                  id="solaris.gnu.c.solink.options.nodeflibs">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.NoStdLibs"
+                  category="solaris.gnu.c.solink.category.general"
+                  command="-nostdlib"
+                  valueType="boolean"
+                  id="solaris.gnu.c.solink.options.nostdlibs">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Strip"
+                  category="solaris.gnu.c.solink.category.general"
+                  command="-s"
+                  valueType="boolean"
+                  id="solaris.gnu.c.solink.options.strip">
+            </option>
+            <option
+                  defaultValue="false"
+                  name="%Option.Posix.Linker.Static"
+                  category="solaris.gnu.c.solink.category.general"
+                  command="-static"
+                  valueType="boolean"
+                  id="solaris.gnu.c.solink.options.noshared">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.solaris.gnu.c.solink"
+                  name="%OptionCategory.Libs"
+                  id="solaris.gnu.c.solink.category.libs">
+            </optionCategory>
+            <option
+                  name="%Option.Posix.Libs"
+                  category="solaris.gnu.c.solink.category.libs"
+                  command="-l"
+                  valueType="libs"
+                  id="solaris.gnu.c.solink.libs">
+            </option>
+            <option
+                  name="%Option.Posix.Libsearch"
+                  category="solaris.gnu.c.solink.category.libs"
+                  command="-L"
+                  valueType="stringList"
+                  id="solaris.gnu.c.solink.paths">
+            </option>
+            <optionCategory
+                  owner="cdt.build.tool.solaris.gnu.c.solink"
+                  name="%OptionCategory.Misc"
+                  id="solaris.gnu.c.solink.category.other">
+            </optionCategory>
+            <option
+                  name="Linker Flags"
+                  category="solaris.gnu.c.solink.category.other"
+                  valueType="string"
+                  id="solaris.gnu.c.solink.ldflags">
+            </option>
+            <option
+                  name="%Option.Posix.Linker.XLinker"
+                  category="solaris.gnu.c.solink.category.other"
+                  command="-Xlinker"
+                  valueType="stringList"
+                  id="solaris.gnu.c.solink.options.other">
+            </option>
+            <option
+                  name="%Option.Posix.UserObjs"
+                  category="solaris.gnu.c.solink.category.other"
+                  valueType="userObjs"
+                  id="solaris.gnu.c.solink.userobjs">
+            </option>
+         </tool>
+         <tool
+               natureFilter="ccnature"
                sources="o"
-               name="%ToolName.linker"
+               name="%ToolName.linker.cpp"
                outputFlag="-o"
                outputs="so"
                outputPrefix="lib"
@@ -2016,6 +3517,7 @@
             </toolReference>
          </configuration>
          <tool
+               natureFilter="both"
                sources="o"
                name="%ToolName.archiver"
                outputs="a"
Index: src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectWizard.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectWizard.java,v
retrieving revision 1.2
diff -u -r1.2 NewManagedProjectWizard.java
--- src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectWizard.java	22 Sep 2003 02:31:53 -0000	1.2
+++ src/org/eclipse/cdt/managedbuilder/ui/wizards/NewManagedProjectWizard.java	1 Oct 2003 19:33:23 -0000
@@ -11,6 +11,8 @@
  * IBM Rational Software - Initial API and implementation
  * **********************************************************************/
 
+import java.util.Random;
+
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.ICDescriptor;
 import org.eclipse.cdt.managedbuilder.core.BuildException;
@@ -113,9 +115,14 @@
 				artifactName +=  parent.getDefaultExtension().length() == 0 ? "" : "." + parent.getDefaultExtension();
 				newTarget.setBuildArtifact(artifactName);
 				IConfiguration [] selectedConfigs = targetConfigurationPage.getSelectedConfigurations();
+				Random r = new Random();
 				for (int i = 0; i < selectedConfigs.length; i++) {
 					IConfiguration config = selectedConfigs[i];
-					newTarget.createConfiguration(config, config.getId() + "." + i);
+					int id = r.nextInt();
+					if (id < 0) {
+						id *= -1;
+					}
+					newTarget.createConfiguration(config, artifactName + "." + config.getId() + "." + id);
 				}
 				// Now add the first config in the list as the default
 				IConfiguration[] newConfigs = newTarget.getConfigurations();

Back to the top