mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-11 18:25:40 +02:00
Work to support feature C1, "Set Tool Command in Project". Now it is possible to store an overridden tool command in a tool reference. The tool command can be overridden directly in an existing reference, or through the configuration, which creates a new tool reference.
This commit is contained in:
parent
db74457777
commit
3948f17fa0
7 changed files with 200 additions and 173 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2004-03-02 Sean Evoy
|
||||||
|
Work to support feature C1, "Set Tool Command in Project".
|
||||||
|
Now it is possible to store an overridden tool command in a tool
|
||||||
|
reference. The tool command can be overridden directly in an
|
||||||
|
existing reference, or through the configuration, which creates a
|
||||||
|
new tool reference.
|
||||||
|
|
||||||
2004-02-26 Jeremiah Lott
|
2004-02-26 Jeremiah Lott
|
||||||
Added a header to the automatically generated makefiles to alert users
|
Added a header to the automatically generated makefiles to alert users
|
||||||
not to edit them. Also added includes directives to bring in user-supplied
|
not to edit them. Also added includes directives to bring in user-supplied
|
||||||
|
|
|
@ -80,4 +80,12 @@ public interface IConfiguration extends IBuildObject {
|
||||||
public void setOption(IOption option, String[] value)
|
public void setOption(IOption option, String[] value)
|
||||||
throws BuildException;
|
throws BuildException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overrides the tool command for a tool defined in the receiver.
|
||||||
|
*
|
||||||
|
* @param tool
|
||||||
|
* @param command
|
||||||
|
*/
|
||||||
|
public void setToolCommand(ITool tool, String command);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,4 +46,10 @@ public class BuildObject implements IBuildObject {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see java.lang.Object#toString()
|
||||||
|
*/
|
||||||
|
public String toString() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* Copyright (c) 2003 IBM Corporation and others.
|
* Copyright (c) 2003,2004 IBM Rational Software and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Common Public License v1.0
|
* are made available under the terms of the Common Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -31,9 +31,6 @@ import org.w3c.dom.Element;
|
||||||
import org.w3c.dom.Node;
|
import org.w3c.dom.Node;
|
||||||
import org.w3c.dom.NodeList;
|
import org.w3c.dom.NodeList;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class Configuration extends BuildObject implements IConfiguration {
|
public class Configuration extends BuildObject implements IConfiguration {
|
||||||
|
|
||||||
private ITarget target;
|
private ITarget target;
|
||||||
|
@ -105,7 +102,7 @@ public class Configuration extends BuildObject implements IConfiguration {
|
||||||
|
|
||||||
// Make a new ToolReference based on the tool in the ref
|
// Make a new ToolReference based on the tool in the ref
|
||||||
ToolReference newRef = new ToolReference(this, toolRef.getTool());
|
ToolReference newRef = new ToolReference(this, toolRef.getTool());
|
||||||
List optRefs = toolRef.getLocalOptionRefs();
|
List optRefs = toolRef.getOptionReferenceList();
|
||||||
Iterator optIter = optRefs.listIterator();
|
Iterator optIter = optRefs.listIterator();
|
||||||
while (optIter.hasNext()) {
|
while (optIter.hasNext()) {
|
||||||
OptionReference optRef = (OptionReference)optIter.next();
|
OptionReference optRef = (OptionReference)optIter.next();
|
||||||
|
@ -195,11 +192,11 @@ public class Configuration extends BuildObject implements IConfiguration {
|
||||||
getLocalToolReferences().add(toolRef);
|
getLocalToolReferences().add(toolRef);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/* (non-Javadoc)
|
||||||
* @param option
|
* @param option
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public OptionReference createOptionReference(IOption option) {
|
private OptionReference createOptionReference(IOption option) {
|
||||||
if (option instanceof OptionReference) {
|
if (option instanceof OptionReference) {
|
||||||
OptionReference optionRef = (OptionReference)option;
|
OptionReference optionRef = (OptionReference)option;
|
||||||
ToolReference toolRef = optionRef.getToolReference();
|
ToolReference toolRef = optionRef.getToolReference();
|
||||||
|
@ -310,7 +307,7 @@ public class Configuration extends BuildObject implements IConfiguration {
|
||||||
// Get all the option references I add for this tool
|
// Get all the option references I add for this tool
|
||||||
ToolReference toolRef = getToolReference(tool);
|
ToolReference toolRef = getToolReference(tool);
|
||||||
if (toolRef != null) {
|
if (toolRef != null) {
|
||||||
references.addAll(toolRef.getLocalOptionRefs());
|
references.addAll(toolRef.getOptionReferenceList());
|
||||||
}
|
}
|
||||||
|
|
||||||
// See if there is anything that my parents add that I don't
|
// See if there is anything that my parents add that I don't
|
||||||
|
@ -425,7 +422,7 @@ public class Configuration extends BuildObject implements IConfiguration {
|
||||||
else {
|
else {
|
||||||
oldValue = option.getStringValue();
|
oldValue = option.getStringValue();
|
||||||
}
|
}
|
||||||
if (!oldValue.equals(value))
|
if (oldValue != null && !oldValue.equals(value))
|
||||||
createOptionReference(option).setValue(value);
|
createOptionReference(option).setValue(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -458,11 +455,23 @@ public class Configuration extends BuildObject implements IConfiguration {
|
||||||
if(!Arrays.equals(value, oldValue))
|
if(!Arrays.equals(value, oldValue))
|
||||||
createOptionReference(option).setValue(value);
|
createOptionReference(option).setValue(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see java.lang.Object#toString()
|
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#setToolCommand(org.eclipse.cdt.managedbuilder.core.ITool, java.lang.String)
|
||||||
*/
|
*/
|
||||||
public String toString() {
|
public void setToolCommand(ITool tool, String command) {
|
||||||
return new String("Configuration: ") + getName();
|
// Make sure the command is different
|
||||||
|
if (command != null && !tool.getToolCommand().equals(command)) {
|
||||||
|
// Does this config have a ref to the tool
|
||||||
|
ToolReference ref = getToolReference(tool);
|
||||||
|
if (ref == null) {
|
||||||
|
// Then make one
|
||||||
|
ref = new ToolReference(this, tool);
|
||||||
|
}
|
||||||
|
// Set the ref's command
|
||||||
|
if (ref != null) {
|
||||||
|
ref.setToolCommand(command);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -693,13 +693,6 @@ public class Target extends BuildObject implements ITarget {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see java.lang.Object#toString()
|
|
||||||
*/
|
|
||||||
public String toString() {
|
|
||||||
return new String("Target: ") + getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.managedbuilder.core.ITarget#updateOwner(org.eclipse.core.resources.IResource)
|
* @see org.eclipse.cdt.managedbuilder.core.ITarget#updateOwner(org.eclipse.core.resources.IResource)
|
||||||
*/
|
*/
|
||||||
|
@ -709,5 +702,4 @@ public class Target extends BuildObject implements ITarget {
|
||||||
owner = resource;
|
owner = resource;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,10 +178,6 @@ public class Tool extends BuildObject implements ITool, IOptionCategory {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* public ITarget getTarget() {
|
|
||||||
return target;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.build.managed.IOptionCategory#getTool()
|
* @see org.eclipse.cdt.core.build.managed.IOptionCategory#getTool()
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* Copyright (c) 2003 IBM Corporation and others.
|
* Copyright (c) 2003,2004 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Common Public License v1.0
|
* are made available under the terms of the Common Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -13,7 +13,6 @@ package org.eclipse.cdt.managedbuilder.internal.core;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.eclipse.cdt.managedbuilder.core.BuildException;
|
import org.eclipse.cdt.managedbuilder.core.BuildException;
|
||||||
import org.eclipse.cdt.managedbuilder.core.IBuildObject;
|
import org.eclipse.cdt.managedbuilder.core.IBuildObject;
|
||||||
|
@ -27,42 +26,46 @@ import org.w3c.dom.Element;
|
||||||
import org.w3c.dom.Node;
|
import org.w3c.dom.Node;
|
||||||
import org.w3c.dom.NodeList;
|
import org.w3c.dom.NodeList;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class ToolReference implements ITool {
|
public class ToolReference implements ITool {
|
||||||
private String command;
|
private String command;
|
||||||
private List optionReferences;
|
private List optionReferences;
|
||||||
private Map optionRefMap;
|
|
||||||
private IBuildObject owner;
|
private IBuildObject owner;
|
||||||
private ITool parent;
|
private ITool parent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created a tool reference on the fly based on an existing tool.
|
* Create a new tool reference based on information contained in
|
||||||
|
* a project file.
|
||||||
*
|
*
|
||||||
* @param owner The <code>BuildObject</code> the receiver will be added to.
|
* @param owner The <code>Configuration</code> the receiver will be added to.
|
||||||
* @param parent The <code>ITool</code>tool the reference will be based on.
|
* @param element The element defined in the project file containing build information
|
||||||
|
* for the receiver.
|
||||||
*/
|
*/
|
||||||
public ToolReference(BuildObject owner, ITool parent) {
|
public ToolReference(BuildObject owner, Element element) {
|
||||||
this.owner = owner;
|
this.owner = owner;
|
||||||
this.parent = parent;
|
|
||||||
|
|
||||||
if (owner instanceof Configuration) {
|
if (owner instanceof Configuration) {
|
||||||
|
Target parentTarget = (Target) ((Configuration)owner).getTarget();
|
||||||
|
parent = ((Target)parentTarget.getParent()).getTool(element.getAttribute(ID));
|
||||||
((Configuration)owner).addToolReference(this);
|
((Configuration)owner).addToolReference(this);
|
||||||
} else if (owner instanceof Target) {
|
} else if (owner instanceof Target) {
|
||||||
|
parent = ((Target)((Target)owner).getParent()).getTool(element.getAttribute(ID));
|
||||||
((Target)owner).addToolReference(this);
|
((Target)owner).addToolReference(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get the overridden tool command (if any)
|
||||||
|
if (element.hasAttribute(ITool.COMMAND)) {
|
||||||
|
command = element.getAttribute(ITool.COMMAND);
|
||||||
|
}
|
||||||
|
|
||||||
|
NodeList configElements = element.getChildNodes();
|
||||||
|
for (int i = 0; i < configElements.getLength(); ++i) {
|
||||||
|
Node configElement = configElements.item(i);
|
||||||
|
if (configElement.getNodeName().equals(ITool.OPTION_REF)) {
|
||||||
|
new OptionReference(this, (Element)configElement);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds the option reference specified in the argument to the receiver.
|
|
||||||
*
|
|
||||||
* @param optionRef
|
|
||||||
*/
|
|
||||||
public void addOptionReference(OptionReference optionRef) {
|
|
||||||
getLocalOptionRefs().add(optionRef);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created tool reference from an extension defined in a plugin manifest.
|
* Created tool reference from an extension defined in a plugin manifest.
|
||||||
*
|
*
|
||||||
|
@ -90,41 +93,60 @@ public class ToolReference implements ITool {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new tool reference based on information contained in a project file.
|
* Created a tool reference on the fly based on an existing tool.
|
||||||
*
|
*
|
||||||
* @param owner The <code>Configuration</code> the receiver will be added to.
|
* @param owner The <code>BuildObject</code> the receiver will be added to.
|
||||||
* @param element The element defined in the project file containing build information
|
* @param parent The <code>ITool</code>tool the reference will be based on.
|
||||||
* for the receiver.
|
|
||||||
*/
|
*/
|
||||||
public ToolReference(BuildObject owner, Element element) {
|
public ToolReference(BuildObject owner, ITool parent) {
|
||||||
this.owner = owner;
|
this.owner = owner;
|
||||||
|
this.parent = parent;
|
||||||
|
|
||||||
if (owner instanceof Configuration) {
|
if (owner instanceof Configuration) {
|
||||||
Target parentTarget = (Target) ((Configuration)owner).getTarget();
|
|
||||||
parent = ((Target)parentTarget.getParent()).getTool(element.getAttribute(ID));
|
|
||||||
((Configuration)owner).addToolReference(this);
|
((Configuration)owner).addToolReference(this);
|
||||||
} else if (owner instanceof Target) {
|
} else if (owner instanceof Target) {
|
||||||
parent = ((Target)((Target)owner).getParent()).getTool(element.getAttribute(ID));
|
|
||||||
((Target)owner).addToolReference(this);
|
((Target)owner).addToolReference(this);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the option reference specified in the argument to the receiver.
|
||||||
|
*
|
||||||
|
* @param optionRef
|
||||||
|
*/
|
||||||
|
public void addOptionReference(OptionReference optionRef) {
|
||||||
|
getOptionReferenceList().add(optionRef);
|
||||||
|
}
|
||||||
|
|
||||||
NodeList configElements = element.getChildNodes();
|
/* (non-Javadoc)
|
||||||
for (int i = 0; i < configElements.getLength(); ++i) {
|
* @see org.eclipse.cdt.core.build.managed.ITool#handlesFileType(java.lang.String)
|
||||||
Node configElement = configElements.item(i);
|
*/
|
||||||
if (configElement.getNodeName().equals(ITool.OPTION_REF)) {
|
public boolean buildsFileType(String extension) {
|
||||||
new OptionReference(this, (Element)configElement);
|
// The tool reference does not override this value
|
||||||
}
|
return parent.buildsFileType(extension);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean ownedByConfiguration(IConfiguration config) {
|
/**
|
||||||
if (owner instanceof Configuration) {
|
* Answers a reference to the option. If the reference does not exist,
|
||||||
return ((IConfiguration)owner).equals(config);
|
* a new reference is created.
|
||||||
} else {
|
*
|
||||||
return false;
|
* @param option
|
||||||
|
* @return OptionReference
|
||||||
|
*/
|
||||||
|
public OptionReference createOptionReference(IOption option) {
|
||||||
|
// Check if the option reference already exists
|
||||||
|
OptionReference ref = getOptionReference(option);
|
||||||
|
if (ref == null) {
|
||||||
|
ref = new OptionReference(this, option);
|
||||||
}
|
}
|
||||||
|
return ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Answers the tool the receiver is a reference to.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public ITool getTool() {
|
public ITool getTool() {
|
||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
|
@ -133,7 +155,7 @@ public class ToolReference implements ITool {
|
||||||
* @see org.eclipse.cdt.core.build.managed.ITool#getToolCommand()
|
* @see org.eclipse.cdt.core.build.managed.ITool#getToolCommand()
|
||||||
*/
|
*/
|
||||||
public String getToolCommand() {
|
public String getToolCommand() {
|
||||||
return parent.getToolCommand();
|
return (command == null) ? parent.getToolCommand() : command;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -202,14 +224,6 @@ public class ToolReference implements ITool {
|
||||||
return buf.toString().trim();
|
return buf.toString().trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.eclipse.cdt.core.build.managed.ITool#createOption()
|
|
||||||
*/
|
|
||||||
public IOption createOption() {
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.build.managed.ITool#getOptions()
|
* @see org.eclipse.cdt.core.build.managed.ITool#getOptions()
|
||||||
*/
|
*/
|
||||||
|
@ -242,22 +256,10 @@ public class ToolReference implements ITool {
|
||||||
return parent.getOutputPrefix();
|
return parent.getOutputPrefix();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.eclipse.cdt.core.build.managed.ITool#getTarget()
|
|
||||||
*/
|
|
||||||
/* public ITarget getTarget() {
|
|
||||||
if (owner instanceof IConfiguration) {
|
|
||||||
return ((IConfiguration)owner).getTarget();
|
|
||||||
} else {
|
|
||||||
return (ITarget)owner;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.build.managed.ITool#getTopOptionCategory()
|
* @see org.eclipse.cdt.core.build.managed.ITool#getTopOptionCategory()
|
||||||
*/
|
*/
|
||||||
public IOptionCategory getTopOptionCategory() {
|
public IOptionCategory getTopOptionCategory() {
|
||||||
// The tool reference does not override this value
|
|
||||||
return parent.getTopOptionCategory();
|
return parent.getTopOptionCategory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -269,14 +271,6 @@ public class ToolReference implements ITool {
|
||||||
return parent.isHeaderFile(ext);
|
return parent.isHeaderFile(ext);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @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);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected List getAllOptionRefs() {
|
protected List getAllOptionRefs() {
|
||||||
// First get all the option references this tool reference contains
|
// First get all the option references this tool reference contains
|
||||||
return ((Configuration)owner).getOptionReferences(parent);
|
return ((Configuration)owner).getOptionReferences(parent);
|
||||||
|
@ -298,6 +292,78 @@ public class ToolReference implements ITool {
|
||||||
return parent.getName();
|
return parent.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-javadoc)
|
||||||
|
* Answers an option reference that overrides the option, or <code>null</code>
|
||||||
|
*
|
||||||
|
* @param option
|
||||||
|
* @return OptionReference
|
||||||
|
*/
|
||||||
|
private OptionReference getOptionReference(IOption option) {
|
||||||
|
// Get all the option references for this option
|
||||||
|
Iterator iter = getAllOptionRefs().listIterator();
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
OptionReference optionRef = (OptionReference) iter.next();
|
||||||
|
if (optionRef.references(option))
|
||||||
|
return optionRef;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List getOptionReferenceList() {
|
||||||
|
if (optionReferences == null) {
|
||||||
|
optionReferences = new ArrayList();
|
||||||
|
optionReferences.clear();
|
||||||
|
}
|
||||||
|
return optionReferences;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (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) {
|
||||||
|
//TODO Implement this
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @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);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Answers <code>true</code> if the owner of the receiver matches
|
||||||
|
* the argument.
|
||||||
|
*
|
||||||
|
* @param config
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean ownedByConfiguration(IConfiguration config) {
|
||||||
|
if (owner instanceof Configuration) {
|
||||||
|
return ((IConfiguration)owner).equals(config);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @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);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Answers <code>true</code> if the reference is a reference to the
|
* Answers <code>true</code> if the reference is a reference to the
|
||||||
* tool specified in the argument.
|
* tool specified in the argument.
|
||||||
|
@ -323,80 +389,6 @@ public class ToolReference implements ITool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-javadoc)
|
|
||||||
* Answers an option reference that overrides the option, or <code>null</code>
|
|
||||||
*
|
|
||||||
* @param option
|
|
||||||
* @return OptionReference
|
|
||||||
*/
|
|
||||||
private OptionReference getOptionReference(IOption option) {
|
|
||||||
// Get all the option references for this option
|
|
||||||
Iterator iter = getAllOptionRefs().listIterator();
|
|
||||||
while (iter.hasNext()) {
|
|
||||||
OptionReference optionRef = (OptionReference) iter.next();
|
|
||||||
if (optionRef.references(option))
|
|
||||||
return optionRef;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected List getLocalOptionRefs() {
|
|
||||||
if (optionReferences == null) {
|
|
||||||
optionReferences = new ArrayList();
|
|
||||||
optionReferences.clear();
|
|
||||||
}
|
|
||||||
return optionReferences;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Answers a reference to the option. If the reference does not exist,
|
|
||||||
* a new reference is created.
|
|
||||||
*
|
|
||||||
* @param option
|
|
||||||
* @return OptionReference
|
|
||||||
*/
|
|
||||||
public OptionReference createOptionReference(IOption option) {
|
|
||||||
// Check if the option reference already exists
|
|
||||||
OptionReference ref = getOptionReference(option);
|
|
||||||
if (ref == null) {
|
|
||||||
ref = new OptionReference(this, option);
|
|
||||||
}
|
|
||||||
return ref;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @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) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Persist receiver to project file.
|
* Persist receiver to project file.
|
||||||
*
|
*
|
||||||
|
@ -406,7 +398,14 @@ public class ToolReference implements ITool {
|
||||||
*/
|
*/
|
||||||
public void serialize(Document doc, Element element) {
|
public void serialize(Document doc, Element element) {
|
||||||
element.setAttribute(ITool.ID, parent.getId());
|
element.setAttribute(ITool.ID, parent.getId());
|
||||||
Iterator iter = getLocalOptionRefs().listIterator();
|
|
||||||
|
// Output the command if overridden
|
||||||
|
if (command != null) {
|
||||||
|
element.setAttribute(ITool.COMMAND, command);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Output the option references
|
||||||
|
Iterator iter = getOptionReferenceList().listIterator();
|
||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
OptionReference optionRef = (OptionReference) iter.next();
|
OptionReference optionRef = (OptionReference) iter.next();
|
||||||
Element optionRefElement = doc.createElement(ITool.OPTION_REF);
|
Element optionRefElement = doc.createElement(ITool.OPTION_REF);
|
||||||
|
@ -415,14 +414,24 @@ public class ToolReference implements ITool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the command in the receiver to be the argument.
|
||||||
|
*
|
||||||
|
* @param cmd
|
||||||
|
*/
|
||||||
|
public void setToolCommand(String cmd) {
|
||||||
|
if (cmd != null && !cmd.equals(command)) {
|
||||||
|
command = cmd;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see java.lang.Object#toString()
|
* @see java.lang.Object#toString()
|
||||||
*/
|
*/
|
||||||
public String toString() {
|
public String toString() {
|
||||||
String answer = new String();
|
String answer = new String();
|
||||||
|
|
||||||
if (parent != null) {
|
if (parent != null) {
|
||||||
answer += "Reference to tool: " + parent.getName(); //$NON-NLS-1$
|
answer += "Reference to " + parent.getName(); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
if (answer.length() > 0) {
|
if (answer.length() > 0) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue