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

Adjust Arduino to new GCCToolChain API and add type and id/name.

Change-Id: Ia089985425c7f1a6fe347c41a6a01e5ab16d8208
This commit is contained in:
Doug Schaefer 2017-11-07 13:38:11 -05:00
parent b495a5faae
commit ffdb004e67
9 changed files with 49 additions and 33 deletions

View file

@ -109,7 +109,9 @@ public class GCCToolChain extends PlatformObject implements IToolChain {
idBuilder.append(arch);
}
idBuilder.append('-');
idBuilder.append(pathToToolChain.toString().replaceAll("\\\\", "/")); //$NON-NLS-1$ //$NON-NLS-2$
if (pathToToolChain != null) {
idBuilder.append(pathToToolChain.toString().replaceAll("\\\\", "/")); //$NON-NLS-1$ //$NON-NLS-2$
}
this.id = idBuilder.toString();
properties.put(ATTR_ARCH, arch);
@ -123,15 +125,9 @@ public class GCCToolChain extends PlatformObject implements IToolChain {
}
}
if (pathVar == null) {
if (pathVar == null && this.path != null) {
// Make one with the directory containing out tool
String name;
// if (System.getenv("Path") != null) { //$NON-NLS-1$
// name = "Path"; //$NON-NLS-1$
// } else {
name = "PATH"; //$NON-NLS-1$
// }
pathVar = new EnvironmentVariable(name, this.path.getParent().toString(),
pathVar = new EnvironmentVariable("PATH", this.path.getParent().toString(), //$NON-NLS-1$
IEnvironmentVariable.ENVVAR_PREPEND, File.pathSeparator);
if (envVars == null) {
envVars = new IEnvironmentVariable[] { pathVar };

View file

@ -99,5 +99,9 @@
class="org.eclipse.cdt.arduino.core.internal.build.ArduinoToolChainProvider"
id="org.eclipse.cdt.arduino.core.toolChainProvider">
</provider>
<type
id="org.eclipse.cdt.arduino"
name="Arduino">
</type>
</extension>
</plugin>

View file

@ -16,6 +16,7 @@ public class Messages extends NLS {
private static final String BUNDLE_NAME = "org.eclipse.cdt.arduino.core.internal.messages"; //$NON-NLS-1$
public static String ArduinoBoardManager_0;
public static String ArduinoBoardManager_1;
public static String ArduinoBuildConfigurationProvider_UnknownConnection;
public static String ArduinoLaunchConfigurationDelegate_0;
public static String ArduinoLaunchConfigurationDelegate_1;
public static String ArduinoLaunchConfigurationDelegate_2;

View file

@ -201,7 +201,7 @@ public class ArduinoBuildConfiguration extends CBuildConfiguration
// Menus
HierarchicalProperties menus = board.getMenus();
if (menus != null) {
if (menus != null && target != null) {
for (Entry<String, HierarchicalProperties> menuEntry : menus.getChildren().entrySet()) {
String key = menuEntry.getKey();
String value = target.getMenuValue(key);

View file

@ -10,6 +10,7 @@ package org.eclipse.cdt.arduino.core.internal.build;
import java.util.Collection;
import org.eclipse.cdt.arduino.core.internal.Activator;
import org.eclipse.cdt.arduino.core.internal.Messages;
import org.eclipse.cdt.arduino.core.internal.board.ArduinoBoard;
import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager;
import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection;
@ -52,7 +53,7 @@ public class ArduinoBuildConfigurationProvider implements ICBuildConfigurationPr
}
}
if (board != null) {
IToolChain toolChain = createToolChain(config);
IToolChain toolChain = createToolChain("default"); //$NON-NLS-1$
return new ArduinoBuildConfiguration(config, name, "run", board, toolChain); //$NON-NLS-1$
}
} else {
@ -60,12 +61,12 @@ public class ArduinoBuildConfigurationProvider implements ICBuildConfigurationPr
IRemoteConnectionType connectionType = remoteManager.getConnectionType(ArduinoRemoteConnection.TYPE_ID);
IRemoteConnection connection = connectionType.getConnection(name);
if (connection == null) {
throw Activator.coreException(String.format("Unknown connection: %s", name), null);
throw Activator.coreException(String.format(Messages.ArduinoBuildConfigurationProvider_UnknownConnection, name), null);
}
ArduinoRemoteConnection target = connection.getService(ArduinoRemoteConnection.class);
if (target != null) {
IToolChain toolChain = createToolChain(config);
IToolChain toolChain = createToolChain(connection.getName());
return new ArduinoBuildConfiguration(config, name, "run", target, toolChain); //$NON-NLS-1$
}
}
@ -88,17 +89,22 @@ public class ArduinoBuildConfigurationProvider implements ICBuildConfigurationPr
// Make a new one
String configName = target.getRemoteConnection().getName();
IBuildConfiguration config = configManager.createBuildConfiguration(this, project, configName, monitor);
IToolChain toolChain = createToolChain(config);
IToolChain toolChain = createToolChain(configName);
ArduinoBuildConfiguration arduinoConfig = new ArduinoBuildConfiguration(config, configName, "run", target, //$NON-NLS-1$
toolChain);
configManager.addBuildConfiguration(config, arduinoConfig);
return arduinoConfig;
}
private IToolChain createToolChain(IBuildConfiguration config) throws CoreException {
private IToolChain createToolChain(String id) throws CoreException {
IToolChainManager toolChainManager = Activator.getService(IToolChainManager.class);
IToolChain toolChain = toolChainManager.getToolChain(ArduinoToolChain.TYPE_ID, id);
if (toolChain != null) {
return toolChain;
}
IToolChainProvider provider = toolChainManager.getProvider(ArduinoToolChainProvider.ID);
IToolChain toolChain = new ArduinoToolChain(provider, config);
toolChain = new ArduinoToolChain(provider, id);
toolChainManager.addToolChain(toolChain);
return toolChain;
}

View file

@ -1,28 +1,43 @@
package org.eclipse.cdt.arduino.core.internal.build;
import java.nio.file.Path;
import org.eclipse.cdt.build.gcc.core.GCCToolChain;
import org.eclipse.cdt.core.build.IToolChain;
import org.eclipse.cdt.core.build.IToolChainProvider;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.runtime.CoreException;
public class ArduinoToolChain extends GCCToolChain {
ArduinoToolChain(IToolChainProvider provider, IBuildConfiguration config) throws CoreException {
super(provider, config.getProject().getName() + '#' + config.getName(), ""); //$NON-NLS-1$
public static final String TYPE_ID = "org.eclipse.cdt.arduino"; //$NON-NLS-1$
private final String id;
public ArduinoToolChain(IToolChainProvider provider, String id) {
super(provider, (Path) null, "arduino", null); //$NON-NLS-1$
this.id = id;
}
public ArduinoToolChain(IToolChainProvider provider, String id, String version) {
super(provider, id, version);
@Override
public String getTypeId() {
return TYPE_ID;
}
@Override
public String getId() {
return id;
}
@Override
public String getName() {
return id;
}
@Override
public String getProperty(String key) {
// TODO architecture if I need it
if (key.equals(IToolChain.ATTR_OS)) {
return "arduino"; //$NON-NLS-1$
} else {
return null;
return super.getProperty(key);
}
}

View file

@ -1,8 +1,6 @@
package org.eclipse.cdt.arduino.core.internal.build;
import org.eclipse.cdt.core.build.IToolChain;
import org.eclipse.cdt.core.build.IToolChainProvider;
import org.eclipse.core.runtime.CoreException;
public class ArduinoToolChainProvider implements IToolChainProvider {
@ -13,9 +11,4 @@ public class ArduinoToolChainProvider implements IToolChainProvider {
return ID;
}
@Override
public IToolChain getToolChain(String id, String version) throws CoreException {
return new ArduinoToolChain(this, id, version);
}
}

View file

@ -7,6 +7,7 @@
################################################################################
ArduinoBoardManager_0=Fetching package index
ArduinoBoardManager_1=Package index missing from response
ArduinoBuildConfigurationProvider_UnknownConnection=Unknown connection: %s
ArduinoLaunchConfigurationDelegate_1=No active Arduino remote connection.
ArduinoLaunchConfigurationDelegate_0=Arduino Launch
ArduinoLaunchConfigurationDelegate_2=Target has not been selected for Launch Configuration

View file

@ -1,5 +1,5 @@
ifeq ($(OS),Windows_NT)
SHELL = $(ComSpec)
SHELL = cmd
RMDIR = rmdir /s /q
RM = del /q
mymkdir = if not exist "$1" mkdir "$1"