<project
    name="cc_project_build"
    default="Build"
    basedir=".">
    <!--
        Standard properties pattern. Note: to be cross-platform,
        "environment variables" are only appropriate for some variables,
        e.g. ones we set, since properties are case sensitive, even if
        the environment variables on your operating system are not, e.g.
        it will be ${env.Path} not ${env.PATH} on Windows
    -->
    <property
        environment="env"/>
    <!--
        Let users override standard properties, if desired. If
        directory, file, or some properties do not exist, then standard
        properties will be used.
    -->
    <property
        file="${env.LOCAL_BUILD_PROPERTIES_DIR}/${ant.project.name}.properties"/>

    <!-- = = = end standard properties pattern = = = -->

    <!-- if not otherwise set, build clean -->
    <property
        name="build.clean"
        value="true"/>
    <!--
        set main builder file name, based on distribution, buildBranch
        and build type
    -->
    <property
        name="builder"
        value="${env.PROJECT_BUILDERS}/${projectname}/${env.RELENG_BUILDER}/build.xml"/>
    <!--
        If not set yet, by "caller", then fail fast. Normally this is
        literally the project name from CruiseControl, but if running
        "standalone", it would have to be set to something similar to
        one of the cc_config project name, such as wtp-R3.0-I.
    -->
    <fail
        unless="projectname"
        message="projectname must be set by caller"/>

    <!-- if not otherwise set, the following are good default values -->
    <property
        name="mapVersionTag"
        value="HEAD"/>

    <!-- main -->
    <target
        name="Build">
        <antcall
            target="doBuildPhase"/>
        <antcall
            target="doTestPhase"/>
        <antcall
            target="checkIfFailedTests"/>
    </target>
    <target
        name="checkIfFailedTests"
        depends="checkFailedFile"
        if="failedMessage">
        <fail
            message="Build failed due to failing JUnits in the following test plugin(s):${line.separator}${failedMessage}"/>
    </target>
    <target
        name="checkFailedFile"
        unless="passBuildEvenIfFailedTests">
        <loadresource
            property="failedMessage"
            quiet="true"
            failonerror="false">
            <file
                file="${env.PROJECT_PROJECTS}/${projectname}/workdir/junitFailureList.log"/>
        </loadresource>
    </target>
    <!--
        1) clean build if build.clean s set to true 2) retreive fresh
        files from CVS 3) build and upload results
    -->
    <target
        name="doBuildPhase">
        <antcall
            target="doCleanBuild"/>

        <!-- Create preliminary download site files -->
        <ant
            antfile="${builder}"
            target="site"/>
        <!--
            copy what we have so far <ant
            antfile="cc_copyArtifacts.xml"/>
        -->
    </target>
    <target
        name="doCleanBuild"
        unless="skipCleanBuild">
        <!-- clean previous build -->
        <antcall
            target="clean"/>
        <!-- check out fresh set of appropriate files for the builder -->
        <ant
            antfile="checkout.xml"/>
        <!-- build and create preliminary download site files -->
        <ant
            antfile="${builder}"
            target="build"/>
    </target>
    <!--
        test phase runs tests, creates test summary files, and uploads
        results
    -->
    <target
        name="doTestPhase"
        unless="skipUnitTests">
        <delete
            dir="${env.PROJECT_TESTS}/${projectname}"
            failonerror="false"/>
        <ant
            antfile="${builder}"
            target="test"/>
        <ant
            antfile="${builder}"
            target="site"/>
        <!-- <ant
            antfile="cc_copyArtifacts.xml"/> -->
    </target>

    <!-- clean task -->
    <target
        name="clean"
        depends="check.clean"
        if="doClean">
        <delete
            dir="${env.PROJECT_PROJECTS}/${projectname}"
            failonerror="false"/>
        <delete
            dir="${env.PROJECT_TESTS}/${projectname}"
            failonerror="false"/>

    </target>

    <!-- if build.clean is true, or does not exist, set doClean to true -->
    <target
        name="check.clean">
        <condition
            property="doClean">
            <or>
                <not>
                    <isset
                        property="build.clean"/>
                </not>
                <equals
                    arg1="${build.clean}"
                    arg2="true"/>
            </or>
        </condition>
    </target>
</project>