summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2008-12-04 11:26:34 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2008-12-04 11:26:34 +0000
commitf4f1f44b2f87f584109ab75d8d24f085e2c16f61 (patch)
tree63f7d6354fb8d16216ffaacc312836e831d9ad9b
parentReverted previous change. You must translate the path manually for Cygwin. (diff)
downloadrtems-eclipse-plug-in-f4f1f44b2f87f584109ab75d8d24f085e2c16f61.tar.bz2
Added preferences for Cygwin, MinGW and MSYS paths on windows.
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/Constants.java37
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java140
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/build/CommandLineGenerator.java7
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinCommandLineGenerator.java21
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinEnvironmentSupplier.java21
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinRunScannerInfoProvider.java21
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinScannerInfoCollector.java (renamed from org.rtems.cdt.toolchain2/org/rtems/cdt/build/WinScannerInfoCollector.java)4
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/build/EnvironmentSupplier.java31
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/build/RunScannerInfoProvider.java9
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/preferences/PreferenceInitializer.java6
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/preferences/PreferencePage.java26
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/properties/PropertyPage.java4
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/wizards/FinishSetup.java4
-rw-r--r--org.rtems.cdt.toolchain2/plugin.xml36
14 files changed, 307 insertions, 60 deletions
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/Constants.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/Constants.java
index 08ccd04..829a5b2 100644
--- a/org.rtems.cdt.toolchain2/org/rtems/cdt/Constants.java
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/Constants.java
@@ -12,20 +12,44 @@
package org.rtems.cdt;
+import java.util.Map;
+
public class Constants {
- public static final String PATH_SEPERATOR = System.getProperty( "path.separator");
+ public static final String PATH_SEPARATOR = System.getProperty( "path.separator");
+
+ public static final String PATH_VARIABLE_NAME = getPathVariableName();
+
+ public static final String PLATFORM_DEFAULT = "default";
+
+ public static final String PLATFORM_CYGWIN = "cygwin";
public static final String BSP_PATH_MAKE_VARIABLE = "PROJECT_RELEASE";
public static final String DEFAULT_BASE_PATH = "/opt/rtems-4.9";
public static final String DEFAULT_BSP_PATH = "/opt/rtems-4.9/powerpc-rtems4.9/psim";
+
+ public static final String DEFAULT_CYGWIN_PATH = "C:\\";
+
+ public static final String DEFAULT_MINGW_PATH = "C:\\";
+
+ public static final String DEFAULT_MSYS_PATH = "C:\\";
public static final String KEY_PREFIX = "org.rtems.cdt";
+ public static final String PLATFORM_KEY = KEY_PREFIX + ".platform";
+
public static final String BASE_PATH_KEY = KEY_PREFIX + ".basePath";
public static final String BSP_PATH_KEY = KEY_PREFIX + ".bspPath";
+
+ public static final String CYGWIN_PATH_KEY = KEY_PREFIX + ".cygwinPath";
+
+ public static final String MINGW_PATH_KEY = KEY_PREFIX + ".mingwPath";
+
+ public static final String MSYS_PATH_KEY = KEY_PREFIX + ".msysPath";
+
+ public static final String PATH_PREPEND_KEY = KEY_PREFIX + ".pathPrepend";
public static final String TOOL_KEY_PREFIX = KEY_PREFIX + ".tool";
@@ -59,6 +83,17 @@ public class Constants {
public static final String TOOL_OPTIONS_LINKER_CPP_KEY = TOOL_LINKER_CPP_KEY + TOOL_OPTIONS_KEY_POSTFIX;
+ private static String getPathVariableName() {
+ Map<String, String> env = System.getenv();
+ for (String name : env.keySet()) {
+ if (name.equalsIgnoreCase( "PATH")) {
+ return name;
+ }
+ }
+
+ return "PATH";
+ }
+
private Constants() {
// Do nothing
}
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java
index 5a4ae30..a1c2190 100644
--- a/org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java
@@ -13,11 +13,13 @@
package org.rtems.cdt;
import java.io.BufferedReader;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import org.eclipse.cdt.build.core.scannerconfig.CfgInfoContext;
import org.eclipse.cdt.build.internal.core.scannerconfig.CfgDiscoveredPathManager;
@@ -28,6 +30,8 @@ import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.QualifiedName;
@@ -65,9 +69,9 @@ public class Storage {
if (value == null) {
if (key.startsWith( Constants.TOOL_KEY_PREFIX)) {
- updateTools( project);
+ changePlatform( project, Constants.PLATFORM_DEFAULT);
} else {
- value = Activator.getDefault().getPreferenceStore().getString( key);
+ value = getPreference( key);
setProperty( project, key, value);
}
}
@@ -104,26 +108,130 @@ public class Storage {
return cfg;
}
- public static void updateTools( IProject project) {
- String path = getProperty( project, Constants.BSP_PATH_KEY);
+ public static String prependToPath( String path, String part) {
+ if (path == null || path.isEmpty()) {
+ return part;
+ } else {
+ return part + Constants.PATH_SEPARATOR + path;
+ }
+ }
+
+ public static String prependToPathByPreference( String path, String key) {
+ String basePath = getPreference( key);
+
+ if (basePath != null) {
+ IPath part = new Path( basePath).append( "bin");
+
+ return prependToPath( path, part.toOSString());
+ }
+
+ return path;
+ }
+
+ public static String prependToPathByProperty( IProject project, String path, String key) {
+ String basePath = getProperty( project, key);
+
+ if (basePath != null) {
+ IPath part = new Path( basePath).append( "bin");
+
+ return prependToPath( path, part.toOSString());
+ }
+
+ return path;
+ }
+
+ public static void clearPlatform( IProject project) {
+ setProperty( project, Constants.PLATFORM_KEY, null);
+
+ // Delete discovered paths for all configurations of the project
+ for (IConfiguration cfg : getConfigurations( project)) {
+ CfgDiscoveredPathManager.getInstance().removeDiscoveredInfo(
+ project,
+ new CfgInfoContext( cfg)
+ );
+ }
+ }
+
+ public static String getPlatform( IProject project) {
+ return getPristineProperty( project, Constants.PLATFORM_KEY);
+ }
+
+ public static void changePlatform( IProject project, String newPlatform) {
+ String platform = getPlatform( project);
+
+ // Check if we have already the requested platform
+ if (platform != null && platform == newPlatform) {
+ // Nothing to do
+ return;
+ }
+
+ // Set new platform
+ setProperty( project, Constants.PLATFORM_KEY, newPlatform);
+
+ // Update path prepends
+ String path = null;
+ if (Platform.getOS().equals( Platform.OS_WIN32)) {
+ if (newPlatform.equals( Constants.PLATFORM_CYGWIN)) {
+ path = prependToPathByPreference( path, Constants.CYGWIN_PATH_KEY);
+ } else {
+ path = prependToPathByPreference( path, Constants.MINGW_PATH_KEY);
+ path = prependToPathByPreference( path, Constants.MSYS_PATH_KEY);
+ }
+ }
+ path = prependToPathByProperty( project, path, Constants.BASE_PATH_KEY);
+ setProperty( project, Constants.PATH_PREPEND_KEY, path);
+
+ // Update tools
+ updateTools( project, newPlatform);
+ }
+
+ private static void updateTools( IProject project, String platform) {
+ String bspPath = getProperty( project, Constants.BSP_PATH_KEY);
+ IPath make = new Path( "make");
// Translate path if necessary
if (Platform.getOS().equals( Platform.OS_WIN32)) {
- // FIXME: MinGW?
-
- String device = path.split( ":") [0];
- path = path.replaceFirst( "^" + device + ":", "/cygdrive/" + device).replaceAll( "\\\\", "/");
+ if (platform.equals( Constants.PLATFORM_CYGWIN)) {
+ String s [] = bspPath.split( ":");
+ if (s.length > 0) {
+ bspPath = bspPath.replaceFirst( "^" + s [0] + ":", "/cygdrive/" + s [0]);
+ }
+ }
+ bspPath = bspPath.replaceAll( "\\\\", "/");
}
// Create make process builder
- ProcessBuilder pb = new ProcessBuilder(
- "make",
- Constants.BSP_PATH_MAKE_VARIABLE + "=" + path
- );
+ ProcessBuilder pb = new ProcessBuilder();
// Change working directory to the Makefile location
pb.directory( Activator.getDefault().getMakefileLocation().toFile());
+ // Update path environment variable
+ Map<String, String> env = pb.environment();
+ String path = env.get( Constants.PATH_VARIABLE_NAME);
+ String part = getProperty( project, Constants.PATH_PREPEND_KEY);
+ path = Storage.prependToPath( path, part);
+ env.put( Constants.PATH_VARIABLE_NAME, path);
+
+ // On windows we have to search for the make program in the new path environment
+ if (Platform.getOS().equals( Platform.OS_WIN32)) {
+ String parts [] = path.split( Constants.PATH_SEPARATOR);
+ for (String p : parts) {
+ IPath makeCandidate = new Path( p).append( "make.exe");
+ File file = new File( makeCandidate.toOSString());
+ if (file.exists()) {
+ make = makeCandidate;
+ break;
+ }
+ }
+ }
+
+ // Set command line
+ pb.command(
+ make.toOSString(),
+ Constants.BSP_PATH_MAKE_VARIABLE + "=" + bspPath
+ );
+
// Start make process and parse its output
Process p = null;
try {
@@ -186,14 +294,6 @@ public class Storage {
}
}
}
-
- // Delete discovered paths for all configurations of the project
- for (IConfiguration cfg : getConfigurations( project)) {
- CfgDiscoveredPathManager.getInstance().removeDiscoveredInfo(
- project,
- new CfgInfoContext( cfg)
- );
- }
}
private static void updateTool( IProject project, String toolKey, String command, List<String> options) {
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CommandLineGenerator.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CommandLineGenerator.java
index 6276708..9fa7bdd 100644
--- a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CommandLineGenerator.java
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CommandLineGenerator.java
@@ -21,6 +21,10 @@ import org.rtems.cdt.Constants;
import org.rtems.cdt.Storage;
public class CommandLineGenerator extends ManagedCommandLineGenerator implements IManagedCommandLineGenerator {
+ protected String getPlatform() {
+ return Constants.PLATFORM_DEFAULT;
+ }
+
public IManagedCommandLineInfo generateCommandLineInfo(
ITool tool,
String commandName,
@@ -33,6 +37,9 @@ public class CommandLineGenerator extends ManagedCommandLineGenerator implements
) {
// Get associated project of the tool
IProject project = (IProject) tool.getParentResourceInfo().getParent().getOwner();
+
+ // Change platform
+ Storage.changePlatform( project, getPlatform());
// Determine tool key via the tool ID
String id = tool.getId();
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinCommandLineGenerator.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinCommandLineGenerator.java
new file mode 100644
index 0000000..b7012e6
--- /dev/null
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinCommandLineGenerator.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2008
+ * Embedded Brains GmbH
+ * Obere Lagerstr. 30
+ * D-82178 Puchheim
+ * Germany
+ * rtems@embedded-brains.de
+ *
+ * The license and distribution terms for this file may be found in the file
+ * LICENSE in this distribution or at http://www.rtems.com/license/LICENSE.
+ */
+
+package org.rtems.cdt.build;
+
+import org.rtems.cdt.Constants;
+
+public class CygwinCommandLineGenerator extends CommandLineGenerator {
+ protected String getPlatform() {
+ return Constants.PLATFORM_CYGWIN;
+ }
+}
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinEnvironmentSupplier.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinEnvironmentSupplier.java
new file mode 100644
index 0000000..cb0ecac
--- /dev/null
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinEnvironmentSupplier.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2008
+ * Embedded Brains GmbH
+ * Obere Lagerstr. 30
+ * D-82178 Puchheim
+ * Germany
+ * rtems@embedded-brains.de
+ *
+ * The license and distribution terms for this file may be found in the file
+ * LICENSE in this distribution or at http://www.rtems.com/license/LICENSE.
+ */
+
+package org.rtems.cdt.build;
+
+import org.rtems.cdt.Constants;
+
+public class CygwinEnvironmentSupplier extends EnvironmentSupplier {
+ protected String getPlatform() {
+ return Constants.PLATFORM_CYGWIN;
+ }
+} \ No newline at end of file
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinRunScannerInfoProvider.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinRunScannerInfoProvider.java
new file mode 100644
index 0000000..75027c3
--- /dev/null
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinRunScannerInfoProvider.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2008
+ * Embedded Brains GmbH
+ * Obere Lagerstr. 30
+ * D-82178 Puchheim
+ * Germany
+ * rtems@embedded-brains.de
+ *
+ * The license and distribution terms for this file may be found in the file
+ * LICENSE in this distribution or at http://www.rtems.com/license/LICENSE.
+ */
+
+package org.rtems.cdt.build;
+
+import org.rtems.cdt.Constants;
+
+public class CygwinRunScannerInfoProvider extends RunScannerInfoProvider {
+ protected String getPlatform() {
+ return Constants.PLATFORM_CYGWIN;
+ }
+}
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/WinScannerInfoCollector.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinScannerInfoCollector.java
index 6667ade..56e627d 100644
--- a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/WinScannerInfoCollector.java
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/CygwinScannerInfoCollector.java
@@ -29,7 +29,7 @@ import org.eclipse.core.resources.IProject;
*
* See also 'org.eclipse.cdt.managedbuilder.internal.scannerconfig.DefaultGnuWinScannerInfoCollector'.
*/
-public class WinScannerInfoCollector extends PerProjectSICollector implements IScannerInfoCollector3, IManagedScannerInfoCollector {
+public class CygwinScannerInfoCollector extends PerProjectSICollector implements IScannerInfoCollector3, IManagedScannerInfoCollector {
private IProject mProject;
public void contributeToScannerConfig( Object resource, Map scannerInfo) {
@@ -46,7 +46,7 @@ public class WinScannerInfoCollector extends PerProjectSICollector implements IS
scannerInfo.put( ScannerInfoTypes.INCLUDE_PATHS, translatedIncludes);
super.contributeToScannerConfig( resource, scannerInfo);
- }
+}
public void setProject( IProject project) {
mProject = project;
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/EnvironmentSupplier.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/EnvironmentSupplier.java
index 2099038..acde119 100644
--- a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/EnvironmentSupplier.java
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/EnvironmentSupplier.java
@@ -13,38 +13,43 @@
package org.rtems.cdt.build;
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.cdt.managedbuilder.core.IManagedProject;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
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.managedbuilder.internal.envvar.BuildEnvVar;
import org.rtems.cdt.Constants;
import org.rtems.cdt.Storage;
-public class EnvironmentSupplier implements IProjectEnvironmentVariableSupplier {
+public class EnvironmentSupplier implements IConfigurationEnvironmentVariableSupplier {
private static final int PATH_INDEX = 0;
private static final int VARIABLE_COUNT = 1;
+
+ protected String getPlatform() {
+ return Constants.PLATFORM_DEFAULT;
+ }
- public IBuildEnvironmentVariable getVariable( String name, IManagedProject project, IEnvironmentVariableProvider provider) {
+ public IBuildEnvironmentVariable getVariable( String name, IConfiguration configuration, IEnvironmentVariableProvider provider) {
if (name.equals( "PATH")) {
- IPath path = new Path(
- Storage.getProperty( (IProject) project.getOwner(), Constants.BASE_PATH_KEY)
- );
- path = path.append( "bin");
+ IProject project = (IProject) configuration.getOwner();
+
+ // Change platform
+ Storage.changePlatform( project, getPlatform());
+
+ // Get path parts
+ String part = Storage.getProperty( project, Constants.PATH_PREPEND_KEY);
- return new BuildEnvVar( name, path.toOSString(), IBuildEnvironmentVariable.ENVVAR_PREPEND, Constants.PATH_SEPERATOR);
+ return new BuildEnvVar( name, part, IBuildEnvironmentVariable.ENVVAR_PREPEND, Constants.PATH_SEPARATOR);
}
return null;
}
- public IBuildEnvironmentVariable [] getVariables( IManagedProject project, IEnvironmentVariableProvider provider) {
+ public IBuildEnvironmentVariable [] getVariables( IConfiguration configuration, IEnvironmentVariableProvider provider) {
IBuildEnvironmentVariable variables [] = new IBuildEnvironmentVariable [VARIABLE_COUNT];
- variables [PATH_INDEX] = getVariable( "PATH", project, provider);
+ variables [PATH_INDEX] = getVariable( "PATH", configuration, provider);
return variables;
}
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/RunScannerInfoProvider.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/RunScannerInfoProvider.java
index 2616602..1e11df3 100644
--- a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/RunScannerInfoProvider.java
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/RunScannerInfoProvider.java
@@ -19,7 +19,11 @@ import org.eclipse.core.runtime.Path;
import org.rtems.cdt.Constants;
import org.rtems.cdt.Storage;
-public class RunScannerInfoProvider extends GCCSpecsRunSIProvider {
+public class RunScannerInfoProvider extends GCCSpecsRunSIProvider {
+ protected String getPlatform() {
+ return Constants.PLATFORM_DEFAULT;
+ }
+
protected boolean initialize() {
if (!super.initialize()) {
return false;
@@ -42,6 +46,9 @@ public class RunScannerInfoProvider extends GCCSpecsRunSIProvider {
return false;
}
+ // Change platform
+ Storage.changePlatform( project, getPlatform());
+
/*
* FIXME: Added absolute path since it seams that the build
* environment is ignored.
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/preferences/PreferenceInitializer.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/preferences/PreferenceInitializer.java
index 19d9232..c15343b 100644
--- a/org.rtems.cdt.toolchain2/org/rtems/cdt/preferences/PreferenceInitializer.java
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/preferences/PreferenceInitializer.java
@@ -12,6 +12,7 @@
package org.rtems.cdt.preferences;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.jface.preference.IPreferenceStore;
import org.rtems.cdt.Activator;
@@ -22,5 +23,10 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
store.setDefault( Constants.BASE_PATH_KEY, Constants.DEFAULT_BASE_PATH);
store.setDefault( Constants.BSP_PATH_KEY, Constants.DEFAULT_BSP_PATH);
+ if (Platform.getOS().equals( Platform.OS_WIN32)) {
+ store.setDefault( Constants.CYGWIN_PATH_KEY, Constants.DEFAULT_CYGWIN_PATH);
+ store.setDefault( Constants.MINGW_PATH_KEY, Constants.DEFAULT_MINGW_PATH);
+ store.setDefault( Constants.MSYS_PATH_KEY, Constants.DEFAULT_MSYS_PATH);
+ }
}
}
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/preferences/PreferencePage.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/preferences/PreferencePage.java
index bf9890e..efe214c 100644
--- a/org.rtems.cdt.toolchain2/org/rtems/cdt/preferences/PreferencePage.java
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/preferences/PreferencePage.java
@@ -12,6 +12,7 @@
package org.rtems.cdt.preferences;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.ui.IWorkbenchPreferencePage;
@@ -42,7 +43,30 @@ public class PreferencePage
"BSP path:",
getFieldEditorParent()
)
- );
+ );
+ if (Platform.getOS().equals( Platform.OS_WIN32)) {
+ addField(
+ new DirectoryFieldEditor(
+ Constants.CYGWIN_PATH_KEY,
+ "Cygwin path:",
+ getFieldEditorParent()
+ )
+ );
+ addField(
+ new DirectoryFieldEditor(
+ Constants.MINGW_PATH_KEY,
+ "MinGW path:",
+ getFieldEditorParent()
+ )
+ );
+ addField(
+ new DirectoryFieldEditor(
+ Constants.MSYS_PATH_KEY,
+ "MSYS path:",
+ getFieldEditorParent()
+ )
+ );
+ }
}
public void init( IWorkbench workbench) {
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/properties/PropertyPage.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/properties/PropertyPage.java
index 11b5018..65365e3 100644
--- a/org.rtems.cdt.toolchain2/org/rtems/cdt/properties/PropertyPage.java
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/properties/PropertyPage.java
@@ -89,8 +89,8 @@ public class PropertyPage extends FieldEditorPreferencePage implements IWorkbenc
setProperty( Constants.BASE_PATH_KEY);
setProperty( Constants.BSP_PATH_KEY);
- // Update tools
- Storage.updateTools( mProject);
+ // Clear platform
+ Storage.clearPlatform( mProject);
return true;
}
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/wizards/FinishSetup.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/wizards/FinishSetup.java
index d891c83..6b37412 100644
--- a/org.rtems.cdt.toolchain2/org/rtems/cdt/wizards/FinishSetup.java
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/wizards/FinishSetup.java
@@ -41,8 +41,8 @@ public class FinishSetup implements Runnable {
Storage.setProperty( project, Constants.BASE_PATH_KEY, basePath);
Storage.setProperty( project, Constants.BSP_PATH_KEY, bspPath);
- // Update tools
- Storage.updateTools( project);
+ // Clear platform
+ Storage.clearPlatform( project);
}
}
}
diff --git a/org.rtems.cdt.toolchain2/plugin.xml b/org.rtems.cdt.toolchain2/plugin.xml
index 5741067..05d2b3a 100644
--- a/org.rtems.cdt.toolchain2/plugin.xml
+++ b/org.rtems.cdt.toolchain2/plugin.xml
@@ -72,7 +72,7 @@
name="RTEMS Scanner Configuration Discovery Profile (Windows)"
point="org.eclipse.cdt.make.core.ScannerConfigurationDiscoveryProfile">
<scannerInfoCollector
- class="org.rtems.cdt.build.WinScannerInfoCollector"
+ class="org.rtems.cdt.build.CygwinScannerInfoCollector"
scope="project"/>
<buildOutputProvider>
<open/>
@@ -81,7 +81,7 @@
<scannerInfoProvider providerId="specsFile">
<run
arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}"
- class="org.rtems.cdt.build.RunScannerInfoProvider"/>
+ class="org.rtems.cdt.build.CygwinRunScannerInfoProvider"/>
<scannerInfoConsoleParser class="org.eclipse.cdt.make.internal.core.scannerconfig.gnu.GCCSpecsConsoleParser"/>
</scannerInfoProvider>
</extension>
@@ -90,7 +90,7 @@
name="RTEMS Scanner Configuration Discovery Profile (Windows)"
point="org.eclipse.cdt.make.core.ScannerConfigurationDiscoveryProfile">
<scannerInfoCollector
- class="org.rtems.cdt.build.WinScannerInfoCollector"
+ class="org.rtems.cdt.build.CygwinScannerInfoCollector"
scope="project"/>
<buildOutputProvider>
<open/>
@@ -99,7 +99,7 @@
<scannerInfoProvider providerId="specsFile">
<run
arguments="-E -P -v -dD ${plugin_state_location}/specs.c"
- class="org.rtems.cdt.build.RunScannerInfoProvider"/>
+ class="org.rtems.cdt.build.CygwinRunScannerInfoProvider"/>
<scannerInfoConsoleParser class="org.eclipse.cdt.make.internal.core.scannerconfig.gnu.GCCSpecsConsoleParser"/>
</scannerInfoProvider>
</extension>
@@ -108,7 +108,7 @@
name="RTEMS Scanner Configuration Discovery Profile (Windows)"
point="org.eclipse.cdt.make.core.ScannerConfigurationDiscoveryProfile">
<scannerInfoCollector
- class="org.rtems.cdt.build.WinScannerInfoCollector"
+ class="org.rtems.cdt.build.CygwinScannerInfoCollector"
scope="project"/>
<buildOutputProvider>
<open/>
@@ -117,7 +117,7 @@
<scannerInfoProvider providerId="specsFile">
<run
arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp"
- class="org.rtems.cdt.build.RunScannerInfoProvider"/>
+ class="org.rtems.cdt.build.CygwinRunScannerInfoProvider"/>
<scannerInfoConsoleParser class="org.eclipse.cdt.make.internal.core.scannerconfig.gnu.GCCSpecsConsoleParser"/>
</scannerInfoProvider>
</extension>
@@ -145,12 +145,13 @@
<!-- Toolchain (Standard) -->
<toolChain
+ archList="all"
+ configurationEnvironmentSupplier="org.rtems.cdt.build.EnvironmentSupplier"
id="org.rtems.cdt.toolchain"
name="RTEMS Toolchain"
- archList="all"
osList="all"
- targetTool="org.rtems.cdt.linker.c;org.rtems.cdt.linker.cpp;org.rtems.cdt.archiver"
- scannerConfigDiscoveryProfileId="org.rtems.cdt.toolchain2.RtemsSCDProfile">
+ scannerConfigDiscoveryProfileId="org.rtems.cdt.toolchain2.RtemsSCDProfile"
+ targetTool="org.rtems.cdt.linker.c;org.rtems.cdt.linker.cpp;org.rtems.cdt.archiver">
<targetPlatform
id="org.rtems.cdt.target"
name="RTEMS Target"
@@ -227,7 +228,7 @@
archList="all"
osList="win32"
targetTool="org.rtems.cdt.linker.c.cygwin;org.rtems.cdt.linker.cpp.cygwin;org.rtems.cdt.archiver.cygwin"
- configurationEnvironmentSupplier="org.eclipse.cdt.managedbuilder.gnu.cygwin.GnuCygwinConfigurationEnvironmentSupplier"
+ configurationEnvironmentSupplier="org.rtems.cdt.build.CygwinEnvironmentSupplier"
isToolChainSupported="org.eclipse.cdt.managedbuilder.gnu.cygwin.IsGnuCygwinToolChainSupported"
scannerConfigDiscoveryProfileId="org.rtems.cdt.toolchain2.RtemsSCDProfileWin">
<targetPlatform
@@ -243,12 +244,12 @@
<tool
id="org.rtems.cdt.assembler.cygwin"
superClass="cdt.managedbuild.tool.gnu.assembler"
- commandLineGenerator="org.rtems.cdt.build.CommandLineGenerator">
+ commandLineGenerator="org.rtems.cdt.build.CygwinCommandLineGenerator">
</tool>
<tool
id="org.rtems.cdt.compiler.c.cygwin"
superClass="cdt.managedbuild.tool.gnu.c.compiler.cygwin"
- commandLineGenerator="org.rtems.cdt.build.CommandLineGenerator">
+ commandLineGenerator="org.rtems.cdt.build.CygwinCommandLineGenerator">
<inputType
id="org.rtems.cdt.compiler.input.c.cygwin"
superClass="cdt.managedbuild.tool.gnu.c.compiler.input.cygwin"
@@ -257,7 +258,7 @@
<tool
id="org.rtems.cdt.compiler.cpp.cygwin"
superClass="cdt.managedbuild.tool.gnu.cpp.compiler.cygwin"
- commandLineGenerator="org.rtems.cdt.build.CommandLineGenerator">
+ commandLineGenerator="org.rtems.cdt.build.CygwinCommandLineGenerator">
<inputType
id="org.rtems.cdt.compiler.cpp.input.cygwin"
scannerConfigDiscoveryProfileId="org.rtems.cdt.toolchain2.RtemsSCDProfileWinCPP"
@@ -266,7 +267,7 @@
<tool
id="org.rtems.cdt.linker.c.cygwin"
superClass="cdt.managedbuild.tool.gnu.c.linker.cygwin"
- commandLineGenerator="org.rtems.cdt.build.CommandLineGenerator">
+ commandLineGenerator="org.rtems.cdt.build.CygwinCommandLineGenerator">
<enablement type="ALL">
<not>
<checkBuildProperty
@@ -278,7 +279,7 @@
<tool
id="org.rtems.cdt.linker.cpp.cygwin"
superClass="cdt.managedbuild.tool.gnu.cpp.linker.cygwin"
- commandLineGenerator="org.rtems.cdt.build.CommandLineGenerator">
+ commandLineGenerator="org.rtems.cdt.build.CygwinCommandLineGenerator">
<enablement type="ALL">
<not>
<checkBuildProperty
@@ -290,7 +291,7 @@
<tool
id="org.rtems.cdt.archiver.cygwin"
superClass="cdt.managedbuild.tool.gnu.archiver"
- commandLineGenerator="org.rtems.cdt.build.CommandLineGenerator">
+ commandLineGenerator="org.rtems.cdt.build.CygwinCommandLineGenerator">
<enablement type="ALL">
<checkBuildProperty
property="org.eclipse.cdt.build.core.buildArtefactType"
@@ -303,8 +304,7 @@
<projectType
buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe"
id="org.rtems.cdt.projectType"
- name="RTEMS Executable"
- projectEnvironmentSupplier="org.rtems.cdt.build.EnvironmentSupplier">
+ name="RTEMS Executable">
<configuration
id="org.rtems.cdt.config"
name="RTEMS Executable Configuration"