1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-04 14:55:41 +02:00

Adding more work from Timesys to support dynamic toolchain model elements.

This commit is contained in:
Sean Evoy 2004-03-18 21:26:23 +00:00
parent bea720fa70
commit e25c54c01d
12 changed files with 256 additions and 59 deletions

View file

@ -16,6 +16,7 @@
<element ref="target"/>
<element ref="tool"/>
<element ref="configuration"/>
<element ref="dynamicElementProvider"/>
</sequence>
<attribute name="point" type="string" use="required">
<annotation>
@ -493,6 +494,26 @@ Additional special types exist to flag options of special relevance to the build
</complexType>
</element>
<element name="dynamicElementProvider">
<annotation>
<documentation>
An optional element that allows a tool implementor to supply a class that creates one or more dynamic toolchain elements. For example, the class might create a new tool reference based on the contents of a special file, and a new target that uses that reference.
</documentation>
</annotation>
<complexType>
<attribute name="class" type="string" use="required">
<annotation>
<documentation>
</documentation>
<appInfo>
<meta.attribute kind="java"/>
</appInfo>
</annotation>
</attribute>
</complexType>
</element>
<annotation>
<appInfo>
<meta.section type="since"/>

View file

@ -0,0 +1,42 @@
/**********************************************************************
* Copyright (c) 2004 TimeSys 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 at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* TimeSys Corporation - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.managedbuilder.core;
/**
* This class represents a configuration element for loading the managed build
* model objects. They can either be loaded from the ManagedBuildInfo extension
* point, or from an instance of IManagedConfigProvider.
*/
public interface IManagedConfigElement {
/**
* @return the name of this config element (i.e. tag name of the
* corresponding xml element)
*/
String getName();
/**
* @return the value of the attribute with the given name, or null
* if the attribute is unset.
*/
String getAttribute(String name);
/**
* @return all child elements of the current config element.
*/
IManagedConfigElement[] getChildren();
/**
* @return all child elements of the current config element, such that
* <code>child.getName().equals(elementName)</code>.
*/
IManagedConfigElement[] getChildren(String elementName);
}

View file

@ -0,0 +1,30 @@
/**********************************************************************
* Copyright (c) 2004 TimeSys 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 at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* TimeSys Corporation - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.managedbuilder.core;
/**
* Clients may implement this interface to dynamically provided the config
* information that is otherwise specified in the ManagedBuidInfo extension
* point. It corresponds to the <code>configProvider</code> sub-element of
* the ManagedBuildInfo extension point.
*/
public interface IManagedConfigElementProvider {
String ELEMENT_NAME = "dynamicElementProvider"; //$NON-NLS-1$
String CLASS_ATTRIBUTE = "class"; //$NON-NLS-1$
/**
* Each configuration element returned from this method is treated as if
* it were a direct sub-child of a ManagedBuildInfo extension. As such
* it should conform to ManagedBuildTools.exsd. The only exception is it
* should not contain nested <code>configProvider</code> elements.
*/
IManagedConfigElement[] getConfigElements();
}

View file

@ -34,6 +34,7 @@ import org.eclipse.cdt.core.parser.IScannerInfo;
import org.eclipse.cdt.core.parser.IScannerInfoChangeListener;
import org.eclipse.cdt.core.parser.IScannerInfoProvider;
import org.eclipse.cdt.managedbuilder.internal.core.Configuration;
import org.eclipse.cdt.managedbuilder.internal.core.DefaultManagedConfigElement;
import org.eclipse.cdt.managedbuilder.internal.core.ManagedBuildInfo;
import org.eclipse.cdt.managedbuilder.internal.core.ToolReference;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
@ -357,7 +358,7 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
IConfiguration parentConfig = configuration.getParent();
// Get the config element for the parent from the map
IConfigurationElement configElement = getConfigElement(parentConfig);
IManagedConfigElement configElement = getConfigElement(parentConfig);
// reset the configuration
((Configuration)configuration).reset(configElement);
@ -464,20 +465,7 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
for (int i = 0; i < extensions.length; ++i) {
IExtension extension = extensions[i];
IConfigurationElement[] elements = extension.getConfigurationElements();
for (int toolIndex = 0; toolIndex < elements.length; ++toolIndex) {
try {
IConfigurationElement element = elements[toolIndex];
// Load the targets
if (element.getName().equals(ITool.TOOL_ELEMENT_NAME)) {
new Tool(element);
} else if (element.getName().equals(ITarget.TARGET_ELEMENT_NAME)) {
new Target(element);
}
} catch (Exception ex) {
// TODO: log
ex.printStackTrace();
}
}
loadConfigElements(DefaultManagedConfigElement.convertArray(elements));
}
// Then call resolve.
Iterator toolIter = getExtensionToolMap().values().iterator();
@ -504,6 +492,40 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
extensionTargetsLoaded = true;
}
private static void loadConfigElements(IManagedConfigElement[] elements) {
for (int toolIndex = 0; toolIndex < elements.length; ++toolIndex) {
try {
IManagedConfigElement element = elements[toolIndex];
// Load the targets
if (element.getName().equals(ITool.TOOL_ELEMENT_NAME)) {
new Tool(element);
} else if (element.getName().equals(ITarget.TARGET_ELEMENT_NAME)) {
new Target(element);
} else if (element.getName().equals(IManagedConfigElementProvider.ELEMENT_NAME)) {
// don't allow nested config providers.
if (element instanceof DefaultManagedConfigElement) {
IManagedConfigElement[] providedConfigs;
IManagedConfigElementProvider provider = createConfigProvider(
(DefaultManagedConfigElement)element);
providedConfigs = provider.getConfigElements();
loadConfigElements(providedConfigs);
}
}
} catch (Exception ex) {
// TODO: log
ex.printStackTrace();
}
}
}
private static IManagedConfigElementProvider createConfigProvider(
DefaultManagedConfigElement element) throws CoreException {
return (IManagedConfigElementProvider)element.getConfigurationElement().
createExecutableExtension(IManagedConfigElementProvider.CLASS_ATTRIBUTE);
}
/**
* @param project
* @return
@ -674,7 +696,7 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
* This method public for implementation reasons. Not intended for use
* by clients.
*/
public static void putConfigElement(IBuildObject buildObj, IConfigurationElement configElement) {
public static void putConfigElement(IBuildObject buildObj, IManagedConfigElement configElement) {
getConfigElementMap().put(buildObj, configElement);
}
@ -682,8 +704,8 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI
* This method public for implementation reasons. Not intended for use
* by clients.
*/
public static IConfigurationElement getConfigElement(IBuildObject buildObj) {
return (IConfigurationElement)getConfigElementMap().get(buildObj);
public static IManagedConfigElement getConfigElement(IBuildObject buildObj) {
return (IManagedConfigElement)getConfigElementMap().get(buildObj);
}
}

View file

@ -19,6 +19,7 @@ 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.IManagedConfigElement;
import org.eclipse.cdt.managedbuilder.core.IOption;
import org.eclipse.cdt.managedbuilder.core.ITarget;
import org.eclipse.cdt.managedbuilder.core.ITool;
@ -26,7 +27,6 @@ import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
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;
import org.w3c.dom.Node;
@ -151,7 +151,7 @@ public class Configuration extends BuildObject implements IConfiguration {
* @param target The <code>Target</code> the receiver will be added to.
* @param element The element from the manifest that contains the default configuration settings.
*/
public Configuration(Target target, IConfigurationElement element) {
public Configuration(Target target, IManagedConfigElement element) {
this.target = target;
// setup for resolving
@ -167,9 +167,9 @@ public class Configuration extends BuildObject implements IConfiguration {
// name
setName(element.getAttribute(IConfiguration.NAME));
IConfigurationElement[] configElements = element.getChildren();
IManagedConfigElement[] configElements = element.getChildren();
for (int l = 0; l < configElements.length; ++l) {
IConfigurationElement configElement = configElements[l];
IManagedConfigElement configElement = configElements[l];
if (configElement.getName().equals(IConfiguration.TOOLREF_ELEMENT_NAME)) {
new ToolReference(this, configElement);
}
@ -192,7 +192,7 @@ public class Configuration extends BuildObject implements IConfiguration {
public void resolveReferences() {
if (!resolved) {
resolved = true;
// IConfigurationElement element = ManagedBuildManager.getConfigElement(this);
// IManagedConfigElement element = ManagedBuildManager.getConfigElement(this);
Iterator refIter = getLocalToolReferences().iterator();
while (refIter.hasNext()) {
ToolReference ref = (ToolReference)refIter.next();
@ -390,12 +390,12 @@ public class Configuration extends BuildObject implements IConfiguration {
/**
* @param targetElement
*/
public void reset(IConfigurationElement element) {
public void reset(IManagedConfigElement element) {
// I just need to reset the tool references
getLocalToolReferences().clear();
IConfigurationElement[] configElements = element.getChildren();
IManagedConfigElement[] configElements = element.getChildren();
for (int l = 0; l < configElements.length; ++l) {
IConfigurationElement configElement = configElements[l];
IManagedConfigElement configElement = configElements[l];
if (configElement.getName().equals(IConfiguration.TOOLREF_ELEMENT_NAME)) {
ToolReference ref = new ToolReference(this, configElement);
ref.resolveReferences();

View file

@ -0,0 +1,81 @@
/**********************************************************************
* Copyright (c) 2004 TimeSys 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 at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* TimeSys Corporation - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.managedbuilder.internal.core;
import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement;
import org.eclipse.core.runtime.IConfigurationElement;
/**
* Implements the ManagedConfigElement by delegate all calls to an
* IConfigurationElement instance. This is used to load configuration
* information from the extension point.
*/
public class DefaultManagedConfigElement implements IManagedConfigElement {
private IConfigurationElement element;
/**
* @param element
*/
public DefaultManagedConfigElement(IConfigurationElement element) {
this.element = element;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IManagedConfigElement#getName()
*/
public String getName() {
return element.getName();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IManagedConfigElement#getAttribute(java.lang.String)
*/
public String getAttribute(String name) {
return element.getAttribute(name);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IManagedConfigElement#getChildren()
*/
public IManagedConfigElement[] getChildren() {
return convertArray(element.getChildren());
}
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IManagedConfigElement#getChildren(java.lang.String)
*/
public IManagedConfigElement[] getChildren(String elementName) {
return convertArray(element.getChildren(elementName));
}
/**
* @return
*/
public IConfigurationElement getConfigurationElement() {
return element;
}
/**
* Convenience method for converting an array of IConfigurationElements
* into an array of IManagedConfigElements.
*/
public static IManagedConfigElement[] convertArray(
IConfigurationElement[] elements) {
IManagedConfigElement[] ret = new IManagedConfigElement[elements.length];
for (int i = 0; i < elements.length; i++) {
ret[i] = new DefaultManagedConfigElement(elements[i]);
}
return ret;
}
}

View file

@ -17,12 +17,12 @@ import java.util.Map;
import org.eclipse.cdt.managedbuilder.core.BuildException;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement;
import org.eclipse.cdt.managedbuilder.core.IOption;
import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
import org.eclipse.core.runtime.IConfigurationElement;
public class Option extends BuildObject implements IOption {
// Static default return values
@ -44,7 +44,7 @@ public class Option extends BuildObject implements IOption {
this.tool = tool;
}
public Option(Tool tool, IConfigurationElement element) {
public Option(Tool tool, IManagedConfigElement element) {
this(tool);
// setup for resolving
ManagedBuildManager.putConfigElement(this, element);
@ -96,7 +96,7 @@ public class Option extends BuildObject implements IOption {
break;
case ENUMERATED:
List enumList = new ArrayList();
IConfigurationElement[] enumElements = element.getChildren(ENUM_VALUE);
IManagedConfigElement[] enumElements = element.getChildren(ENUM_VALUE);
for (int i = 0; i < enumElements.length; ++i) {
String optName = enumElements[i].getAttribute(NAME);
String optCommand = enumElements[i].getAttribute(COMMAND);
@ -116,9 +116,9 @@ public class Option extends BuildObject implements IOption {
case OBJECTS:
List valueList = new ArrayList();
builtIns = new ArrayList();
IConfigurationElement[] valueElements = element.getChildren(LIST_VALUE);
IManagedConfigElement[] valueElements = element.getChildren(LIST_VALUE);
for (int i = 0; i < valueElements.length; ++i) {
IConfigurationElement valueElement = valueElements[i];
IManagedConfigElement valueElement = valueElements[i];
Boolean isBuiltIn = new Boolean(valueElement.getAttribute(LIST_ITEM_BUILTIN));
if (isBuiltIn.booleanValue()) {
builtIns.add(valueElement.getAttribute(LIST_ITEM_VALUE));
@ -137,7 +137,7 @@ public class Option extends BuildObject implements IOption {
public void resolveReferences() {
if (!resolved) {
resolved = true;
IConfigurationElement element = ManagedBuildManager.getConfigElement(this);
IManagedConfigElement element = ManagedBuildManager.getConfigElement(this);
// Options can be grouped into categories
String categoryId = element.getAttribute(CATEGORY);
if (categoryId != null)

View file

@ -14,12 +14,12 @@ import java.util.ArrayList;
import java.util.List;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement;
import org.eclipse.cdt.managedbuilder.core.IOption;
import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.IToolReference;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.core.runtime.IConfigurationElement;
/**
*
@ -37,7 +37,7 @@ public class OptionCategory extends BuildObject implements IOptionCategory {
this.owner = owner;
}
public OptionCategory(Tool tool, IConfigurationElement element) {
public OptionCategory(Tool tool, IManagedConfigElement element) {
// setup for resolving
ManagedBuildManager.putConfigElement(this, element);
resolved = false;
@ -56,7 +56,7 @@ public class OptionCategory extends BuildObject implements IOptionCategory {
public void resolveReferences() {
if (!resolved) {
resolved = true;
IConfigurationElement element = ManagedBuildManager.getConfigElement(this);
IManagedConfigElement element = ManagedBuildManager.getConfigElement(this);
String parentId = element.getAttribute(IOptionCategory.OWNER);
if (parentId != null)
owner = tool.getOptionCategory(parentId);

View file

@ -16,12 +16,12 @@ import java.util.List;
import java.util.ListIterator;
import org.eclipse.cdt.managedbuilder.core.BuildException;
import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement;
import org.eclipse.cdt.managedbuilder.core.IOption;
import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
import org.eclipse.core.runtime.IConfigurationElement;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@ -51,7 +51,7 @@ public class OptionReference implements IOption {
* @param owner
* @param element
*/
public OptionReference(ToolReference owner, IConfigurationElement element) {
public OptionReference(ToolReference owner, IManagedConfigElement element) {
// setup for resolving
ManagedBuildManager.putConfigElement(this, element);
resolved = false;
@ -131,7 +131,7 @@ public class OptionReference implements IOption {
public void resolveReferences() {
if (!resolved) {
resolved = true;
IConfigurationElement element = ManagedBuildManager.getConfigElement(this);
IManagedConfigElement element = ManagedBuildManager.getConfigElement(this);
// resolve parent (recursively) before calling methods on it.
option = owner.getTool().getOption(element.getAttribute(ID));
@ -166,9 +166,9 @@ public class OptionReference implements IOption {
case LIBRARIES:
case OBJECTS:
List valueList = new ArrayList();
IConfigurationElement[] valueElements = element.getChildren(LIST_VALUE);
IManagedConfigElement[] valueElements = element.getChildren(LIST_VALUE);
for (int i = 0; i < valueElements.length; ++i) {
IConfigurationElement valueElement = valueElements[i];
IManagedConfigElement valueElement = valueElements[i];
Boolean isBuiltIn = new Boolean(valueElement.getAttribute(LIST_ITEM_BUILTIN));
if (isBuiltIn.booleanValue()) {
getBuiltInList().add(valueElement.getAttribute(LIST_ITEM_VALUE));

View file

@ -21,12 +21,12 @@ import java.util.StringTokenizer;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement;
import org.eclipse.cdt.managedbuilder.core.ITarget;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.core.boot.BootLoader;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IConfigurationElement;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@ -104,7 +104,7 @@ public class Target extends BuildObject implements ITarget {
*
* @param element
*/
public Target(IConfigurationElement element) {
public Target(IManagedConfigElement element) {
// setup for resolving
ManagedBuildManager.putConfigElement(this, element);
resolved = false;
@ -151,17 +151,17 @@ public class Target extends BuildObject implements ITarget {
}
// Load any tool references we might have
IConfigurationElement[] toolRefs = element.getChildren(IConfiguration.TOOLREF_ELEMENT_NAME);
IManagedConfigElement[] toolRefs = element.getChildren(IConfiguration.TOOLREF_ELEMENT_NAME);
for (int i=0; i < toolRefs.length; ++i) {
new ToolReference(this, toolRefs[i]);
}
// Then load any tools defined for the target
IConfigurationElement[] tools = element.getChildren(ITool.TOOL_ELEMENT_NAME);
IManagedConfigElement[] tools = element.getChildren(ITool.TOOL_ELEMENT_NAME);
for (int j = 0; j < tools.length; ++j) {
new Tool(this, tools[j]);
}
// Then load the configurations which may have tool references
IConfigurationElement[] configs = element.getChildren(IConfiguration.CONFIGURATION_ELEMENT_NAME);
IManagedConfigElement[] configs = element.getChildren(IConfiguration.CONFIGURATION_ELEMENT_NAME);
for (int k = 0; k < configs.length; ++k) {
new Configuration(this, configs[k]);
}
@ -229,7 +229,7 @@ public class Target extends BuildObject implements ITarget {
public void resolveReferences() {
if (!resolved) {
resolved = true;
IConfigurationElement element = ManagedBuildManager.getConfigElement(this);
IManagedConfigElement element = ManagedBuildManager.getConfigElement(this);
// parent
String parentId = element.getAttribute(PARENT);
if (parentId != null) {

View file

@ -20,12 +20,12 @@ import java.util.StringTokenizer;
import org.eclipse.cdt.managedbuilder.core.BuildException;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement;
import org.eclipse.cdt.managedbuilder.core.IOption;
import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.IToolReference;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.core.runtime.IConfigurationElement;
/**
* Represents a tool that can be invoked during a build.
@ -52,7 +52,7 @@ public class Tool extends BuildObject implements ITool, IOptionCategory {
private boolean resolved = true;
public Tool(IConfigurationElement element) {
public Tool(IManagedConfigElement element) {
loadFromManifest(element);
// hook me up
@ -66,7 +66,7 @@ public class Tool extends BuildObject implements ITool, IOptionCategory {
* @param target The target the receiver will belong to.
* @param element The element containing the information.
*/
public Tool(Target target, IConfigurationElement element) {
public Tool(Target target, IManagedConfigElement element) {
loadFromManifest(element);
// hook me up
@ -331,7 +331,7 @@ public class Tool extends BuildObject implements ITool, IOptionCategory {
return getInterfaceExtensions().contains(ext);
}
protected void loadFromManifest(IConfigurationElement element) {
protected void loadFromManifest(IManagedConfigElement element) {
// setup for resolving
ManagedBuildManager.putConfigElement(this, element);
this.resolved = false;
@ -398,9 +398,9 @@ public class Tool extends BuildObject implements ITool, IOptionCategory {
addOptionCategory(this);
// Check for options
IConfigurationElement[] toolElements = element.getChildren();
IManagedConfigElement[] toolElements = element.getChildren();
for (int l = 0; l < toolElements.length; ++l) {
IConfigurationElement toolElement = toolElements[l];
IManagedConfigElement toolElement = toolElements[l];
if (toolElement.getName().equals(ITool.OPTION)) {
new Option(this, toolElement);
} else if (toolElement.getName().equals(ITool.OPTION_CAT)) {
@ -413,7 +413,7 @@ public class Tool extends BuildObject implements ITool, IOptionCategory {
public void resolveReferences() {
if (!resolved) {
resolved = true;
// IConfigurationElement element = ManagedBuildManager.getConfigElement(this);
// IManagedConfigElement element = ManagedBuildManager.getConfigElement(this);
// Tool doesn't have any references, but children might
Iterator optionIter = options.iterator();
while (optionIter.hasNext()) {

View file

@ -18,10 +18,10 @@ import org.eclipse.cdt.managedbuilder.core.AbstractToolReference;
import org.eclipse.cdt.managedbuilder.core.BuildException;
import org.eclipse.cdt.managedbuilder.core.IBuildObject;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement;
import org.eclipse.cdt.managedbuilder.core.IOption;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.core.runtime.IConfigurationElement;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@ -77,7 +77,7 @@ public class ToolReference extends AbstractToolReference {
* @param owner The <code>BuildObject</code> the receiver will be added to.
* @param element The element containing build information for the reference.
*/
public ToolReference(BuildObject owner, IConfigurationElement element) {
public ToolReference(BuildObject owner, IManagedConfigElement element) {
// setup for resolving
ManagedBuildManager.putConfigElement(this, element);
resolved = false;
@ -91,11 +91,12 @@ public class ToolReference extends AbstractToolReference {
((Target)owner).addToolReference(this);
}
// Get the overridden tool command (if any)
command = element.getAttribute(ITool.COMMAND);
IConfigurationElement[] toolElements = element.getChildren();
IManagedConfigElement[] toolElements = element.getChildren();
for (int m = 0; m < toolElements.length; ++m) {
IConfigurationElement toolElement = toolElements[m];
IManagedConfigElement toolElement = toolElements[m];
if (toolElement.getName().equals(ITool.OPTION_REF)) {
new OptionReference(this, toolElement);
}
@ -122,7 +123,7 @@ public class ToolReference extends AbstractToolReference {
public void resolveReferences() {
if (!resolved) {
resolved = true;
IConfigurationElement element = ManagedBuildManager.getConfigElement(this);
IManagedConfigElement element = ManagedBuildManager.getConfigElement(this);
// resolve my parent
if (owner instanceof Configuration) {
Target target = (Target) ((Configuration)owner).getTarget();