- * The configuration contains one child of type tool-chain. This describes how the
+ * The configuration contains one child of type tool-chain. This describes how the
* project's resources are transformed into the build artifact. The configuration can
* contain one or more children of type resourceConfiguration. These describe build
* settings of individual resources that are different from the configuration as a whole.
- *
+ *
* @since 2.1
* @noextend This class is not intended to be subclassed by clients.
* @noimplement This interface is not intended to be implemented by clients.
@@ -39,33 +39,35 @@ import org.eclipse.core.runtime.IPath;
public interface IConfiguration extends IBuildObject, IBuildObjectPropertiesContainer {
public static final String ARTIFACT_NAME = "artifactName"; //$NON-NLS-1$
public static final String CLEAN_COMMAND = "cleanCommand"; //$NON-NLS-1$
- public static final String PREBUILD_STEP = "prebuildStep"; //$NON-NLS-1$
- public static final String POSTBUILD_STEP = "postbuildStep"; //$NON-NLS-1$
- public static final String PREANNOUNCEBUILD_STEP = "preannouncebuildStep"; //$NON-NLS-1$
- public static final String POSTANNOUNCEBUILD_STEP = "postannouncebuildStep"; //$NON-NLS-1$
+ public static final String PREBUILD_STEP = "prebuildStep"; //$NON-NLS-1$
+ public static final String POSTBUILD_STEP = "postbuildStep"; //$NON-NLS-1$
+ public static final String PREANNOUNCEBUILD_STEP = "preannouncebuildStep"; //$NON-NLS-1$
+ public static final String POSTANNOUNCEBUILD_STEP = "postannouncebuildStep"; //$NON-NLS-1$
// Schema element names
public static final String CONFIGURATION_ELEMENT_NAME = "configuration"; //$NON-NLS-1$
public static final String ERROR_PARSERS = "errorParsers"; //$NON-NLS-1$
+ /** @since 8.1 */
+ public static final String LANGUAGE_SETTINGS_PROVIDERS = "languageSettingsProviders";
public static final String EXTENSION = "artifactExtension"; //$NON-NLS-1$
public static final String PARENT = "parent"; //$NON-NLS-1$
-
+
public static final String DESCRIPTION = "description"; //$NON-NLS-1$
-
+
public static final String BUILD_PROPERTIES = "buildProperties"; //$NON-NLS-1$
public static final String BUILD_ARTEFACT_TYPE = "buildArtefactType"; //$NON-NLS-1$
public static final String IS_SYSTEM = "isSystem"; //$NON-NLS-1$
public static final String SOURCE_ENTRIES = "sourceEntries"; //$NON-NLS-1$
-
-
+
+
/**
* Returns the description of the configuration.
- *
+ *
* @return String
*/
public String getDescription();
-
+
/**
* Sets the description of the receiver to the value specified in the argument
*/
@@ -84,204 +86,212 @@ public interface IConfiguration extends IBuildObject, IBuildObjectPropertiesCont
* @param name - The name for the new tool chain
* @param isExtensionElement - set {@code true} if the toolchain being created
* represents extension point toolchain
- *
+ *
* @return IToolChain
*/
public IToolChain createToolChain(IToolChain superClass, String Id, String name, boolean isExtensionElement);
-
+
/**
- * Returns the extension that should be applied to build artifacts created by
+ * Returns the extension that should be applied to build artifacts created by
* this configuration.
- *
+ *
* @return String
*/
- public String getArtifactExtension();
+ public String getArtifactExtension();
/**
* Returns the name of the final build artifact.
- *
+ *
* @return String
*/
public String getArtifactName();
/**
- * Returns the build arguments from this configuration's builder
- *
+ * Returns the build arguments from this configuration's builder
+ *
* @return String
*/
public String getBuildArguments();
/**
- * Returns the build command from this configuration's builder
- *
+ * Returns the build command from this configuration's builder
+ *
* @return String
*/
public String getBuildCommand();
-
+
/**
* Returns the prebuild step command
- *
- * @return String
- */
- public String getPrebuildStep();
-
- /**
- * Returns the postbuild step command
- *
- * @return String
- */
- public String getPostbuildStep();
-
- /**
- * Returns the display string associated with the prebuild step
- *
- * @return String
- */
- public String getPreannouncebuildStep();
-
- /**
- * Returns the display string associated with the postbuild step
- *
- * @return String
- */
- public String getPostannouncebuildStep();
-
- /**
+ *
+ * @return String
+ */
+ public String getPrebuildStep();
+
+ /**
+ * Returns the postbuild step command
+ *
+ * @return String
+ */
+ public String getPostbuildStep();
+
+ /**
+ * Returns the display string associated with the prebuild step
+ *
+ * @return String
+ */
+ public String getPreannouncebuildStep();
+
+ /**
+ * Returns the display string associated with the postbuild step
+ *
+ * @return String
+ */
+ public String getPostannouncebuildStep();
+
+ /**
* Answers the OS-specific command to remove files created by the build
* of this configuration.
- *
+ *
* @return String
*/
public String getCleanCommand();
/**
- * Answers the semicolon separated list of unique IDs of the error parsers associated
+ * Answers the semicolon separated list of unique IDs of the error parsers associated
* with this configuration.
- *
+ *
* @return String
*/
public String getErrorParserIds();
/**
- * Answers the ordered list of unique IDs of the error parsers associated
+ * Answers the ordered list of unique IDs of the error parsers associated
* with this configuration.
- *
+ *
* @return String[]
*/
public String[] getErrorParserList();
-
+
/**
- * Projects have C or CC natures. Tools can specify a filter so they are not
- * misapplied to a project. This method allows the caller to retrieve a list
- * of tools from a project that are correct for a project's nature.
- *
- * @return an array of ITools
that have compatible filters
+ * Returns default language settings providers IDs specified for the configuration.
+ * @return default language settings providers IDs.
+ *
+ * @since 8.1
+ */
+ public String[] getDefaultLanguageSettingsProvidersIds();
+
+ /**
+ * Projects have C or CC natures. Tools can specify a filter so they are not
+ * misapplied to a project. This method allows the caller to retrieve a list
+ * of tools from a project that are correct for a project's nature.
+ *
+ * @return an array of ITools
that have compatible filters
* for this configuration.
*/
ITool[] getFilteredTools();
-
+
/**
* Returns the managed-project parent of this configuration, if this is a
* project configuration. Otherwise, returns null
.
- *
+ *
* @return IManagedProject
*/
public IManagedProject getManagedProject();
-
+
/**
* Returns the Eclipse project that owns the configuration.
- *
+ *
* @return IResource
*/
public IResource getOwner();
-
+
/**
- * Returns the configuration that this configuration is based on.
- *
+ * Returns the configuration that this configuration is based on.
+ *
* @return IConfiguration
*/
public IConfiguration getParent();
-
+
/**
* Returns the project-type parent of this configuration, if this is an
* extension configuration. Otherwise, returns null
.
- *
+ *
* @return IProjectType
*/
public IProjectType getProjectType();
-
+
/**
* @param path - path of the resource
- *
+ *
* @return the resource configuration child of this configuration
* that is associated with the project resource, or null
if none.
*/
public IResourceConfiguration getResourceConfiguration(String path);
-
+
/**
* Returns the resource configuration children of this configuration.
- *
+ *
* @return IResourceConfigurations[]
*/
public IResourceConfiguration[] getResourceConfigurations();
-
+
/**
* Returns the ITool
in this configuration's tool-chain with
- * the same id as the argument, or null
.
- *
+ * the same id as the argument, or null
.
+ *
* @param id unique identifier to search for
* @return ITool
*/
public ITool getTool(String id);
/**
- * Returns the ITool
in this configuration's tool-chain with
- * the specified ID, or the tool(s) with a superclass with this id.
- *
- *
If the tool-chain does not have a tool with that ID, the method
- * returns an empty array. It is the responsibility of the caller to
- * verify the return value.
- *
+ * Returns the ITool
in this configuration's tool-chain with
+ * the specified ID, or the tool(s) with a superclass with this id.
+ *
+ *
If the tool-chain does not have a tool with that ID, the method
+ * returns an empty array. It is the responsibility of the caller to
+ * verify the return value.
+ *
* @param id unique identifier of the tool to search for
* @return ITool[]
* @since 3.0.2
*/
public ITool[] getToolsBySuperClassId(String id);
-
+
/**
* Returns the IToolChain
child of this configuration.
- *
+ *
* @return IToolChain
*/
public IToolChain getToolChain();
-
+
/**
* Returns the command-line invocation command for the specified tool.
- *
+ *
* @param tool The tool that will have its command retrieved.
* @return String The command
*/
public String getToolCommand(ITool tool);
-
+
/**
* Returns the tools that are used in this configuration's tool-chain.
- *
+ *
* @return ITool[]
*/
public ITool[] getTools();
/**
- * Returns the tool in this configuration specified with
+ * Returns the tool in this configuration specified with
* the toolChain#targetTool attribute that creates the build artifact
- *
- * NOTE: This method returns null in case the toolChain definition
+ *
+ * NOTE: This method returns null in case the toolChain definition
* does not have the targetTool attribute or if the attribute does not
* refer to the appropriate tool.
* For the target tool calculation the IConfiguration#calculateTargetTool()
* method should be used
- *
+ *
* @see IConfiguration#calculateTargetTool()
- *
+ *
* @return ITool
*/
public ITool getTargetTool();
@@ -289,42 +299,42 @@ public interface IConfiguration extends IBuildObject, IBuildObjectPropertiesCont
/**
* Returns true
if this configuration has overridden the default build
* build command in this configuration, otherwise false
.
- *
- * @return boolean
+ *
+ * @return boolean
*/
public boolean hasOverriddenBuildCommand();
-
+
/**
- * Returns true
if the extension matches one of the special
- * file extensions the tools for the configuration consider to be a header file.
- *
+ * Returns true
if the extension matches one of the special
+ * file extensions the tools for the configuration consider to be a header file.
+ *
* @param ext the file extension of the resource
* @return boolean
*/
public boolean isHeaderFile(String ext);
-
+
/**
- * Returns true
if this configuration has changes that need to
- * be saved in the project file, else false
.
+ * Returns true
if this configuration has changes that need to
+ * be saved in the project file, else false
.
* Should not be called for an extension configuration.
- *
- * @return boolean
+ *
+ * @return boolean
*/
public boolean isDirty();
-
+
/**
* Returns true
if this configuration was loaded from a manifest file,
* and false
if it was loaded from a project (.cdtbuild) file.
- *
- * @return boolean
+ *
+ * @return boolean
*/
public boolean isExtensionElement();
/**
- * Returns whether this configuration has been changed and requires the
+ * Returns whether this configuration has been changed and requires the
* project to be rebuilt.
- *
- * @return true
if the configuration contains a change
+ *
+ * @return true
if the configuration contains a change
* that needs the project to be rebuilt.
* Should not be called for an extension configuration.
*/
@@ -332,13 +342,13 @@ public interface IConfiguration extends IBuildObject, IBuildObjectPropertiesCont
/**
* Removes a resource configuration from the configuration's list.
- *
+ *
* @param resConfig - resource configuration to remove
*/
public void removeResourceConfiguration(IResourceInfo resConfig);
-
+
public void removeResourceInfo(IPath path);
-
+
/**
* Set (override) the extension that should be appended to the build artifact
* for the receiver.
@@ -352,7 +362,7 @@ public interface IConfiguration extends IBuildObject, IBuildObjectPropertiesCont
public void setArtifactName(String name);
/**
- * Sets the arguments to be passed to the build utility used by the
+ * Sets the arguments to be passed to the build utility used by the
* receiver to produce a build goal.
*/
public void setBuildArguments(String makeArgs);
@@ -363,26 +373,26 @@ public interface IConfiguration extends IBuildObject, IBuildObjectPropertiesCont
public void setBuildCommand(String command);
/**
- * Sets the prebuild step for the receiver to the value in the argument.
- */
- public void setPrebuildStep(String step);
-
- /**
- * Sets the postbuild step for the receiver to the value in the argument.
- */
- public void setPostbuildStep(String step);
-
- /**
- * Sets the prebuild step display string for the receiver to the value in the argument.
- */
- public void setPreannouncebuildStep(String announceStep);
-
- /**
- * Sets the postbuild step display string for the receiver to the value in the argument.
- */
- public void setPostannouncebuildStep(String announceStep);
-
- /**
+ * Sets the prebuild step for the receiver to the value in the argument.
+ */
+ public void setPrebuildStep(String step);
+
+ /**
+ * Sets the postbuild step for the receiver to the value in the argument.
+ */
+ public void setPostbuildStep(String step);
+
+ /**
+ * Sets the prebuild step display string for the receiver to the value in the argument.
+ */
+ public void setPreannouncebuildStep(String announceStep);
+
+ /**
+ * Sets the postbuild step display string for the receiver to the value in the argument.
+ */
+ public void setPostannouncebuildStep(String announceStep);
+
+ /**
* Sets the command used to clean the outputs of this configuration.
* @param command - the command to clean outputs
*/
@@ -404,46 +414,46 @@ public interface IConfiguration extends IBuildObject, IBuildObjectPropertiesCont
* Sets the name of the receiver to the value specified in the argument
*/
public void setName(String name);
-
+
/**
* Sets the value of a boolean option for this configuration.
- *
+ *
* @param parent The holder/parent of the option.
* @param option The option to change.
* @param value The value to apply to the option.
- *
+ *
* @return IOption The modified option. This can be the same option or a newly created option.
- *
+ *
* @since 3.0 - The type of parent has changed from ITool to IHoldsOptions.
* Code assuming ITool as type, will continue to work unchanged.
*/
- public IOption setOption(IHoldsOptions parent, IOption option, boolean value)
- throws BuildException;
+ public IOption setOption(IHoldsOptions parent, IOption option, boolean value)
+ throws BuildException;
/**
* Sets the value of a string option for this configuration.
- *
+ *
* @param parent The holder/parent of the option.
* @param option The option that will be effected by change.
* @param value The value to apply to the option.
- *
+ *
* @return IOption The modified option. This can be the same option or a newly created option.
- *
+ *
* @since 3.0 - The type of parent has changed from ITool to IHoldsOptions.
* Code assuming ITool as type, will continue to work unchanged.
*/
public IOption setOption(IHoldsOptions parent, IOption option, String value)
throws BuildException;
-
+
/**
* Sets the value of a list option for this configuration.
- *
+ *
* @param parent The holder/parent of the option.
* @param option The option to change.
* @param value The values to apply to the option.
- *
+ *
* @return IOption The modified option. This can be the same option or a newly created option.
- *
+ *
* @since 3.0 - The type of parent has changed from ITool to IHoldsOptions.
* Code assuming ITool as type, will continue to work unchanged.
*/
@@ -452,7 +462,7 @@ public interface IConfiguration extends IBuildObject, IBuildObjectPropertiesCont
/**
* Sets the rebuild state in this configuration.
- *
+ *
* @param rebuild true
will force a rebuild the next time the project builds
* @see org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo#setRebuildState(boolean)
*/
@@ -460,93 +470,93 @@ public interface IConfiguration extends IBuildObject, IBuildObjectPropertiesCont
/**
* Overrides the tool command for a tool defined in this configuration's tool-chain.
- *
+ *
* @param tool The tool that will have its command modified.
* @param command The command
*/
public void setToolCommand(ITool tool, String command);
-
+
/**
* Returns true
if the configuration's tool-chain is supported on the system
* otherwise returns false
- *
- * @return boolean
- */
+ *
+ * @return boolean
+ */
public boolean isSupported();
-
+
/**
* Returns the implementation of the IConfigurationEnvironmentVariableSupplier provided
* by the tool-integrator or null
if none.
- *
- * @return IConfigurationEnvironmentVariableSupplier
- */
+ *
+ * @return IConfigurationEnvironmentVariableSupplier
+ */
public IConfigurationEnvironmentVariableSupplier getEnvironmentVariableSupplier();
-
+
/**
* Returns the tool-integrator provided implementation of the configuration build macro supplier
- * or null
if none.
- *
+ * or null
if none.
+ *
* @return IConfigurationBuildMacroSupplier
*/
public IConfigurationBuildMacroSupplier getBuildMacroSupplier();
-
+
/**
* answers true if the configuration is temporary, otherwise - false
* @return boolean
*/
public boolean isTemporary();
-
+
/**
* Returns whether this configuration requires a full rebuild
- *
+ *
* @return boolean
*/
public boolean needsFullRebuild();
/**
* Calculates the configuration target tool.
- *
+ *
* @return ITool or null if not found
- *
+ *
* @since 3.1
*/
public ITool calculateTargetTool();
-
+
/**
- * Returns a ITool
for the tool associated with the
+ * Returns a ITool
for the tool associated with the
* output extension.
- *
+ *
* @param extension the file extension of the output file
* @return ITool
- *
+ *
* @since 3.1
*/
public ITool getToolFromOutputExtension(String extension);
-
+
/**
- * Returns a ITool
for the tool associated with the
+ * Returns a ITool
for the tool associated with the
* input extension.
- *
+ *
* @param sourceExtension the file extension of the input file
* @return ITool
- *
+ *
* @since 3.1
*/
public ITool getToolFromInputExtension(String sourceExtension);
-
+
IResourceInfo getResourceInfo(IPath path, boolean exactPath);
-
+
IResourceInfo[] getResourceInfos();
-
+
IResourceInfo getResourceInfoById(String id);
-
- IFolderInfo getRootFolderInfo();
-
+
+ IFolderInfo getRootFolderInfo();
+
IFileInfo createFileInfo(IPath path);
IFileInfo createFileInfo(IPath path, String id, String name);
-
+
IFileInfo createFileInfo(IPath path, IFolderInfo base, ITool baseTool, String id, String name);
IFileInfo createFileInfo(IPath path, IFileInfo base, String id, String name);
@@ -554,49 +564,49 @@ public interface IConfiguration extends IBuildObject, IBuildObjectPropertiesCont
IFolderInfo createFolderInfo(IPath path);
IFolderInfo createFolderInfo(IPath path, String id, String name);
-
+
IFolderInfo createFolderInfo(IPath path, IFolderInfo base, String id, String name);
-
+
CConfigurationData getConfigurationData();
-
+
ICSourceEntry[] getSourceEntries();
void setSourceEntries(ICSourceEntry[] entries);
-
+
CBuildData getBuildData();
-
+
IBuilder getBuilder();
-
+
IBuilder getEditableBuilder();
-
+
String getOutputPrefix(String outputExtension);
-
+
boolean isSystemObject();
-
+
String getOutputExtension(String resourceExtension);
-
+
String getOutputFlag(String outputExt);
-
- IManagedCommandLineInfo generateToolCommandLineInfo( String sourceExtension, String[] flags,
+
+ IManagedCommandLineInfo generateToolCommandLineInfo( String sourceExtension, String[] flags,
String outputFlag, String outputPrefix, String outputName, String[] inputResources, IPath inputLocation, IPath outputLocation );
-
+
String[] getUserObjects(String extension);
-
+
String[] getLibs(String extension);
-
+
boolean buildsFileType(String srcExt);
-
+
boolean supportsBuild(boolean managed);
-
+
boolean isManagedBuildOn();
void setManagedBuildOn(boolean on) throws BuildException;
-
+
boolean isBuilderCompatible(IBuilder builder);
-
+
void changeBuilder(IBuilder newBuilder, String id, String name);
-
+
IBuildPropertyValue getBuildArtefactType();
-
+
void setBuildArtefactType(String id) throws BuildException;
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IToolChain.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IToolChain.java
index 57cba447fca..2757a06b134 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IToolChain.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IToolChain.java
@@ -16,19 +16,19 @@ import org.eclipse.cdt.managedbuilder.macros.IConfigurationBuildMacroSupplier;
/**
- * This interface represents a tool-integrator-defined, ordered set of tools
- * that transform the project's input into the project's outputs. A
- * tool-chain can be defined as part of a configuration, or as an
+ * This interface represents a tool-integrator-defined, ordered set of tools
+ * that transform the project's input into the project's outputs. A
+ * tool-chain can be defined as part of a configuration, or as an
* independent specification that is referenced in a separate configuration
* via the toolChain superclass attribute.
*
* The toolChain contains one or more children of type tool. These define
- * the tools used in the tool-chain. The toolChain contains one child of
+ * the tools used in the tool-chain. The toolChain contains one child of
* type targetPlatform. This defines the architecture/os combination where
- * the outputs of the project can be deployed. The toolChain contains one
+ * the outputs of the project can be deployed. The toolChain contains one
* child of type builder. This defines the "build" or "make" utility that
* is used to drive the transformation of the inputs into outputs.
- *
+ *
* @since 2.1
* @noextend This class is not intended to be subclassed by clients.
* @noimplement This interface is not intended to be implemented by clients.
@@ -49,13 +49,16 @@ public interface IToolChain extends IBuildObject, IHoldsOptions {
public static final String IS_SYSTEM= "isSystem"; //$NON-NLS-1$
public static final String NON_INTERNAL_BUILDER_ID = "nonInternalBuilderId"; //$NON-NLS-1$
public static final String RESOURCE_TYPE_BASED_DISCOVERY = "resourceTypeBasedDiscovery"; //$NON-NLS-1$
-
+
// The attribute name for the scanner info collector
public static final String SCANNER_CONFIG_PROFILE_ID = "scannerConfigDiscoveryProfileId"; //$NON-NLS-1$
+ /** @since 8.1 */
+ public static final String LANGUAGE_SETTINGS_PROVIDERS = "languageSettingsProviders";
+
/**
* Returns the configuration that is the parent of this tool-chain.
- *
+ *
* @return IConfiguration
*/
public IConfiguration getParent();
@@ -67,14 +70,14 @@ public interface IToolChain extends IBuildObject, IHoldsOptions {
* @param Id The id for the new tool chain
* @param name The name for the new tool chain
* @param isExtensionElement Indicates whether this is an extension element or a managed project element
- *
+ *
* @return ITargetPlatform
*/
public ITargetPlatform createTargetPlatform(ITargetPlatform superClass, String Id, String name, boolean isExtensionElement);
/**
* Returns the target-platform child of this tool-chain
- *
+ *
* @return ITargetPlatform
*/
public ITargetPlatform getTargetPlatform();
@@ -87,30 +90,30 @@ public interface IToolChain extends IBuildObject, IHoldsOptions {
/**
* Returns the 'versionsSupported' of this tool-chain
- *
+ *
* @return String
*/
public String getVersionsSupported();
/**
* Returns the 'convertToId' of this tool-chain
- *
+ *
* @return String
*/
public String getConvertToId();
-
+
/**
- * Sets the 'versionsSupported' attribute of the tool-chain.
+ * Sets the 'versionsSupported' attribute of the tool-chain.
*/
-
+
public void setVersionsSupported(String versionsSupported);
-
+
/**
- * Sets the 'convertToId' attribute of the tool-chain.
+ * Sets the 'convertToId' attribute of the tool-chain.
*/
public void setConvertToId(String convertToId);
-
+
/**
* Creates the Builder
child of this tool-chain.
*
@@ -118,7 +121,7 @@ public interface IToolChain extends IBuildObject, IHoldsOptions {
* @param Id The id for the new tool chain
* @param name The name for the new tool chain
* @param isExtensionElement Indicates whether this is an extension element or a managed project element
- *
+ *
* @return IBuilder
*/
public IBuilder createBuilder(IBuilder superClass, String Id, String name, boolean isExtensionElement);
@@ -131,7 +134,7 @@ public interface IToolChain extends IBuildObject, IHoldsOptions {
/**
* Returns the builder child of this tool-chain.
- *
+ *
* @return IBuilder
*/
public IBuilder getBuilder();
@@ -143,35 +146,35 @@ public interface IToolChain extends IBuildObject, IHoldsOptions {
* @param Id The id for the new tool chain
* @param name The name for the new tool chain
* @param isExtensionElement Indicates whether this is an extension element or a managed project element
- *
+ *
* @return ITool
*/
public ITool createTool(ITool superClass, String Id, String name, boolean isExtensionElement);
/**
* Returns an array of tool children of this tool-chain
- *
+ *
* @return ITool[]
*/
public ITool[] getTools();
/**
- * Returns the tool in this tool-chain with the ID specified in the argument,
- * or null
- *
+ * Returns the tool in this tool-chain with the ID specified in the argument,
+ * or null
+ *
* @param id The ID of the requested tool
* @return ITool
*/
public ITool getTool(String id);
/**
- * Returns the ITool
in the tool-chain with the specified
- * ID, or the tool(s) with a superclass with this id.
- *
- *
If the tool-chain does not have a tool with that ID, the method
- * returns an empty array. It is the responsibility of the caller to
- * verify the return value.
- *
+ * Returns the ITool
in the tool-chain with the specified
+ * ID, or the tool(s) with a superclass with this id.
+ *
+ *
If the tool-chain does not have a tool with that ID, the method
+ * returns an empty array. It is the responsibility of the caller to
+ * verify the return value.
+ *
* @param id unique identifier of the tool to search for
* @return ITool[]
* @since 3.0.2
@@ -181,55 +184,55 @@ public interface IToolChain extends IBuildObject, IHoldsOptions {
/**
* Returns the IToolChain
that is the superclass of this
* tool-chain, or null
if the attribute was not specified.
- *
+ *
* @return IToolChain
*/
public IToolChain getSuperClass();
-
+
/**
* Returns whether this element is abstract. Returns false
* if the attribute was not specified.
- * @return boolean
+ * @return boolean
*/
public boolean isAbstract();
/**
- * Sets the isAbstract attribute of the tool-chain.
+ * Sets the isAbstract attribute of the tool-chain.
*/
public void setIsAbstract(boolean b);
-
+
/**
* Returns a semi-colon delimited list of child Ids of the superclass'
* children that should not be automatically inherited by this element.
- * Returns an empty string if the attribute was not specified.
- * @return String
+ * Returns an empty string if the attribute was not specified.
+ * @return String
*/
public String getUnusedChildren();
-
+
/**
* Returns an array of operating systems the tool-chain outputs can run on.
- *
+ *
* @return String[]
*/
public String[] getOSList();
/**
* Sets the OS list.
- *
+ *
* @param OSs The list of OS names
*/
public void setOSList(String[] OSs);
-
+
/**
* Returns an array of architectures the tool-chain outputs can run on.
- *
+ *
* @return String[]
*/
public String[] getArchList();
-
+
/**
* Sets the architecture list.
- *
+ *
* @param archs The list of architecture names
*/
public void setArchList(String[] archs);
@@ -237,7 +240,7 @@ public interface IToolChain extends IBuildObject, IHoldsOptions {
/**
* Returns the semicolon separated list of unique IDs of the error parsers associated
* with the tool-chain.
- *
+ *
* @return String
*/
public String getErrorParserIds();
@@ -249,9 +252,9 @@ public interface IToolChain extends IBuildObject, IHoldsOptions {
public String getErrorParserIds(IConfiguration config);
/**
- * Returns the ordered list of unique IDs of the error parsers associated with the
+ * Returns the ordered list of unique IDs of the error parsers associated with the
* tool-chain.
- *
+ *
* @return String[]
*/
public String[] getErrorParserList();
@@ -262,8 +265,17 @@ public interface IToolChain extends IBuildObject, IHoldsOptions {
public void setErrorParserIds(String ids);
/**
- * Returns the scanner config discovery profile id or null
if none.
- *
+ * Returns the default language settings providers IDs.
+ *
+ * @return the default language settings providers IDs separated by semicolon or {@code null} if none.
+ *
+ * @since 8.1
+ */
+ public String getDefaultLanguageSettingsProvidersIds();
+
+ /**
+ * Returns the scanner config discovery profile id or null
if none.
+ *
* @return String
*/
public String getScannerConfigDiscoveryProfileId();
@@ -274,93 +286,93 @@ public interface IToolChain extends IBuildObject, IHoldsOptions {
public void setScannerConfigDiscoveryProfileId(String profileId);
/**
- * Returns the sem-colon separated list of Tool ids containing each
- * tool that can create the final build artifact (the end target of
- * the build). MBS will use the first ID in the list that matches
- * a Tool in the ToolChain. One reason for specifying a list, is
- * that different versions of a tool can be selected based upon the
+ * Returns the sem-colon separated list of Tool ids containing each
+ * tool that can create the final build artifact (the end target of
+ * the build). MBS will use the first ID in the list that matches
+ * a Tool in the ToolChain. One reason for specifying a list, is
+ * that different versions of a tool can be selected based upon the
* project nature (e.g. different tool definitions for a linker for C vs. C++).
- *
+ *
* @return String
*/
public String getTargetToolIds();
/**
- * Sets the sem-colon separated list of Tool ids containing each
- * tool that can create the final build artifact (the end target of
- * the build).
+ * Sets the sem-colon separated list of Tool ids containing each
+ * tool that can create the final build artifact (the end target of
+ * the build).
*/
public void setTargetToolIds(String targetToolIds);
/**
- * Returns the list of Tool ids containing each
- * tool that can create the final build artifact (the end target of
- * the build). MBS will use the first ID in the list that matches
- * a Tool in the ToolChain. One reason for specifying a list, is
- * that different versions of a tool can be selected based upon the
+ * Returns the list of Tool ids containing each
+ * tool that can create the final build artifact (the end target of
+ * the build). MBS will use the first ID in the list that matches
+ * a Tool in the ToolChain. One reason for specifying a list, is
+ * that different versions of a tool can be selected based upon the
* project nature (e.g. different tool definitions for a linker for C vs. C++).
- *
+ *
* @return String[]
*/
public String[] getTargetToolList();
-
+
/**
- * Returns the OutputTypes in this tool-chain, besides the primary
- * output of the targetTool, that are also considered to be build
- * artifacts.
- *
+ * Returns the OutputTypes in this tool-chain, besides the primary
+ * output of the targetTool, that are also considered to be build
+ * artifacts.
+ *
* @return IOutputType[]
*/
public IOutputType[] getSecondaryOutputs();
-
+
/**
- * Sets the semicolon separated list of OutputType identifiers in
+ * Sets the semicolon separated list of OutputType identifiers in
* this tool-chain, besides the primary output of the targetTool,
- * that are also considered to be build artifacts.
+ * that are also considered to be build artifacts.
*/
public void setSecondaryOutputs(String ids);
/**
- * Returns true
if this tool-chain has changes that need to
+ * Returns true
if this tool-chain has changes that need to
* be saved in the project file, else false
.
- *
- * @return boolean
+ *
+ * @return boolean
*/
public boolean isDirty();
-
+
/**
* Sets the element's "dirty" (have I been modified?) flag.
*/
public void setDirty(boolean isDirty);
-
+
/**
* Returns true
if this tool-chain was loaded from a manifest file,
* and false
if it was loaded from a project (.cdtbuild) file.
- *
- * @return boolean
+ *
+ * @return boolean
*/
public boolean isExtensionElement();
-
+
/**
* Returns true
if the tool-chain support is installed on the system
* otherwise returns false
- *
- * @return boolean
- */
+ *
+ * @return boolean
+ */
public boolean isSupported();
-
+
/**
* Returns the tool-integrator provided implementation of the configuration environment variable supplier
- * or null
if none.
- *
+ * or null
if none.
+ *
* @return IConfigurationEnvironmentVariableSupplier
*/
public IConfigurationEnvironmentVariableSupplier getEnvironmentVariableSupplier();
-
+
/**
* Returns the tool-integrator provided implementation of the configuration build macro supplier
- * or null
if none.
- *
+ * or null
if none.
+ *
* @return IConfigurationBuildMacroSupplier
*/
public IConfigurationBuildMacroSupplier getBuildMacroSupplier();
@@ -370,16 +382,16 @@ public interface IToolChain extends IBuildObject, IHoldsOptions {
* or null, if no conversion is required
*/
public IOptionPathConverter getOptionPathConverter() ;
-
+
IFolderInfo getParentFolderInfo();
-
+
CTargetPlatformData getTargetPlatformData();
-
+
boolean supportsBuild(boolean managed);
-
+
boolean isSystemObject();
-
+
boolean matches(IToolChain tc);
-
+
String getUniqueRealName();
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/InternalBuildRunner.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/InternalBuildRunner.java
index f50ce9993aa..84c0d9c7d2b 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/InternalBuildRunner.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/InternalBuildRunner.java
@@ -13,14 +13,23 @@ package org.eclipse.cdt.managedbuilder.core;
import java.io.IOException;
import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
import org.eclipse.cdt.core.ConsoleOutputStream;
import org.eclipse.cdt.core.ErrorParserManager;
import org.eclipse.cdt.core.IMarkerGenerator;
+import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
+import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper;
import org.eclipse.cdt.core.model.ICModelMarker;
import org.eclipse.cdt.core.resources.IConsole;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.make.core.scannerconfig.AbstractBuildCommandParser;
import org.eclipse.cdt.managedbuilder.buildmodel.BuildDescriptionManager;
import org.eclipse.cdt.managedbuilder.buildmodel.IBuildDescription;
+import org.eclipse.cdt.managedbuilder.internal.buildmodel.BuildDescription;
import org.eclipse.cdt.managedbuilder.internal.buildmodel.BuildStateManager;
import org.eclipse.cdt.managedbuilder.internal.buildmodel.DescriptionBuilder;
import org.eclipse.cdt.managedbuilder.internal.buildmodel.IBuildModelBuilder;
@@ -35,12 +44,13 @@ import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
/**
* The build runner for the internal builder.
- *
+ *
* @author dschaefer
* @since 8.0
*/
@@ -61,6 +71,21 @@ public class InternalBuildRunner extends AbstractBuildRunner {
private static final String NOTHING_BUILT = "ManagedMakeBuilder.message.no.build"; //$NON-NLS-1$
private static final String BUILD_ERROR = "ManagedMakeBuilder.message.error"; //$NON-NLS-1$
+
+ // TODO: same function is present in CommandBuilder and BuildProcessManager
+ private String[] mapToStringArray(Map