<project name="abdera" default="build" basedir="..">
<!--

  abdera Build
    targets:
      * build (compile everything)
      * test  (compile and run test cases)
      * dist  (compile, test and create jars)
      * clean (rather self explanatory)
      * docs  (build the javadocs)
-->
  <property name="version" value="0.1" />
  <property name="work" value="${basedir}/build/work" />
  <property name="dist" value="${basedir}/build/dist" />
  <property name="dist_lib" value="${dist}/lib" />
  <property name="docs" value="${basedir}/build/docs" />
  <property name="javadocs" value="${docs}/api" />
  <property name="core" value="${basedir}/core" />
  <property name="core.src" value="${core}/src" />
  <property name="core.work" value="${work}/core" />
  <property name="core.jar" value="${dist}/${ant.project.name}.core.${version}.jar" />
  <property name="parser" value="${basedir}/parser" />
  <property name="parser.src" value="${parser}/src" />
  <property name="parser.work" value="${work}/parser" />
  <property name="parser.jar" value="${dist}/${ant.project.name}.parser.${version}.jar" />
  <property name="test" value="${basedir}/test" />
  <property name="test.src" value="${test}/src" />
  <property name="test.work" value="${work}/test" />
  <property name="test.jar" value="${dist}/${ant.project.name}.test.${version}.jar" />
  <property name="dependencies" value="${basedir}/dependencies" />
  <property name="examples.package" value="com.ibm.abdera.examples" />
  <property name="main.class" value="${examples.package}.${run.class}" />
	
  <path id="jar.dependencies">
    <fileset dir="${dependencies}" includes="**/*.jar" />
  </path>
	
  <path id="runtime.dependencies">
    <pathelement location="examples/bin"/>
    <pathelement path="${core.work}:${parser.work}:${server.work}" />
  	<path refid="jar.dependencies"/>
  </path>
  
  <target name="dependencies">
    <path id="">
      <fileset dir="dependencies" includes="*.jar" />
    </path>
  </target>
  
  <target name="init">
    <echo>
=====================================================
${ant.project.name}, ${version}
Working directory: ${work}
=====================================================
    </echo>
  </target>
  
  <target name="compile.core" depends="init">
    <mkdir dir="${core.work}" />
    <javac srcdir="${core.src}"
           destdir="${core.work}"
           classpathref="jar.dependencies"/>
  </target>
  
  <target name="compile.parser" depends="init,compile.core">
    <mkdir dir="${parser.work}" />
    <javac srcdir="${parser.src}"
           destdir="${parser.work}"
           classpathref="jar.dependencies" 
           classpath="${core.work}" />
  </target>

  <target name="compile.test" depends="init,compile.core,compile.parser">
    <mkdir dir="${test.work}" />
    <javac srcdir="${test.src}"
           destdir="${test.work}"
           classpathref="jar.dependencies" 
           classpath="${core.work}:${parser.work}:${server.work}" />
    <copydir dest="${test.work}" src="${test}/resources" />
  </target>
  
  <target name="build" depends="init,compile.core,compile.parser,compile.test">
  </target>

  <target name="docs" depends="init">
    <javadoc packagenames="com.ibm.abdera.*"
             excludepackagenames="com.ibm.abdera.util"
             sourcepath="${core.src}" 
             destdir="${javadocs}"
             windowtitle="Abdera"
             classpathref="jar.dependencies"/>
    <copy file="${basedir}/docs/index.html" todir="${docs}" />
  </target>
  
  <target name="test" depends="build">
    <java classpathref="jar.dependencies" 
          classpath="${core.work}:${parser.work}:${server.work}:${test.work}"
          classname="com.ibm.abdera.test.TestSuite" />
  </target>

  <target name="clean">
    <delete dir="${work}" />
    <delete dir="${dist}" />
    <delete dir="${docs}" />
  </target>
  
  <target name="dist" depends="clean,build,test,docs">
    <mkdir dir="${dist}" />
    <mkdir dir="${dist_lib}" />
    <jar destfile="${core.jar}"   basedir="${core.work}" />
    <jar destfile="${parser.jar}" basedir="${parser.work}" />
    <jar destfile="${test.jar}"   basedir="${test.work}" />
    <copy todir="${dist_lib}">
      <fileset dir="${dependencies}" includes="**/*.jar" />
    </copy>
  </target>
  
  <target name="zip" depends="dist"> 
    <zip destfile="${basedir}/${ant.project.name}.${version}.zip">
      <fileset dir="${dist}">
        <include name="**/*.jar" />
      </fileset>
      <fileset dir="${docs}" includes="**/*" />
    </zip>
  </target>

   <!-- ======================================================= -->
   <!-- Target run                                              -->
   <!-- ======================================================= -->
   <target name="run" depends="build">
       <java classname="${main.class}"
             fork="true"
             failonerror="true">
           <classpath refid="runtime.dependencies"/>
       </java>
   </target>
  
</project>