<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<project name="Coyote" default="compile" basedir=".">


<!--
        "Coyote" connector framework for Jakarta Tomcat
        $Id$
-->


<!-- ========== Initialize Properties ===================================== -->


  <property file="${user.home}/build.properties"/>   <!-- User local        -->
  <property file="build.properties"/>                <!-- Component local   -->
  <property file="../build.properties"/>             <!-- Commons local     -->
  <property file="../build.properties.default"/>             <!-- Commons local     -->


<!-- ========== External Dependencies ===================================== -->


  <!-- The directories corresponding to your necessary dependencies -->
  <property name="junit.home"              value="/usr/local/junit3.5"/>

  <!-- Dependencies within jakarta-tomcat-connectors -->
  <property name="util.home"               value="../util"/>


<!-- ========== Derived Values ============================================ -->


  <!-- The locations of necessary jar files -->
  <property name="tomcat-util.jar"  value="../util/build/lib/tomcat-util.jar"/>
  <property name="junit.jar"        value="${junit.home}/junit.jar"/>

  <property name="commons-modeler.jar" location="../../jakarta-commons/modeler/dist/commons-modeler.jar" />

  <property name="jmx.jar" location="../lib/mx4j.jar" />


<!-- ========== Component Declarations ==================================== -->


  <!-- The name of this component -->
  <property name="component.name"          value="coyote"/>
  <!-- The title of this component -->
  <property name="component.title"         value="Coyote"/>

  <!-- The current version number of this component -->
  <property name="component.version"       value="1.0-dev"/>

  <!-- The base directory for compilation targets -->
  <property name="build.home"              value="build"/>

  <!-- The base directory for component configuration files -->
  <property name="conf.home"               value="src/conf"/>

  <!-- The base directory for component sources -->
  <property name="source.home"             value="src/java"/>

  <!-- The base directory for unit test sources -->
  <property name="test.home"               value="src/test"/>

<!-- ========== Compiler Defaults ========================================= -->


  <!-- Should Java compilations set the 'debug' compiler option? -->
  <property name="compile.debug"           value="true"/>

  <!-- Should Java compilations set the 'deprecation' compiler option? -->
  <property name="compile.deprecation"     value="false"/>

  <!-- Should Java compilations set the 'optimize' compiler option? -->
  <property name="compile.optimize"        value="true"/>

    <!-- default locations -->
    <property name="tomcat33.home" 
	      location="${base.path}/jakarta-tomcat-3.3" />
    <property name="catalina.home" 
	      location="${base.path}/jakarta-tomcat-4.1.24" />

    <property name="servlet.jar"
              value="${catalina.home}/common/lib/servlet.jar" />

  <!-- Construct compile classpath -->
  <path id="compile.classpath">
    <pathelement location="${build.home}/classes"/>
    <pathelement location="${util.home}/build/classes"/>
    <pathelement location="${commons-logging.jar}"/>
    <pathelement location="${commons-modeler.jar}"/>
    <pathelement location="${jmx.jar}"/>
    <pathelement location="${tomcat-util.jar}"/>
    <pathelement location="${catalina.home}/server/lib/catalina.jar"/>
    <pathelement location="${servlet.jar}"/>
  </path>
  <path id="compile.classpath.tomcat33">
    <pathelement location="${build.home}/classes"/>
    <pathelement location="${util.home}/build/classes"/>
    <pathelement location="${commons-logging.jar}"/>
    <pathelement location="${commons-modeler.jar}"/>
    <pathelement location="${jmx.jar}"/>
    <pathelement location="${tomcat33.home}/lib/container/container_util.jar"/>
    <pathelement location="${tomcat33.home}/lib/container/tomcat_modules.jar"/>
    <pathelement location="${tomcat33.home}/lib/common/tomcat_core.jar"/>
    <pathelement location="${tomcat33.home}/lib/common/core_util.jar"/>
  </path>


<!-- ========== Test Execution Defaults =================================== -->


  <!-- Construct unit test classpath -->
  <path id="test.classpath">
    <pathelement location="${build.home}/classes"/>
    <pathelement location="${build.home}/tests"/>
    <pathelement location="${tomcat-util.jar}"/>
    <pathelement location="${junit.jar}"/>
  </path>

  <!-- Should all tests fail if one does? -->
  <property name="test.failonerror"        value="true"/>

  <!-- The test runner to execute -->
  <property name="test.runner"             value="junit.textui.TestRunner"/>
  <property name="test.entry" value="org.apache.coyote.TestAll"/>


<!-- ========== Detection and Reports ===================================== -->


    <target name="report-tc5" if="tomcat5.detect" >
	<echo message="Tomcat5 detected "  />
    </target>
    <target name="report-tc4" if="tomcat4.detect" >
	<echo message="Tomcat4 detected "  />
    </target>
    <target name="report-tc33" if="tomcat33.detect" >
	<echo message="Tomcat3.3 detected "  />
    </target>

    <target name="report" depends="report-tc5, report-tc4, report-tc33" />


<!-- ========== Executable Targets ======================================== -->


  <target name="init"
   description="Initialize and evaluate conditionals">
    <echo message="-------- ${component.title} ${component.version} --------"/>
    <filter  token="name"                  value="${component.name}"/>
    <filter  token="version"               value="${component.version}"/>
  </target>


  <target name="prepare" depends="init"
   description="Prepare build directory">
    <mkdir dir="${build.home}"/>
    <mkdir dir="${build.home}/classes"/>
    <mkdir dir="${build.home}/conf"/>
    <mkdir dir="${build.home}/docs"/>
    <mkdir dir="${build.home}/docs/api"/>
    <mkdir dir="${build.home}/lib"/>
    <mkdir dir="${build.home}/tests"/>
    <condition property="tomcat5.detect">
      <and>
        <available file="${catalina.home}/server/lib/catalina.jar" />
        <available
          classname="javax.servlet.ServletRequestEvent"
          classpath="${servlet.jar}"
        />
      </and>
    </condition>
    <condition property="tomcat4.detect">
      <and>
        <available file="${catalina.home}/server/lib/catalina.jar" />
        <not>
          <available
            classname="javax.servlet.ServletRequestEvent"
            classpath="${servlet.jar}"
          />
        </not>
      </and>
    </condition>
    <available property="tomcat33.detect" file="${tomcat33.home}/lib/common/tomcat_core.jar" />
  </target>


  <target name="static" depends="prepare"
   description="Copy static files to build directory">
    <tstamp/>
    <copy  todir="${build.home}/conf" filtering="on" encoding="ISO-8859-1">
      <fileset dir="${conf.home}" includes="*.MF"/>
    </copy>
  </target>


  <target name="compile.shared"
   description="Compile shareable components">
    <mkdir dir="${build.home}/classes"/>
    <javac  srcdir="${source.home}"
           destdir="${build.home}/classes"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}"
          encoding="ISO-8859-1">
      <classpath refid="compile.classpath"/>
      <exclude name="org/apache/coyote/tomcat5/**" />
      <exclude name="org/apache/coyote/tomcat4/**" />
      <exclude name="org/apache/coyote/tomcat3/**" />
    </javac>
    <copy    todir="${build.home}/classes" filtering="on" encoding="ISO-8859-1">
      <fileset dir="${source.home}" excludes="**/*.java"/>
    </copy>
  </target>


  <target name="compile.tomcat5" if="tomcat5.detect"
   depends="static,compile.shared"
   description="Compile Tomcat 5.x Adapter">
    <javac  srcdir="${source.home}"
           destdir="${build.home}/classes"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}"
          encoding="ISO-8859-1">
      <classpath refid="compile.classpath"/>
      <include name="org/apache/coyote/tomcat5/**" />
    </javac>
  </target>

  <target name="jar.tomcat5" depends="compile.tomcat5" >
    <jar  jarfile="${tomcat-coyote.jar}"
         basedir="${build.home}/classes"
         manifest="${build.home}/conf/MANIFEST.MF"
         excludes="**/tomcat3/*" >
      <include name="org/apache/coyote/*.class" />
      <include name="org/apache/coyote/memory/*.class" />
      <!-- included with catalina.jar -->
      <exclude name="org/apache/coyote/tomcat5/**" />
    </jar>
  </target>

  <target name="compile.tomcat4" if="tomcat4.detect"
   description="Compile Tomcat 4.x Adapter">
    <javac  srcdir="${source.home}"
           destdir="${build.home}/classes"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}"
          encoding="ISO-8859-1">
      <classpath refid="compile.classpath"/>
      <include name="org/apache/coyote/tomcat4/**" />
    </javac>
    <copy    todir="${build.home}/classes" filtering="on" encoding="ISO-8859-1">
      <fileset dir="${source.home}" excludes="**/*.java"/>
    </copy>
  </target>

  <target name="compile.tomcat33" if="tomcat33.detect"
   description="Compile Tomcat 3.3.x Adapter">
    <javac  srcdir="${source.home}"
           destdir="${build.home}/classes"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}"
          encoding="ISO-8859-1">
      <classpath refid="compile.classpath.tomcat33"/>
      <include name="org/apache/coyote/tomcat3/**" />
    </javac>
    <copy    todir="${build.home}/classes" filtering="on" encoding="ISO-8859-1">
      <fileset dir="${source.home}" excludes="**/*.java"/>
    </copy>
  </target>

  <target name="shared.jar" depends="static,compile.shared"
       description="Build shared Coyote jar"> 
    <property name="tomcat-coyote.jar" value="${build.home}/lib/tomcat-${component.name}.jar" />
    <jar    jarfile="${tomcat-coyote.jar}"
            manifest="${build.home}/conf/MANIFEST.MF">
      <fileset dir="${build.home}/classes" >
        <exclude name="**/tomcat3/*"/>
        <exclude name="**/tomcat4/*"/>
        <exclude name="**/tomcat5/*"/>
        <include name="org/apache/coyote/**"/>
      </fileset>
    </jar>
  </target>
 
  <target name="tomcat4.jar" depends="static,compile.shared,compile.tomcat4"
       description="Build Tomcat 4 Adapter jar" if="tomcat4.detect">
    <property name="tomcat4-coyote.jar" value="${build.home}/lib/tomcat4-${component.name}.jar" />
    <jar jarfile="${tomcat4-coyote.jar}"
         basedir="${build.home}/classes"
         manifest="${build.home}/conf/MANIFEST.MF"
         includes="org/apache/coyote/tomcat4/**" />
  </target>

  <target name="tomcat33.jar" depends="static,compile.shared,compile.tomcat33"
       description="Build Tomcat 3.3 Adapter jar" if="tomcat33.detect">
    <property name="tomcat33-coyote.jar" value="${build.home}/lib/tomcat33-${component.name}.jar" />
    <jar jarfile="${tomcat33-coyote.jar}"
         basedir="${build.home}/classes"
         manifest="${build.home}/conf/MANIFEST.MF"
         includes="org/apache/coyote/tomcat3/**" /> 
  </target>

  <target name="compile" 
   depends="static,report,shared.jar,tomcat4.jar,tomcat33.jar"
   description="Compile Coyote and its Adapters">
  </target>

  <target name="compile.tests" depends="compile"
   description="Compile unit test cases">
    <javac  srcdir="${test.home}"
           destdir="${build.home}/tests"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}"
          encoding="ISO-8859-1">
      <classpath refid="test.classpath"/>
    </javac>
    <copy    todir="${build.home}/tests" filtering="on" encoding="ISO-8859-1">
      <fileset dir="${test.home}" excludes="**/*.java"/>
    </copy>
  </target>


  <target name="clean"
   description="Clean build and distribution directories">
    <delete    dir="${build.home}"/>
  </target>


  <target name="all" depends="clean,compile"
   description="Clean and compile all components"/>


  <target name="javadoc" unless="docs-uptodate"
   description="Create component Javadoc documentation">
    <mkdir dir="${build.home}/docs/api"/>
    <javadoc sourcepath="${source.home}"
                destdir="${build.home}/docs/api"
           packagenames="org.apache.coyote"
                 author="true"
                private="true"
                version="true"
               doctitle="&lt;h1&gt;${component.title}&lt;/h1&gt;"
            windowtitle="${component.title} (Version ${component.version})"
                 bottom="Copyright (c) 2001-2012 - Apache Software Foundation">
      <classpath refid="compile.classpath"/>
    </javadoc>
  </target>


<!-- ========== Unit Test Targets ========================================= -->


  <target name="test"  depends="compile.tests" if="test.entry"
   description="Run all unit test cases">
      <!--
      <junit printsummary="yes" fork="on" haltonfailure="yes">
      	<formatter type="plain" usefile="false"/>
      	<test name="${test.entry}"/>
        <classpath refid="test.classpath"/>
      </junit>
      -->

      <java classname="${test.runner}" fork="yes"
       failonerror="${test.failonerror}">
        <jvmarg value="${java.protocol.handler.pkgs}"/>
        <arg value="${test.entry}"/>
        <classpath refid="test.classpath"/>
      </java>
  </target>


</project>
