From 762740bdf6a7c296ff0d0e4a29f7291d75427d5e Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 1 Dec 2008 12:50:59 +0000 Subject: Fixed problem with '-B' GCC option. Filters new option values. --- .../org/rtems/cdt/Storage.java | 22 +++++++++++++++++++--- .../rtems/cdt/build/RunScannerInfoProvider.java | 7 +++++++ 2 files changed, 26 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 options) { + List filteredOptions = new LinkedList(); + + // 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); } 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 099ab8b..2616602 100644 --- a/org.rtems.cdt.toolchain2/org/rtems/cdt/build/RunScannerInfoProvider.java +++ b/org.rtems.cdt.toolchain2/org/rtems/cdt/build/RunScannerInfoProvider.java @@ -54,6 +54,13 @@ public class RunScannerInfoProvider extends GCCSpecsRunSIProvider { Storage.getProperty( project, Constants.TOOL_COMPILER_C_KEY) ); + // Add the standard options to the command arguments + String options [] = Storage.getToolOptions( project, Constants.TOOL_COMPILER_C_KEY); + String newCompileArguments [] = new String [options.length + fCompileArguments.length]; + System.arraycopy( options, 0, newCompileArguments, 0, options.length); + System.arraycopy( fCompileArguments, 0, newCompileArguments, options.length, fCompileArguments.length); + fCompileArguments = newCompileArguments; + return true; } } -- cgit v1.2.3