Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java118
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));
+ }
+
+}

Back to the top