blob: 2f4fd2effef0e12f52234f1c74fe3e7deb92f271 [file] [log] [blame]
package org.eclipse.cdt.arduino.core.internal.build;
import org.eclipse.cdt.arduino.core.internal.Activator;
import org.eclipse.cdt.build.gcc.core.GCCToolChain;
import org.eclipse.cdt.core.build.ICBuildConfiguration;
import org.eclipse.cdt.core.build.ICBuildConfigurationManager;
import org.eclipse.cdt.core.build.IToolChain;
import org.eclipse.cdt.core.build.IToolChainProvider;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
public class ArduinoToolChain extends GCCToolChain {
private final ArduinoBuildConfiguration buildConfig;
public ArduinoToolChain(IToolChainProvider provider, ArduinoBuildConfiguration config) {
super(provider, config.getProject().getName() + '#' + config.getName());
this.buildConfig = config;
}
ArduinoToolChain(IToolChainProvider provider, String name) throws CoreException {
super(provider, name);
String[] segments = name.split("#"); //$NON-NLS-1$
if (segments.length == 2) {
String projectName = segments[0];
String configName = segments[1];
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
if (project != null) {
ICBuildConfigurationManager configManager = Activator.getService(ICBuildConfigurationManager.class);
IBuildConfiguration config = configManager.getBuildConfiguration(
configManager.getProvider(ArduinoBuildConfigurationProvider.ID), project, configName);
ICBuildConfiguration cconfig = config.getAdapter(ICBuildConfiguration.class);
buildConfig = cconfig.getAdapter(ArduinoBuildConfiguration.class);
} else {
throw new CoreException(new Status(IStatus.ERROR, Activator.getId(), "No project"));
}
} else {
throw new CoreException(new Status(IStatus.ERROR, Activator.getId(), "Bad Name"));
}
}
@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;
}
}
// TODO do I really need this?
public ArduinoBuildConfiguration getBuildConfig() {
return buildConfig;
}
}