summaryrefslogtreecommitdiffstats
path: root/org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java
diff options
context:
space:
mode:
Diffstat (limited to 'org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java')
-rw-r--r--org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java22
1 files changed, 19 insertions, 3 deletions
diff --git a/org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java b/org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java
index 1cd3818..155e1a7 100644
--- a/org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java
+++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java
@@ -155,14 +155,30 @@ public class Storage {
}
private static void updateTool( IProject project, String toolKey, String command, List<String> options) {
+ List<String> filteredOptions = new LinkedList<String>();
+
+ // Filter options
+ if (toolKey.startsWith( Constants.COMPILER_KEY_PREFIX) || toolKey.startsWith( Constants.LINKER_KEY_PREFIX)) {
+ for (String option : options) {
+ if (!(option.isEmpty() || option.trim().matches( "^-c|-O[0123s]|-g|-W[\\w-]*$"))) {
+ filteredOptions.add( option);
+ }
+ }
+ } else {
+ filteredOptions = options;
+ }
+
+ // Transform filtered option list into option string value
String optionsValue = new String();
if (!options.isEmpty()) {
- optionsValue = options.get( 0);
- options.remove( 0);
+ optionsValue = filteredOptions.get( 0);
+ filteredOptions.remove( 0);
}
- for (String option : options) {
+ for (String option : filteredOptions) {
optionsValue += OPTION_SEPARATOR + option;
}
+
+ // Set properties
setProperty( project, toolKey, command);
setProperty( project, toolKey + Constants.TOOL_OPTIONS_KEY_POSTFIX, optionsValue);
}