<?xml version="1.0"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->
<!-- ANT Build Script for the "bsf" Custom Tag Library -->
<project name="bsf" default="main" basedir=".">

    <!-- ******************** Adjustable Properties *********************** -->

    <!--

        The following property values should be examined and customized
        for each custom tag library subproject.

        ant.home                    Home directory for the ANT build tool
                                    This is normally defaulted from the
                                    ANT_HOME environment variable in the
                                    build script.

        servlet.jar                 Pathname of the servlet API classes
                                    you are using to compile, such as the
                                    one that comes with Tomcat.  This is
                                    normally defaulted from the SERVLET_JAR
                                    environment variable in the build script.

        taglib.name                 Base name of this tag library subproject.

    -->

    <property name="taglib.name"    value="bsf"/>
    <property name="ant.home"       value="../../jakarta-ant"/>
    <property name="servlet.jar"    value="../../jakarta-servletapi/lib/servlet.jar"/>


    <!-- ****************** Project Standard Properties ******************* -->

    <!--

        The following property values reflect the standard directory
        organization for the jakarta-taglibs project, and should not
        be changed or overridden.

        build.dir                   Base directory for build targets
        dist.dir                    Base directory for distribution targets
        taglibs.xsl                 Taglibs stylesheet

    -->

    <property name="build.dir"      value="../build"/>
    <property name="dist.dir"       value="../dist"/>
    <property name="taglibs.xsl"    value="src/doc/stylesheets/taglibs.xsl"/>

    <!-- *********************** Default Properties ********************** -->

    <!--

        The following property values reflect the recommended directory
        structure for each custom tag library subproject.  You should only
        need to adjust or override them if you use a different organization.

        conf.src                    Library configuration source directory
        doc.src                     Documentation app source directory
        examples.src                Examples app source directory
        library.src                 Library Java source directory

    -->

    <property name="conf.src"       value="conf"/>
    <property name="doc.src"        value="doc"/>
    <property name="examples.src"   value="examples"/>
    <property name="library.src"    value="src"/>
    <property name="lib.src"        value="lib"/>


    <!-- ********************* Derived Properties ************************* -->

    <!--

        These property values are derived from the previously defined values,
        and should not normally be overridden from the command line.

        build.doc                   Target directory for documentation app
        build.examples              Target directory for examples app
        build.library               Target directory for tag library
        dist.doc                    Destination WAR for documentation app
        dist.examples               Destination WAR for examples app
        dist.library                Destination JAR for tag library
        dist.tld                    Destination TLD file for tag library

    -->

    <property name="build.doc"      value="${build.dir}/${taglib.name}-doc"/>
    <property name="build.examples" value="${build.dir}/${taglib.name}-examples"/>
    <property name="build.library"  value="${build.dir}/classes"/>
    <property name="dist.doc"       value="${dist.dir}/${taglib.name}-doc.war"/>
    <property name="dist.examples"  value="${dist.dir}/${taglib.name}-examples.war"/>
    <property name="dist.library"   value="${dist.dir}/${lib.src}/${taglib.name}.jar"/>
    <property name="dist.tld"       value="${dist.dir}/${taglib.name}.tld"/>
    <property name="taglibs.doc"    value="${dist.dir}/${taglib.name}-doc"/>


  <!-- ********************** Destination Preparation ********************* -->

  <target name="prepare">
    <!-- Set up build directories -->
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.doc}"/>
    <mkdir dir="${build.doc}/WEB-INF"/>
    <mkdir dir="${build.doc}/WEB-INF/classes"/>
    <mkdir dir="${build.doc}/WEB-INF/lib"/>
    <mkdir dir="${build.examples}"/>
    <mkdir dir="${build.examples}/WEB-INF"/>
    <mkdir dir="${build.examples}/WEB-INF/classes"/>
    <mkdir dir="${build.examples}/WEB-INF/lib"/>
    <mkdir dir="${build.library}"/>
    <mkdir dir="${build.library}/META-INF"/>
    <!-- Set up distribution directory -->
    <mkdir dir="${dist.dir}"/>
    <mkdir dir="${dist.dir}/${taglib.name}"/>
  </target>


  <!-- **************** Compile Tag Library Components ******************** -->

  <!-- Compile the documentation application -->
  <target name="documentation" depends="prepare">
    <copy todir="${build.doc}/WEB-INF">
      <fileset dir="${doc.src}/conf"/>
    </copy>
    <!-- intro.xml isn't part of the documentation application,
         this is just a handy place to build it for the web site. -->
    <style in="xml/intro.xml"
           destdir="${build.doc}"
           out="${build.doc}/intro.html"
           style="${taglibs.xsl}">
      <param name="prefix" expression="../../"/>
    </style>
    <copy todir="${build.doc}">
      <fileset dir="${doc.src}/web">
        <include name="**/*.html"/>
      </fileset>
    </copy>
  </target>

  <!-- Compile the examples application -->
  <target name="examples" depends="library-dist">
    <copy todir="${build.examples}/WEB-INF">
      <fileset dir="${examples.src}/conf"/>
    </copy>
    <copy todir="${build.examples}">
      <fileset dir="${examples.src}/web"/>
    </copy>
    <copy file="${dist.tld}"
              tofile="${build.examples}/WEB-INF/${taglib.name}.tld"/>
    <copy file="${dist.library}"
              tofile="${build.examples}/WEB-INF/lib/${taglib.name}.jar"/>
  </target>

  <!-- Compile the tag library itself -->
  <target name="compile" depends="prepare">
    <copy file="${conf.src}/taglib.tld"
              tofile="${build.library}/META-INF/taglib.tld"/>
    <javac srcdir="${library.src}" destdir="${build.library}" debug="on">
      <classpath> 
      <pathelement location="${servlet.jar}"/>
      <pathelement location="${taglib.extraclasspath}"/>
      </classpath>
    </javac>
  </target>

  <!-- Compile the library as well as the associated applications -->
  <target name="main" depends="compile,documentation,examples"/>


  <!-- ******************* Create Distribution Files ********************** -->

  <!-- Create the documentation application WAR file -->
  <target name="documentation-dist" depends="documentation">
    <jar jarfile="${dist.doc}" basedir="${build.doc}" excludes="intro.html"/>
    <mkdir dir="${taglibs.doc}"/>
    <copy todir="${taglibs.doc}">
      <fileset dir="${build.doc}">
        <exclude name="WEB-INF"/>     
      </fileset>
    </copy>
  </target>

  <!-- Create the examples application WAR file -->
  <target name="examples-dist" depends="examples">
    <jar jarfile="${dist.examples}" basedir="${build.examples}"/>
  </target>

  <!-- Create the library distribution files -->
  <target name="library-dist" depends="compile">
    <jar jarfile="${dist.library}" basedir="${build.library}"/>
    <copy file="${conf.src}/taglib.tld" tofile="${dist.tld}"/>
  </target>

  <!-- Create the entire set of distribution files -->
  <target name="dist" depends="library-dist,examples-dist,documentation-dist"/>



  <!-- ************************ Utility Commands ************************** -->

  <!-- Delete output directories and files so we can build from scratch -->
  <target name="clean">
    <delete dir="${build.dir}/${taglib.name}"/>
    <delete dir="${dist.dir}/${taglib.name}"/>
  </target>

</project>
