Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/jigo.git
<?xml version="1.0" encoding="iso-8859-1"?>
<project name="JiGo" default="help" basedir=".">
  <description>
  Compiles the JiGo suite.
  </description>

  <target name="help">
    <echo>all       - Build all JiGo programs</echo>
    <!-- echo>designer  - Build JiGo Designer</echo -->
    <echo>guesser   - Build JiGo Guesser</echo>
    <echo>presenter - Build JiGo Presenter</echo>
    <echo>replayer  - Build JiGo Replayer</echo>
    <echo>highlight - Build Demo: Higlighted Goban</echo>
    <echo>random    - Build Demo: Random Player</echo>
    <echo>simple    - Build Demo: Simple Goban</echo>
    <!-- echo>tsumego   - Build JiGo Tsume-Go</echo -->
    <echo>doc       - Build JiGo API Documentation</echo>
  </target>

  <property name="build.compiler" value="javac1.3" />
  <property name="build.sysclasspath" value="ignore"/>

  <!--
   | Define source, build, libraries, documentation, and obfuscation paths.
   +-->
  <property name="src"   location="source"/>
  <property name="lib"   location="lib"/>
  <property name="build" location="build"/>
  <property name="conf"  location="conf"/>
  <property name="api"   location="javadoc"/>
  <property name="dist"  location="dist"/>

  <!-- APPLICATION BUILD PROPERTIES -->
  <property name="app.vendor"   value="White Magic Software, Ltd."/>
  <property name="app.archive"  value="jigo"/>
  <property name="app.common"   value="com.joot.jigo"/>
  <property name="app.version"  value="build.properties"/>

  <!-- BUILD PROPERTIES FILE -->
  <property file="${app.version}"/>

  <defaultexcludes add="**/.git/**"/>
  <defaultexcludes add="**/.gitignore"/>
  <defaultexcludes add="**/.data"/>
  <defaultexcludes add="**/*.odt"/>
  <defaultexcludes add="**/dist/**"/>

  <property name="compile.debug" value="false"/>

  <available classname="proguard.ProGuard" property="proguard.present" />

  <target name="init">
    <mkdir dir="${build}" />
    <mkdir dir="${lib}" />
  </target>

  <target name="all" depends="clean,init">
    <antcall target="replayer" />
    <antcall target="presenter" />
    <antcall target="guesser" />
    <antcall target="designer" />
    <antcall target="highlight" />
    <antcall target="random" />
    <antcall target="simple" />
  </target>

  <macrodef name="build">
    <attribute name="target" default="replayer" />
    <attribute name="path" default="com/joot/jigo/replayer/Replayer.java" />
    <attribute name="main" default="com.joot.jigo.replayer.Replayer" />

    <sequential>
      <javac srcdir="${src}" destdir="${build}" nowarn="true">
        <compilerarg value="-Xlint" />
        <include name="@{path}" />
      </javac>

      <property name="build-name" value="@{target}" />
      <jar jarfile="${lib}/${build-name}.jar" basedir="${build}">
        <manifest>
          <attribute name="Main-Class" value="@{main}" />
        </manifest>
      </jar>
      <antcall target="obfuscate" />
    </sequential>
  </macrodef>

  <target name="replayer" depends="clean,init" description="JiGo Replayer">
    <build target="replayer"
           path="com/joot/jigo/replayer/Replayer.java"
           main="com.joot.jigo.replayer.Replayer" />
  </target>

  <target name="guesser" depends="clean,init" description="JiGo Guesser">
    <build target="guesser"
           path="com/joot/jigo/guesser/Guesser.java"
           main="com.joot.jigo.guesser.Guesser" />
  </target>

  <target name="presenter" depends="clean,init" description="JiGo Presenter">
    <build target="presenter"
           path="com/joot/jigo/presenter/Presenter.java"
           main="com.joot.jigo.presenter.Presenter" />
  </target>

  <target name="designer" depends="clean,init" description="JiGo Designer">
    <build target="designer"
           path="com/joot/jigo/designer/Designer.java"
           main="com.joot.jigo.designer.Designer" />
  </target>

  <target name="simple" depends="clean,init" description="Demo: Simple Goban">
    <build target="simple"
           path="com/joot/jigo/examples/Simple.java"
           main="com.joot.jigo.examples.Simple" />
  </target>

  <target name="highlight" depends="clean,init" description="Demo: Highlighted Goban">
    <build target="highlight"
           path="com/joot/jigo/examples/HighlightGoban.java"
           main="com.joot.jigo.examples.HighlightGoban" />
  </target>

  <target name="random" depends="clean,init" description="Demo: Random Player">
    <build target="random"
           path="com/joot/jigo/examples/RandomPlayer.java"
           main="com.joot.jigo.examples.RandomPlayer" />
  </target>

  <!-- Does not exist.
  <target name="tsumego" depends="clean,init" description="JiGo Tsume-Go.">
    <build target="designer"
           path="com/joot/jigo/tsumego/TsumeGo.java"
           main="com.joot.jigo.tsumego.TsumeGo" />
  </target>
  -->

  <!-- Obfuscates the software if Proguard has been installed. -->
  <target name="obfuscate" if="proguard.present">
    <java classname="proguard.ProGuard">
      <arg value="@${conf}/jigo.pro" />
      <arg value="-injars ${lib}/${build-name}.jar" />
      <arg value="-outjar ${lib}/obfuscated-${build-name}.jar" />
    </java>
  </target>

  <target name="api" depends="javadoc"/>
  <target name="doc" depends="javadoc"/>

  <target name="javadoc">
    <delete dir="${api}" />
    <mkdir dir="${api}" />
    <javadoc
      sourcepath="${src}" destdir="${api}" packageList="${conf}/packages.txt"
      Windowtitle="JiGo API Documentation" Author="true" nohelp="true">

      <link href="http://java.sun.com/j2se/1.5.0/docs/api/"/>
    </javadoc>
  </target>

  <target name="clean" description="Remove classes and API documentation.">
    <delete dir="${build}" />
    <delete dir="${api}" />
  </target>

  <target name="dist" depends="all">
    <!-- Recreate the distribution directory -->
    <delete dir="${dist}" />
    <mkdir dir="${dist}"/>

    <!-- Create archive of entire application. -->
    <zip destfile="${dist}/${app.archive}-${v.major}.${v.minor}.${v.build}.zip">
      <zipfileset
        dir="."
        prefix="${app.archive}-${v.major}.${v.minor}.${v.build}"/>
    </zip>

    <antcall target="version.build"/>
  </target>

  <target name="version.build">
    <propertyfile file="${app.version}">
      <entry key="v.build" type="int" operation="+" value="1" pattern="00"/>
    </propertyfile>
  </target>

  <target name="version.minor">
    <propertyfile file="${app.version}">
      <entry key="v.minor" type="int" operation="+" value="1" pattern="00"/>
      <entry key="v.build" type="int" value="0" pattern="00"/>
    </propertyfile>
  </target>

  <target name="version.major">
    <propertyfile file="${app.version}">
      <entry key="v.major" type="int" operation="+" value="1" pattern="00"/>
      <entry key="v.minor" type="int" value="0" pattern="00"/>
      <entry key="v.build" type="int" value="0" pattern="00"/>
    </propertyfile>
  </target>
</project>