diff options
Diffstat (limited to 'org.rtems.cdt/src/org/rtems/cdt/build/CommandLineGenerator.java')
-rw-r--r-- | org.rtems.cdt/src/org/rtems/cdt/build/CommandLineGenerator.java | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/org.rtems.cdt/src/org/rtems/cdt/build/CommandLineGenerator.java b/org.rtems.cdt/src/org/rtems/cdt/build/CommandLineGenerator.java new file mode 100644 index 0000000..8ea99e1 --- /dev/null +++ b/org.rtems.cdt/src/org/rtems/cdt/build/CommandLineGenerator.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2008 Embedded Brains GmbH and others. + * + * Embedded Brains GmbH + * Obere Lagerstr. 30 + * D-82178 Puchheim + * Germany + * rtems@embedded-brains.de + * + * All rights reserved. This program and the accompanying materials are made + * available under the terms of the Eclipse Public License Version 1.0 ("EPL") + * which accompanies this distribution and is available at + * + * http://www.eclipse.org/legal/epl-v10.html + * + * For purposes of the EPL, "Program" will mean the Content. + * + * Contributors: + * + * Sebastian Huber (Embedded Brains GmbH) - Initial API and implementation. + */ + +package org.rtems.cdt.build; + +import org.eclipse.cdt.managedbuilder.core.IManagedCommandLineGenerator; +import org.eclipse.cdt.managedbuilder.core.IManagedCommandLineInfo; +import org.eclipse.cdt.managedbuilder.core.ITool; +import org.eclipse.cdt.managedbuilder.internal.core.ManagedCommandLineGenerator; +import org.eclipse.core.resources.IProject; +import org.rtems.cdt.Constants; +import org.rtems.cdt.Storage; + +public class CommandLineGenerator extends ManagedCommandLineGenerator implements IManagedCommandLineGenerator { + protected String getPlatform() { + return Constants.PLATFORM_DEFAULT; + } + + public IManagedCommandLineInfo generateCommandLineInfo( + ITool tool, + String commandName, + String [] userOptions, + String outputFlag, + String outputPrefix, + String outputName, + String [] inputResources, + String commandLinePattern + ) { + // Get associated project of the tool + IProject project = (IProject) tool.getParentResourceInfo().getParent().getOwner(); + + // Change platform + Storage.changePlatform( project, getPlatform()); + + // Determine tool key via the tool ID + String id = tool.getId(); + String toolKey = "gcc"; + if (id.contains( "archiver")) { + toolKey = Constants.TOOL_ARCHIVER_KEY; + } else if (id.contains( "assembler")) { + toolKey = Constants.TOOL_ASSEMBLER_KEY; + } else if (id.contains( "compiler.cpp")) { + toolKey = Constants.TOOL_COMPILER_CPP_KEY; + } else if (id.contains( "compiler.c")) { + toolKey = Constants.TOOL_COMPILER_C_KEY; + } else if (id.contains( "linker.cpp")) { + toolKey = Constants.TOOL_LINKER_CPP_KEY; + } else if (id.contains( "linker.c")) { + toolKey = Constants.TOOL_LINKER_C_KEY; + } + + // Set command name + 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); + + return super.generateCommandLineInfo( + tool, + commandName, + options, + outputFlag, + outputPrefix, + outputName, + inputResources, + commandLinePattern + ); + } +} |