<?xml version="1.0"?>
<!-- Build file for Joshua. -->
<project name="Joshua Machine Translation Toolkit" default="all" basedir="." xmlns:doxygen="antlib:org.doxygen.tools" xmlns:ivy="antlib:org.apache.ivy.ant">

  <!-- ~~~~~ Properties, Paths, etc ~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

  <property environment="env" />

  <property name="JOSHUA" value="${basedir}" />
  <property name="src" value="${JOSHUA}/src" />
  <property name="test" value="${JOSHUA}/test" />
  <property name="build" value="${JOSHUA}/class" />
  <property name="lib" value="${JOSHUA}/lib" />
  <property name="thraxlib" value="${JOSHUA}/thrax/bin" />
  <property name="doc" value="${JOSHUA}/doc" />

  <!-- TODO: should these be made into 'path's instead of 'property's? -->
  <property name="testng" value="${lib}/testng-6.7.jar" />
  <!-- <property name="bdb"    value="${lib}/je-3.2.23.jar"/> -->

  <property name="cli" value="commons-cli-1.2.jar"/>

  <path id="compile.all.classpath">
    <fileset dir="${lib}">
      <include name="${cli}" />
      <!-- Jung uses a BSD-like license, see ./lib/LICENSES/LICENSE-jung.txt -->
      <include name="jung-api-2.0.jar" />
      <include name="jung-graph-impl-2.0.jar" />
      <include name="jung-algorithms-2.0.jar" />
      <include name="jung-visualization-2.0.jar" />
      <include name="collections-generic-4.01.jar" />
      <include name="berkeleylm.jar" />
      <include name="junit-4.10.jar" />
    </fileset>
    <fileset dir="${thraxlib}">
      <include name="thrax.jar" />
    </fileset>
  </path>

  <!-- ~~~~~ Init build task ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

  <!-- Create the build directory for compiled class files -->
  <target name="init" depends="check-joshua-home, resolve, download-thrax, download-hadoop">
  </target>

  <!-- Check for environment variables -->
  <target name="check-joshua-home">
    <echo message="JOSHUA = ${JOSHUA} basedir = ${basedir}" />
    <!-- <if> -->
    <!--   <not> -->
    <!--     <equals arg1="${JOSHUA}" arg2="${basedir}" /> -->
    <!--   </not> -->
    <!--   <then> -->
    <!--     <fail message="WARNING: $JOSHUA environment variable overrident to ${basedir}" /> -->
    <!--   </then> -->
    <!-- </if> -->
  </target>

  <target name="set-joshua-version" unless="env.JOSHUA_VERSION">
    <fail message="Please set the $JOSHUA_VERSION environment variable." />
  </target>

  <target name="set-java-home" unless="env.JAVA_HOME">
    <fail message="Please set the $JAVA_HOME environment variable." />
    <!-- TODO: add suggestion to use /System/Library/Frameworks/JavaVM.framework/Home/ iff on OSX -->
  </target>

  <target name="kenlm" depends="check-joshua-home">
    <exec executable="make">
      <arg value="-j" />
      <arg value="4" />
      <arg value="-C" />
      <arg value="${src}/joshua/decoder/ff/lm/kenlm/" />
    </exec>
  </target>

  <target name="giza" depends="check-joshua-home">
    <exec executable="make">
      <arg value="-j" />
      <arg value="4" />
      <arg value="-C" />
      <arg value="scripts/training/giza-pp/" />
      <arg value="all" />
      <arg value="install" />
    </exec>
    <exec executable="make">
      <arg value="-C" />
      <arg value="scripts/training/symal/" />
      <arg value="all" />
    </exec>
    <!-- 	  <exec executable="./configure" dir="scripts/training/MGIZA" /> -->
    <!-- 	  <exec executable="make"> -->
    <!-- 		<arg value="-C scripts/training/MGIZA/" /> -->
    <!--       </exec> -->
    <!-- 	  <exec executable="cp"> -->
    <!-- 		<arg value="-C scripts/training/MGIZA/" /> -->
    <!--       </exec> -->
  </target>

  <target name="parallelize" depends="check-joshua-home">
    <exec executable="make">
      <arg value="-j" />
      <arg value="4" />
      <arg value="-C" />
      <arg value="scripts/training/parallelize/" />
    </exec>
  </target>

  <target name="download-thrax" depends="check-joshua-home">
    <exec executable="git">
      <arg value="submodule" />
      <arg value="init" />
    </exec>
    <exec executable="git">
      <arg value="submodule" />
      <arg value="update" />
    </exec>
  </target>

  <target name="thrax" depends="check-joshua-home">
    <subant buildpath="thrax">
      <property name="env.HADOOP" value="${lib}" />
      <property name="env.HADOOP_VERSION" value="0.20.203.0" />
      <property name="env.AWS_SDK" value="${JOSHUA}" />
      <property name="env.AWS_VERSION" value="1.1.3" />
    </subant>
  </target>

  <!-- Download the hadoop tool tarball (not jar library), which gets used by
       pipeline.pl and test/hadoop/ -->
  <target name="download-hadoop" depends="check-joshua-home">
    <get
      src="http://archive.apache.org/dist/hadoop/core/hadoop-0.20.2/hadoop-0.20.2.tar.gz"
      dest="${JOSHUA}/lib"
      usetimestamp="true"
      skipexisting="true" />
  </target>

  <!-- ~~~~~ Java build tasks ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

  <target name="all" depends="jar, giza, kenlm, parallelize">
  </target>

  <target name="devel" depends="init, thrax, java, giza, kenlm, parallelize">
  </target>

  <!-- Compile the Java code. -->
  <target name="java" depends="check-joshua-home">
    <mkdir dir="${build}" />
    <javac compiler="javac1.5" srcdir="${src}" destdir="${build}" classpathref="compile.all.classpath" debug="on" encoding="utf8" sourcepath="" includeantruntime="false">
      <!-- We nullify the sourcepath in order to disable Ant's usual resolution mechanism. This makes it an error for our basic code to call into code that has external dependencies, rather than auto-including those files and then having a classpath error. -->
      <include name="**/*.java" />

      <!-- This should be on, so people see it. But it can be quite verbose...
      <compilerarg value="-deprecation"/>
      -->
    </javac>
  </target>

  <!-- Create a JAR file -->
  <target name="jar" depends="java,check-joshua-home">
    <jar destfile="${build}/joshua.jar" index="true">
      <fileset dir="${build}">
        <include name="**/*.class" />
      </fileset>
      <manifest>
        <attribute name="Main-Class" value="joshua.decoder.JoshuaDecoder" />
      </manifest>
    </jar>
  </target>

  <target name="tree_visualizer" depends="java,check-joshua-home">
    <jar destfile="examples/tree_visualizer/tree_visualizer.jar" index="true">
      <zipgroupfileset dir="lib" includes="*.jar" />
      <fileset dir="${build}">
        <include name="**/*.class" />
      </fileset>
      <indexjars>
        <fileset dir="${lib}" />
      </indexjars>
      <manifest>
        <attribute name="Class-Path" value="tree_visualizer.jar" />
        <attribute name="Main-Class" value="joshua.ui.tree_visualizer.browser.Browser" />
      </manifest>
    </jar>
  </target>

  <!-- Create a versioned release -->
  <target name="release" depends="set-joshua-version, devel-clean, init, thrax">
    <exec executable="./scripts/support/make-release.sh">
      <arg value="${env.JOSHUA_VERSION}" />
    </exec>
  </target>

  <!-- Create a JAR file of the source code -->
  <target name="source-jar">
    <jar destfile="${build}/joshua-src.jar">
      <fileset dir="${build}">
        <include name="**/*.java" />
      </fileset>
    </jar>
  </target>

  <!-- ~~~~~ Cleaning tasks ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

  <!-- Delete the compiled files -->
  <target name="clean" depends="clean-thrax,clean-java">
    <exec executable="make">
      <arg value="-C" />
      <arg value="scripts/training/giza-pp" />
      <arg value="clean" />
    </exec>
    <exec executable="/bin/bash" dir="src/joshua/decoder/ff/lm/kenlm">
      <arg value="clean" />
    </exec>
    <delete file="${lib}/libken.so" />
    <delete file="tree_visualizer/tree_visualizer.jar" />
    <delete dir="doc/html" />
    <delete dir="doc/latex" />
  </target>

  <!-- Delete just the java files -->
  <target name="clean-java">
    <delete verbose="true" quiet="true">
      <fileset dir="${build}">
        <include name="**/*.class" />
      </fileset>
    </delete>
  </target>

  <target name="clean-thrax">
      <delete verbose="true" quiet="true">
      <fileset dir="${thraxlib}">
        <include name="**/*.class"/>
      </fileset>
    </delete>
  </target>

  <!-- EXPERIMENTAL: Delete *all* generated files -->
  <target name="distclean" depends="clean">
    <!-- BUG: this doesn't delete empty folders (neither ${build} itself, nor the class dirs (the latter makes sense since we don't traverse them)) -->
    <delete verbose="true" quiet="true" includeEmptyDirs="true">
      <fileset dir="${build}">
        <include name="joshua.jar" />
        <include name="joshua-ui.jar" />
      </fileset>
    </delete>

    <!-- HACK: these two work perfectly, but maybe problematic if people reset ${test} or ${doc} -->
    <delete verbose="true" quiet="true" includeEmptyDirs="true">
      <fileset dir="${test}-output" />
    </delete>

    <delete verbose="true" quiet="true" includeEmptyDirs="true">
      <fileset dir="${doc}" includes="**/*.tmp" />
      <fileset dir="${doc}/html" />
      <fileset dir="${doc}/latex" />
    </delete>

    <delete verbose="true" quiet="true" file="joshua-fb.xml" />

    <delete verbose="true" quiet="true" includeEmptyDirs="true">
      <fileset dir="tree_visualizer">
        <include name="tree_visualizer.jar" />
      </fileset>
    </delete>
  </target>


  <!-- Delete *all* generated files,
       including files and directories not tracked by git -->
  <target name="devel-clean">

    <input
      message="WARNING: all untracked, ignored files will be removed. Continue? (y/n) "
      validargs="y,n"
      addproperty="do.delete"
    />
    <condition property="do.abort">
      <equals arg1="n" arg2="${do.delete}"/>
    </condition>
    <fail if="do.abort">Build aborted by user.</fail>

    <!-- Delete untracked, ignored files and directories. -->
    <exec executable="git">
      <arg value="clean" />
      <arg value="-fdX" />
    </exec>
  </target>

  <!-- ~~~~~ Javadoc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

  <!-- Compile the Javadocs into web pages -->
  <target name="javadoc">
    <mkdir dir="${doc}" />
    <javadoc packagenames="joshua.*" classpath="${cli}" sourcepath="${src}" destdir="${doc}" author="true" version="true" charset="utf-8" overview="src/overview.html">
      <link href="http://java.sun.com/j2se/1.5.0/docs/api" />
      <link href="http://commons.apache.org/cli/api-release" />
    </javadoc>
  </target>

  <!-- ~~~~~ Doxygen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

  <taskdef uri="antlib:org.doxygen.tools" resource="org/doxygen/tools/antlib.xml" classpath="${lib}/ant-doxygen-1.6.1.jar" />

  <!-- Compile the Javadocs and Markdown documentation into web pages -->
  <target name="documentation" depends="check-joshua-home">
    <doxygen:doxygen configFilename="${doc}/Doxyfile" />
  </target>

  <!-- ~~~~~ Tests ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

  <target name="test" depends="all">
    <exec dir="test" executable="/bin/bash" failonerror="false">
      <arg line="run-all-tests.sh" />
    </exec>
  </target>

  <!-- ~~~~~ TestNG ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

  <!-- Define the unit testing task -->
  <taskdef resource="testngtasks" classpath="${testng}" />


  <!-- Compile the unit test code -->
  <!-- FIXME: why is this broken out from the 'test' target? -->
  <target name="compile-tests" depends="java">
    <javac compiler="javac1.5" srcdir="${test}/joshua/ui" destdir="${build}" classpath="${testng}:${build}" debug="on" encoding="utf8" />
  </target>


  <!-- Run the unit tests -->
  <target name="testng" depends="all,compile-tests">
    <testng classpath="${build}" sourcedir="${test}">
      <jvmarg value="-Dfile.encoding=UTF8" />
      <jvmarg value="-Xms256m" />
      <jvmarg value="-Xmx256m" />
      <xmlfileset dir="${test}" includes="testng.xml" />
    </testng>
  </target>

  <property name="ivy.install.version" value="2.2.0" />
  <condition property="ivy.home" value="${env.IVY_HOME}">
    <isset property="env.IVY_HOME" />
  </condition>
  <property name="ivy.home" value="${JOSHUA}" />
  <property name="ivy.jar.dir" value="${ivy.home}/lib" />
  <property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar" />
  <target name="download-ivy" unless="offline">

    <!-- Test for Ant Version.-->
    <fail message="Ivy requires Ant version 1.8.0 or greater. Please upgrade to the latest version.">
      <condition>
        <not>
          <antversion atleast="1.8.0"/>
        </not>
      </condition>
    </fail>

    <property name="ivy.default.ivy.user.dir" value="${JOSHUA}/lib" />
    <mkdir dir="${ivy.jar.dir}" />
    <!-- download Ivy from web site so that it can be used even without any special installation -->
    <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar" dest="${ivy.jar.file}" usetimestamp="true" skipexisting="true" />
  </target>

  <target name="init-ivy" depends="download-ivy">
    <!-- try to load ivy here from ivy home, in case the user has not already dropped
            it into ant's lib dir (note that the latter copy will always take precedence).
            We will not fail as long as local lib dir exists (it may be empty) and
            ivy is in at least one of ant's lib dir or the local lib dir. -->
    <path id="ivy.lib.path">
      <fileset dir="${ivy.jar.dir}" includes="*.jar" />
    </path>
    <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path" />
  </target>

  <!-- ================================= 
          target: resolve              
       ================================= -->
  <target name="resolve" description="--> retrieve dependencies with ivy" depends="init-ivy">
    <property name="ivy.default.ivy.user.dir" value="${JOSHUA}/lib" />
    <ivy:configure file="${JOSHUA}/lib/ivysettings.xml" />
    <ivy:resolve file="${JOSHUA}/lib/ivy.xml" />
    <ivy:retrieve type="jar" />
  </target>

</project>
