<?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_D02"/>
  <property name="name" value="xalan"/>
  <property name="Name" value="Xalan-Java"/>
  <property name="year" value="2000"/>


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

  <property name="mfinf.dir" value="./src/META-INF"/>
  <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="javax/xml/transform"/>
  <property name="serialize.reldir" value="org/apache/serialize"/>
  <property name="serializer.reldir" value="org/apache/xalan/serialize"/>
  <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="xalanonly-styledocs"
            value="dtd/xsl-html40s.dtd,stylesheets/patterns.xsl,stylesheets/notice.xsl"/>
  <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}"/>
	<delete file="${doc.generator.styletar}"/>
    <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  .properties and .res files to build tree."/>
    <javac srcdir="${src.dir}" 
           destdir="${build.classes}"
           includes="**/*.java"
           debug="${debug}"/>
    <copy todir="${build.classes}">
	  <fileset dir="${src.dir}" excludes="**/classes/**/*,**/msclasses/**/*" 
	        includes="**/*.properties,**/*.res,**/javax.xml.parsers.*,**/javax.xml.transform.*"/>
	</copy>  
  </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}/**" 
           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" manifest="src\MANIFEST.MF" 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}/UseStylesheetPI" classpath="${java.class.path}:${build.dir}/xalan.jar"  
           destdir="${build.samples}"  excludes="${exclude}"
           debug="${debug}"/>
    <javac srcdir="${samples.dir}/Trace" 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.samples}/servlet"/>
     <javac srcdir="${samples.dir}/servlet" classpath="${java.class.path}:${build.dir}/xalan.jar" 
           destdir="${build.samples}"
           debug="${debug}"/>
      <copy todir="${build.samples}/servlet">
	  <fileset dir="${samples.dir}/servlet" 
	        includes="media.properties,default.xsl,default2.xsl"/>
	</copy>  		         
    <jar jarfile="${build.dir}/xalanservlet.jar" basedir="${build.samples}"
         includes="servlet/**"/>            
 </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">
       <arg line="targetDirectory=${build.docs} ${xdocs.book} ${xdocs.style}"/>
	</java>	 
  </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"/>
    
    <!-- generate trax.html, a TRaX overview document, and a package.html for each trax package
         (the latter are generated with the the Redirect extension -->
    <mkdir dir="${build.apidocs}/javax/xml/transform"/>         
    <java fork="yes" classname="org.apache.xalan.xslt.Process" classpath="${java.class.path}:${build.dir}/xalan.jar">
      <arg line="-in ${xdocs.dir}/sources/trax/trax.xml
                 -param package-root '../../../src/'
                 -xsl ${xdocs.style}/stylesheets/spec.xsl 
                 -out ${build.apidocs}/javax/xml/transform/trax.html"/>
    </java>   
    
    <!-- Ant 1.2 ignores destdir arg if doclet is set, so must send to doclet in doclet subelement-->
    <javadoc
         classpath="${java.class.path}"
         public="true"
         sourcepath="${src.dir}"
         overview="${src.dir}/javadocOverview.html"
         packagenames="org.apache.*,org.xml.*,org.w3c.*,javax.xml.*"
         author="true"
         version="true"
         use="true"
         windowtitle="${Name} 2" 
         doctitle="${Name} 2"
         bottom="Copyright &#169; ${year} Apache XML Project. All Rights Reserved.">
          <doclet name="xalanjdoc.Standard" path="${bin.dir}/xalanjdoc.jar">
            <param name="-d" value="${build.apidocs}"/>
          </doclet>
          <group title="Transformations API for XML (TrAX)" packages="javax.xml.transform*"/>
          <group title="Java API for XML Parsing" packages="javax.xml.parsers"/>
          <group title="Xalan Core"
                 packages="org.apache.xalan.processor:org.apache.xalan.templates:org.apache.xalan.transformer"/>
          <group title="XPath" packages="org.apache.xpath*"/>
          <group title="Xalan Other" packages="org.apache.xalan.client:org:org.apache.xalan.extensions:org.apache.xalan.res:org.apache.xalan.stree:org.apache.xalan.trace:org.apache.xalan.utils*:org.apache.xalan.xslt"/>
          <group title="Xalan Extensions" packages="org.apache.xalan.lib*"/>
          <group title="Serializers" packages="org.apache.serialize*:org.apache.xalan.serialize"/>
          <group title="SAX 2" packages="org.xml.sax*"/>
          <group title="DOM 2" packages="org.w3c.dom*"/>
    </javadoc>
    
  </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">
    <delete dir="${build.dir}"/>
    <delete dir="${site.root}"/>
    <delete>
      <fileset dir="${xdocs.style}" excludes="${xalanonly-styledocs}"/>
    </delete>
  </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 bin directory -->
    <copy todir="${dist.dir}/bin">
	  <fileset dir="${bin.dir}"/>
	</copy>  

    <!-- Copy sources and source documentation -->
    <copy todir="${dist.dir}/src">
      <fileset dir="${src.dir}"/>
    </copy>
    <copy todir="${dist.dir}/xdocs">
      <fileset dir="${xdocs.dir}"/>
    </copy>
    
    <!-- Copy built documentation and javadoc, and samples src and jars -->
    <copy todir="${dist.dir}/docs">
      <fileset dir="${build.docs}"/>
    </copy>  
    <copy todir="${dist.dir}/samples">
      <fileset dir="${samples.dir}"/>
    </copy>   
    <copy file="${build.dir}/xalansamples.jar" todir="${dist.dir}/bin"/>
    <copy file="${build.dir}/xalanservlet.jar" todir="${dist.dir}/bin"/>

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

    <copy todir="${dist.dir}">
      <fileset dir="." includes="README,README.html,CREDITS,KEYS,License,build.xml,build.sh,build.bat"/>
    </copy>
	  
    <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}/apidocs"/>
    
    <java fork="yes" classname="${doc.generator}" classpath="${java.class.path}:${build.dir}/$xalan.jar"> 
       <arg line="targetDirectory=${site.dir} ${site.book} ${xdocs.style}"/>
	</java>	 
       
    <copy todir="${site.dir}/apidocs">
	  <fileset dir="${build.apidocs}"/>
	</copy>  
  </target>
   
</project>
