diff --git a/windows/org.eclipse.cdt.msw.build/.classpath b/windows/org.eclipse.cdt.msw.build/.classpath new file mode 100644 index 00000000000..751c8f2e504 --- /dev/null +++ b/windows/org.eclipse.cdt.msw.build/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/windows/org.eclipse.cdt.msw.build/.project b/windows/org.eclipse.cdt.msw.build/.project new file mode 100644 index 00000000000..e97910dcff7 --- /dev/null +++ b/windows/org.eclipse.cdt.msw.build/.project @@ -0,0 +1,28 @@ + + + org.eclipse.cdt.msw.build + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.jdt.core.prefs b/windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000000..0f0eb3002b3 --- /dev/null +++ b/windows/org.eclipse.cdt.msw.build/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Mon Jul 23 15:38:07 EDT 2007 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/windows/org.eclipse.cdt.msw.build/META-INF/MANIFEST.MF b/windows/org.eclipse.cdt.msw.build/META-INF/MANIFEST.MF new file mode 100644 index 00000000000..492bcb702be --- /dev/null +++ b/windows/org.eclipse.cdt.msw.build/META-INF/MANIFEST.MF @@ -0,0 +1,13 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: MSVC Build Integration Plug-in +Bundle-SymbolicName: org.eclipse.cdt.msw.build;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: org.eclipse.cdt.msw.build.Activator +Bundle-Localization: plugin +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.resources, + org.eclipse.cdt.core, + org.eclipse.cdt.managedbuilder.core +Eclipse-LazyStart: true +Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/windows/org.eclipse.cdt.msw.build/build.properties b/windows/org.eclipse.cdt.msw.build/build.properties new file mode 100644 index 00000000000..30b2fc40bd8 --- /dev/null +++ b/windows/org.eclipse.cdt.msw.build/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.properties,\ + plugin.xml diff --git a/windows/org.eclipse.cdt.msw.build/plugin.properties b/windows/org.eclipse.cdt.msw.build/plugin.properties new file mode 100644 index 00000000000..05150db9042 --- /dev/null +++ b/windows/org.eclipse.cdt.msw.build/plugin.properties @@ -0,0 +1,9 @@ +toolchain.name=Microsoft Visual C++ + +compiler.name=C/C++ Compiler (cl) +rc.name=Resource Compiler (rc) +linker.name=Linker (link) +lib.name=Library Manager (lib) + +config.debug=Debug +config.release=Release \ No newline at end of file diff --git a/windows/org.eclipse.cdt.msw.build/plugin.xml b/windows/org.eclipse.cdt.msw.build/plugin.xml new file mode 100644 index 00000000000..3c63de507e4 --- /dev/null +++ b/windows/org.eclipse.cdt.msw.build/plugin.xml @@ -0,0 +1,647 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/Activator.java b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/Activator.java new file mode 100644 index 00000000000..c9e6ca453fb --- /dev/null +++ b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/Activator.java @@ -0,0 +1,50 @@ +package org.eclipse.cdt.msw.build; + +import org.eclipse.core.runtime.Plugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class Activator extends Plugin { + + // The plug-in ID + public static final String PLUGIN_ID = "net.sf.wascana.msvc.build"; + + // The shared instance + private static Activator plugin; + + /** + * The constructor + */ + public Activator() { + } + + /* + * (non-Javadoc) + * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + } + + /* + * (non-Javadoc) + * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static Activator getDefault() { + return plugin; + } + +} diff --git a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinDiscoveredPathInfo.java b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinDiscoveredPathInfo.java new file mode 100644 index 00000000000..f873465c221 --- /dev/null +++ b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinDiscoveredPathInfo.java @@ -0,0 +1,59 @@ +package org.eclipse.cdt.msw.build; + + +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo; +import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredScannerInfoSerializable; +import org.eclipse.cdt.utils.WindowsRegistry; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; + +/** + * @author Doug Schaefer + * + */ +public class WinDiscoveredPathInfo implements IDiscoveredPathInfo { + + private final IPath[] paths; + private final Map symbols = new HashMap(); + + public WinDiscoveredPathInfo() { + WindowsRegistry reg = WindowsRegistry.getRegistry(); + + // Include paths + 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"); + + paths = new IPath[] { + new Path(sdkDir.concat("\\VC\\Include")), + new Path(sdkDir.concat("\\VC\\Include\\Sys")), + new Path(sdkDir.concat("\\Include")), + new Path(sdkDir.concat("\\Include\\gl")) + }; + + symbols.put("_M_IX86", "600"); + symbols.put("_WIN32", "1"); + symbols.put("_MSC_VER", "1400"); + } + + public IPath[] getIncludePaths() { + return paths; + } + + public IProject getProject() { + return null; + } + + public IDiscoveredScannerInfoSerializable getSerializable() { + return null; + } + + public Map getSymbols() { + return symbols; + } + +} 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 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(); + + 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)); + } + +} diff --git a/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinScannerInfoCollector.java b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinScannerInfoCollector.java new file mode 100644 index 00000000000..e955c512026 --- /dev/null +++ b/windows/org.eclipse.cdt.msw.build/src/org/eclipse/cdt/msw/build/WinScannerInfoCollector.java @@ -0,0 +1,41 @@ +package org.eclipse.cdt.msw.build; + + +import java.util.List; +import java.util.Map; + +import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector3; +import org.eclipse.cdt.make.core.scannerconfig.InfoContext; +import org.eclipse.cdt.make.core.scannerconfig.ScannerInfoTypes; +import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; + +/** + * @author Doug Schaefer + * + */ +public class WinScannerInfoCollector implements IScannerInfoCollector3 { + + public void contributeToScannerConfig(Object resource, Map scannerInfo) { + } + + public List getCollectedScannerInfo(Object resource, ScannerInfoTypes type) { + return null; + } + + public IDiscoveredPathInfo createPathInfoObject() { + return new WinDiscoveredPathInfo(); + } + + public void setInfoContext(InfoContext context) { + } + + public void setProject(IProject project) { + } + + public void updateScannerConfiguration(IProgressMonitor monitor) throws CoreException { + } + +}