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:
parent
b495a5faae
commit
ffdb004e67
9 changed files with 49 additions and 33 deletions
|
@ -109,7 +109,9 @@ public class GCCToolChain extends PlatformObject implements IToolChain {
|
|||
idBuilder.append(arch);
|
||||
}
|
||||
idBuilder.append('-');
|
||||
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 };
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -1,19 +1,34 @@
|
|||
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
|
||||
|
@ -22,7 +37,7 @@ public class ArduinoToolChain extends GCCToolChain {
|
|||
if (key.equals(IToolChain.ATTR_OS)) {
|
||||
return "arduino"; //$NON-NLS-1$
|
||||
} else {
|
||||
return null;
|
||||
return super.getProperty(key);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Add table
Reference in a new issue