Class CommandLineLinker

    • Constructor Detail

      • CommandLineLinker

        public CommandLineLinker​(java.lang.String command,
                                 java.lang.String identifierArg,
                                 java.lang.String[] extensions,
                                 java.lang.String[] ignoredExtensions,
                                 java.lang.String outputSuffix,
                                 boolean isLibtool,
                                 CommandLineLinker libtoolLinker)
        Creates a comand line linker invocation
    • Method Detail

      • addBase

        protected abstract void addBase​(long base,
                                        java.util.Vector args)
      • addFixed

        protected abstract void addFixed​(java.lang.Boolean fixed,
                                         java.util.Vector args)
      • addImpliedArgs

        protected abstract void addImpliedArgs​(boolean debug,
                                               LinkType linkType,
                                               java.util.Vector args)
      • addIncremental

        protected abstract void addIncremental​(boolean incremental,
                                               java.util.Vector args)
      • addLibrarySets

        protected java.lang.String[] addLibrarySets​(CCTask task,
                                                    LibrarySet[] libsets,
                                                    java.util.Vector preargs,
                                                    java.util.Vector midargs,
                                                    java.util.Vector endargs)
      • addMap

        protected abstract void addMap​(boolean map,
                                       java.util.Vector args)
      • addStack

        protected abstract void addStack​(int stack,
                                         java.util.Vector args)
      • addEntry

        protected abstract void addEntry​(java.lang.String entry,
                                         java.util.Vector args)
      • decorateLinkerOption

        protected java.lang.String decorateLinkerOption​(java.lang.StringBuffer buf,
                                                        java.lang.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 java.lang.String getCommand()
      • getCommandFileSwitch

        protected abstract java.lang.String getCommandFileSwitch​(java.lang.String commandFile)
      • getIdentifier

        public java.lang.String getIdentifier()
        Description copied from interface: Processor
        Retrieve an identifier that identifies the specific version of the compiler. Compilers with the same identifier should produce the same output files for the same input files and command line switches.
        Specified by:
        getIdentifier in interface Processor
        Specified by:
        getIdentifier in class AbstractProcessor
      • getMaximumCommandLength

        protected abstract int getMaximumCommandLength()
      • getOutputFileNames

        public java.lang.String[] getOutputFileNames​(java.lang.String baseName,
                                                     VersionInfo versionInfo)
        Description copied from interface: Processor
        Output file name (no path components) corresponding to source file
        Specified by:
        getOutputFileNames in interface Processor
        Specified by:
        getOutputFileNames in class AbstractLinker
        Parameters:
        baseName - input file
        Returns:
        output file name or null if no output file or name not determined by input file
      • getOutputFileSwitch

        protected java.lang.String[] getOutputFileSwitch​(CCTask task,
                                                         java.lang.String outputFile)
      • getOutputFileSwitch

        protected abstract java.lang.String[] getOutputFileSwitch​(java.lang.String outputFile)
      • getStartupObject

        protected java.lang.String getStartupObject​(LinkType linkType)
      • link

        public void link​(CCTask task,
                         java.io.File outputFile,
                         java.lang.String[] sourceFiles,
                         CommandLineLinkerConfiguration config)
                  throws org.apache.tools.ant.BuildException
        Performs a link using a command line linker
        Throws:
        org.apache.tools.ant.BuildException
      • prepareArguments

        protected java.lang.String[] prepareArguments​(CCTask task,
                                                      java.lang.String outputDir,
                                                      java.lang.String outputFile,
                                                      java.lang.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 java.lang.String prepareFilename​(java.lang.StringBuffer buf,
                                                   java.lang.String outputDir,
                                                   java.lang.String sourceFile)
        Processes filename into argument form
      • prepareResponseFile

        protected java.lang.String[] prepareResponseFile​(java.io.File outputFile,
                                                         java.lang.String[] args)
                                                  throws java.io.IOException
        Prepares argument list to execute the linker using a response file.
        Parameters:
        outputFile - linker output file
        args - output of prepareArguments
        Returns:
        arguments for runTask
        Throws:
        java.io.IOException
      • quoteFilename

        protected java.lang.String quoteFilename​(java.lang.StringBuffer buf,
                                                 java.lang.String filename)
      • runCommand

        protected int runCommand​(CCTask task,
                                 java.io.File workingDir,
                                 java.lang.String[] cmdline)
                          throws org.apache.tools.ant.BuildException
        This method is exposed so test classes can overload and test the arguments without actually spawning the compiler
        Throws:
        org.apache.tools.ant.BuildException
      • setCommand

        protected final void setCommand​(java.lang.String command)