<?xml version="1.0"?>
<!DOCTYPE project [
<!--

    Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<!ENTITY setup-props SYSTEM "build.properties">
]>

<project name="reporter" basedir="." default="all">
&setup-props;

  <target name="all" depends="clean,init,jar"/>

  <target name="init">
    <tstamp/>
     <mkdir dir="${build.dest}"/>

  </target>


  <target name="build" depends="init">
  <javac
        destdir="${build.dest}"
        classpath="${classpath}"
                srcdir="${basedir}"
                debug="on"
    />

  </target>


  <target name="jar" depends="build">
  <jar destfile="${reporter.jar}">
    <fileset dir="${build.dest}"/>
  </jar>
  </target>

<!--
  <exec executable="jar">
   <arg line="cvf ${reporter.jar} -C ${build.dest} ." />
   </exec>
-->

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


  <target name="usage">
  <echo message="ant build    will compile"/>
  <echo message="ant jar      will compile and put reporter.jar at $APS_HOME/lib"/>
  </target>


</project>

