net.sf.antcontrib.cpptasks.compiler

Class CommandLineLinker

public abstract class CommandLineLinker extends AbstractLinker

An abstract Linker implementation that performs the link via an external command.

Author: Adam Murdoch

Constructor Summary
CommandLineLinker(String command, String identifierArg, String[] extensions, String[] ignoredExtensions, String outputSuffix, boolean isLibtool, CommandLineLinker libtoolLinker)
Creates a comand line linker invocation
Method Summary
protected abstract voidaddBase(long base, Vector args)
protected abstract voidaddEntry(String entry, Vector args)
protected abstract voidaddFixed(Boolean fixed, Vector args)
protected abstract voidaddImpliedArgs(boolean debug, LinkType linkType, Vector args)
protected abstract voidaddIncremental(boolean incremental, Vector args)
protected String[]addLibrarySets(CCTask task, LibrarySet[] libsets, Vector preargs, Vector midargs, Vector endargs)
protected abstract voidaddMap(boolean map, Vector args)
protected abstract voidaddStack(int stack, Vector args)
protected LinkerConfigurationcreateConfiguration(CCTask task, LinkType linkType, ProcessorDef[] baseDefs, LinkerDef specificDef, TargetDef targetPlatform, VersionInfo versionInfo)
protected StringdecorateLinkerOption(StringBuffer buf, String arg)
Allows drived linker to decorate linker option.
protected StringgetCommand()
protected abstract StringgetCommandFileSwitch(String commandFile)
StringgetIdentifier()
CommandLineLinkergetLibtoolLinker()
protected abstract intgetMaximumCommandLength()
String[]getOutputFileNames(String baseName, VersionInfo versionInfo)
protected String[]getOutputFileSwitch(CCTask task, String outputFile)
protected abstract String[]getOutputFileSwitch(String outputFile)
protected StringgetStartupObject(LinkType linkType)
voidlink(CCTask task, File outputFile, String[] sourceFiles, CommandLineLinkerConfiguration config)
Performs a link using a command line linker
protected String[]prepareArguments(CCTask task, String outputDir, String outputFile, String[] sourceFiles, CommandLineLinkerConfiguration config)
Prepares argument list for exec command.
protected StringprepareFilename(StringBuffer buf, String outputDir, String sourceFile)
Processes filename into argument form
protected String[]prepareResponseFile(File outputFile, String[] args)
Prepares argument list to execute the linker using a response file.
protected StringquoteFilename(StringBuffer buf, String filename)
protected intrunCommand(CCTask task, File workingDir, String[] cmdline)
This method is exposed so test classes can overload and test the arguments without actually spawning the compiler
protected voidsetCommand(String command)

Constructor Detail

CommandLineLinker

public CommandLineLinker(String command, String identifierArg, String[] extensions, String[] ignoredExtensions, String outputSuffix, boolean isLibtool, CommandLineLinker libtoolLinker)
Creates a comand line linker invocation

Method Detail

addBase

protected abstract void addBase(long base, Vector args)

addEntry

protected abstract void addEntry(String entry, Vector args)

addFixed

protected abstract void addFixed(Boolean fixed, Vector args)

addImpliedArgs

protected abstract void addImpliedArgs(boolean debug, LinkType linkType, Vector args)

addIncremental

protected abstract void addIncremental(boolean incremental, Vector args)

addLibrarySets

protected String[] addLibrarySets(CCTask task, LibrarySet[] libsets, Vector preargs, Vector midargs, Vector endargs)

addMap

protected abstract void addMap(boolean map, Vector args)

addStack

protected abstract void addStack(int stack, Vector args)

createConfiguration

protected LinkerConfiguration createConfiguration(CCTask task, LinkType linkType, ProcessorDef[] baseDefs, LinkerDef specificDef, TargetDef targetPlatform, VersionInfo versionInfo)

decorateLinkerOption

protected String decorateLinkerOption(StringBuffer buf, String arg)
Allows drived linker to decorate linker option. Override by GccLinker to prepend a "-Wl," to pass option to through gcc to linker.

Parameters: buf buffer that may be used and abused in the decoration process, must not be null. arg linker argument

getCommand

protected final String getCommand()

getCommandFileSwitch

protected abstract String getCommandFileSwitch(String commandFile)

getIdentifier

public String getIdentifier()

getLibtoolLinker

public final CommandLineLinker getLibtoolLinker()

getMaximumCommandLength

protected abstract int getMaximumCommandLength()

getOutputFileNames

public String[] getOutputFileNames(String baseName, VersionInfo versionInfo)

getOutputFileSwitch

protected String[] getOutputFileSwitch(CCTask task, String outputFile)

getOutputFileSwitch

protected abstract String[] getOutputFileSwitch(String outputFile)

getStartupObject

protected String getStartupObject(LinkType linkType)

link

public void link(CCTask task, File outputFile, String[] sourceFiles, CommandLineLinkerConfiguration config)
Performs a link using a command line linker

prepareArguments

protected String[] prepareArguments(CCTask task, String outputDir, String outputFile, String[] sourceFiles, CommandLineLinkerConfiguration config)
Prepares argument list for exec command. Will return null if command line would exceed allowable command line buffer.

Parameters: task compilation task. outputFile linker output file sourceFiles linker input files (.obj, .o, .res) config linker configuration

Returns: arguments for runTask

prepareFilename

protected String prepareFilename(StringBuffer buf, String outputDir, String sourceFile)
Processes filename into argument form

prepareResponseFile

protected String[] prepareResponseFile(File outputFile, String[] args)
Prepares argument list to execute the linker using a response file.

Parameters: outputFile linker output file args output of prepareArguments

Returns: arguments for runTask

quoteFilename

protected String quoteFilename(StringBuffer buf, String filename)

runCommand

protected int runCommand(CCTask task, File workingDir, String[] cmdline)
This method is exposed so test classes can overload and test the arguments without actually spawning the compiler

setCommand

protected final void setCommand(String command)
Copyright ? 2001-2011 Ant-Contrib project. All Rights Reserved.