diff options
Diffstat (limited to 'windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinEnvironmentVariableSupplier.java')
-rw-r--r-- | windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinEnvironmentVariableSupplier.java | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinEnvironmentVariableSupplier.java b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinEnvironmentVariableSupplier.java new file mode 100644 index 00000000000..25ed330d7a6 --- /dev/null +++ b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinEnvironmentVariableSupplier.java @@ -0,0 +1,118 @@ +package org.eclipse.cdt.msw.build; + + +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.cdt.managedbuilder.core.IConfiguration; +import org.eclipse.cdt.managedbuilder.core.IManagedProject; +import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable; +import org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSupplier; +import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider; +import org.eclipse.cdt.managedbuilder.envvar.IProjectEnvironmentVariableSupplier; +import org.eclipse.cdt.utils.WindowsRegistry; + +/** + * @author DSchaefer + * + */ +public class WinEnvironmentVariableSupplier + implements IConfigurationEnvironmentVariableSupplier, IProjectEnvironmentVariableSupplier { + + private Map<String, IBuildEnvironmentVariable> envvars; + + private static class WindowsBuildEnvironmentVariable implements IBuildEnvironmentVariable { + + private final String name; + private final String value; + private final int operation; + + public WindowsBuildEnvironmentVariable(String name, String value, int operation) { + this.name = name; + this.value = value; + this.operation = operation; + } + + public String getDelimiter() { + return ";"; + } + + public String getName() { + return name; + } + + public String getValue() { + return value; + } + + public int getOperation() { + return operation; + } + + } + + public IBuildEnvironmentVariable getVariable(String variableName, + IManagedProject project, IEnvironmentVariableProvider provider) { + if (envvars == null) + initvars(); + return envvars.get(variableName); + } + + public IBuildEnvironmentVariable getVariable(String variableName, + IConfiguration configuration, IEnvironmentVariableProvider provider) { + if (envvars == null) + initvars(); + return envvars.get(variableName); + } + + public IBuildEnvironmentVariable[] getVariables(IManagedProject project, + IEnvironmentVariableProvider provider) { + if (envvars == null) + initvars(); + return envvars.values().toArray(new IBuildEnvironmentVariable[envvars.size()]); + } + + public IBuildEnvironmentVariable[] getVariables( + IConfiguration configuration, IEnvironmentVariableProvider provider) { + if (envvars == null) + initvars(); + return envvars.values().toArray(new IBuildEnvironmentVariable[envvars.size()]); + } + + private void addvar(IBuildEnvironmentVariable var) { + envvars.put(var.getName(), var); + } + + private void initvars() { + envvars = new HashMap<String, IBuildEnvironmentVariable>(); + + StringBuffer buff; + WindowsRegistry reg = WindowsRegistry.getRegistry(); + + // The SDK Location + String sdkDir = reg.getLocalMachineValue("SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v6.0", "InstallationFolder"); + if (sdkDir == null) + sdkDir = reg.getLocalMachineValue("SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v6.1", "InstallationFolder"); + + // INCLUDE + buff = new StringBuffer(); + buff.append(sdkDir).append("VC\\Include;"); + buff.append(sdkDir).append("VC\\Include\\Sys;"); + buff.append(sdkDir).append("Include;"); + buff.append(sdkDir).append("Include\\gl;"); + addvar(new WindowsBuildEnvironmentVariable("INCLUDE", buff.toString(), IBuildEnvironmentVariable.ENVVAR_PREPEND)); + + // LIB + buff = new StringBuffer(); + buff.append(sdkDir).append("VC\\Lib;"); + buff.append(sdkDir).append("Lib;"); + addvar(new WindowsBuildEnvironmentVariable("LIB", buff.toString(), IBuildEnvironmentVariable.ENVVAR_PREPEND)); + + // PATH + buff = new StringBuffer(); + buff.append(sdkDir).append("VC\\Bin;"); + buff.append(sdkDir).append("Bin;"); + addvar(new WindowsBuildEnvironmentVariable("PATH", buff.toString(), IBuildEnvironmentVariable.ENVVAR_PREPEND)); + } + +} |