blob: c29d7a56085a39553c2e6bcdf47d516f8dd127e6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2012 Wind River Systems, Inc. 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
*
* Contributors:
* Doug Schaefer - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.build.crossgcc;
import java.io.File;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IOption;
import org.eclipse.cdt.managedbuilder.core.IToolChain;
import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable;
import org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSupplier;
import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider;
import org.eclipse.core.runtime.Platform;
public class CrossEnvironmentVariableSupplier implements
IConfigurationEnvironmentVariableSupplier {
public IBuildEnvironmentVariable getVariable(String variableName,
IConfiguration configuration, IEnvironmentVariableProvider provider) {
if (PathEnvironmentVariable.isVar(variableName))
return PathEnvironmentVariable.create(configuration);
else
return null;
}
public IBuildEnvironmentVariable[] getVariables(
IConfiguration configuration, IEnvironmentVariableProvider provider) {
IBuildEnvironmentVariable path = PathEnvironmentVariable.create(configuration);
return path != null ? new IBuildEnvironmentVariable[] { path } : new IBuildEnvironmentVariable[0];
}
private static class PathEnvironmentVariable implements IBuildEnvironmentVariable {
public static String name = "PATH"; //$NON-NLS-1$
private File path;
private PathEnvironmentVariable(File path) {
this.path = path;
}
public static PathEnvironmentVariable create(IConfiguration configuration) {
IToolChain toolchain = configuration.getToolChain();
IOption option = toolchain.getOptionBySuperClassId("cdt.managedbuild.option.gnu.cross.path"); //$NON-NLS-1$
String path = (String)option.getValue();
File sysroot = new File(path);
File bin = new File(sysroot, "bin"); //$NON-NLS-1$
if (bin.isDirectory())
sysroot = bin;
return new PathEnvironmentVariable(sysroot);
}
public static boolean isVar(String name) {
// Windows has case insensitive env var names
return Platform.getOS().equals(Platform.OS_WIN32)
? name.equalsIgnoreCase(PathEnvironmentVariable.name)
: name.equals(PathEnvironmentVariable.name);
}
public String getDelimiter() {
return Platform.getOS().equals(Platform.OS_WIN32) ? ";" : ":"; //$NON-NLS-1$ //$NON-NLS-2$
}
public String getName() {
return name;
}
public int getOperation() {
return IBuildEnvironmentVariable.ENVVAR_PREPEND;
}
public String getValue() {
return path.getAbsolutePath();
}
}
}