1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 22:52:11 +02:00

Per-folder settings fixes

This commit is contained in:
Mikhail Sennikovsky 2007-05-08 15:23:31 +00:00
parent 889361a1e9
commit 15a448bf76
2 changed files with 48 additions and 3 deletions

View file

@ -36,6 +36,7 @@ import org.eclipse.cdt.managedbuilder.core.IBuildObjectProperties;
import org.eclipse.cdt.managedbuilder.core.IBuildPropertiesRestriction; import org.eclipse.cdt.managedbuilder.core.IBuildPropertiesRestriction;
import org.eclipse.cdt.managedbuilder.core.IConfiguration; import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IFolderInfo; import org.eclipse.cdt.managedbuilder.core.IFolderInfo;
import org.eclipse.cdt.managedbuilder.core.IInputType;
import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement; import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement;
import org.eclipse.cdt.managedbuilder.core.IManagedProject; import org.eclipse.cdt.managedbuilder.core.IManagedProject;
import org.eclipse.cdt.managedbuilder.core.IModificationStatus; import org.eclipse.cdt.managedbuilder.core.IModificationStatus;
@ -259,8 +260,46 @@ public class FolderInfo extends ResourceInfo implements IFolderInfo {
} }
} }
private boolean conflictsWithRootTools(ITool tool){
IFolderInfo rf = getParent().getRootFolderInfo();
ITool[] rootTools = rf.getFilteredTools();
ITool tt = getParent().getTargetTool();
for(int i = 0; i < rootTools.length; i++){
ITool rootTool = rootTools[i];
if(rootTool == tt || getMultipleOfType(rootTool) != null){
if(getConflictingInputExts(rootTool, tool).length != 0)
return true;
}
}
return false;
}
private IInputType getMultipleOfType(ITool tool){
IInputType[] types = tool.getInputTypes();
IInputType mType = null;
boolean foundNonMultiplePrimary = false;
for(int i = 0; i < types.length; i++){
IInputType type = types[i];
if(type.getMultipleOfType()){
if(type.getPrimaryInput() == true){
foundNonMultiplePrimary = false;
mType = type;
break;
} else if (mType == null){
mType = type;
}
} else {
if(type.getPrimaryInput() == true){
foundNonMultiplePrimary = true;
}
}
}
return foundNonMultiplePrimary ? null : mType;
}
public ITool[] filtereTools(ITool localTools[], IManagedProject manProj) { public ITool[] filterTools(ITool localTools[], IManagedProject manProj) {
// ITool[] localTools = toolChain.getTools(); // ITool[] localTools = toolChain.getTools();
// IManagedProject manProj = getParent().getManagedProject(); // IManagedProject manProj = getParent().getManagedProject();
if (manProj == null) { if (manProj == null) {
@ -274,6 +313,9 @@ public class FolderInfo extends ResourceInfo implements IFolderInfo {
if(!tool.isEnabled(this)) if(!tool.isEnabled(this))
continue; continue;
if(!isRoot() && conflictsWithRootTools(tool))
continue;
try { try {
// Make sure the tool is right for the project // Make sure the tool is right for the project
switch (tool.getNatureFilter()) { switch (tool.getNatureFilter()) {
@ -308,7 +350,7 @@ public class FolderInfo extends ResourceInfo implements IFolderInfo {
} }
ITool[] localTools = toolChain.getTools(); ITool[] localTools = toolChain.getTools();
IManagedProject manProj = getParent().getManagedProject(); IManagedProject manProj = getParent().getManagedProject();
return filtereTools(localTools, manProj); return filterTools(localTools, manProj);
// if (manProj == null) { // if (manProj == null) {
// // If this is not associated with a project, then there is nothing to filter with // // If this is not associated with a project, then there is nothing to filter with
// return localTools; // return localTools;
@ -1246,7 +1288,7 @@ public class FolderInfo extends ResourceInfo implements IFolderInfo {
added = checked[1]; added = checked[1];
// Map converterMap = calculateConverterTools(removed, added, null, null); // Map converterMap = calculateConverterTools(removed, added, null, null);
ITool newTools[] = calculateToolsArray(removed, added); ITool newTools[] = calculateToolsArray(removed, added);
ITool[][] conflicting = calculateConflictingTools(filtereTools(newTools, getParent().getManagedProject())); ITool[][] conflicting = calculateConflictingTools(filterTools(newTools, getParent().getManagedProject()));
Map unspecifiedRequiredProps = new HashMap(); Map unspecifiedRequiredProps = new HashMap();
Map unspecifiedProps = new HashMap(); Map unspecifiedProps = new HashMap();
Set undefinedSet = new HashSet(); Set undefinedSet = new HashSet();

View file

@ -2047,6 +2047,9 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 {
ITool buildTools[] = h.buildTools; ITool buildTools[] = h.buildTools;
if(tool == null){ if(tool == null){
h = getToolInfo(Path.EMPTY);
buildTools = h.buildTools;
for (int j=0; j<buildTools.length; j++) { for (int j=0; j<buildTools.length; j++) {
if (buildTools[j].buildsFileType(ext)) { if (buildTools[j].buildsFileType(ext)) {
if (tool == null) { if (tool == null) {