Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java')
-rw-r--r--build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java50
1 files changed, 49 insertions, 1 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java
index bbc41391070..0316d3c144b 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java
@@ -1,5 +1,5 @@
/**********************************************************************
- * Copyright (c) 2004 Intel Corporation and others.
+ * Copyright (c) 2004, 2005 Intel 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
@@ -21,11 +21,14 @@ import org.eclipse.cdt.managedbuilder.core.IBuildObject;
import org.eclipse.cdt.managedbuilder.core.IBuilder;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement;
+import org.eclipse.cdt.managedbuilder.core.IManagedIsToolChainSupported;
import org.eclipse.cdt.managedbuilder.core.IProjectType;
import org.eclipse.cdt.managedbuilder.core.ITargetPlatform;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.IToolChain;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+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;
@@ -51,6 +54,8 @@ public class ToolChain extends BuildObject implements IToolChain {
private List archList;
private Boolean isAbstract;
private String scannerConfigDiscoveryProfileId;
+ private IConfigurationElement managedIsToolChainSupportedElement = null;
+ private IManagedIsToolChainSupported managedIsToolChainSupported = null;
// Miscellaneous
private boolean isExtensionToolChain = false;
private boolean isDirty = false;
@@ -208,6 +213,8 @@ public class ToolChain extends BuildObject implements IToolChain {
if (toolChain.scannerConfigDiscoveryProfileId != null) {
scannerConfigDiscoveryProfileId = new String(toolChain.scannerConfigDiscoveryProfileId);
}
+ managedIsToolChainSupportedElement = toolChain.managedIsToolChainSupportedElement;
+ managedIsToolChainSupported = toolChain.managedIsToolChainSupported;
// Clone the children
if (toolChain.builder != null) {
@@ -314,6 +321,12 @@ public class ToolChain extends BuildObject implements IToolChain {
archList.add(archTokens[j].trim());
}
}
+
+ // Get the isToolchainSupported configuration element
+ String managedIsToolChainSupported = element.getAttribute(IS_TOOL_CHAIN_SUPPORTED);
+ if (managedIsToolChainSupported != null && element instanceof DefaultManagedConfigElement) {
+ managedIsToolChainSupportedElement = ((DefaultManagedConfigElement)element).getConfigurationElement();
+ }
}
/* (non-Javadoc)
@@ -467,6 +480,12 @@ public class ToolChain extends BuildObject implements IToolChain {
tool.serialize(doc, toolElement);
}
+ // Note: isToolChainSupported cannot be specified in a project file because
+ // an IConfigurationElement is needed to load it!
+ if (managedIsToolChainSupportedElement != null) {
+ // TODO: issue warning?
+ }
+
// I am clean now
isDirty = false;
}
@@ -974,4 +993,33 @@ public class ToolChain extends BuildObject implements IToolChain {
}
}
+ private IManagedIsToolChainSupported getIsToolChainSupported(){
+ if(managedIsToolChainSupported == null && managedIsToolChainSupportedElement != null){
+ try{
+ if(managedIsToolChainSupportedElement.getAttribute(IS_TOOL_CHAIN_SUPPORTED) != null)
+ managedIsToolChainSupported =
+ (IManagedIsToolChainSupported)managedIsToolChainSupportedElement.createExecutableExtension(IS_TOOL_CHAIN_SUPPORTED);
+
+ }
+ catch(CoreException e){
+ }
+ }
+ return managedIsToolChainSupported;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolChain#isSupported()
+ */
+ public boolean isSupported(){
+ IManagedIsToolChainSupported isSupported = getIsToolChainSupported();
+ if(isSupported != null){
+ //TODO: pass the version to the "isSupported" method
+ return isSupported.isSupported(this,null,null);
+ }
+ else if(superClass != null)
+ return superClass.isSupported();
+ else
+ return true;
+ }
+
}

Back to the top