<?xml version="1.0" encoding="UTF-8"?>

<!--
    build.xml

    Author: Lasse Collin <lasse.collin@tukaani.org>

    This file has been put into the public domain.
    You can do whatever you want with this file.
-->

<project name="XZ" default="jar">

    <property file="build.properties"/>

    <target name="clean"
            description="Deletes generated files except 'extdoc/package-list'">
        <delete dir="${build_dir}"/>
    </target>

    <target name="distclean" depends="clean"
            description="Deletes all generated files">
        <delete dir="extdoc"/>
    </target>

    <target name="dist" description="Creates a source package (.zip)">
        <mkdir dir="${dist_dir}"/>
        <zip destfile="${dist_file}">
            <fileset dir="." includesfile="fileset-misc.txt"/>
            <fileset dir="." includesfile="fileset-src.txt"/>
        </zip>
    </target>

    <target name="doc"
            description="Generates HTML documentation with javadoc">
        <mkdir dir="${doc_dir}"/>
        <mkdir dir="${extdoc_dir}"/>
        <get src="${extdoc_url}/package-list"
             dest="${extdoc_dir}/package-list" skipexisting="true"/>
        <javadoc sourcepath="${src_dir}" destdir="${doc_dir}"
                 source="${sourcever}" packagenames="org.tukaani.xz"
                 windowtitle="XZ data compression"
                 linkoffline="${extdoc_url} ${extdoc_dir}"/>
    </target>

    <target name="compile" description="Compiles the classes">
        <mkdir dir="${classes_dir}"/>
        <javac srcdir="." sourcepath="${src_dir}" destdir="${classes_dir}"
               includeAntRuntime="false" debug="${debug}"
               source="${sourcever}" target="${sourcever}"
               includesfile="fileset-src.txt"
               excludes="**/package-info.java">
            <compilerarg compiler="modern" value="-Xlint"/>
        </javac>
    </target>

    <target name="jar" depends="compile"
            description="Creates JAR packages">
        <mkdir dir="${jar_dir}"/>

        <jar destfile="${jar_dir}/xz.jar" basedir="${classes_dir}"
             includes="org/tukaani/xz/**">
            <manifest>
                <attribute name="Implementation-Title" value="${title}"/>
                <attribute name="Implementation-Version" value="${version}"/>
                <attribute name="Implementation-URL" value="${homepage}"/>
                <attribute name="Sealed" value="true"/>
                <attribute name="Automatic-Module-Name"
                           value="org.tukaani.xz"/>
                <!-- Attributes required for OSGi bundles. -->
                <attribute name="Bundle-ManifestVersion" value="2"/>
                <attribute name="Bundle-SymbolicName" value="org.tukaani.xz"/>
                <attribute name="Bundle-Version" value="${version}"/>
                <attribute name="Export-Package" value="org.tukaani.xz"/>
                <attribute name="Bundle-Name" value="${title}"/>
                <attribute name="Bundle-DocURL" value="${homepage}"/>
            </manifest>
        </jar>

        <jar destfile="${jar_dir}/TestAllocSpeed.jar" basedir="${classes_dir}"
             includes="TestAllocSpeed.class">
            <manifest>
                <attribute name="Main-Class" value="TestAllocSpeed"/>
                <attribute name="Class-Path" value="xz.jar"/>
            </manifest>
        </jar>

        <jar destfile="${jar_dir}/XZEncDemo.jar" basedir="${classes_dir}"
             includes="XZEncDemo.class">
            <manifest>
                <attribute name="Main-Class" value="XZEncDemo"/>
                <attribute name="Class-Path" value="xz.jar"/>
            </manifest>
        </jar>

        <jar destfile="${jar_dir}/XZDecDemo.jar" basedir="${classes_dir}"
             includes="XZDecDemo.class">
            <manifest>
                <attribute name="Main-Class" value="XZDecDemo"/>
                <attribute name="Class-Path" value="xz.jar"/>
            </manifest>
        </jar>

        <jar destfile="${jar_dir}/XZSeekEncDemo.jar" basedir="${classes_dir}"
             includes="XZSeekEncDemo.class">
            <manifest>
                <attribute name="Main-Class" value="XZSeekEncDemo"/>
                <attribute name="Class-Path" value="xz.jar"/>
            </manifest>
        </jar>

        <jar destfile="${jar_dir}/XZSeekDecDemo.jar" basedir="${classes_dir}"
             includes="XZSeekDecDemo.class">
            <manifest>
                <attribute name="Main-Class" value="XZSeekDecDemo"/>
                <attribute name="Class-Path" value="xz.jar"/>
            </manifest>
        </jar>

        <jar destfile="${jar_dir}/LZMAEncDemo.jar" basedir="${classes_dir}"
             includes="LZMAEncDemo.class">
            <manifest>
                <attribute name="Main-Class" value="LZMAEncDemo"/>
                <attribute name="Class-Path" value="xz.jar"/>
            </manifest>
        </jar>

        <jar destfile="${jar_dir}/LZMADecDemo.jar" basedir="${classes_dir}"
             includes="LZMADecDemo.class">
            <manifest>
                <attribute name="Main-Class" value="LZMADecDemo"/>
                <attribute name="Class-Path" value="xz.jar"/>
            </manifest>
        </jar>
    </target>

    <!-- It's an ugly quick hack. Maybe some day there will be a cleaner
         version (e.g. by using Maven). -->
    <target name="maven" depends="dist, doc, jar"
            description="Creates the files for a Maven repository">
        <mkdir dir="${maven_dir}"/>

        <copy file="${pom_template}" tofile="${maven_dir}/xz-${version}.pom"
              overwrite="true">
            <filterset>
                <filter token="VERSION" value="${version}"/>
                <filter token="TITLE" value="${title}"/>
                <filter token="HOMEPAGE" value="${homepage}"/>
            </filterset>
        </copy>

        <copy file="${jar_dir}/xz.jar" tofile="${maven_dir}/xz-${version}.jar"
              preservelastmodified="true" overwrite="true"/>

        <jar destfile="${maven_dir}/xz-${version}-javadoc.jar"
             basedir="${doc_dir}"/>

        <jar destfile="${maven_dir}/xz-${version}-sources.jar"
             basedir="${src_dir}" includes="org/tukaani/xz/**"/>
    </target>

</project>
