diff options
author | Doug Schaefer | 2017-11-07 03:39:52 +0000 |
---|---|---|
committer | Doug Schaefer | 2017-11-07 16:01:15 +0000 |
commit | 76e1842644f2af46213ab01a8a428a234d965f39 (patch) | |
tree | 1af6f003245263d6a4dff10e15d432fa69bc1c80 /build | |
parent | 9a9e80e115dc943e9964b238d9b9697682d47e6a (diff) | |
download | org.eclipse.cdt-76e1842644f2af46213ab01a8a428a234d965f39.tar.gz org.eclipse.cdt-76e1842644f2af46213ab01a8a428a234d965f39.tar.xz org.eclipse.cdt-76e1842644f2af46213ab01a8a428a234d965f39.zip |
Implement ordering of toolchains.
Introduce toolchain types independent of providers.
Change-Id: I2cf3145920fcf4e7132468b6e653d7ea3e211127
Diffstat (limited to 'build')
4 files changed, 54 insertions, 15 deletions
diff --git a/build/org.eclipse.cdt.build.gcc.core/plugin.xml b/build/org.eclipse.cdt.build.gcc.core/plugin.xml index 036b2b8f894..bc185a5f43f 100644 --- a/build/org.eclipse.cdt.build.gcc.core/plugin.xml +++ b/build/org.eclipse.cdt.build.gcc.core/plugin.xml @@ -15,6 +15,14 @@ class="org.eclipse.cdt.build.gcc.core.GCCUserToolChainProvider" id="org.eclipse.cdt.build.gcc.core.provider.user"> </provider> + <type + id="org.eclipse.cdt.build.gcc" + name="GCC"> + </type> + <type + id="org.eclipse.cdt.build.clang" + name="clang"> + </type> </extension> </plugin> diff --git a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/ClangToolChain.java b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/ClangToolChain.java new file mode 100644 index 00000000000..773e75fcc52 --- /dev/null +++ b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/ClangToolChain.java @@ -0,0 +1,36 @@ +/*******************************************************************************
+ * Copyright (c) 2015, 2017 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.cdt.build.gcc.core;
+
+import java.nio.file.Path;
+
+import org.eclipse.cdt.core.build.IToolChainProvider;
+import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
+
+/**
+ * The Clang toolchain. There's little different from the GCC toolchain other
+ * than the toolchain type and name.
+ *
+ * @author dschaefer
+ *
+ */
+public class ClangToolChain extends GCCToolChain {
+
+ private static final String TYPE_ID = "org.eclipse.cdt.build.clang"; //$NON-NLS-1$
+
+ public ClangToolChain(IToolChainProvider provider, Path pathToToolChain, String arch,
+ IEnvironmentVariable[] envVars) {
+ super(provider, pathToToolChain, arch, envVars);
+ }
+
+ @Override
+ public String getTypeId() {
+ return TYPE_ID;
+ }
+
+}
diff --git a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java index ea791e734da..bf9d5839cca 100644 --- a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java +++ b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java @@ -51,6 +51,8 @@ import org.eclipse.core.runtime.PlatformObject; */ public class GCCToolChain extends PlatformObject implements IToolChain { + public static final String TYPE_ID = "org.eclipse.cdt.build.gcc"; //$NON-NLS-1$ + private final IToolChainProvider provider; private final String id; private final Path path; @@ -144,6 +146,11 @@ public class GCCToolChain extends PlatformObject implements IToolChain { this.envVars = envVars; } + @Override + public String getTypeId() { + return TYPE_ID; + } + public Path getPath() { return path; } @@ -165,21 +172,20 @@ public class GCCToolChain extends PlatformObject implements IToolChain { @Override public String getName() { - StringBuilder name = new StringBuilder("GCC"); //$NON-NLS-1$ + StringBuilder name = new StringBuilder(); // $NON-NLS-1$ String os = getProperty(ATTR_OS); if (os != null) { - name.append(' '); name.append(os); + name.append(' '); } String arch = getProperty(ATTR_ARCH); if (arch != null) { - name.append(' '); name.append(arch); + name.append(' '); } if (path != null) { - name.append(' '); name.append(path.toString()); } diff --git a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCUserToolChainProvider.java b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCUserToolChainProvider.java index b7b25e9d993..368757982a9 100644 --- a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCUserToolChainProvider.java +++ b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCUserToolChainProvider.java @@ -15,7 +15,6 @@ import java.io.Writer; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -201,16 +200,6 @@ public class GCCUserToolChainProvider implements IUserToolChainProvider { manager.removeToolChain(toolChain); } - @Override - public IToolChain getToolChain(String id) throws CoreException { - Collection<IToolChain> tcs = manager.getToolChains(PROVIDER_ID, id); - if (tcs.isEmpty()) { - return null; - } else { - return tcs.iterator().next(); - } - } - private void saveJsonFile() throws IOException { try (Writer writer = new FileWriter(getJsonFile())) { writer.write(new Gson().toJson(toolChains)); |