<!--
 ! ASM: a very small and fast Java bytecode manipulation framework
 ! Copyright (c) 2000-2011 INRIA, France Telecom
 ! All rights reserved.
 !
 ! Redistribution and use in source and binary forms, with or without
 ! modification, are permitted provided that the following conditions
 ! are met:
 ! 1. Redistributions of source code must retain the above copyright
 !    notice, this list of conditions and the following disclaimer.
 ! 2. Redistributions in binary form must reproduce the above copyright
 !    notice, this list of conditions and the following disclaimer in the
 !    documentation and/or other materials provided with the distribution.
 ! 3. Neither the name of the copyright holders nor the names of its
 !    contributors may be used to endorse or promote products derived from
 !    this software without specific prior written permission.
 !
 ! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 ! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 ! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 ! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 ! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 ! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 ! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 ! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 ! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 ! THE POSSIBILITY OF SUCH DAMAGE.
-->

<project name="asm" default="dist.jdoc">

  <property name="jdoc.name" value="user"/>
  <property name="jdoc.dir" value="${out.dist.jdoc}/${jdoc.name}"/>

  <target name="dist.jdoc">
    <uptodate property="jdoc.required" targetfile="${jdoc.dir}/index.html">
      <srcfiles dir="${src}" includes="**/*.java,**/*.html"/>
    </uptodate>
    <antcall target="dist.jdoc.${jdoc.name}"/>
  </target>

  <target name="dist.jdoc.user" unless="jdoc.required">
    <mkdir dir="${jdoc.dir}"/>
    <javadoc destdir="${jdoc.dir}"
             windowtitle="ASM ${product.version} Documentation"
             doctitle="ASM ${product.version} Documentation"
             use="true">

      <sourcepath path="${src}"/>
      <package name="org.objectweb.asm"/>
      <package name="org.objectweb.asm.commons"/>
      <package name="org.objectweb.asm.signature"/>
      <package name="org.objectweb.asm.tree"/>
      <package name="org.objectweb.asm.tree.analysis"/>
      <package name="org.objectweb.asm.util"/>
      <package name="org.objectweb.asm.xml"/>

      <link href="${jdk.url}" offline="true" packagelistLoc="${jdoc}"/>

    </javadoc>

    <copy todir="${jdoc.dir}">
      <fileset dir="${src}" includes="**/*.dtd"/>
    </copy>
  </target>

</project>
