summaryrefslogtreecommitdiffstats
path: root/org.rtems.cdt
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2009-11-27 09:36:22 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2009-11-27 09:36:22 +0000
commit0fab0d1d2cf193b4c4dcacc2f442155bf7dc8a88 (patch)
tree7fe4bd65df93f579370d8021d836bb2f0b3d6df0 /org.rtems.cdt
parentFixed nature filter for C++ compiler. (diff)
downloadrtems-eclipse-plug-in-0fab0d1d2cf193b4c4dcacc2f442155bf7dc8a88.tar.bz2
Added preference and property to disable tool options derived from BSP settings.
Diffstat (limited to 'org.rtems.cdt')
-rw-r--r--org.rtems.cdt/src/org/rtems/cdt/Constants.java4
-rw-r--r--org.rtems.cdt/src/org/rtems/cdt/Storage.java5
-rw-r--r--org.rtems.cdt/src/org/rtems/cdt/build/CommandLineGenerator.java15
-rw-r--r--org.rtems.cdt/src/org/rtems/cdt/preferences/PreferenceInitializer.java1
-rw-r--r--org.rtems.cdt/src/org/rtems/cdt/preferences/PreferencePage.java10
-rw-r--r--org.rtems.cdt/src/org/rtems/cdt/properties/PropertyPage.java10
6 files changed, 38 insertions, 7 deletions
diff --git a/org.rtems.cdt/src/org/rtems/cdt/Constants.java b/org.rtems.cdt/src/org/rtems/cdt/Constants.java
index a5b02ad..fec286b 100644
--- a/org.rtems.cdt/src/org/rtems/cdt/Constants.java
+++ b/org.rtems.cdt/src/org/rtems/cdt/Constants.java
@@ -47,6 +47,8 @@ public class Constants {
public static final String DEFAULT_MSYS_PATH = "C:\\";
+ public static final String DEFAULT_DISABLE_TOOL_OPTIONS = "false";
+
public static final String KEY_PREFIX = "org.rtems.cdt";
public static final String PLATFORM_KEY = KEY_PREFIX + ".platform";
@@ -63,6 +65,8 @@ public class Constants {
public static final String PATH_PREPEND_KEY = KEY_PREFIX + ".pathPrepend";
+ public static final String DISABLE_TOOL_OPTIONS_KEY = KEY_PREFIX + ".disableToolOptions";
+
public static final String TOOL_KEY_PREFIX = KEY_PREFIX + ".tool";
public static final String TOOL_ARCHIVER_KEY = TOOL_KEY_PREFIX + ".archiver";
diff --git a/org.rtems.cdt/src/org/rtems/cdt/Storage.java b/org.rtems.cdt/src/org/rtems/cdt/Storage.java
index 6f55cd0..e0cc1a5 100644
--- a/org.rtems.cdt/src/org/rtems/cdt/Storage.java
+++ b/org.rtems.cdt/src/org/rtems/cdt/Storage.java
@@ -407,10 +407,15 @@ public class Storage {
return optionsValue.split( OPTION_SEPARATOR);
}
+
+ public static boolean areToolOptionsEnabled( IProject project) {
+ return !getProperty( project, Constants.DISABLE_TOOL_OPTIONS_KEY).equals( "true");
+ }
public static void createMarker( IProject project, String id, String message) {
createMarker( project, id, message, IMarker.SEVERITY_ERROR);
}
+
public static void createMarker( IProject project, String id, String message, int severity) {
try {
IMarker marker = project.createMarker( IMarker.PROBLEM);
diff --git a/org.rtems.cdt/src/org/rtems/cdt/build/CommandLineGenerator.java b/org.rtems.cdt/src/org/rtems/cdt/build/CommandLineGenerator.java
index f4583d2..d64af68 100644
--- a/org.rtems.cdt/src/org/rtems/cdt/build/CommandLineGenerator.java
+++ b/org.rtems.cdt/src/org/rtems/cdt/build/CommandLineGenerator.java
@@ -38,7 +38,7 @@ public class CommandLineGenerator extends ManagedCommandLineGenerator implements
public IManagedCommandLineInfo generateCommandLineInfo(
ITool tool,
String commandName,
- String [] userOptions,
+ String [] options,
String outputFlag,
String outputPrefix,
String outputName,
@@ -74,11 +74,14 @@ public class CommandLineGenerator extends ManagedCommandLineGenerator implements
commandName = Storage.getProperty( project, toolKey);
tool.setToolCommand( commandName);
- // Combine tool and user options
- String [] toolOptions = Storage.getToolOptions( project, toolKey);
- String options [] = new String [toolOptions.length + userOptions.length];
- System.arraycopy( toolOptions, 0, options, 0, toolOptions.length);
- System.arraycopy( userOptions, 0, options, toolOptions.length, userOptions.length);
+ // Combine tool options and options
+ if (Storage.areToolOptionsEnabled( project)) {
+ String [] toolOptions = Storage.getToolOptions( project, toolKey);
+ String combinedOptions [] = new String [toolOptions.length + options.length];
+ System.arraycopy( toolOptions, 0, combinedOptions, 0, toolOptions.length);
+ System.arraycopy( options, 0, combinedOptions, toolOptions.length, options.length);
+ options = combinedOptions;
+ }
return super.generateCommandLineInfo(
tool,
diff --git a/org.rtems.cdt/src/org/rtems/cdt/preferences/PreferenceInitializer.java b/org.rtems.cdt/src/org/rtems/cdt/preferences/PreferenceInitializer.java
index 9e07c35..e14f6bf 100644
--- a/org.rtems.cdt/src/org/rtems/cdt/preferences/PreferenceInitializer.java
+++ b/org.rtems.cdt/src/org/rtems/cdt/preferences/PreferenceInitializer.java
@@ -38,5 +38,6 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer {
store.setDefault( Constants.MINGW_PATH_KEY, Constants.DEFAULT_MINGW_PATH);
store.setDefault( Constants.MSYS_PATH_KEY, Constants.DEFAULT_MSYS_PATH);
}
+ store.setDefault( Constants.DISABLE_TOOL_OPTIONS_KEY, Constants.DEFAULT_DISABLE_TOOL_OPTIONS);
}
}
diff --git a/org.rtems.cdt/src/org/rtems/cdt/preferences/PreferencePage.java b/org.rtems.cdt/src/org/rtems/cdt/preferences/PreferencePage.java
index c56379a..a82f7e4 100644
--- a/org.rtems.cdt/src/org/rtems/cdt/preferences/PreferencePage.java
+++ b/org.rtems.cdt/src/org/rtems/cdt/preferences/PreferencePage.java
@@ -23,6 +23,7 @@
package org.rtems.cdt.preferences;
import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.ui.IWorkbenchPreferencePage;
@@ -36,7 +37,7 @@ public class PreferencePage
public PreferencePage() {
super( GRID);
setPreferenceStore( Activator.getDefault().getPreferenceStore());
- setDescription( "Select the RTEMS base installation path and the board support package (BSP) installation path. This provides the default values for all projects.");
+ setDescription( "Select the RTEMS base installation path and the board support package (BSP) installation path. This provides the default values for all projects. Existing projects are not affected by changes made here.");
}
public void createFieldEditors() {
@@ -77,6 +78,13 @@ public class PreferencePage
)
);
}
+ addField(
+ new BooleanFieldEditor(
+ Constants.DISABLE_TOOL_OPTIONS_KEY,
+ "Disable tool options derived from BSP settings",
+ getFieldEditorParent()
+ )
+ );
}
public void init( IWorkbench workbench) {
diff --git a/org.rtems.cdt/src/org/rtems/cdt/properties/PropertyPage.java b/org.rtems.cdt/src/org/rtems/cdt/properties/PropertyPage.java
index 638d39e..5d6d43d 100644
--- a/org.rtems.cdt/src/org/rtems/cdt/properties/PropertyPage.java
+++ b/org.rtems.cdt/src/org/rtems/cdt/properties/PropertyPage.java
@@ -25,6 +25,7 @@ package org.rtems.cdt.properties;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
@@ -70,6 +71,7 @@ public class PropertyPage extends FieldEditorPreferencePage implements IWorkbenc
// Setup store values
setupStoreValue( store, Constants.BASE_PATH_KEY);
setupStoreValue( store, Constants.BSP_PATH_KEY);
+ setupStoreValue( store, Constants.DISABLE_TOOL_OPTIONS_KEY);
// Add field editors
addField(
@@ -86,6 +88,13 @@ public class PropertyPage extends FieldEditorPreferencePage implements IWorkbenc
getFieldEditorParent()
)
);
+ addField(
+ new BooleanFieldEditor(
+ Constants.DISABLE_TOOL_OPTIONS_KEY,
+ "Disable tool options derived from BSP settings",
+ getFieldEditorParent()
+ )
+ );
}
private void setProperty( String key) {
@@ -98,6 +107,7 @@ public class PropertyPage extends FieldEditorPreferencePage implements IWorkbenc
// Set the new properties
setProperty( Constants.BASE_PATH_KEY);
setProperty( Constants.BSP_PATH_KEY);
+ setProperty( Constants.DISABLE_TOOL_OPTIONS_KEY);
// Clear platform
Storage.clearPlatform( mProject);