Class CommandLineCompiler

All Implemented Interfaces:
Cloneable, Compiler, Processor
Direct Known Subclasses:
BorlandResourceCompiler, CommandLineCCompiler, CommandLineFortranCompiler, DevStudioMIDLCompiler, DevStudioResourceCompiler, MetaObjectCompiler, OpenWatcomCompiler, PrecompilingCommandLineCompiler, UserInterfaceCompiler, WindresResourceCompiler, XpidlCompiler

public abstract class CommandLineCompiler extends AbstractCompiler
An abstract Compiler implementation which uses an external program to perform the compile.
Author:
Adam Murdoch
  • Constructor Details

    • CommandLineCompiler

      protected CommandLineCompiler(String command, String identifierArg, String[] sourceExtensions, String[] headerExtensions, String outputSuffix, boolean libtool, CommandLineCompiler libtoolCompiler, boolean newEnvironment, org.apache.tools.ant.types.Environment env)
  • Method Details

    • addImpliedArgs

      protected abstract void addImpliedArgs(Vector args, boolean debug, boolean multithreaded, boolean exceptions, LinkType linkType, Boolean rtti, OptimizationEnum optimization)
    • addIncludes

      protected void addIncludes(String baseDirPath, File[] includeDirs, Vector args, Vector relativeArgs, StringBuffer includePathId)
      Adds command-line arguments for include directories. If relativeArgs is not null will add corresponding relative paths include switches to that vector (for use in building a configuration identifier that is consistent between machines).
      Parameters:
      baseDirPath - Base directory path.
      includeDirs - Array of include directory paths
      args - Vector of command line arguments used to execute the task
      relativeArgs - Vector of command line arguments used to build the configuration identifier
    • addWarningSwitch

      protected abstract void addWarningSwitch(Vector args, int warnings)
    • buildDefineArguments

      protected void buildDefineArguments(CompilerDef[] defs, Vector args)
    • compile

      public void compile(CCTask task, File outputDir, String[] sourceFiles, String[] args, String[] endArgs, boolean relentless, CommandLineCompilerConfiguration config, ProgressMonitor monitor) throws org.apache.tools.ant.BuildException
      Compiles a source file.
      Throws:
      org.apache.tools.ant.BuildException
    • createConfiguration

      protected CompilerConfiguration createConfiguration(CCTask task, LinkType linkType, ProcessorDef[] baseDefs, CompilerDef specificDef, TargetDef targetPlatform, VersionInfo versionInfo)
      Specified by:
      createConfiguration in class AbstractCompiler
    • getArgumentCountPerInputFile

      protected int getArgumentCountPerInputFile()
    • getCommand

      protected final String getCommand()
    • getDefineSwitch

      protected abstract void getDefineSwitch(StringBuffer buffer, String define, String value)
    • getEnvironmentIncludePath

      protected abstract File[] getEnvironmentIncludePath()
    • getIdentifier

      public 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
    • getIncludeDirSwitch

      protected abstract String getIncludeDirSwitch(String source)
    • getInputFileArgument

      protected String getInputFileArgument(File outputDir, String filename, int index)
    • getLibtool

      protected final boolean getLibtool()
    • getLibtoolCompiler

      public final CommandLineCompiler getLibtoolCompiler()
      Obtains the same compiler, but with libtool set Default behavior is to ignore libtool
    • getMaximumCommandLength

      public abstract int getMaximumCommandLength()
    • getMaximumInputFilesPerCommand

      protected int getMaximumInputFilesPerCommand()
    • getTotalArgumentLengthForInputFile

      protected int getTotalArgumentLengthForInputFile(File outputDir, String inputFile)
    • getUndefineSwitch

      protected abstract void getUndefineSwitch(StringBuffer buffer, String define)
    • runCommand

      protected int runCommand(CCTask task, File workingDir, 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(String command)