<?xml version="1.0" encoding="utf-8"?>
<!-- ===================================================================

   Build file for Xalan-J 2.x - for use with the Jakarta Ant java build tool
   
Setup instructions: 
   Before running an Ant build, you must
   
     - set the JAVA_HOME environment variable to the JDK root directory
     - To build 'servlet' sample: Include Servlet SDK in your classpath
     - To build docs/javadocs: use JDK 1.2.x or higher
     
   
Build Instructions:   
   To build, run
     build.bat (win32) or build.sh (unix) - optionally with a target arg as indicated below -
   in the directory where this file is located.
   
   The batch/shell file sets up your classpath and calls java org.apache.tools.ant.Main
   
Build targets
    This build file supports the following targets:
    - compile  compiles Xalan-J in ./build/classes.
    - jar      creates ./build/xalan.jar [the default target]
    - docs     generates the human-written documentation in ./build/docs
    - javadocs [or apidocs] generates the API documentation in ./build/docs/apidocs
    - clean    purges the build tree.
    - dist     creates a complete distribution in ./xalan-j_x_x_x
    - auto*    targets used by automated build programs, without dependencies
        
If you build a target that depends on other targets, those other targets are created in 
the correct order.

Authors:
  Shane Curcuru <shane_curcuru@lotus.com>
  Don Leslie <donald_leslie@lotus.com>

Copyright:
  Copyright (c) 1999-2000 The Apache Software Foundation.
  
  - Much of this file stolen from Stefano's xml-xerces build.xml  
  
   $Id$
   
==================================================================== -->

<project name="Xalan" default="jar" basedir=".">
  <!-- =================================================================== -->
  <!-- Defines variables used by the other targets                         -->
  <!-- =================================================================== -->
  <property name="version" value="2_0_D01"/>
  <property name="name" value="xalan"/>
  <property name="Name" value="Xalan-Java"/>
  <property name="year" value="2000"/>
  <property name="xalan.jar" value="${name}.jar"/>

  <property name="build.compiler" value="classic"/>
  <property name="debug" value="off"/>

  <property name="src.dir" value="./src"/>
  <property name="xpath.reldir" value="org/apache/xpath"/>
  <property name="xalan.reldir" value="org/apache/xalan"/>
  <property name="trax.reldir" value="org/apache/trax"/>
  <property name="serialize.reldir" value="org/apache/serialize"/>
  <property name="serializer.reldir" value="org/apache/xml/serialize/transition"/>
  <property name="jaxp.reldir" value="javax/xml/parsers"/>
  <property name="sax.reldir" value="org/xml/sax"/>
  <property name="w3c.reldir" value="org/w3c"/>    
  <property name="build.dir" value="./build"/>
  <property name="build.classes" value="${build.dir}/classes"/>
  <property name="build.docs" value="${build.dir}/docs"/>
  <property name="build.samples" value="${build.dir}/samples"/>
  <property name="build.apidocs" value="${build.docs}/apidocs"/>

  <property name="samples.dir" value="./samples"/>
  <property name="bin.dir" value="./bin"/>
  <property name="xerces.jar" value="${bin.dir}/xerces.jar"/>

  <property name="dist.file" value="${name}-j_${version}"/>
  <property name="dist.dir" value="${build.dir}/${dist.file}"/>

  <property name="xdocs.dir" value="./xdocs"/>
  <property name="version.file" value="org/apache/xalan/processor/XSLProcessorVersion.java"/>
  <property name="xdocs.book" value="${xdocs.dir}/sources/xalan-jlocal.xml"/>
  <property name="xdocs.style" value="${xdocs.dir}/style"/>
  <property name="doc.generator" value="org.apache.stylebook.StyleBook"/>
  <property name="doc.generator.styletargz" value="${xdocs.dir}/xml-site-style.tar.gz"/>
  <property name="doc.generator.styletar" value="${xdocs.dir}/xml-site-style.tar"/>
  
  <property name="site.root" value="./xml-site"/>
  <property name="site.dir" value="${site.root}/target/xalan"/>
  <property name="site.book" value="${xdocs.dir}/sources/xalan-jsite.xml"/>

  <!-- =================================================================== -->
  <!-- Prepares the xdocs/style and the build directories                  -->
  <!-- =================================================================== -->
  <target name="prepare">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.classes}"/>
  </target>
  <target name="prepare.docs" depends="prepare">
    <gunzip src="${doc.generator.styletargz}"/>
    <untar src="${doc.generator.styletar}" dest="${xdocs.dir}"/>
    <mkdir dir="${build.docs}"/>
    <mkdir dir="${build.apidocs}"/>
  </target>

  <!-- =================================================================== -->
  <!-- Copy over the source code                                           -->
  <!-- We're currently skipping this step, since it seems extraneous if
       you're not going to be using the filtering stuff. -->
  <!-- =================================================================== -->

  <!-- =================================================================== -->
  <!-- Compiles the source tree - xpath (independent xpath engine)         -->
  <!-- =================================================================== -->
  <!-- Note: Still too many cross-dependencies to do this separately -->
  <target name="compile.xpath" depends="prepare">
    <javac srcdir="${src.dir}/${xpath.reldir}" 
           destdir="${build.classes}"
           debug="${debug}" />
  </target>

  <!-- =================================================================== -->
  <!-- Compiles the source tree - xalan (the processor)                    -->
  <!-- =================================================================== -->
  <!-- Note: Still too many cross-dependencies to do this separately -->
  <target name="compile.xalan" depends="compile.xpath">
    <javac srcdir="${src.dir}/${xalan.reldir}" 
           destdir="${build.classes}" 
           debug="${debug}"/>
  </target>

  <!-- =================================================================== -->
  <!-- Compile entire source tree - except Xalan-J 1 compatability classes -->
  <!-- =================================================================== -->
   
  <target name="compile" depends="prepare">
    <echo message="compile entire source tree and copy "/>
    <echo message="  .properties and .res files to build tree." />
    <javac srcdir="${src.dir}" 
           destdir="${build.classes}"
           includes="**/*.java"
           debug="${debug}"/>
    <copydir src="${src.dir}" dest="${build.classes}" includes="**/*.properties,**/*.res"/>
  </target>
    
  <!-- =================================================================== -->
  <!-- Compiles other source trees                                         -->
  <!-- =================================================================== -->
  <target name="compile.trax" depends="prepare">
    <javac srcdir="${src.dir}"
           destdir="${build.classes}" 
           includes="${trax.reldir}/**"
           debug="${debug}"/>
  </target>
  <target name="compile.serialize" depends="prepare">
    <javac srcdir="${src.dir}" 
           destdir="${build.classes}"
           includes="${serialize.reldir}/**,${serializer.reldir}/**" 
           debug="${debug}"/>
  </target>
  <target name="compile.sax" depends="prepare">
    <javac srcdir="${src.dir}/${sax.reldir}" 
           destdir="${build.classes}" 
           debug="${debug}"/>
  </target>
    <target name="compile.w3c" depends="prepare">
    <javac srcdir="${src.dir}/${w3c.reldir}" 
           destdir="${build.classes}" 
           debug="${debug}"/>
  </target>
    <target name="compile.jaxp" depends="prepare">
    <javac srcdir="${src.dir}/${jaxp.reldir}" 
           destdir="${build.classes}" 
           debug="${debug}"/>
  </target>
  

  <!-- =================================================================== -->
  <!-- Creates the xalan JAR                                               -->
  <!-- =================================================================== -->
  <target name="jar" depends="compile">
    <jar jarfile="${build.dir}/${xalan.jar}" basedir="${build.classes}"/>
  </target>
  <target name="package" depends="jar">
    <!-- OK, what are the 'Apache-standard' names for various targets? -->
    <echo message="package is an alias for jar"/>  
  </target>

  <!-- =================================================================== -->
  <!-- Compiles the samples (servlet excluded) and jars the class files    -->  
  <!-- =================================================================== -->
  <target name="samples" depends="jar">
    <property name="exclude" value="*.xml,*.xsl,*.txt,*.html,*.properties,*.out"/>
    <mkdir dir="${build.samples}"/>
    <!-- Since the samples are packageless, they must be compiled separately. -->   
    <javac srcdir="${samples.dir}/SimpleTransform" classpath="${java.class.path}:${build.dir}/${xalan.jar}" 
           destdir="${build.samples}"  excludes="${exclude}"
           debug="${debug}"/>
    <javac srcdir="${samples.dir}/SAX2SAX" classpath="${java.class.path}:${build.dir}/${xalan.jar}" 
           destdir="${build.samples}"  excludes="${exclude}"
           debug="${debug}"/>           
    <javac srcdir="${samples.dir}/UseStylesheetParam" classpath="${java.class.path}:${build.dir}/${xalan.jar}"  
           destdir="${build.samples}"  excludes="${exclude}"
           debug="${debug}"/>           
    <javac srcdir="${samples.dir}/TransformToDom" classpath="${java.class.path}:${build.dir}/${xalan.jar}" 
           destdir="${build.samples}"  excludes="${exclude}"
           debug="${debug}"/>
    <javac srcdir="${samples.dir}/Pipe" classpath="${java.class.path}:${build.dir}/${xalan.jar}" 
           destdir="${build.samples}"  excludes="${exclude}"
           debug="${debug}"/>
    <javac srcdir="${samples.dir}/UseXMLFilters" classpath="${java.class.path}:${build.dir}/${xalan.jar}" 
           destdir="${build.samples}"  excludes="${exclude}"
           debug="${debug}"/>
   <javac srcdir="${samples.dir}/ApplyXPath" classpath="${java.class.path}:${build.dir}/${xalan.jar}" 
           destdir="${build.samples}" excludes="${exclude}" 
           debug="${debug}"/>                                  
   <javac srcdir="${samples.dir}/extensions" classpath="${java.class.path}:${build.dir}/${xalan.jar}" 
           destdir="${build.samples}" excludes="${exclude}" 
           debug="${debug}"/> 
    <jar jarfile="${build.dir}/xalansamples.jar" basedir="${build.samples}"
         includes="*.class"/>
                   
  </target>
  
   <!-- =================================================================== -->
  <!-- Compiles the sample servlet and jars the class files.                -->  
  <!-- The javax.servlet and javax.servlet.http packages                    -->
  <!-- must be on the classpath                                             -->
  <!-- =================================================================== -->
 <target name="servlet" depends="jar">
     <echo message="To compile and run the sample servlet, javax.servlet and javax.servlet.http must be on the classpath"/>   
     <mkdir dir="${build.dir}/servlet"/>
     <javac srcdir="${samples.dir}/servlet" classpath="${java.class.path}:${build.dir}/${xalan.jar}" 
           destdir="${build.samples}"
           debug="${debug}"/>      
    <jar jarfile="${build.dir}/xalanservlet.jar" basedir="${build.samples}"
         includes="servlet/*.class"/>            
 </target>
 
  <!-- =================================================================== -->
  <!-- Generate HTML docs                                                  -->
  <!-- =================================================================== -->
  <target name="docs" depends="prepare.docs,autodocs">
    <echo message="docs is human-usable target with dependencies"/>  
  </target>
  
  <target name="autodocs">
    <echo message="autodocs is for automated build process, without dependencies"/>   
    <java fork="yes" classname="${doc.generator}" classpath="${java.class.path}:${build.dir}/${xalan.jar}"
         args="targetDirectory=${build.docs} ${xdocs.book} ${xdocs.style}"/>    
  </target>
  
  <!-- =================================================================== -->
  <!-- Creates the API documentation                                       -->
  <!-- =================================================================== -->
  <target name="javadocs" depends="prepare.docs,autojavadocs">
    <echo message="javadocs is human-usable target with dependencies"/>  
  </target>

  <target name="autojavadocs">
    <echo message="autojavadocs is for automated build process, without dependencies"/>
          
    <javadoc
         public="true"
         doclet="xalanjdoc.Standard"
         sourcepath="${src.dir}"
         overview="${src.dir}/javadocOverview.html"
         packagenames="org.apache.xalan.client,org.apache.xalan.extensions,org.apache.xalan.lib,org.apache.xalan.lib.sql,org.apache.xalan.processor,org.apache.xalan.res,org.apache.xalan.stree,org.apache.xalan.templates,org.apache.xalan.trace,org.apache.xalan.transformer,org.apache.xalan.utils,org.apache.xalan.xslt,org.apache.xpath,org.apache.xpath.axes,org.apache.xpath.compiler,org.apache.xpath.functions,org.apache.xpath.objects,org.apache.xpath.operations,org.apache.xpath.patterns,org.apache.xpath.res,org.apache.serialize,org.apache.serialize.helpers,org.apache.xml.serialize.transition,org.apache.trax,org.xml.sax,org.xml.sax.helpers,org.w3c.dom,org.w3c.dom.range,org.w3c.dom.traversal,javax.xml.parsers"
         group="TrAX org.apache.trax,Xalan_Core org.apache.xalan.processor:org.apache.xalan.templates:org.apache.xalan.transformer,XPath org.apache.xpath*,Xalan_Other org.apache.xalan.client:org.apache.xalan.dtm:org.apache.xalan.extensions:org.apache.xalan.res:org.apache.xalan.stree:org.apache.xalan.trace:org.apache.xalan.utils:org.apache.xalan.xslt,Xalan_Extensions org.apache.xalan.lib*,Serializers org.apache.serialize*:org.apache.xml.serialize.transition,SAX_2 org.xml.sax*,DOM_2 org.w3c.dom*,XML_PARSING javax.xml.parsers"
         destdir="${build.apidocs}"
         author="true"
         version="true"
         use="true"
         windowtitle="${Name} 2" 
         doctitle="${Name} 2"
         bottom="Copyright &#169; ${year} Apache XML Project. All Rights Reserved."
    />
    
    <!-- generate patterns.html, a TRaX "patterns design" document -->
    <java fork="yes" classname="org.apache.xalan.xslt.Process" classpath="${java.class.path}:${build.dir}/${xalan.jar}"
       args="-in ${src.dir}/org/apache/trax/patterns.xml 
             -xsl ${xdocs.style}/stylesheets/patterns.xsl 
             -out ${build.apidocs}/org/apache/trax/patterns.html"/>  <!-- patterns.html TRaX design document -->    
    <copyfile src="./xdocs/sources/xalan/trax.gif" dest="${build.apidocs}/org/apache/trax/trax.gif"/>
    
  </target>

  <!-- =================================================================== -->
  <!-- Cleans everything: build tree, site tree, style docs in             -->
  <!--         - build tree                                                -->
  <!--         - distribution tree                                         -->
  <!--         - site tree                                                 -->
  <!--         - style docs expanded from xml-site-style.tar.gz.           -->
  <!--           (MUST update contents of ${xalanonly-styledocs}           -->
  <!--            if change contents of xml-site-style.tar.gz)             -->
  <!--         - Javadoc overview and packqage-level html docs placed      -->
  <!--           in the source tree                                        -->
  <!-- =================================================================== -->
  <target name="clean">
    <property name="xalanonly-styledocs"
              value="dtd/xsl-html40s.dtd, stylesheets/patterns.xsl, stylesheets/notice.xsl,${xdocs.dir}/xml-site-style.tar"/>
    <deltree dir="${build.dir}"/>
    <deltree dir="${site.root}"/>
    <!-- Until we are ready to maintain this, comment out deletion of various 
         doc miscellaneous files from the xml-site-style stuff
    <delete dir="${xdocs.style}" excludes="${xalanonly-styledocs}"/>
    --> 
  </target>
  
  <!-- =================================================================== -->
  <!-- Creates the distribution                                            -->
  <!-- =================================================================== -->
  <target name="dist" depends="docs,javadocs,samples,servlet,autodist">
    <echo message="dist is human-useable target for distribution, with all dependencies"/>
  </target>
  <target name="autodist">
    <echo message="autodist is for automated build processes, without dependencies"/>
    <mkdir dir="${dist.dir}"/>
    <mkdir dir="${dist.dir}/bin"/>    
    <mkdir dir="${dist.dir}/src"/>
    <mkdir dir="${dist.dir}/xdocs"/>
    <mkdir dir="${dist.dir}/docs"/>
    <mkdir dir="${dist.dir}/docs/apidocs"/>
    <mkdir dir="${dist.dir}/samples"/>

    <!-- Copy over tools, sources and source documentation -->
    <copydir src="${bin.dir}" dest="${dist.dir}/bin"/>
    <copydir src="${src.dir}" dest="${dist.dir}/src"/>
    <copydir src="${xdocs.dir}" dest="${dist.dir}/xdocs"/>

    <!-- Copy over pre-built documentation and javadoc, and samples src and jar -->
    <copydir src="${build.docs}" dest="${dist.dir}/docs"/>
    <copydir src="${samples.dir}" dest="${dist.dir}/samples"/> 
    <copyfile src="${build.dir}/xalansamples.jar" dest="${dist.dir}/bin/xalansamples.jar"/>
    <copyfile src="${build.dir}/xalanservlet.jar" dest="${dist.dir}/bin/xalanservlet.jar"/>

    <!-- Copy xalan jar into the bin directory (subject to change) -->
    <copyfile src="${build.dir}/${xalan.jar}" dest="${dist.dir}/bin/${xalan.jar}"/>

    <copyfile src="readme.html" dest="${dist.dir}/readme.html"/>      
    <copyfile src="build.xml" dest="${dist.dir}/build.xml"/>
    <copyfile src="build.sh" dest="${dist.dir}/build.sh"/>
    <copyfile src="build.bat" dest="${dist.dir}/build.bat"/>
    <copyfile src="KEYS" dest="${dist.dir}/KEYS"/>
   
    <zip zipfile="${build.dir}/${dist.file}.zip" basedir="${build.dir}" includes="${dist.file}/**"/>
    <tar tarfile="${build.dir}/${dist.file}.tar" basedir="${build.dir}" includes="${dist.file}/**"/>
    <gzip src="${build.dir}/${dist.file}.tar" zipfile="${build.dir}/${dist.file}.tar.gz"/>
  </target>
  
  <!-- =================================================================== -->
  <!-- Creates the documentation tree for the org.apache.xml website       -->
  <!-- =================================================================== -->
  <target name="site">
 
    <mkdir dir="${site.dir}"/>
    <mkdir dir="${site.dir}/apidocs"/>
    
    <java fork="yes" classname="${doc.generator}" classpath="${java.class.path}:${build.dir}/${name}.jar" 
         args="targetDirectory=${site.dir} ${site.book} ${xdocs.style}"/>
       
    <!--copydir src="${build.docs}/resources" dest="${site.dir}/docs/resources"/-->
    <copydir src="${build.apidocs}" dest="${site.dir}/apidocs"/>
  </target>
   
</project>
