mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Apply Bob M. patch for browseType and resourceFilter attributes.
Fix problem with overridesOnlyValue uncovered by Bob's fix.
This commit is contained in:
parent
fece65cbf3
commit
a1ccd95cad
7 changed files with 62 additions and 20 deletions
|
@ -395,6 +395,7 @@ public interface IOption extends IBuildObject {
|
||||||
* of its superclass and <code>false</code> if it overrides other attributes.
|
* of its superclass and <code>false</code> if it overrides other attributes.
|
||||||
*
|
*
|
||||||
* @return boolean
|
* @return boolean
|
||||||
|
* @deprecated
|
||||||
*/
|
*/
|
||||||
public boolean overridesOnlyValue();
|
public boolean overridesOnlyValue();
|
||||||
|
|
||||||
|
|
|
@ -704,13 +704,13 @@ public class Configuration extends BuildObject implements IConfiguration {
|
||||||
IOption retOpt = option;
|
IOption retOpt = option;
|
||||||
if (option.getBooleanValue() != value) {
|
if (option.getBooleanValue() != value) {
|
||||||
if (option.isExtensionElement()) {
|
if (option.isExtensionElement()) {
|
||||||
// If the extension element is only overriding the "value" of its superclass, hook the
|
// If the extension element was created from an MBS 2.0 model OptionReference element, hook the
|
||||||
// new option up to its superclass directly. This is to avoid references to oddly id'ed
|
// new option up to its superclass directly. This is to avoid references to oddly id'ed
|
||||||
// elements that are automatically generated from V2.0 model optionReferences. If these
|
// elements that are automatically generated from V2.0 model optionReferences. If these
|
||||||
// end up in the project file, then the project could have a problem when the integration
|
// end up in the project file, then the project could have a problem when the integration
|
||||||
// provider switches to providing the new model.
|
// provider switches to providing the new model.
|
||||||
IOption newSuperClass = option;
|
IOption newSuperClass = option;
|
||||||
if (option.overridesOnlyValue()) {
|
if (((Option)option).wasOptRef()) {
|
||||||
newSuperClass = option.getSuperClass();
|
newSuperClass = option.getSuperClass();
|
||||||
}
|
}
|
||||||
// Create an Option element for the managed build project file (.CDTBUILD)
|
// Create an Option element for the managed build project file (.CDTBUILD)
|
||||||
|
@ -738,13 +738,13 @@ public class Configuration extends BuildObject implements IConfiguration {
|
||||||
oldValue = option.getStringValue();
|
oldValue = option.getStringValue();
|
||||||
if (oldValue != null && !oldValue.equals(value)) {
|
if (oldValue != null && !oldValue.equals(value)) {
|
||||||
if (option.isExtensionElement()) {
|
if (option.isExtensionElement()) {
|
||||||
// If the extension element is only overriding the "value" of its superclass, hook the
|
// If the extension element was created from an MBS 2.0 model OptionReference element, hook the
|
||||||
// new option up to its superclass directly. This is to avoid references to oddly id'ed
|
// new option up to its superclass directly. This is to avoid references to oddly id'ed
|
||||||
// elements that are automatically generated from V2.0 model optionReferences. If these
|
// elements that are automatically generated from V2.0 model optionReferences. If these
|
||||||
// end up in the project file, then the project could have a problem when the integration
|
// end up in the project file, then the project could have a problem when the integration
|
||||||
// provider switches to providing the new model.
|
// provider switches to providing the new model.
|
||||||
IOption newSuperClass = option;
|
IOption newSuperClass = option;
|
||||||
if (option.overridesOnlyValue()) {
|
if (((Option)option).wasOptRef()) {
|
||||||
newSuperClass = option.getSuperClass();
|
newSuperClass = option.getSuperClass();
|
||||||
}
|
}
|
||||||
// Create an Option element for the managed build project file (.CDTBUILD)
|
// Create an Option element for the managed build project file (.CDTBUILD)
|
||||||
|
@ -792,13 +792,13 @@ public class Configuration extends BuildObject implements IConfiguration {
|
||||||
}
|
}
|
||||||
if(!Arrays.equals(value, oldValue)) {
|
if(!Arrays.equals(value, oldValue)) {
|
||||||
if (option.isExtensionElement()) {
|
if (option.isExtensionElement()) {
|
||||||
// If the extension element is only overriding the "value" of its superclass, hook the
|
// If the extension element was created from an MBS 2.0 model OptionReference element, hook the
|
||||||
// new option up to its superclass directly. This is to avoid references to oddly id'ed
|
// new option up to its superclass directly. This is to avoid references to oddly id'ed
|
||||||
// elements that are automatically generated from V2.0 model optionReferences. If these
|
// elements that are automatically generated from V2.0 model optionReferences. If these
|
||||||
// end up in the project file, then the project could have a problem when the integration
|
// end up in the project file, then the project could have a problem when the integration
|
||||||
// provider switches to providing the new model.
|
// provider switches to providing the new model.
|
||||||
IOption newSuperClass = option;
|
IOption newSuperClass = option;
|
||||||
if (option.overridesOnlyValue()) {
|
if (((Option)option).wasOptRef()) {
|
||||||
newSuperClass = option.getSuperClass();
|
newSuperClass = option.getSuperClass();
|
||||||
}
|
}
|
||||||
// Create an Option element for the managed build project file (.CDTBUILD)
|
// Create an Option element for the managed build project file (.CDTBUILD)
|
||||||
|
|
|
@ -232,7 +232,7 @@ public class HoldsOptions extends BuildObject implements IHoldsOptions {
|
||||||
IOption ourOpt = (IOption)ourOpts.get(i);
|
IOption ourOpt = (IOption)ourOpts.get(i);
|
||||||
int j;
|
int j;
|
||||||
for (j = 0; j < options.length; j++) {
|
for (j = 0; j < options.length; j++) {
|
||||||
if (options[j].overridesOnlyValue()) {
|
if (((Option)options[j]).wasOptRef()) {
|
||||||
if (ourOpt.getSuperClass() != null // Remove assumption that ALL options must have superclasses
|
if (ourOpt.getSuperClass() != null // Remove assumption that ALL options must have superclasses
|
||||||
&& ourOpt.getSuperClass().getId().equals(options[j].getSuperClass().getId())) {
|
&& ourOpt.getSuperClass().getId().equals(options[j].getSuperClass().getId())) {
|
||||||
options[j] = ourOpt;
|
options[j] = ourOpt;
|
||||||
|
|
|
@ -78,6 +78,8 @@ public class Option extends BuildObject implements IOption {
|
||||||
private boolean verified = false;
|
private boolean verified = false;
|
||||||
private boolean isValid = true; /** False for options which are invalid. getOption()
|
private boolean isValid = true; /** False for options which are invalid. getOption()
|
||||||
* routines will ignore invalid options. */
|
* routines will ignore invalid options. */
|
||||||
|
private boolean wasOptRef = false; /** True for options which are created because of an
|
||||||
|
* MBS 2.0 model OptionReference element
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* C O N S T R U C T O R S
|
* C O N S T R U C T O R S
|
||||||
|
@ -303,7 +305,13 @@ public class Option extends BuildObject implements IOption {
|
||||||
|
|
||||||
// Determine if there needs to be a browse button
|
// Determine if there needs to be a browse button
|
||||||
String browseTypeStr = element.getAttribute(BROWSE_TYPE);
|
String browseTypeStr = element.getAttribute(BROWSE_TYPE);
|
||||||
if (browseTypeStr == null || browseTypeStr.equals(NONE)) {
|
if (browseTypeStr == null) {
|
||||||
|
// Set to null, to indicate no browse type specification
|
||||||
|
// This will allow any superclasses to be searched for the
|
||||||
|
// browse type specification, and thus inherited, if found,
|
||||||
|
// which they should be
|
||||||
|
browseType = null;
|
||||||
|
} else if (browseTypeStr.equals(NONE)) {
|
||||||
browseType = new Integer(BROWSE_NONE);
|
browseType = new Integer(BROWSE_NONE);
|
||||||
} else if (browseTypeStr.equals(FILE)) {
|
} else if (browseTypeStr.equals(FILE)) {
|
||||||
browseType = new Integer(BROWSE_FILE);
|
browseType = new Integer(BROWSE_FILE);
|
||||||
|
@ -315,7 +323,13 @@ public class Option extends BuildObject implements IOption {
|
||||||
|
|
||||||
// Get the resourceFilter attribute
|
// Get the resourceFilter attribute
|
||||||
String resFilterStr = element.getAttribute(RESOURCE_FILTER);
|
String resFilterStr = element.getAttribute(RESOURCE_FILTER);
|
||||||
if (resFilterStr == null || resFilterStr.equals(ALL)) {
|
if (resFilterStr == null) {
|
||||||
|
// Set to null, to indicate no resource filter specification
|
||||||
|
// This will allow any superclasses to be searched for the
|
||||||
|
// resource filter specification, and thus inherited, if found,
|
||||||
|
// which they should be
|
||||||
|
resourceFilter = null;
|
||||||
|
} else if (resFilterStr.equals(ALL)) {
|
||||||
resourceFilter = new Integer(FILTER_ALL);
|
resourceFilter = new Integer(FILTER_ALL);
|
||||||
} else if (resFilterStr.equals(FILE)) {
|
} else if (resFilterStr.equals(FILE)) {
|
||||||
resourceFilter = new Integer(FILTER_FILE);
|
resourceFilter = new Integer(FILTER_FILE);
|
||||||
|
@ -496,8 +510,15 @@ public class Option extends BuildObject implements IOption {
|
||||||
// Determine if there needs to be a browse button
|
// Determine if there needs to be a browse button
|
||||||
if (element.hasAttribute(BROWSE_TYPE)) {
|
if (element.hasAttribute(BROWSE_TYPE)) {
|
||||||
String browseTypeStr = element.getAttribute(BROWSE_TYPE);
|
String browseTypeStr = element.getAttribute(BROWSE_TYPE);
|
||||||
if (browseTypeStr == null || browseTypeStr.equals(NONE)) {
|
|
||||||
browseType = new Integer(BROWSE_NONE);
|
if (browseTypeStr == null) {
|
||||||
|
// Set to null, to indicate no browse type specification
|
||||||
|
// This will allow any superclasses to be searched for the
|
||||||
|
// browse type specification, and thus inherited, if found,
|
||||||
|
// which they should be
|
||||||
|
browseType = null;
|
||||||
|
} else if (browseTypeStr.equals(NONE)) {
|
||||||
|
browseType = new Integer(BROWSE_NONE);
|
||||||
} else if (browseTypeStr.equals(FILE)) {
|
} else if (browseTypeStr.equals(FILE)) {
|
||||||
browseType = new Integer(BROWSE_FILE);
|
browseType = new Integer(BROWSE_FILE);
|
||||||
} else if (browseTypeStr.equals(DIR)) {
|
} else if (browseTypeStr.equals(DIR)) {
|
||||||
|
@ -515,8 +536,14 @@ public class Option extends BuildObject implements IOption {
|
||||||
// Get the resourceFilter attribute
|
// Get the resourceFilter attribute
|
||||||
if (element.hasAttribute(RESOURCE_FILTER)) {
|
if (element.hasAttribute(RESOURCE_FILTER)) {
|
||||||
String resFilterStr = element.getAttribute(RESOURCE_FILTER);
|
String resFilterStr = element.getAttribute(RESOURCE_FILTER);
|
||||||
if (resFilterStr == null || resFilterStr.equals(ALL)) {
|
if (resFilterStr == null) {
|
||||||
resourceFilter = new Integer(FILTER_ALL);
|
// Set to null, to indicate no resource filter specification
|
||||||
|
// This will allow any superclasses to be searched for the
|
||||||
|
// resource filter specification, and thus inherited, if found,
|
||||||
|
// which they should be
|
||||||
|
resourceFilter = null;
|
||||||
|
} else if (resFilterStr.equals(ALL)) {
|
||||||
|
resourceFilter = new Integer(FILTER_ALL);
|
||||||
} else if (resFilterStr.equals(FILE)) {
|
} else if (resFilterStr.equals(FILE)) {
|
||||||
resourceFilter = new Integer(FILTER_FILE);
|
resourceFilter = new Integer(FILTER_FILE);
|
||||||
} else if (resFilterStr.equals(PROJECT)) {
|
} else if (resFilterStr.equals(PROJECT)) {
|
||||||
|
@ -1477,6 +1504,7 @@ public class Option extends BuildObject implements IOption {
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.managedbuilder.core.IOption#overridesOnlyValue()
|
* @see org.eclipse.cdt.managedbuilder.core.IOption#overridesOnlyValue()
|
||||||
|
* Deprecated since 3.0.1
|
||||||
*/
|
*/
|
||||||
public boolean overridesOnlyValue() {
|
public boolean overridesOnlyValue() {
|
||||||
if (superClass != null &&
|
if (superClass != null &&
|
||||||
|
@ -1709,6 +1737,18 @@ public class Option extends BuildObject implements IOption {
|
||||||
return isValid;
|
return isValid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Returns true if this Option was created from an MBS 2.0 model
|
||||||
|
* OptionReference element.
|
||||||
|
*/
|
||||||
|
public boolean wasOptRef() {
|
||||||
|
return wasOptRef;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWasOptRef(boolean was) {
|
||||||
|
wasOptRef = was;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Returns the version.
|
* @return Returns the version.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -777,12 +777,12 @@ public class ResourceConfiguration extends BuildObject implements IResourceConfi
|
||||||
newSuperClass = newSuperClass.getSuperClass();
|
newSuperClass = newSuperClass.getSuperClass();
|
||||||
}
|
}
|
||||||
if (newSuperClass.isExtensionElement()) {
|
if (newSuperClass.isExtensionElement()) {
|
||||||
// If the extension element is only overriding the "value" of its superclass, hook the
|
// If the extension element was created from an MBS 2.0 model OptionReference element, hook the
|
||||||
// new option up to its superclass directly. This is to avoid references to oddly id'ed
|
// new option up to its superclass directly. This is to avoid references to oddly id'ed
|
||||||
// elements that are automatically generated from V2.0 model optionReferences. If these
|
// elements that are automatically generated from V2.0 model optionReferences. If these
|
||||||
// end up in the project file, then the project could have a problem when the integration
|
// end up in the project file, then the project could have a problem when the integration
|
||||||
// provider switches to providing the new model.
|
// provider switches to providing the new model.
|
||||||
if (newSuperClass.overridesOnlyValue()) {
|
if (((Option)newSuperClass).wasOptRef()) {
|
||||||
newSuperClass = newSuperClass.getSuperClass();
|
newSuperClass = newSuperClass.getSuperClass();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -817,12 +817,12 @@ public class ResourceConfiguration extends BuildObject implements IResourceConfi
|
||||||
newSuperClass = newSuperClass.getSuperClass();
|
newSuperClass = newSuperClass.getSuperClass();
|
||||||
}
|
}
|
||||||
if (newSuperClass.isExtensionElement()) {
|
if (newSuperClass.isExtensionElement()) {
|
||||||
// If the extension element is only overriding the "value" of its superclass, hook the
|
// If the extension element was created from an MBS 2.0 model OptionReference element, hook the
|
||||||
// new option up to its superclass directly. This is to avoid references to oddly id'ed
|
// new option up to its superclass directly. This is to avoid references to oddly id'ed
|
||||||
// elements that are automatically generated from V2.0 model optionReferences. If these
|
// elements that are automatically generated from V2.0 model optionReferences. If these
|
||||||
// end up in the project file, then the project could have a problem when the integration
|
// end up in the project file, then the project could have a problem when the integration
|
||||||
// provider switches to providing the new model.
|
// provider switches to providing the new model.
|
||||||
if (newSuperClass.overridesOnlyValue()) {
|
if (((Option)newSuperClass).wasOptRef()) {
|
||||||
newSuperClass = newSuperClass.getSuperClass();
|
newSuperClass = newSuperClass.getSuperClass();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -880,12 +880,12 @@ public class ResourceConfiguration extends BuildObject implements IResourceConfi
|
||||||
newSuperClass = newSuperClass.getSuperClass();
|
newSuperClass = newSuperClass.getSuperClass();
|
||||||
}
|
}
|
||||||
if (newSuperClass.isExtensionElement()) {
|
if (newSuperClass.isExtensionElement()) {
|
||||||
// If the extension element is only overriding the "value" of its superclass, hook the
|
// If the extension element was created from an MBS 2.0 model OptionReference element, hook the
|
||||||
// new option up to its superclass directly. This is to avoid references to oddly id'ed
|
// new option up to its superclass directly. This is to avoid references to oddly id'ed
|
||||||
// elements that are automatically generated from V2.0 model optionReferences. If these
|
// elements that are automatically generated from V2.0 model optionReferences. If these
|
||||||
// end up in the project file, then the project could have a problem when the integration
|
// end up in the project file, then the project could have a problem when the integration
|
||||||
// provider switches to providing the new model.
|
// provider switches to providing the new model.
|
||||||
if (newSuperClass.overridesOnlyValue()) {
|
if (((Option)newSuperClass).wasOptRef()) {
|
||||||
newSuperClass = newSuperClass.getSuperClass();
|
newSuperClass = newSuperClass.getSuperClass();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1091,6 +1091,7 @@ public class Target extends BuildObject implements ITarget {
|
||||||
// Set the option attributes
|
// Set the option attributes
|
||||||
newOption.setValue(optRef.getValue());
|
newOption.setValue(optRef.getValue());
|
||||||
newOption.setValueType(optRef.getValueType());
|
newOption.setValueType(optRef.getValueType());
|
||||||
|
((Option)newOption).setWasOptRef(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2511,7 +2511,7 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator {
|
||||||
case IManagedDependencyGenerator.TYPE_EXTERNAL:
|
case IManagedDependencyGenerator.TYPE_EXTERNAL:
|
||||||
IResource[] res = depGen.findDependencies(resource, project);
|
IResource[] res = depGen.findDependencies(resource, project);
|
||||||
for (int i=0; i<res.length; i++) {
|
for (int i=0; i<res.length; i++) {
|
||||||
IPath dep = res[i].getFullPath();
|
IPath dep = res[i].getProjectRelativePath();
|
||||||
deps.add(dep);
|
deps.add(dep);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Reference in a new issue