<!-- $Id$ -->
<project name="jakarta-commons-xmlunit" default="test" basedir=".">

   <!-- patternset describing files to be copied from the doc directory -->
   <patternset id="patternset-doc"/>

   <!-- patternset describing test classes -->
   <patternset id="patternset-test-classes">
      <include name="**/Test*.class"/>
   </patternset>

   <!-- patternset describing non test classes -->
   <patternset id="patternset-non-test-classes">
      <include name="**/*.class"/>
      <exclude name="**/Test*.class"/>
   </patternset>

   <!-- patternset describing non test source files (*.java, *html, etc.) -->
   <patternset id="patternset-javadocable-sources">
      <include name="**/*"/>
      <exclude name="**/Test*.java"/>
   </patternset>

   <!-- ######################################################### -->

   <target name="init">
      <tstamp/>

      <!-- read properties from the ${user.home}/propfile, if any -->
      <property name="user-propfile" value="${user.home}/build.properties"/>
      <property file="${user-propfile}"/>
      <property name="user-classpath" value=""/>
      <!-- read properties from the build.properties, if any -->
      <property file="${basedir}/build.properties"/>

      <!-- command line classpath, if any -->
      <property name="cp" value=""/>

      <!-- now combine the classpaths -->
      <property name="classpath" value="${cp}:${user-classpath}:${junit.jar}:${w3cdom.jar}:${xalan.jar}:${jaxp.jar}"/>

      <property name="name" value="commons-xmlunit"/>
      <property name="Name" value="Commons-XMLUnit"/>
      <property name="Name-Long" value="Apache Commons XMLUnit"/>

      <property name="test.entry" value="org.apache.commons.xmlunit.TestAll"/>
      <property name="test.failonerror" value="true" />
      <property name="test.runner" value="junit.textui.TestRunner" />

      <property name="workdir" value="${java.io.tmpdir}/buildtemp_${DSTAMP}${TSTAMP}"/>
      <property name="source" value="${basedir}"/>
      <property name="source.src" value="${basedir}/src"/>
      <property name="source.doc" value="${basedir}/doc"/>
      <property name="dest" value="${basedir}/build"/>
      <property name="dest.classes" value="${dest}/classes"/>
      <property name="dest.doc" value="${dest}/doc"/>
      <property name="dest.doc.api" value="${dest.doc}/api"/>
      <property name="dest.jardir" value="${dest}"/>
      <property name="dest.jardir.jar" value="${dest.jardir}/${name}.jar"/>

      <available property="available-doc" file="${source.doc}"/> <!-- does this module have docs? -->
      <available property="available-src" file="${source.src}"/> <!-- does this module have src? -->

   </target>

   <!-- ######################################################### -->

   <target name="copy-javadoc-source" depends="init" if="available-src">
      <mkdir dir="${javadoc-source-dir}"/>
      <copy todir="${javadoc-source-dir}" filtering="no">
         <fileset dir="${source.src}">
            <patternset refid="patternset-javadocable-sources"/>
         </fileset>
      </copy>
   </target>

   <target name="copy-doc" depends="init" if="available-doc">
      <mkdir dir="${doc-source-dir}/${name}"/>
      <copy todir="${doc-source-dir}/${name}" filtering="no">
         <fileset dir="${source.doc}">
            <patternset refid="patternset-doc"/>
         </fileset>
      </copy>
   </target>

   <!-- ######################################################### -->

   <target name="clean" depends="init,clean-doc,clean-build,clean-dist" description="removes generated files">
      <delete dir="${dest}"/>
   </target>

   <target name="clean-doc" depends="init,clean-javadoc">
      <delete dir="${dest.doc}"/>
   </target>

   <target name="clean-javadoc" depends="init">
      <delete dir="${dest.doc.api}"/>
   </target>

   <target name="clean-build" depends="init">
      <delete dir="${dest.classes}"/>
   </target>

   <target name="clean-dist" depends="init">
      <delete file="${dest.jardir.jar}"/>
   </target>

   <!-- ######################################################### -->

   <target name="doc" depends="init,doc-copy,doc-javadoc" description="generates documentation">
   </target>

   <target name="doc-copy" depends="init" if="available-doc">
      <mkdir dir="${dest.doc}"/>
      <copy todir="${dest.doc}">
      <fileset dir="${source.doc}">
         <patternset refid="patternset-doc"/>
      </fileset>
      </copy>
   </target>

   <target name="doc-javadoc" depends="init" if="available-src">
      <!-- copy all the non-test sources out to the work directory and javadoc that -->
      <mkdir dir="${workdir}"/>
      <copy todir="${workdir}">
        <fileset dir="${source.src}">
          <patternset refid="patternset-javadocable-sources"/>
        </fileset>
      </copy>
      <mkdir dir="${dest.doc.api}"/>
      <javadoc packagenames="org.*"
               sourcepath="${workdir}"
               classpath="${classpath}"
               destdir="${dest.doc.api}"
               windowtitle="${Name-Long}"
               doctitle="${Name-Long}"
               bottom="&lt;small&gt;Copyright &amp;copy; 2001 Apache Software Foundation. Documenation generated ${TODAY}&lt;/small&gt;."
               public="true"
               version="true"
               author="false"
               splitindex="false"
               nodeprecated="true"
               nodeprecatedlist="true"
               notree="true"
               noindex="false"
               nohelp="true"
               nonavbar="false"
               serialwarn="false">
      </javadoc>
      <delete dir="${workdir}"/>
   </target>

   <!-- ######################################################### -->

   <target name="build" depends="init,build-javac" description="compiles source"/>

   <target name="build-javac" depends="init" if="available-src">
      <mkdir dir="${dest.classes}"/>
      <javac destdir="${dest.classes}"
             srcdir="${source.src}"
             classpath="${classpath}"
             debug="false"
             deprecation="true"
             optimize="true"/>
   </target>

   <!-- ######################################################### -->

   <target name="test" depends="build" if="test.entry" description="runs (junit) unit tests">
      <!--
      <junit printsummary="yes" fork="on" haltonfailure="yes">
        <formatter type="plain" usefile="false"/>
        <test name="${test.entry}"/>
        <classpath>
          <pathelement location="${dest.classes}" />
          <pathelement path="${classpath}" />
          <pathelement path="${java.class.path}" />
        </classpath>
      </junit>
      -->

      <java classname="${test.runner}" fork="yes" failonerror="${test.failonerror}">
        <arg value="${test.entry}"/>
        <classpath>
          <pathelement location="${dest.classes}" />
          <pathelement path="${classpath}" />
          <pathelement path="${java.class.path}" />
        </classpath>
      </java>
   </target>

   <!-- ######################################################### -->

   <target name="dist" depends="dist-jar" description="builds production jar"/>

   <target name="dist-jar" depends="build">
      <mkdir dir="${dest.jardir}"/>
      <mkdir dir="${workdir}"/>
      <copy todir="${workdir}">
         <fileset dir="${dest.classes}">
            <patternset refid="patternset-non-test-classes"/>
         </fileset>
      </copy>
      <jar jarfile="${dest.jardir.jar}">
         <fileset dir="${workdir}"/>
      </jar>
      <delete dir="${workdir}"/>
   </target>

   <!-- ######################################################### -->

</project>