net.sf.antcontrib.cpptasks

Class CCTask


public class CCTask
extends Task

Compile and link task.

This task can compile various source languages and produce executables, shared libraries (aka DLL's) and static libraries. Compiler adaptors are currently available for several C/C++ compilers, FORTRAN, MIDL and Windows Resource files.

Copyright (c) 2001-2006, The Ant-Contrib project.

Licensed under the Apache Software License 2.0, http://www.apache.org/licenses/LICENSE-2.0.

For use with Apache Ant 1.5 or later. This software is not a product of the of the Apache Software Foundation and no endorsement is implied.

THIS SOFTWARE IS PROVIDED 'AS-IS', See http://www.apache.org/licenses/LICENSE-2.0 for additional disclaimers. To use:

  1. Place cpptasks.jar into Ant's classpath by placing in Ant's lib directory, adding to CLASSPATH environment variable or using the -lib command line option.
  2. Add type and task definitions in build file:
    • Ant 1.6 or later: add xmlns:cpptasks="antlib:org.sf.net.antcontrib.cpptasks" to <project> element.
    • Ant 1.5 or later: Add <taskdef resource="cpptasks.tasks"/> and <typedef resource="cpptasks.types"/> to body of <project> element.
    • Add <cc/>, <compiler/> and <linker/&gt elements to project.
    • Set path and environment variables to be able to run compiler from command line.
    • Build project.
    Authors:
    Adam Murdoch
    Curt Arnold

    Field Summary

    protected boolean
    failOnError
    If true, stop build on compile failure.

    Constructor Summary

    CCTask()

    Method Summary

    void
    addConfiguredCompiler(CompilerDef compiler)
    Adds a compiler definition or reference.
    void
    addConfiguredCompilerArg(CompilerArgument arg)
    Adds a compiler command-line arg.
    void
    addConfiguredDefineset(DefineSet defs)
    Adds a defineset.
    void
    addConfiguredDistributer(DistributerDef distributer)
    Adds a distributer definition or reference (Non-functional prototype).
    void
    addConfiguredLinker(LinkerDef linker)
    Adds a linker definition.
    void
    addConfiguredLinkerArg(LinkerArgument arg)
    Adds a linker command-line arg.
    void
    addConfiguredTarget(TargetDef target)
    Adds a target definition or reference (Non-functional prototype).
    void
    addConfiguredVersioninfo(VersionInfo newVersionInfo)
    Adds desriptive version information to be included in the generated file.
    void
    addEnv(Environment.Variable var)
    Add an environment variable to the launched process.
    void
    addFileset(ConditionalFileSet srcSet)
    Adds a source file set.
    void
    addLibset(LibrarySet libset)
    Adds a library set.
    void
    addProject(ProjectDef projectDef)
    Specifies the generation of IDE project file.
    void
    addSyslibset(SystemLibrarySet libset)
    Adds a system library set.
    protected int
    checkForChangedIncludeFiles(Hashtable targets)
    Checks all targets that are not forced to be rebuilt or are missing object files to be checked for modified include files
    protected LinkerConfiguration
    collectExplicitObjectFiles(Vector objectFiles, Vector sysObjectFiles, VersionInfo versionInfo)
    IncludePath
    createIncludePath()
    Adds an include path.
    PrecompileDef
    createPrecompile()
    Specifies precompilation prototype file and exclusions.
    SystemIncludePath
    createSysIncludePath()
    Adds a system include path.
    void
    execute()
    Executes the task.
    String
    getDataset()
    Gets the dataset.
    boolean
    getDebug()
    Gets debug state.
    boolean
    getFailonerror()
    Gets the failonerror flag.
    protected TargetHistoryTable
    getLinkHistory(TargetHistoryTable objHistory)
    protected TargetInfo
    getLinkTarget(LinkerConfiguration linkerConfig, Vector objectFiles, Vector sysObjectFiles, Hashtable compileTargets, VersionInfo versionInfo)
    File
    getObjdir()
    File
    getOutfile()
    String
    getOuttype()
    Gets output type.
    String
    getSubsystem()
    Gets subsystem name.
    TargetDef
    getTargetPlatform()
    static Hashtable
    getTargetsToBuildByConfiguration(Hashtable targets)
    Builds a Hashtable to targets needing to be rebuilt keyed by compiler configuration
    void
    setClassname(String classname)
    Sets the default compiler adapter.
    void
    setDataset(String dataset)
    Sets the dataset for OS/390 builds.
    void
    setDebug(boolean debug)
    Enables or disables generation of debug info.
    void
    setDependencyDepth(int depth)
    Deprecated.
    void
    setExceptions(boolean exceptions)
    Enables generation of exception handling code
    void
    setFailonerror(boolean fail)
    Indicates whether the build will continue even if there are compilation errors; defaults to true.
    void
    setIncremental(boolean incremental)
    Enables or disables incremental linking.
    void
    setLibtool(boolean libtool)
    Set use of libtool.
    void
    setLink(OutputTypeEnum outputType)
    Deprecated.
    void
    setMultithreaded(boolean multi)
    Enables or disables generation of multithreaded code
    void
    setName(CompilerEnum name)
    Sets type of the default compiler and linker.
    void
    setNewenvironment(boolean newenv)
    Do not propagate old environment when new environment variables are specified.
    void
    setObjdir(File dir)
    Sets the destination directory for object files.
    void
    setOptimize(OptimizationEnum optimization)
    Sets optimization.
    void
    setOutfile(File outfile)
    Sets the output file name.
    void
    setOutputFileProperty(String outputFileProperty)
    Specifies the name of a property to set with the physical filename that is produced by the linker
    void
    setOuttype(OutputTypeEnum outputType)
    Sets the output file type.
    void
    setProject(Project project)
    Sets the project.
    void
    setProjectsOnly(boolean value)
    void
    setRebuild(boolean rebuildAll)
    If set to true, all files will be rebuilt.
    void
    setRelentless(boolean relentless)
    If set to true, compilation errors will not stop the task until all files have been attempted.
    void
    setRtti(boolean rtti)
    Enables run-time type information.
    void
    setRuntime(RuntimeType rtlType)
    Sets the type of runtime library, possible values "dynamic", "static".
    void
    setSubsystem(SubsystemEnum subsystem)
    Sets the nature of the subsystem under which that the program will execute.
    void
    setWarnings(WarningLevelEnum level)
    Enumerated attribute with the values "none", "severe", "default", "production", "diagnostic", and "failtask".

    Field Details

    failOnError

    protected boolean failOnError
    If true, stop build on compile failure.

    Constructor Details

    CCTask

    public CCTask()

    Method Details

    addConfiguredCompiler

    public void addConfiguredCompiler(CompilerDef compiler)
    Adds a compiler definition or reference.
    Parameters:
    compiler - compiler

    addConfiguredCompilerArg

    public void addConfiguredCompilerArg(CompilerArgument arg)
    Adds a compiler command-line arg. Argument will be inherited by all nested compiler elements that do not have inherit="false".

    addConfiguredDefineset

    public void addConfiguredDefineset(DefineSet defs)
    Adds a defineset. Will be inherited by all compiler elements that do not have inherit="false".
    Parameters:
    defs - Define set

    addConfiguredDistributer

    public void addConfiguredDistributer(DistributerDef distributer)
    Adds a distributer definition or reference (Non-functional prototype).
    Parameters:
    distributer - distributer

    addConfiguredLinker

    public void addConfiguredLinker(LinkerDef linker)
    Adds a linker definition. The first linker that is not disqualified by its "if" and "unless" attributes will perform the link. If no child linker element is active, the linker implied by the cc elements name or classname attribute will be used.
    Parameters:
    linker - linker

    addConfiguredLinkerArg

    public void addConfiguredLinkerArg(LinkerArgument arg)
    Adds a linker command-line arg. Argument will be inherited by all nested linker elements that do not have inherit="false".

    addConfiguredTarget

    public void addConfiguredTarget(TargetDef target)
    Adds a target definition or reference (Non-functional prototype).
    Parameters:
    target - target

    addConfiguredVersioninfo

    public void addConfiguredVersioninfo(VersionInfo newVersionInfo)
    Adds desriptive version information to be included in the generated file. The first active version info block will be used.

    addEnv

    public void addEnv(Environment.Variable var)
    Add an environment variable to the launched process.

    addFileset

    public void addFileset(ConditionalFileSet srcSet)
    Adds a source file set. Files in these filesets will be auctioned to the available compiler configurations, with the default compiler implied by the cc element bidding last. If no compiler is interested in the file, it will be passed to the linker. To have a file be processed by a particular compiler configuration, add a fileset to the corresponding compiler element.

    addLibset

    public void addLibset(LibrarySet libset)
    Adds a library set. Library sets will be inherited by all linker elements that do not have inherit="false".
    Parameters:
    libset - library set

    addProject

    public void addProject(ProjectDef projectDef)
    Specifies the generation of IDE project file. Experimental.
    Parameters:
    projectDef - project file generation specification

    addSyslibset

    public void addSyslibset(SystemLibrarySet libset)
    Adds a system library set. Timestamps and locations of system library sets are not used in dependency analysis. Essential libraries (such as C Runtime libraries) should not be specified since the task will attempt to identify the correct libraries based on the multithread, debug and runtime attributes. System library sets will be inherited by all linker elements that do not have inherit="false".
    Parameters:
    libset - library set

    checkForChangedIncludeFiles

    protected int checkForChangedIncludeFiles(Hashtable targets)
    Checks all targets that are not forced to be rebuilt or are missing object files to be checked for modified include files

    collectExplicitObjectFiles

    protected LinkerConfiguration collectExplicitObjectFiles(Vector objectFiles,
                                                             Vector sysObjectFiles,
                                                             VersionInfo versionInfo)

    createIncludePath

    public IncludePath createIncludePath()
    Adds an include path. Include paths will be inherited by nested compiler elements that do not have inherit="false".

    createPrecompile

    public PrecompileDef createPrecompile()
                throws BuildException
    Specifies precompilation prototype file and exclusions. Inherited by all compilers that do not have inherit="false".

    createSysIncludePath

    public SystemIncludePath createSysIncludePath()
    Adds a system include path. Locations and timestamps of files located using the system include paths are not used in dependency analysis. Standard include locations should not be specified. The compiler adapters should recognized the settings from the appropriate environment variables or configuration files. System include paths will be inherited by nested compiler elements that do not have inherit="false".

    execute

    public void execute()
                throws BuildException
    Executes the task. Compiles the given files.

    getDataset

    public String getDataset()
    Gets the dataset.
    Returns:
    Returns a String

    getDebug

    public boolean getDebug()
    Gets debug state.
    Returns:
    true if building for debugging

    getFailonerror

    public boolean getFailonerror()
    Gets the failonerror flag.
    Returns:
    the failonerror flag

    getLinkHistory

    protected TargetHistoryTable getLinkHistory(TargetHistoryTable objHistory)

    getLinkTarget

    protected TargetInfo getLinkTarget(LinkerConfiguration linkerConfig,
                                       Vector objectFiles,
                                       Vector sysObjectFiles,
                                       Hashtable compileTargets,
                                       VersionInfo versionInfo)

    getObjdir

    public File getObjdir()

    getOutfile

    public File getOutfile()

    getOuttype

    public String getOuttype()
    Gets output type.
    Returns:
    output type

    getSubsystem

    public String getSubsystem()
    Gets subsystem name.
    Returns:
    Subsystem name

    getTargetPlatform

    public TargetDef getTargetPlatform()

    getTargetsToBuildByConfiguration

    public static Hashtable getTargetsToBuildByConfiguration(Hashtable targets)
    Builds a Hashtable to targets needing to be rebuilt keyed by compiler configuration

    setClassname

    public void setClassname(String classname)
    Sets the default compiler adapter. Use the "name" attribute when the compiler is a supported compiler.
    Parameters:
    classname - fully qualified classname which implements CompilerAdapter

    setDataset

    public void setDataset(String dataset)
    Sets the dataset for OS/390 builds.
    Parameters:
    dataset - The dataset to set

    setDebug

    public void setDebug(boolean debug)
    Enables or disables generation of debug info.

    setDependencyDepth

    public void setDependencyDepth(int depth)
    Deprecated. Controls the depth of the dependency evaluation. Used to do a quick check of changes before a full build. Any negative value which will perform full dependency checking. Positive values will truncate dependency checking. A value of 0 will cause only those files that changed to be recompiled, a value of 1 which cause files that changed or that explicitly include a file that changed to be recompiled. Any non-negative value will cause a BuildException to be thrown before attempting a link or completing the task.

    setExceptions

    public void setExceptions(boolean exceptions)
    Enables generation of exception handling code

    setFailonerror

    public void setFailonerror(boolean fail)
    Indicates whether the build will continue even if there are compilation errors; defaults to true.
    Parameters:
    fail - if true halt the build on failure

    setIncremental

    public void setIncremental(boolean incremental)
    Enables or disables incremental linking.
    Parameters:
    incremental - new state

    setLibtool

    public void setLibtool(boolean libtool)
    Set use of libtool. If set to true, the "libtool " will be prepended to the command line for compatible processors
    Parameters:
    libtool - If true, use libtool.

    setLink

    public void setLink(OutputTypeEnum outputType)

    Deprecated.

    Sets the output file type. Supported values "executable", "shared", and "static". Deprecated, specify outtype instead.

    setMultithreaded

    public void setMultithreaded(boolean multi)
    Enables or disables generation of multithreaded code
    Parameters:
    multi - If true, generated code may be multithreaded.

    setName

    public void setName(CompilerEnum name)
    Sets type of the default compiler and linker.
    gcc (default)GCC C++ compiler
    g++GCC C++ compiler
    c++GCC C++ compiler
    g77GNU FORTRAN compiler
    msvcMicrosoft Visual C++
    bccBorland C++ Compiler
    msrcMicrosoft Resource Compiler
    brcBorland Resource Compiler
    dfCompaq Visual Fortran Compiler
    midlMicrosoft MIDL Compiler
    iclIntel C++ compiler for Windows (IA-32)
    eclIntel C++ compiler for Windows (IA-64)
    iccIntel C++ compiler for Linux (IA-32)
    eccIntel C++ compiler for Linux (IA-64)
    CCSun ONE C++ compiler
    aCCHP aC++ C++ Compiler
    os390OS390 C Compiler
    os400Icc Compiler
    sunc89Sun C89 C Compiler
    xlCVisualAge C Compiler
    uicQt user interface compiler (creates .h, .cpp and moc_*.cpp files).
    mocQt meta-object compiler
    xpidlMozilla xpidl compiler (creates .h and .xpt files).
    wclOpenWatcom C/C++ compiler
    wflOpenWatcom FORTRAN compiler

    setNewenvironment

    public void setNewenvironment(boolean newenv)
    Do not propagate old environment when new environment variables are specified.

    setObjdir

    public void setObjdir(File dir)
    Sets the destination directory for object files. Generally this should be a property expression that evaluates to distinct debug and release object file directories.
    Parameters:
    dir - object directory

    setOptimize

    public void setOptimize(OptimizationEnum optimization)
    Sets optimization.
    Parameters:
    optimization -

    setOutfile

    public void setOutfile(File outfile)
    Sets the output file name. If not specified, the task will only compile files and not attempt to link. If an extension is not specified, the task may use a system appropriate extension and prefix, for example, outfile="example" may result in "libexample.so" being created.
    Parameters:
    outfile - output file name

    setOutputFileProperty

    public void setOutputFileProperty(String outputFileProperty)
    Specifies the name of a property to set with the physical filename that is produced by the linker

    setOuttype

    public void setOuttype(OutputTypeEnum outputType)
    Sets the output file type. Supported values "executable", "shared", and "static".

    setProject

    public void setProject(Project project)
    Sets the project.

    setProjectsOnly

    public void setProjectsOnly(boolean value)

    setRebuild

    public void setRebuild(boolean rebuildAll)
    If set to true, all files will be rebuilt.

    setRelentless

    public void setRelentless(boolean relentless)
    If set to true, compilation errors will not stop the task until all files have been attempted.
    Parameters:
    relentless - If true, don't stop on the first compilation error

    setRtti

    public void setRtti(boolean rtti)
    Enables run-time type information.

    setRuntime

    public void setRuntime(RuntimeType rtlType)
    Sets the type of runtime library, possible values "dynamic", "static".

    setSubsystem

    public void setSubsystem(SubsystemEnum subsystem)
    Sets the nature of the subsystem under which that the program will execute.
    guiGraphical User Interface
    consoleCommand Line Console
    otherOther
    Parameters:
    subsystem - subsystem

    setWarnings

    public void setWarnings(WarningLevelEnum level)
    Enumerated attribute with the values "none", "severe", "default", "production", "diagnostic", and "failtask".

    Copyright B) 2001-2006 Ant-Contrib project. All Rights Reserved.