From 0fab0d1d2cf193b4c4dcacc2f442155bf7dc8a88 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 27 Nov 2009 09:36:22 +0000 Subject: Added preference and property to disable tool options derived from BSP settings. --- org.rtems.cdt/src/org/rtems/cdt/Constants.java | 4 ++++ org.rtems.cdt/src/org/rtems/cdt/Storage.java | 5 +++++ .../src/org/rtems/cdt/build/CommandLineGenerator.java | 15 +++++++++------ .../org/rtems/cdt/preferences/PreferenceInitializer.java | 1 + .../src/org/rtems/cdt/preferences/PreferencePage.java | 10 +++++++++- .../src/org/rtems/cdt/properties/PropertyPage.java | 10 ++++++++++ 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); -- cgit v1.2.3