<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project name="Codec" default="compile" basedir=".">
    <!--
        "Codec" component of the Apache Commons Subproject
        $Id$
    -->
    <!-- ========== Initialize Properties ===================================== -->
    <property file="${user.home}/${component.name}.build.properties"/>
    <property file="${user.home}/build.properties"/>
    <property file="${basedir}/build.properties"/>
    <property file="${basedir}/default.properties"/>
    <!-- ========== Construct compile classpath =============================== -->
    <path id="compile.classpath">
        <pathelement location="${build.home}/classes"/>
    </path>
    <!-- ========== Construct unit test classpath ============================= -->
    <path id="test.classpath">
        <pathelement location="${build.home}/classes"/>
        <pathelement location="${build.home}/tests"/>
        <pathelement location="${junit.jar}"/>
    </path>
    <!-- ========== Executable Targets ======================================== -->
    <target name="init" description="Initialize and evaluate conditionals">
        <echo message="-------- ${component.name} ${component.version} --------"/>
        <filter token="name" value="${component.name}"/>
        <filter token="package" value="${component.package}"/>
        <filter token="version" value="${component.version}"/>
    </target>
    <target name="prepare" depends="init" description="Prepare build directory">
        <mkdir dir="${build.home}"/>
        <mkdir dir="${build.home}/classes"/>
        <mkdir dir="${build.home}/tests"/>
        <mkdir dir="${build.home}/test-reports"/>
    </target>
    <target name="static" depends="prepare" description="Copy static files to build directory">
        <tstamp/>
    </target>
    <target name="compile" depends="static" description="Compile shareable components">
        <javac srcdir="${source.home}" destdir="${build.home}/classes"
            source="${compile.source}" target="${compile.target}"
            debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}" 
			includeantruntime="${compile.includeantruntime}"
			encoding="${compile.encoding}">
            <classpath refid="compile.classpath"/>
        </javac>
        <copy todir="${build.home}/classes" filtering="on">
            <fileset dir="${source.home}" excludes="**/*.java"/>
        </copy>
    </target>
    <target name="clean" description="Clean build and distribution directories">
        <delete dir="${build.home}"/>
        <delete dir="${dist.home}"/>
        <delete dir="${pub.home}"/>
    </target>
    <target name="all" depends="clean, compile" description="Clean and compile all components"/>
    <target name="javadoc" depends="compile" description="Create component Javadoc documentation">
        <mkdir dir="${dist.home}"/>
        <mkdir dir="${dist.home}/docs"/>
        <mkdir dir="${dist.home}/docs/api"/>
        <mkdir dir="${build.home}/apidocs"/>
        <tstamp>
            <format property="current.year" pattern="yyyy"/>
        </tstamp>
        <javadoc
            sourcepath="${source.home}"
            destdir="${dist.home}/docs/api"
            packagenames="org.apache.commons.*"
            overview="${source.home}/org/apache/commons/codec/overview.html"
            author="true"
            private="true"
            version="true"
            doctitle="&lt;h1&gt;${component.title}&lt;/h1&gt;"
            windowtitle="${component.title} (Version ${component.version})"
            bottom="${component.name} version ${component.version} - Copyright &amp;copy; 2002-${current.year} - Apache Software Foundation"
            use="true"
            link="http://download.oracle.com/javase/1.5.0/docs/api/"
			encoding="${compile.encoding}">
            <classpath refid="compile.classpath"/>
        </javadoc>
    </target>
    <target name="dist" depends="compile, javadoc" description="Create binary distribution">
        <mkdir dir="${dist.home}"/>
        <copy file="${basedir}/LICENSE.txt" todir="${dist.home}"/>
        <copy file="${basedir}/NOTICE.txt" todir="${dist.home}"/>
        <copy file="${basedir}/RELEASE-NOTES.txt" todir="${dist.home}"/>
        <antcall target="jar"/>
    </target>
    <target name="jar" depends="compile" description="Create jar">
        <mkdir dir="${dist.home}"/>
        <mkdir dir="${build.home}/classes/META-INF"/>
        <copy file="${basedir}/LICENSE.txt" tofile="${build.home}/classes/META-INF/LICENSE.txt"/>
        <copy file="${basedir}/LICENSE.txt" tofile="${build.home}/classes/META-INF/NOTICE.txt"/>
        <jar jarfile="${dist.home}/${final.name}.jar" basedir="${build.home}/classes">
            <manifest>
                <attribute name="Specification-Title" value="Commons Codec"/>
                <attribute name="Specification-Version" value="${component.version}"/>
                <attribute name="Specification-Vendor" value="The Apache Software Foundation"/>
                <attribute name="Implementation-Title" value="Commons Codec"/>
                <attribute name="Implementation-Version" value="${component.version}"/>
                <attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
                <attribute name="Implementation-Vendor-Id" value="org.apache"/>
                <attribute name="X-Compile-Source-JDK" value="${compile.source}"/>
                <attribute name="X-Compile-Target-JDK" value="${compile.target}"/>
            </manifest>
        </jar>
    </target>
    <target name="install-jar" depends="jar" description="--> Installs jar file in ${lib.repo}">
        <copy todir="${lib.repo}" filtering="no">
            <fileset dir="${dist.home}">
                <include name="${final.name}.jar"/>
            </fileset>
        </copy>
    </target>
    <target name="pub-bin" depends="dist" description="Create binary distribution (compressed) ready for publication">
        <mkdir dir="${pub.home}"/>
        <!-- Binary properties -->
        <property name="final.path" value="${pub.home}/${final.name}"/>
        <property name="zip.path" value="${final.path}.zip"/>
        <property name="tar.path" value="${final.path}.tar"/>
        <property name="gz.path" value="${tar.path}.gz"/>
        <!-- Zip binary dist -->
        <zip destfile="${zip.path}">
           <zipfileset dir="${dist.home}" prefix="${final.name}/"/>
        </zip>
        <checksum algorithm="md5" file="${zip.path}" fileext=".md5"/>
        <checksum algorithm="sha" file="${zip.path}" fileext=".sha"/>
        <!-- Tar & gzip binary dist -->
        <tar tarfile="${tar.path}" basedir="${dist.home}"/>
        <gzip zipfile="${gz.path}" src="${tar.path}"/>
        <checksum algorithm="md5" file="${gz.path}" fileext=".md5"/>
        <checksum algorithm="sha" file="${gz.path}" fileext=".sha"/>
        <delete file="${tar.path}"/>
        <!-- Delete old signatures -->
        <delete file="${zip.path}.asc"/>
        <delete file="${gz.path}.asc"/>
    </target>
    <target name="pub-src" depends="dist" description="Create source distribution (compressed) ready for publication based on your LOCAL CVS sources">
        <mkdir dir="${pub.home}"/>
        <echo>Warning: The source files used to create this source distribution come from your local copy of the source files.</echo>
        <!-- Source properties -->
        <property name="final-src.path" value="${pub.home}/${final.name}-src"/>
        <property name="zip-src.path" value="${final-src.path}.zip"/>
        <property name="tar-src.path" value="${final-src.path}.tar"/>
        <property name="gz-src.path" value="${tar-src.path}.gz"/>
        <property name="excludes" value="${pub.home}/**, ${dist.home}/**, target/**"/>
        <!-- Zip source dist -->
        <zip destfile="${zip-src.path}">
           <zipfileset dir="src" prefix="${final.name}/src/"/>
           <zipfileset dir="xdocs" prefix="${final.name}/xdocs/"/>
           <zipfileset dir="." includes="build.xml" prefix="${final.name}/"/>
           <zipfileset dir="." includes="checkstyle.xml" prefix="${final.name}/"/>
           <zipfileset dir="." includes="default.properties" prefix="${final.name}/"/>
           <zipfileset dir="." includes="LICENSE*.txt" prefix="${final.name}/"/>
           <zipfileset dir="." includes="NOTICE.txt" prefix="${final.name}/"/>
           <zipfileset dir="." includes="pom.xml" prefix="${final.name}/"/>
           <zipfileset dir="." includes="RELEASE-NOTES*.txt" prefix="${final.name}/"/>
        </zip>
        <checksum algorithm="md5" file="${zip-src.path}" fileext=".md5"/>
        <checksum algorithm="sha" file="${zip-src.path}" fileext=".sha"/>
        <!-- Tar & gzip source dist -->
        <tar tarfile="${tar-src.path}" basedir="." excludes="${excludes}"/>
        <gzip zipfile="${gz-src.path}" src="${tar-src.path}"/>
        <checksum algorithm="md5" file="${gz-src.path}" fileext=".md5"/>
        <checksum algorithm="sha" file="${gz-src.path}" fileext=".sha"/>
        <delete file="${tar-src.path}"/>
        <!-- Delete old signatures -->
        <delete file="${zip-src.path}.asc"/>
        <delete file="${gz-src.path}.asc"/>
    </target>
    <target name="pub" depends="pub-bin, pub-src" description="Create binary and source distribution (compressed) ready for publication">
    </target>
    <!-- ========== Unit Test Targets ========================================= -->
    <target name="compile.tests" depends="compile" description="Compile unit test cases">
        <javac srcdir="${test.home}" destdir="${build.home}/tests"
            source="${compile.source}" target="${compile.target}"
            debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}" 
			includeantruntime="${compile.includeantruntime}"
			encoding="${compile.encoding}">
            <classpath refid="test.classpath"/>
        </javac>
        <copy todir="${build.home}/tests" filtering="on">
            <fileset dir="${test.home}" excludes="**/*.java"/>
        </copy>
    </target>
    <!-- Run all the JUnit Tests -->
    <target name="test" depends="compile.tests" description="Compiles and runs unit test cases">
        <record name="${build.home}/test-output.txt" append="no" action="start"/>
        <junit printsummary="yes" haltonfailure="yes">
            <classpath refid="test.classpath"/>
            <formatter type="plain" usefile="true" />
            <!-- If test.entry is defined, run a single test, otherwise run all valid tests -->
            <test name="${test.entry}" todir="${build.home}/test-reports" if="test.entry"/>
            <batchtest fork="yes" todir="${build.home}/test-reports" unless="test.entry">
                <fileset dir="${test.home}">
                    <include name="**/*Test.java"/>
                    <exclude name="**/*AbstractTest.java"/>
                </fileset>
            </batchtest>
        </junit>
        <record name="${build.home}/test-output.txt" action="stop"/>
    </target>
</project>
