<!--
*******************************************************************************
* Copyright (C) 2009, International Business Machines Corporation and         *
* others. All Rights Reserved.                                                *
*******************************************************************************
-->
<project name="common-targets" basedir=".">
    <dirname property="common-targets.dir" file="${ant.file.common-targets}"/>
    <property file="${common-targets.dir}/locations.properties"/>
    <property file="${common-targets.dir}/common.properties"/>

    <!-- common targets -->

    <target name="@clean">
        <delete dir="${out.dir}"/>
    </target>

    <target name="@compile">
        <echo message="--- java compiler arguments ------------------------"/>
        <echo message="source dir:     ${basedir}/${src.dir}"/>
        <echo message="output dir:     ${basedir}/${bin.dir}"/>
        <echo message="classpath:      ${toString:javac.classpathref}"/>
        <echo message="source:         ${javac.source}"/>
        <echo message="target:         ${javac.target}"/>
        <echo message="debug:          ${javac.debug}"/>
        <echo message="encoding:       ${javac.encoding}"/>
        <echo message="compiler arg:   ${javac.compilerarg}"/>
        <echo message="----------------------------------------------------"/>

        <mkdir dir="${bin.dir}"/>
        <javac
            srcdir="${src.dir}"
            destdir="${bin.dir}"
            classpathref="javac.classpathref"
            source="${javac.source}"
            target="${javac.target}"
            debug="${javac.debug}">
            <compilerarg value="${javac.compilerarg}"/>
        </javac>
    </target>

    <target name="@copy">
        <mkdir dir="${bin.dir}"/>
        <copy todir="${bin.dir}">
            <fileset dir="${src.dir}" defaultexcludes="yes">
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
    </target>

    <target name="@jar">
        <mkdir dir="${jar.dir}"/>

        <copy file="manifest.stub" todir="${out.dir}">
            <filterset>
                <filter token="SPECVERSION" value="${jar.spec.version}"/>
                <filter token="IMPLVERSION" value="${jar.impl.version}"/>
                <filter token="COPYRIGHT" value="${jar.copyright.info}"/>
            </filterset>
        </copy>

        <jar jarfile="${jar.file}" manifest="${out.dir}/manifest.stub" compress="true">
            <fileset dir="${bin.dir}" includes="**/*"/>
            <fileset dir="${shared.dir}/licenses">
                <include name="license.html"/>
                <include name="unicode-license.txt"/>
            </fileset>
        </jar>
    </target>

    <target name="@build-all">
        <antcall target="_all.${ant.project.name}"/>
    </target>

    <!-- Dependencies -->

    <!-- collate -->
    <path id="javac.classpathref.collate">
        <pathelement location="${icu4j.core.jar}"/>
    </path>

    <target name="_all.collate" depends="_all.core">
        <ant dir="${icu4j.collate.dir}" inheritAll="false"/>
    </target>

    <!-- core -->
    <path id="javac.classpathref.core"/>

    <target name="_all.core">
        <ant dir="${icu4j.core.dir}" inheritAll="false"/>
    </target>

    <!-- charset -->
    <path id="javac.classpathref.charset">
        <pathelement location="${icu4j.core.jar}"/>
    </path>

    <target name="_all.charset" depends="_all.core">
        <ant dir="${icu4j.charset.dir}" inheritAll="false"/>
    </target>

    <!-- localespi -->
    <path id="javac.classpathref.localespi">
        <pathelement location="${icu4j.core.jar}"/>
        <pathelement location="${icu4j.collate.jar}"/>
    </path>

    <target name="_all.localespi" depends="_all.core, _all.collate">
        <ant dir="${icu4j.localespi.dir}" inheritAll="false"/>
    </target>

    <!-- translit -->
    <path id="javac.classpathref.translit">
        <pathelement location="${icu4j.core.jar}"/>
        <pathelement location="${icu4j.translit.jar}"/>
    </path>

    <target name="_all.translit" depends="_all.core">
        <ant dir="${icu4j.translit.dir}" inheritAll="false"/>
    </target>

    <!-- test-framework -->
    <path id="javac.classpathref.test-framework">
        <pathelement location="${icu4j.core.jar}"/>
    </path>

    <target name="_all.test-framework" depends="_all.core">
        <ant dir="${icu4j.test-framework.dir}" inheritAll = "false"/>
    </target>

    <!-- core-tests -->
    <path id="javac.classpathref.core-tests">
        <pathelement location="${icu4j.core.jar}"/>
        <pathelement location="${icu4j.test-framework.jar}"/>
    </path>

    <target name="_all.core-tests" depends="_all.core, _all.test-framework">
        <ant dir="${icu4j.core-tests.dir}" inheritAll="false"/>
    </target>

    <!-- collate-tests -->
    <path id="javac.classpathref.collate-tests">
        <pathelement location="${icu4j.core.jar}"/>
        <pathelement location="${icu4j.collate.jar}"/>
        <pathelement location="${icu4j.test-framework.jar}"/>
    </path>

    <target name="_all.collate-tests" depends="_all.core, _all.collate, _all.test-framework">
        <ant dir="${icu4j.collate-tests.dir}" inheritAll="false"/>
    </target>

    <!-- charset-tests -->
    <path id="javac.classpathref.charset-tests">
        <pathelement location="${icu4j.core.jar}"/>
        <pathelement location="${icu4j.charset.jar}"/>
        <pathelement location="${icu4j.test-framework.jar}"/>
    </path>

    <target name="_all.charset-tests" depends="_all.core, _all.charset, _all.test-framework">
        <ant dir="${icu4j.charset-tests.dir}" inheritAll="false"/>
    </target>

    <!-- localespi-tests -->
    <path id="javac.classpathref.localespi-tests">
        <pathelement location="${icu4j.core.jar}"/>
	<pathelement location="${icu4j.collate.jar}"/>
        <pathelement location="${icu4j.localespi.jar}"/>
        <pathelement location="${icu4j.test-framework.jar}"/>
    </path>

    <target name="_all.localespi-tests" depends="_all.core, _all.collate, _all.localespi, _all.test-framework">
        <ant dir="${icu4j.localespi-tests.dir}" inheritAll="false"/>
    </target>

    <!-- translit-tests -->
    <path id="javac.classpathref.translit-tests">
        <pathelement location="${icu4j.core.jar}"/>
        <pathelement location="${icu4j.translit.jar}"/>
        <pathelement location="${icu4j.test-framework.jar}"/>
    </path>

    <target name="_all.translit-tests" depends="_all.core, _all.translit, _all.test-framework">
        <ant dir="${icu4j.translit-tests.dir}" inheritAll="false"/>
    </target>

    <!-- build-tools -->
    <path id="javac.classpathref.build-tools"/>

    <target name="_all.build-tools">
        <ant dir="${icu4j.build-tools.dir}" inheritAll="false"/>
    </target>

    <!-- tools -->
    <path id="javac.classpathref.tools">
        <pathelement location="${icu4j.core.jar}"/>
        <pathelement location="${icu4j.collate.jar}"/>
        <pathelement location="${icu4j.translit.jar}"/>
        <pathelement location="${icu4j.test-framework.jar}"/>
        <pathelement location="${icu4j.core-tests.jar}"/>
        <pathelement location="${icu4j.translit-tests.jar}"/>
    </path>

    <target name="_all.tools" depends="_all.core, _all.collate, _all.translit, _all.test-framework, _all.core-tests, _all.translit-tests">
        <ant dir="${icu4j.tools.dir}" inheritAll="false"/>
    </target>

    <!-- demos -->
    <path id="javac.classpathref.demos">
        <pathelement location="${icu4j.core.jar}"/>
        <pathelement location="${icu4j.translit.jar}"/>
        <pathelement location="${icu4j.charset.jar}"/>
    </path>

    <target name="_all.demos" depends="_all.core, _all.translit, _all.charset">
        <ant dir="${icu4j.demos.dir}" inheritAll="false"/>
    </target>

</project>
