diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml b/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
index a528162d19d..3089dfb884e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
@@ -22,12 +22,12 @@
point="org.eclipse.cdt.managedbuilder.core.ManagedBuildInfo">
+ valueType="string"
+ id="org.eclipse.cdt.core.tests.option1">
+ valueType="boolean"
+ id="org.eclipse.cdt.core.tests.option2">
+ valueType="stringList"
+ id="list.option">
+ value="b"
+ builtIn="false">
+ value="c"
+ builtIn="true">
@@ -286,8 +287,8 @@
@@ -302,8 +303,8 @@
@@ -359,16 +360,14 @@
id="test.error.parsers">
-
-
diff --git a/build/org.eclipse.cdt.managedbuilder.core/schema/ManagedBuildTools.exsd b/build/org.eclipse.cdt.managedbuilder.core/schema/ManagedBuildTools.exsd
index b7612d3ceb0..bd6dfd96a96 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/schema/ManagedBuildTools.exsd
+++ b/build/org.eclipse.cdt.managedbuilder.core/schema/ManagedBuildTools.exsd
@@ -486,6 +486,13 @@ Additional special types exist to flag options of special relevance to the build
+
+
+
+ This field is used by the managed build system to decide when to show the user the target. The value should be a comma-separated list. Current values include "x86", "sparc", "ppc"; or "all".
+
+
+
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITarget.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITarget.java
index 7aa0ff9a9f7..c62e85fa60b 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITarget.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITarget.java
@@ -29,6 +29,7 @@ public interface ITarget extends IBuildObject {
public static final String MAKE_COMMAND = "makeCommand"; //$NON-NLS-1$
public static final String MAKE_ARGS = "makeArguments"; //$NON-NLS-1$
public static final String OS_LIST = "osList"; //$NON-NLS-1$
+ public static final String ARCH_LIST = "archList"; //$NON-NLS-1$
public static final String PARENT = "parent"; //$NON-NLS-1$
/**
@@ -160,6 +161,13 @@ public interface ITarget extends IBuildObject {
* @return String[]
*/
public String[] getTargetOSList();
+
+ /**
+ * Answers an array of architectures the target can be created on.
+ *
+ * @return String[]
+ */
+ public String[] getTargetArchList();
/**
* Returns the list of platform specific tools associated with this
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Target.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Target.java
index 31a330431c6..f538c1d4cba 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Target.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Target.java
@@ -51,6 +51,7 @@ public class Target extends BuildObject implements ITarget {
private IResource owner;
private ITarget parent;
private List targetOSList;
+ private List targetArchList;
private Map toolMap;
private List toolList;
private List toolReferences;
@@ -466,6 +467,22 @@ public class Target extends BuildObject implements ITarget {
return (String[]) targetOSList.toArray(new String[targetOSList.size()]);
}
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITarget#getTargetArchList()
+ */
+ public String[] getTargetArchList() {
+ if (targetArchList == null) {
+ // Ask parent for its list
+ if (parent != null) {
+ return parent.getTargetArchList();
+ } else {
+ // I have no parent and no defined list
+ return new String[] {"all"}; //$NON-NLS-1$
+ }
+ }
+ return (String[]) targetArchList.toArray(new String[targetArchList.size()]);
+ }
+
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.ITarget#getOwner()
*/
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CProjectPlatformPage.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CProjectPlatformPage.java
index d46d2f98c4c..81fe232bfed 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CProjectPlatformPage.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CProjectPlatformPage.java
@@ -291,6 +291,7 @@ public class CProjectPlatformPage extends WizardPage {
ITarget[] allTargets = ManagedBuildManager.getDefinedTargets(null);
targets = new ArrayList();
String os = BootLoader.getOS();
+ String arch = BootLoader.getOSArch();
// Add all of the concrete targets to the target list
for (int index = 0; index < allTargets.length; ++index) {
ITarget target = allTargets[index];
@@ -299,9 +300,13 @@ public class CProjectPlatformPage extends WizardPage {
if (showAll != null && showAll.getSelection() == true) {
targets.add(target);
} else {
+ // Apply the OS and ARCH filters to determine if the target should be shown
List targetOSList = Arrays.asList(target.getTargetOSList());
if (targetOSList.contains("all") || targetOSList.contains(os)) { //$NON-NLS-1$
- targets.add(target);
+ List targetArchList = Arrays.asList(target.getTargetArchList());
+ if (targetArchList.contains("all") || targetArchList.contains(arch)) { //$NON-NLS-1$
+ targets.add(target);
+ }
}
}
}