/* * 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 [] options, 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.gcc")) { toolKey = Constants.TOOL_COMPILER_C_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 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, commandName, options, outputFlag, outputPrefix, outputName, inputResources, commandLinePattern ); } }