<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.cdt.core">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.cdt.core" id="ManagedBuildTools" name="Managed Build Tools"/>
      </appInfo>
      <documentation>
         The managed build information model describes targets, configurations, and toolchains for the build system.
      </documentation>
   </annotation>

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="target"/>
            <element ref="tool"/>
            <element ref="configuration"/>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="tool">
      <annotation>
         <documentation>
            Defines a tool used in the build process.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="option"/>
            <element ref="optionCategory"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  A unique identifier for the tool that will be used by the build model.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  Human-readable name for the tool to be used in the UI.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="sources" type="string">
            <annotation>
               <documentation>
                  A comma-separated list of file extensions that the tool will produce output for.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="outputs" type="string">
            <annotation>
               <documentation>
                  The extension that the tool will produce from a given input.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="command" type="string">
            <annotation>
               <documentation>
                  The command that invokes the tool. For example, gcc for the Gnu C compiler, or g++ for the Gnu C++ compiler.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="outputFlag" type="string">
            <annotation>
               <documentation>
                  An optional flag for tools that allow users to specify a name for the artifact of the tool. For example, the GCC compiler and linker tools typically allow the user to specify the name of the output with the &apos;-o&apos; flag, whereas the archiver that creates libraries does not.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="outputPrefix" type="string">
            <annotation>
               <documentation>
                  Some tools produce files with a special prefix that must be specified. For example, a librarian on POSIX systems expects the output to be lib&lt;target&gt;.a so &apos;lib&apos; would be the prefix.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="dependencyCalculator" type="string">
            <annotation>
               <documentation>
                  This is an optional field that specifies the class that provides the dependency calculation for a given tool. This field is unused in CDT 1.2.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.cdt.internal.core.sourcedependency.ISourceDependency"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="headerExtensions" type="string">
            <annotation>
               <documentation>
                  A comma-separated list of file extensions that are used for header files. Since many other files depend on the interfaces defined in header files, the build system needs to be able to determine that a header file has changed to properly rebuild its dependents.
               </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>

   <element name="option">
      <annotation>
         <documentation>
            An option is associated with a tool. Options can contain boolean values, a simple text string, a selection from an enumerated list, or a list of values. Options also map the value they contain to a command-line flag, such as &apos;-g&apos; in the case of debugging symbol information for compilers.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="enumeratedOptionValue"/>
            <element ref="listOptionValue"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  A unique identifier for the option.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  A descriptive name for the option.
               </documentation>
            </annotation>
         </attribute>
         <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.

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>
            <simpleType>
               <restriction base="string">
                  <enumeration value="string">
                  </enumeration>
                  <enumeration value="stringList">
                  </enumeration>
                  <enumeration value="boolean">
                  </enumeration>
                  <enumeration value="enumerated">
                  </enumeration>
                  <enumeration value="includePath">
                  </enumeration>
                  <enumeration value="definedSymbols">
                  </enumeration>
                  <enumeration value="libs">
                  </enumeration>
                  <enumeration value="userObjs">
                  </enumeration>
               </restriction>
            </simpleType>
         </attribute>
         <attribute name="category" type="string">
            <annotation>
               <documentation>
                  This is the id of the option category for this option.  The id can be the id of the tool which is also a category.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="defaultValue" type="string">
            <annotation>
               <documentation>
                  Specifies the default value for the option if the &apos;value&apos; field is blank. For enumerated options the optionEnums will be searched for the default. For string list options, all defined optionValues will be treated as defaults. For boolean values, specify truth using the string &apos;true&apos;. All other strings will be treated as false.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="command" type="string">
            <annotation>
               <documentation>
                  An optional value that specifies the actual command that will be passed to the tool on the command line.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="enumeratedOptionValue">
      <annotation>
         <documentation>
            Defines a single value of an enumerated option.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  Unique identifier for the option enumeration.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  A descriptive name for the enumeration.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="isDefault" type="boolean">
            <annotation>
               <documentation>
                  Flags this enumerated value as the default to apply to the option if the user has not changed the setting.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="command" type="string">
            <annotation>
               <documentation>
                  The command that the enumerated value translates to on the command line.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="configuration">
      <annotation>
         <documentation>
            A configuration is used to gather together certain default tools and options to build  target a certain way. For example, a &quot;Debug&quot; configuration might supply tools with the options set to build with debugging symbols, whereas a &quot;Release&quot; configuration would supply tools with options set to create the best performance.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="toolReference"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  Unique identifier for the configuration.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  A descriptive name for the configuration to be used in the UI.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="toolReference">
      <annotation>
         <documentation>
            This is reserved for future use. It currently gets instantiated for saving tool settings.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="optionReference"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="optionReference">
      <annotation>
         <documentation>
            Option references hold onto information the user has changed through the UI. Not all fields will be populated, depending on the option type the reference overrides. For example, the &apos;name&apos; field is used by enumerated options only.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  The ID of the option the reference is for.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="defaultValue" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="command" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="target">
      <annotation>
         <documentation>
            Represents a type of resource that is the target of the build process, for example, a Linux Library.  A target contains a sequence of tool definitions and configurations.  Targets are arranged in an inheritance hierarchy where a target inherits the list of tools from it&apos;s parent and can add to or override tools in this list.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="tool"/>
            <element ref="configuration"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  Used by the build model to uniquely identify the target.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  A human-readable target name, such as &apos;Linux Executable&apos;. This will be the name the user sees displayed in the UI.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="isAbstract" type="boolean" use="default" value="false">
            <annotation>
               <documentation>
                  This is a UI property.  If set to true, users should not be able to create project configurations targeted at this target.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="parent" type="string">
            <annotation>
               <documentation>
                  The id of a target that this tool inherits from.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="artifactName" type="string">
            <annotation>
               <documentation>
                  This is the name of the final build artifact associated with the target. The user will specify this is the UI, so there is no need to supply a default value.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="defaultExtension" type="string">
            <annotation>
               <documentation>
                  This is the extensionthat will be applied to any build artifact created by the target.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="isTest" type="boolean">
            <annotation>
               <documentation>
                  A an optional field that flags a target as a test-only target. If true, the target will not appear in the UI.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="cleanCommand" type="string">
            <annotation>
               <documentation>
                  This attribute maintains the command that removes files for a particular target. For example, on POSIX targets like Linuc, Solaris, or Cygwin, the command would be &lt;code&gt;rm -rf&lt;/code&gt; whereas on Win32 platforms it would be &lt;code&gt;del /F /S /Q&lt;/code&gt;
               </documentation>
            </annotation>
         </attribute>
         <attribute name="makeCommand" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="makeFlags" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="binaryParser" type="string" use="required">
            <annotation>
               <documentation>
                  Set this to the ID of the binary parser for the output format of your target. Currently there are only 2 choices: org.eclipse.cdt.core.ELF for *nix targets, and &quot;org.eclipse.cdt.core.PE&quot; for targets that build for Windows, like Cygwin.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="osList" type="string">
            <annotation>
               <documentation>
                  This field is used by the managed build system to decide when to show the user the target. The value should be a comma-separated list. Current values are &quot;win32&quot;, &quot;linux&quot;, and &quot;solaris&quot;.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="optionCategory">
      <annotation>
         <documentation>
            An optional, but useful, mechanism for grouping options together.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  Used by the build model to uniquely identify the option category.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  A human-readable category name, such as &apos;Preprocessor Options&apos;. This will be the name the user sees displayed in the UI.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="owner" type="string">
            <annotation>
               <documentation>
                  Option categories can be nested inside other option categories. This is the ID of the owner of the category.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="listOptionValue">
      <annotation>
         <documentation>
            A value for defining individual elements of a list option.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="value" type="string" use="required">
            <annotation>
               <documentation>
                  The contents of the list item.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="builtIn" type="boolean">
            <annotation>
               <documentation>
                  This attribute flags the list value as a built-in value as opposed to something the user has entered. Built-ins will not be passed to clients that generate command lines (like the makefile generator). However, clients that need to take these settings into account (like the indexing service), will receive these settings. These values will appear grey in the UI.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="since"/>
      </appInfo>
      <documentation>
         1.2
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <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;
&lt;/pre&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         An implementation of this extension point is supplied in &lt;samp&gt;org.eclipse.cdt.ui&lt;/samp&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         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>

</schema>
