diff options
Diffstat (limited to 'org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java')
-rw-r--r-- | org.rtems.cdt.toolchain2/org/rtems/cdt/Storage.java | 22 |
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); } |