<?xml version="1.0"?>

<!-- 
============================================================
          test0 grammar + example build file
============================================================
-->

<project name="test0" default="jar"  basedir=".">

  <property name="name" value="test0"/>

  <property name="src.dir" value="src"/>
  <property name="classes.dir" value="classes"/>
  <property name="javadoc.dir" value="docs"/>
  <property name="jar.name" value="${name}.jar"/>
  <property name="manifest" value="etc/manifest"/>

  <property name="sablecc" location="/usr/local/sablecc/bin/sablecc"/>
  <property name="grammar" value="${name}.grammar"/>

<!-- 
======================================
      Prepares the src directory
====================================== -->

  <target name="prepare" >
    <mkdir dir="${src.dir}"/>
  </target>

<!-- 
=========================================================== 
   parsers - generates parsers only
   compile - compiles classes only 
=========================================================== -->

 <target name="all" depends="parsers,jar" description="same as parsers+jar" />  

 <target name="parsers" depends="prepare" description="generates parsers from the grammar file" >

    <exec executable="${sablecc}" spawn="false">
      <arg value="-d ${src.dir} ${grammar}"/>
    </exec>
 </target>

<!-- 
=================================================
           Creates the jar archive
================================================= -->

  <target name="jar" depends="compile">
    <jar jarfile="${jar.name}"
         basedir="${classes.dir}"
         manifest="${manifest}"/>
  </target>


<!--
=================================================
            Compiles the source code                  
================================================= -->

  <target name="compile">
    <mkdir dir="${classes.dir}" />

    <javac srcdir="${src.dir}" 
	   destdir="${classes.dir}"/>

    <copy todir="${classes.dir}">
      <fileset dir="${src.dir}">
         <include name="**/*.dat" />
         <include name="**/*.properties" />
     </fileset>
    </copy>
  </target>

<!--
=================================================
        Creates the API documentation         
================================================= -->

  <target name="javadoc">
    <mkdir dir="${javadoc.dir}" />

    <javadoc destdir="${javadoc.dir}">
      <fileset dir="${src.dir}"/>
    </javadoc>
  </target>
 
<!-- 
=================================================================== 
   Cleans up generated stuff 
=================================================================== -->

  <target name="clean">
    <delete dir="${classes.dir}" />
    <delete dir="${javadoc.dir}" />
    <delete file="${jar.name}" />
  </target>

</project>
