<?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
    - minitest compile and run the minitest in xml-xalan\test
        
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_D04"/>
  <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="bsf.jar" value="${bin.dir}/bsf.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,dtd/spec.dtd,stylesheets/patterns.xsl,stylesheets/notice.xsl,stylesheets/spec.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}"/>
    <available file="${minitest.dir}" property="minitest-available" />
  </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}"/> <!-- transform todo.xml and put the result in build/docs -->
    <java fork="yes" classname="org.apache.xalan.xslt.Process" classpath="${java.class.path}:${build.dir}/$xalan.jar">
      <arg line="-in todo.xml -xsl todo.xsl -out ${build.docs}/todo.html"/>
    </java>   
    
    <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"
    description="Compile Xalan the normal way" >
    <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"
    description="Jar up xalan.jar" >
    <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"
    description="Compile and jar the samples (except servlet)" >
    <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}/UseStylesheetPI" 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}/SAX2SAX" classpath="${java.class.path}:${build.dir}/xalan.jar" 
           destdir="${build.samples}"  excludes="${exclude}"
           debug="${debug}"/>           
    <javac srcdir="${samples.dir}/DOM2DOM" 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}/Trace" 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}/trax" 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"
    description="Compile and jar just the servlet sample" >
     <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"
    description="Build the framework documentation (overview, readme, etc.)" >
    <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"
    description="Build the Javadocs for Xalan sources" >
    <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}/xalan2jdoc.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="Utilities" packages="org.apache.xml.utils*"/>
          <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.xslt"/>
          <group title="Xalan Extensions" packages="org.apache.xalan.lib*"/>
          <group title="Serializers" packages="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"
    description="Clean up the build" >
    <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"
    description="Create a .zip/.tar.gz distribution module" >
    <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,todo.xml,todo.xsl"/>
    </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" depends="prepare.docs">
 
    <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>	<!-- put todo.html in the site directory --> 
    <copy file="${build.docs}/todo.html" todir="${site.dir}"/>
    <copy todir="${site.dir}/apidocs">
	  <fileset dir="${build.apidocs}"/>
	</copy>  
  </target>
   
  <!-- =================================================================== -->
  <!-- Compiles and runs the minitest from xml-xalan\test, if present      -->
  <!-- =================================================================== -->
  <path id="minitest.class.path">
    <pathelement location="${xerces.jar}" />
    <pathelement location="${build.dir}/xalan.jar" />
    <pathelement location="${bsf.jar}" />
    <pathelement path="${java.class.path}" />
  </path>

  <property name="minitest.backref" value="../../java/"/>
  <property name="minitest.dir" value="../test/java/"/>

  <target name="minitest" depends="jar,minitest-run,minitest-not-available" 
    description="Run the Minitest from xml-xalan/test/java" >
  </target>
  <target name="minitest-run" if="minitest-available" >
    <echo message=" [minitest] Calling ${minitest.dir}build.xml now to run minitest.xalan2" />
    <ant dir="${minitest.dir}" antfile="build.xml" target="minitest.xalan2" >
      <property name="name" value="minitest" /> <!-- Set this so that it will create minitest.jar instead of testxsl.jar -->
      <property name="prepend.class.path"
                value="${minitest.backref}${xerces.jar}:${minitest.backref}${build.dir}/xalan.jar:${minitest.backref}${bsf.jar}" />
    <!-- Why doesn't the following refid work? I get an error referencing it.
      <property name="prepend.class.path" refid="minitest.class.path" />
    -->
    </ant>
  </target>
  <target name="minitest-not-available" unless="minitest-available" >
    <echo message=" [minitest] The Minitest does not seem to be present!" />
    <echo message=" [minitest] You must have checked out from CVS to run the minitest," />
    <echo message=" [minitest]   it is not included in binary distributions." />
    <echo message=" [minitest] See http://xml.apache.org/xalan-j/test/ for more info." />
  </target>
  
  <!-- =================================================================== -->
  <!-- Creates the todo list for the org.apache.xml website                -->
  <!-- =================================================================== -->
  <target name="todo">
    <java fork="yes" classname="org.apache.xalan.xslt.Process" classpath="${java.class.path}:${build.dir}/$xalan.jar">
      <arg line="-in todo.xml -xsl todo.xsl -out todo.html"/>
    </java>   
  </target>  

</project>
