summaryrefslogtreecommitdiffstats
path: root/org.rtems.cdt/src/org/rtems/cdt/build/CommandLineGenerator.java
diff options
context:
space:
mode:
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.java92
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
+ );
+ }
+}