<project name="Jtc" default="dist" basedir=".">

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


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

  <property name="dist.dir" location="dist" />
  <property name="lib.dir" location="${dist.dir}/lib" />
  <property name="build.dir" location="build" />

  <target name="dist" 
          description="Compile jtc distribution" depends="build,javadoc">
    <copy todir="${dist.dir}" >
      <fileset dir="." >
        <include name="LICENSE" />
        <include name="build.xml" />
        <include name="build.properties.default" />
        <include name="README.txt" />
        <include name="RELEASE-NOTES.txt" />
        <include name="doc/**" />
      </fileset>
    </copy>

    <jar file="${dist.dir}/tomcat-connectors-src.jar">
       <fileset dir="." includes="**" >        
          <exclude name="webapp/**"/>
          <exclude name="naming/**"/>
          <exclude name="build/**"/>
          <exclude name="dist/**"/>
          <exclude name="release/**"/>
          <exclude name="scandoc/**"/>
       </fileset>
     </jar>
  </target>


  <target name="build" 
          description="Compile jtc">
    <mkdir dir="${build.dir}/classes" />
    <mkdir dir="${lib.dir}" />
    
    <ant dir="util">
      <property name="puretls.jar" value="${puretls.jar}" />
      <property name="jsse.lib" value="${jsse.lib}" />
      <property name="tomcat-util.build" value="${build.dir}" />
      <property name="tomcat-util.lib" value="${lib.dir}" />
    </ant>

    <ant dir="coyote" target="compile">
      <property name="catalina.home" value="${tomcat41.home}"/>
      <property name="tomcat33.home" value="${tomcat33.home}"/>
      <property name="build.home" value="${build.dir}"/>
      <property name="tomcat5.detect" value="true"/> <!-- This is a hack to disable ajp -->
      <property name="servlet.jar" value="${tomcat41.home}/common/lib/servlet.jar" />

      <property name="tomcat-coyote.jar" value="${lib.dir}/tomcat-coyote.jar" />
      <property name="tomcat33-coyote.jar" value="${lib.dir}/tomcat33-coyote.jar" />
      <property name="tomcat4-coyote.jar" value="${lib.dir}/tomcat4-coyote.jar" />
      <property name="tomcat-util.jar"
                value="${lib.dir}/tomcat-util.jar"/>
      <property name="servlet.jar"   value="${servlet-api.jar}"/>
    </ant>

    <ant dir="http11">
      <property name="build.home" value="${build.dir}"/>
      <property name="tomcat-http11.jar" value="${lib.dir}/tomcat-http11.jar"/>
      <property name="tomcat-coyote.jar" value="${lib.dir}/tomcat-coyote.jar" />
      <property name="commons-logging.jar" value="${commons-logging.jar}"/>
    </ant>

    <ant dir="jk" target="build-jk">
      <property name="commons-logging.jar" value="${commons-logging.jar}"/>
      <property name="jmx.jar" value="${jmx.jar}"/>
      <property name="jmx.detect" value="true"/>
      <property name="tomcat-coyote.jar" value="${lib.dir}/tomcat-coyote.jar" />
      <property name="jk.build" value="${build.dir}"/>

      <property name="tomcat-jk2.jar" value="${lib.dir}/tomcat-jk2.jar" />
      <property name="tomcat-jkconfig.jar" value="${lib.dir}/jkconfig.jar" />

      <!-- don't include in dist -->
      <property name="tomcat5.detect" value="true"/>
      <property name="tomcat-jk.jar" value="${build.dir}/lib/tomcat-jk.jar" /> 
      <property name="tomcat-jkshm.jar" value="${build.dir}/lib/jkshm.jar" />
      <property name="tomcat-jni.jar" value="${build.dir}/lib/tomcat-jni.jar" />
    </ant>

    <jar file="${dist.dir}/lib/tomcat33-resources.jar" >
      <fileset dir="${build.dir}/classes" >
        <include name="**/*.properties" />
      </fileset>
    </jar>

    <jar file="${dist.dir}/tomcat-connectors.jar" index="true" >
      <fileset dir="${build.dir}/classes" >
        <include name="**" />
        <exclude name="org/apache/ajp/**" />
      </fileset>
    </jar>

  </target>

  <target name="javadoc" 
          description="javadocs">
    <mkdir dir="${dist.dir}/doc/api"/>
    <path id="compile.classpath">
        <pathelement location="${build.dir}/classes" />
        <pathelement location="${jmx.jar}" />
        <pathelement location="${jsse.jar}" />
        <pathelement location="${java.home}/lib/jsse.jar" />
        <pathelement location="${jnet.jar}" />
        <pathelement location="${jcert.jar}" />
        <pathelement location="${puretls.jar}" />
        <pathelement location="${commons-logging.jar}" />
        <pathelement location="${commons-modeler.jar}" />
    </path>
    <javadoc 
      destdir="${dist.dir}/doc/api"
      author="true"
      version="true"
      windowtitle="Tomcat Connector Documentation"
      doctitle="Tomcat Connector"
      bottom="Copyright &#169; 2003 Apache Software Foundation.  All Rights Reserved.">

      <fileset dir="util/java" includes="**/*.java"/>
      <fileset dir="coyote/src/java" includes="**/*.java">
      </fileset>
      <fileset dir="http11/src/java" includes="**/*.java"/>
      <fileset dir="jk/java" includes="**/*.java">
        <exclude name="org/apache/ajp/**"/>
      </fileset>
      <classpath refid="compile.classpath"/>
    </javadoc>


  </target>

  <target name="coyote" 
          description="Compile Coyote and all related protocols">
    <ant dir="util" />
    <ant dir="coyote" target="compile" />
    <ant dir="http11" />
    <ant dir="jk" target="build-jk"/>
    
    <jar jarfile="jtc.jar" 
      manifest="coyote/src/conf/MANIFEST.MF" >
      <fileset dir="util/build/classes" includes="org/apache/**" />
      <fileset dir="coyote/build/classes" includes="org/apache/coyote/**" />
      <fileset dir="http11/build/classes" includes="org/apache/coyote/**" />
      <fileset dir="jk/build/classes" >
        <include name="org/apache/**" />
        <exclude name="org/apache/jk/ant/**" />
      </fileset>
    </jar>
  </target>
  

  <target name="clean" description="Delete build and dist trees">
    <delete dir="dist" />
    <delete dir="build" />
  </target>


  <target name="download" depends="proxyflags" 
    description="Download binary packages" >
    
    <mkdir dir="${base.path}" />
    
    <antcall target="downloadgz">
      <param name="sourcefile" value="${commons-logging.loc}"/>
      <param name="destfile" value="${commons-logging.jar}"/>
    </antcall>

    <antcall target="downloadgz">
      <param name="sourcefile" value="${commons-modeler.loc}"/>
      <param name="destfile" value="${commons-modeler.jar}"/>
    </antcall>

    <antcall target="downloadgz">
      <param name="sourcefile" value="${jmx.loc}"/>
      <param name="destfile" value="${jmx.jar}"/>
    </antcall>

    <antcall target="downloadgz">
      <param name="sourcefile" value="${tomcat41.loc}"/>
      <param name="destfile" value="${tomcat41.jar}"/>
    </antcall>

    <antcall target="downloadgz">
      <param name="sourcefile" value="${tomcat33.loc}"/>
      <param name="destfile" value="${tomcat33.jar}"/>
    </antcall>

    <antcall target="downloadgz">
      <param name="sourcefile" value="${regexp.loc}"/>
      <param name="destfile" value="${regexp.jar}"/>
    </antcall>

  </target>



  <!-- Common download targets - we should use an import with ant1.6. This is cut&paste from tocmat5 -->
  
  <target name="proxyflags">
    <!-- check proxy parameters. -->
    <condition property="useproxy">
      <equals arg1="${proxy.use}" arg2="on" />
    </condition>
  </target>

  <target name="setproxy"  if="useproxy">
    <taskdef name="setproxy"
      classname="org.apache.tools.ant.taskdefs.optional.net.SetProxy" />
    <setproxy proxyhost="${proxy.host}" proxyport="${proxy.port}"/> 
    <echo message="Using ${proxy.host}:${proxy.port} to download ${sourcefile}"/>
  </target>

  <target name="testexist">
    <echo message="Testing  for ${destfile}"/>
    <available file="${destfile}" property="exist"/>
  </target>

  <target name="testsrc">
    <echo message="Testing  for ${destfile} versus ${cvs.base}/${location}/src"/>
    <uptodate property="exist"
              targetfile="${destfile}">
      <srcfiles dir="${cvs.base}/${location}/src" includes="**" />
    </uptodate>
  </target>

  <target name="downloadgz" unless="exist" depends="setproxy,testexist">
    <!-- Download and extract the package -->
    <get src="${sourcefile}" dest="${base.path}/file.tar.gz" />
    <gunzip src="${base.path}/file.tar.gz" dest="${base.path}/file.tar"/>
    <untar src="${base.path}/file.tar" dest="${base.path}"/>
    <delete file="${base.path}/file.tar"/>
    <delete file="${base.path}/file.tar.gz"/>
  </target>

  <target name="downloadzip" unless="exist" depends="setproxy,testexist">
    <!-- Download and extract the package -->
    <get src="${sourcefile}" dest="${base.path}/file.zip" />
    <mkdir dir="${destdir}" />
    <unzip src="${base.path}/file.zip" dest="${destdir}"/>
    <delete file="${base.path}/file.zip"/>
  </target>

  <target name="downloadfile" unless="exist" depends="setproxy,testexist">
    <!-- Download extract the file -->
    <mkdir dir="${destdir}" />
    <get src="${sourcefile}" dest="${destfile}" />
  </target>


  <target name="release" >
    <property name="ver" value="1.1M1" />
<!--
    <property name="tag" value="JTC_1_1_M1" />
-->
    <property name="tag" value="HEAD" />
    <property name="rel.name" value="tomcat-connectors" />

<!--
-->
    <delete dir="release" />
    <mkdir dir="release" />

    <cvs command="checkout" 
         package="jakarta-tomcat-connectors" 
         cvsroot=":pserver:anoncvs@cvs.apache.org:/home/cvspublic"
         dest="release" 
         tag="${tag}"/> 

    <rename src="release/jakarta-tomcat-connectors" dest="release/${rel.name}-${ver}-src" />

    <zip file="release/${rel.name}-${ver}-src.zip" >
      <fileset dir="release" >
        <include name="${rel.name}-${ver}-src/**" />
        <exclude name="${rel.name}-${ver}-src/webapp/**" />
        <exclude name="${rel.name}-${ver}-src/build/**" />
        <exclude name="${rel.name}-${ver}-src/dist/**" />
        <exclude name="${rel.name}-${ver}-src/scandoc/**" />
        <exclude name="${rel.name}-${ver}-src/naming/**" />
      </fileset>
    </zip>
    <tar  tarfile="release/${rel.name}-${ver}-src.tar" >
      <tarfileset dir="release" >
        <include name="${rel.name}-${ver}-src/**" />
        <exclude name="${rel.name}-${ver}-src/webapp/**" />
        <exclude name="${rel.name}-${ver}-src/build/**" />
        <exclude name="${rel.name}-${ver}-src/dist/**" />
        <exclude name="${rel.name}-${ver}-src/scandoc/**" />
        <exclude name="${rel.name}-${ver}-src/naming/**" />
      </tarfileset>
    </tar> 
    <gzip zipfile="release/${rel.name}-${ver}-src.tar.gz" src="release/${rel.name}-${ver}-src.tar"/>
    <delete file="release/${rel.name}-${ver}-src.tar" />

<!--
-->
    <ant dir="release/${rel.name}-${ver}-src" target="download" />
    <ant dir="release/${rel.name}-${ver}-src" target="dist" inheritAll="false" />

    <mkdir dir="release/${rel.name}-${ver}" />
    <copy todir="release/${rel.name}-${ver}" >
       <fileset dir="release/${rel.name}-${ver}-src/dist" includes="**"/>
    </copy>
    <copy file="release/${rel.name}-${ver}/${rel.name}.jar" tofile="release/${rel.name}-${ver}.jar" />
    <zip file="release/${rel.name}-${ver}.zip" >
       <fileset dir="release" includes="${rel.name}-${ver}/**"/>
    </zip>
    <tar  tarfile="release/${rel.name}-${ver}.tar" >
       <tarfileset dir="release" includes="${rel.name}-${ver}/**"/>
    </tar> 
    <gzip zipfile="release/${rel.name}-${ver}.tar.gz" src="release/${rel.name}-${ver}.tar"/>
    
  </target>

  
</project>
