<!--
/*
*******************************************************************************
* Copyright (C) 1997-2001, International Business Machines Corporation and    *
* others. All Rights Reserved.                                                *
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/build.xml,v $
* $Date: 2002/12/13 00:19:40 $
* $Revision: 1.62 $
*
*******************************************************************************
* This is the ant build file for ICU4J.  See readme.html for more information.
*/
-->

<project name="ICU4J" default="core" basedir=".">

    <!-- ### begin clover setup ### -->
    <property name="icu4j.tempdir" value="tmp"/>
    <property name="clover.initstring" value="${icu4j.tempdir}/icu4j.db"/>
    <path id="clover.classpath">
	<!-- ***** you will need to change the paths below to point
	           to clover.jar and velocity.jar on your filesystem ***** -->
    <pathelement path="${java.class.path}/"/>
	<pathelement location="clover.jar"/>
	<pathelement location="velocity.jar"/>
    </path>

    <!-- target to switch Clover on -->
    <target name="with.clover">
		<property name="build.compiler" value="org.apache.tools.ant.taskdefs.CloverCompilerAdapter"/>

		<!-- instruct clover to use a class-based instrumentation strategy when instrumenting SimpleTimeZone.java -->
		<property name="clover.useclass.includes" value="**/SimpleTimeZone.java"/>
    </target>

    <!-- target to generate a Clover html report -->
    <target name="clover.report">
	<java classname="com.cortexeb.tools.clover.reporters.html.HtmlReporter" fork="yes">
	    <arg line="--outputdir ${icu4j.tempdir}/icu4j_html --showSrc --initstring ${clover.initstring} --title 'icu4j core'"/>
	    <classpath refid="clover.classpath"/>
	</java>
    </target>
    <!-- ### end clover setup ### -->

    <target name="anthack1">
        <!-- It's a real pain to set properties conditionally.
          Ant 1.5 isn't really any better than 1.4, in fact 1.5 enforces that
          properties are write-once so you can't even set a default and then
          override it, which we used to do for Ant 1.4. -->
        <condition property="version.1.4">
        <or>
	    <equals arg1="${ant.java.version}" arg2="1.4"/>
        </or>
        </condition>

	<condition property="doc.params"
	    value="-breakiterator -use -tagletpath ./classes -taglet com.ibm.icu.dev.tool.docs.ICUTaglet -group 'ICU Core' 'com.ibm.icu.lang*:com.ibm.icu.math*:com.ibm.icu.text*:com.ibm.icu.util*' -group 'ICU Tools' 'com.ibm.icu.dev*' -group 'Rich Text Editing' 'com.ibm.richtext*'">
            <equals arg1="${version.1.4}" arg2="true"/>
	</condition>
    </target>

    <target name="anthack2" unless="doc.params">
        <property name="doc.params" value=""/>
    </target>

    <target name="init">
        <tstamp/>
        <property name="src.dir" value="src"/>
        <property name="build.dir" value="classes"/>
        <property name="doc.dir" value="doc"/>
        <property name="jar.file" value="icu4j.jar"/>
        <property name="icu4j.manifest" value="${src.dir}/com/ibm/icu/manifest.stub"/>
        <property name="zip.file" value="../icu4j${DSTAMP}.zip"/>
        <property name="zipSrc.file" value="../icu4jSrc${DSTAMP}.zip"/>

	<path id="build.classpath">
	    <pathelement path="${build.dir}"/>
	    <path refid="clover.classpath"/>
	</path>

        <property name="richedit.dir" value="richedit"/>
        <property name="richedit.doc.dir" value="${richedit.dir}/doc"/>
        <property name="richedit.jar.file" value="${richedit.dir}/richedit.jar"/>
        <property name="richedit.zip.file" value="${richedit.dir}/richedit.zip"/>
        <property name="richedit.manifest" value="${src.dir}/com/ibm/richtext/manifest.stub"/>

        <mkdir dir="${build.dir}"/>
	<uptodate property="icu4j.resources" targetfile="${src.dir}/com/ibm/icu/impl/data/ICULocaleData.jar">
	    <!-- note must not have '/' before 'com' in srcfiles includes arg! -->
	    <srcfiles dir="${build.dir}" includes="com/ibm/icu/impl/data/LocaleElements_index.class"/>
	</uptodate>
        <echo message="java home: ${java.home}"/>
        <echo message="java version: ${java.version}"/>
        <echo message="ant java version: ${ant.java.version}"/>
        <echo message="${ant.version}"/>
    </target>

    <!-- build everything but dist-related stuff -->
    <target name="all" depends="core,tests,tools,richedit,demos,jar,docs"/>

	<target name="resources" depends="init">
    	<!-- use this target to force resources to be rebuilt -->
		<unjar src="${src.dir}/com/ibm/icu/impl/data/ICULocaleData.jar" dest="${build.dir}"/>
 		<touch file="${build.dir}/com/ibm/icu/impl/data/LocaleElements_index.class"/>
	</target>

	<target name="_resources" depends="init" if="icu4j.resources">
    	<!-- use this target to conditionally build resources only if icu4j.resources is set -->
		<unjar src="${src.dir}/com/ibm/icu/impl/data/ICULocaleData.jar" dest="${build.dir}"/>
 		<touch file="${build.dir}/com/ibm/icu/impl/data/LocaleElements_index.class"/>
	</target>

	<!-- core does not build richedit or tests -->
    <target name="core" depends="init,coreData,_resources">
        <copy file="${src.dir}/com/ibm/icu/impl/data/thai_dict"
            todir="${build.dir}/com/ibm/icu/impl/data/"/><!-- only needed if you are using html reporter -->
        <javac includes="com/ibm/icu/util/**/*.java,com/ibm/icu/text/**/*.java,com/ibm/icu/math/**/*.java,com/ibm/icu/impl/**/*.java,com/ibm/icu/lang/*.java"
            excludes="**/CVS/**/*"
            srcdir="${src.dir}"
    	    destdir="${build.dir}"
    	    classpathref="build.classpath"
            debug="on" deprecation="off"/>
    </target>

    <target name="tests" depends="core,testData">
        <javac includes="com/ibm/icu/dev/test/**/*.java"
            excludes="**/CVS/**/*"
    	    srcdir="${src.dir}"
    	    destdir="${build.dir}"
    	    classpathref="build.classpath"
            debug="on" deprecation="off"/>
    </target>

    <target name="demos" depends="core,testData">
        <javac includes="com/ibm/icu/dev/demo/**/*.java"
            excludes="**/CVS/**/*"
    	    srcdir="${src.dir}"
    	    destdir="${build.dir}"
    	    classpathref="build.classpath"
            debug="on" deprecation="off"/>
    </target>

    <target name="one4tools" depends="anthack1,anthack2" if="version.1.4">
        <javac includes="com/ibm/icu/dev/tool/docs/*.java"
            excludes="**/CVS/**/*"
    	    srcdir="${src.dir}"
    	    destdir="${build.dir}"
    	    classpathref="build.classpath"
            debug="on" deprecation="off"/>
    </target>

    <target name="tools" depends="core,one4tools">
        <javac includes="com/ibm/icu/dev/tool/**/*.java"
            excludes="com/ibm/icu/dev/tool/docs/*,**/CVS/**/*"
    	    srcdir="${src.dir}"
    	    destdir="${build.dir}"
    	    classpathref="build.classpath"
            debug="on" deprecation="off"/>
    </target>

<!-- use excludefiles below when we move to ant 1.5 -->

    <target name="docs" depends="anthack1,anthack2,tools">
        <echo message="doc params: ${doc.params}"/>
        <mkdir dir="${doc.dir}"/>
        <javadoc
            packagenames="com.ibm.icu.lang,com.ibm.icu.text,com.ibm.icu.util,com.ibm.icu.math,com.ibm.richtext.demo,com.ibm.richtext.textlayout.attributes,com.ibm.richtext.awtui,com.ibm.richtext.print,com.ibm.richtext.styledtext,com.ibm.richtext.swingui,com.ibm.richtext.textformat,com.ibm.richtext.textpanel"
            sourcepath="${src.dir}"
            destdir="${doc.dir}"
            nodeprecatedlist="true"
	    windowtitle="icu4j"
	    doctitle="icu4j"
	    encoding="iso-8859-1"
	    docencoding="iso-8859-1"
	    bottom="&lt;font size=-1>Copyright (c) 2002 IBM Corporation and others.&lt;/font>"
	    additionalparam="${doc.params}"
        />
    </target>

    <target name ="coreData" depends="init">
        <copy todir="${build.dir}/com/ibm/icu/impl/data">
        <fileset dir="${src.dir}/com/ibm/icu/impl/data"
                 includes="Transliterator_*.txt,*.icu"/>
        </copy>
    </target>

    <target name ="testData" depends="init">
        <copy file="${src.dir}/com/ibm/icu/dev/data/rbbi/english.dict"
    	      todir="${build.dir}/com/ibm/icu/dev/data/rbbi"/>
    	<javac includes="com/ibm/icu/dev/data/*.java"
		            excludes="**/CVS/**/*"
		    	    srcdir="${src.dir}"
		    	    destdir="${build.dir}"
		    	    classpathref="build.classpath"
            debug="on" deprecation="off"/>
    </target>

    <!-- builds richedit and richedit tests -->
    <target name="richedit" depends="init">
        <javac includes="com/ibm/richtext/**/*.java"
            excludes="**/CVS/**/*"
    	    srcdir="${src.dir}"
    	    destdir="${build.dir}"
    	    classpathref="build.classpath"
            debug="on" deprecation="off"/>
        <copy todir="${build.dir}/com/ibm/richtext/textapps/resources" overwrite="yes" includeEmptyDirs="no">
            <fileset dir="${src.dir}/com/ibm/richtext/textapps/resources" includes="*.red"/>
        </copy>
    </target>

    <target name="jar" depends="core">
        <jar jarfile="${jar.file}"
            compress="false"
            includes="com/ibm/icu/util/**/*,com/ibm/icu/text/**/*,com/ibm/icu/math/**/*,com/ibm/icu/impl/**/*,com/ibm/icu/lang/**/*"
            basedir="${build.dir}"
            manifest="${icu4j.manifest}"/>
    </target>

    <!-- jars up richedit but without tests -->
    <target name="richeditJar" depends="richedit">
        <mkdir dir="${richedit.dir}"/>
        <jar jarfile="${richedit.jar.file}"
            compress="false"
            includes="com/ibm/richtext/**/*"
	    excludes="com/ibm/richtext/test/**/*"
            basedir="${build.dir}"
            manifest="${richedit.manifest}"/>
    </target>

    <!--
        Note:  I used to use -linkoffline http://java.sun.com/products/jdk/1.2/docs/api/ C:\jdk1.2.2\docs\api
        This links to core docs on Sun's site - a very nice feature.  But it requires the 1.2 docs to be
        on the build machine at a known location.
    -->

    <!-- the 'public' docs for richedit -->
    <target name="richeditDocs" depends="init">
        <mkdir dir="${richedit.doc.dir}"/>
        <javadoc  packagenames="com.ibm.richtext.demo,com.ibm.richtext.awtui,com.ibm.richtext.swingui,com.ibm.richtext.textpanel,com.ibm.richtext.styledtext,com.ibm.richtext.textlayout.attributes,com.ibm.richtext.print"
            sourcepath="${src.dir}"
            destdir="${richedit.doc.dir}"
            nodeprecatedlist="true"
	        windowtitle="RichEdit Control"
	        doctitle="RichEdit Control"
	        encoding="iso-8859-1"
	        docencoding="iso-8859-1"
	        bottom="&lt;font size=-1>Copyright (c) 1998-2002 IBM Corporation and others.&lt;/font>"
    		    />
    </target>

    <!-- richedit alphaworks distribution - jar and docs, but no source -->
    <target name="richeditZip" depends="richeditJar,richeditDocs">
        <!--Create a zip archive of the richedit jar and readme -->
	<copy file="license.html" todir="${richedit.dir}"/>
        <zip zipfile="${richedit.zip.file}"
            basedir="${richedit.dir}"
            includes="doc/**/*,richedit.jar,license.html"/>
    </target>

    <target name="zip" depends="docs,jar">
        <!--Create a zip archive of the source, docs, and jar file for
        distribution.  The zip file will be created in the directory above
        the root ICU4J directory. The exclude pattern ${src.dir}/com/ibm/icu/dev/data/unicode/UnicodeData-*.txt
        and ${src.dir}/data/unicode/SpecialCasing-*.txt
        eliminates old archive copies like SpecialCasing-2.txt and
        UnicodeData-2.1.8.txt etc -->
        <zip zipfile="${zip.file}"
            basedir="."
            excludes="${richedit.dir}/**/*,test_*,${src.dir}/com/ibm/icu/dev/data/unicode/UnicodeData-*.txt,${src.dir}/com/ibm/icu/dev/data/unicode/SpecialCasing-*.txt,${src.dir}/com/ibm/icu/dev/data/unicode/CompositionExclusions-*.txt,${obsolete.dir}/**,**/*~,${src.dir}/**/*.class,${build.dir}/**,**/CVS/**/*"/>
    </target>

    <target name="zipSrc" depends="init">
        <!--Create a zip archive of just the source for distribution.  The
        zip file will be created in the directory above the root ICU4J
        directory. The exclude pattern ${src.dir}/com/ibm/icu/dev/data/unicode/UnicodeData-*.txt
        and ${src.dir}/com/ibm/icu/dev/data/unicode/SpecialCasing-*.txt
        eliminates old archive copies like SpecialCasing-2.txt and
        UnicodeData-2.1.8.txt -->
        <zip zipfile="${zipSrc.file}"
            basedir="."
            excludes="${richedit.dir}/**/*,test_*,${src.dir}/com/ibm/icu/dev/data/unicode//UnicodeData-*.txt,${src.dir}/com/ibm/icu/dev/data/unicode/SpecialCasing-*.txt,${src.dir}/com/ibm/icu/dev/data/unicode/CompositionExclusions-*.txt,${obsolete.dir}/**,**/*~,${src.dir}/**/*.class,${build.dir}/**,**/CVS/**/*,${doc.dir}/**,${jar.file}"/>
    </target>

    <target name="check" depends="tests">
	<java classname="com.ibm.icu.dev.test.TestAll">
	    <classpath>
                <pathelement path="${java.class.path}/"/>
                <pathelement path="${build.dir}"/>
            </classpath>
	</java>
    </target>

    <target name="_requires14" unless="version.1.4">
        <echo message="One of your targets requires JAVA_HOME to be set to JDK version 1.4"/>
    </target>

    <target name="_checktags" depends="anthack1,anthack2,tools" if="version.1.4">
        <echo message="doc params: ${doc.params}"/>
        <javadoc sourcepath="${src.dir}" 
                 packagenames="com.ibm.icu.*"
                 excludepackagenames="com.ibm.icu.dev.*,com.ibm.icu.impl.*"
                 classpath="${build.dir}">
            <doclet name="com.ibm.icu.dev.tool.docs.CheckTags"
                    path="${build.dir}">
                <param name="-brief"/>
            </doclet>       
        </javadoc>
    </target>

    <target name="checktags" depends="anthack1,anthack2,_requires14,_checktags"/>

    <target name="clean" depends="init">
        <delete dir="${build.dir}"/>
        <delete dir="${doc.dir}"/>
        <delete file="${jar.file}"/>
	<delete dir="${richedit.dir}"/>
    </target>

</project>
