
<!--                                                                             
 Copyright 1999-2004 The Apache Software Foundation.                         
                                                                            
 Licensed 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="XalanC" default="docs" basedir=".">

  <property name="name" value="xalan"/>
  <property name="Name" value="Xalan-C++"/>
  <property name="year" value="2004"/>
  
  <property name="version.VERSION" value="1"/>
  <property name="version.RELEASE" value="9"/>
  <property name="version.MINOR"   value="0"/>

  <property name="xdocs.dir" value="./xdocs"/>
  <property name="xdocs.book" value="${xdocs.dir}/sources/xalanLocal.xml"/>
  <property name="xdocs.site" value="${xdocs.dir}/sources/xalan.xml"/>  
  <property name="xdocs.style" value="${xdocs.dir}/style"/>
  <property name="xdocs.apidocs" value="${xdocs.dir}/html/apidocs"/>  

  <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="build.dir" value="./build"/>

  <property name="build.docs" value="${build.dir}/docs"/>
  <property name="build.apidocs" value="${build.docs}/apidocs"/>  
  <property name="site.dir" value="./xml-site"/>
  
  <property name="package.name"         value="Xalan-C"/>
  <property name="docs.package.name"    value="${build.dir}/${package.name}_${version.VERSION}_${version.RELEASE}-docs"/>
  <property name="webdocs.package.name" value="${build.dir}/${package.name}_${version.VERSION}_${version.RELEASE}-webdocs"/>
  <property name="src.package.name"     value="${build.dir}/${package.name}_${version.VERSION}_${version.RELEASE}-src"/>  

  <target name="prepare">
    <gunzip src="${doc.generator.styletargz}"/>
    <untar src="${doc.generator.styletar}" dest="${xdocs.dir}"/>
	<delete file="${doc.generator.styletar}"/>
    <mkdir dir="${build.apidocs}"/>
    <mkdir dir="${site.dir}/apidocs"/>
    <!--echo message="Transform commits.xml and put the result in ${xdocs.dir}/DONE"/>
    <java fork="yes" classname="org.apache.xalan.xslt.Process" classpath="${java.class.path}">
      <arg line="-in commits.xml -xsl ${xdocs.style}/stylesheets/done-c.xsl -out xdocs/sources/xalan/DONE"/>
    </java-->        
    
  </target>

  <target name="docs" depends="prepare, apidocs">
    <java fork="yes" classname="${doc.generator}" classpath="${java.class.path}">
      <arg line="targetDirectory=${build.docs} ${xdocs.book} ${xdocs.style}"/>    
    </java>  
  </target>

  <target name="apidocs" depends="prepare">
    <copy todir="${build.apidocs}">
      <fileset dir="${xdocs.apidocs}"/>
    </copy>
    <exec executable="doxygen" dir="${xdocs.dir}">
      <arg value="DoxyfileXalan"/>
    </exec>  
  </target>
    
  <target name="site" depends="prepare">
    <java fork="yes" classname="${doc.generator}" classpath="${java.class.path}">
      <arg line="targetDirectory=${site.dir} ${xdocs.site} ${xdocs.style}"/>    
    </java>
    <copy todir="${site.dir}/apidocs">
      <fileset dir="${build.apidocs}"/>
    </copy>      
      
  </target>
  
  <target name="clean">
    <delete dir="${build.dir}"/>
    <delete dir="${site.dir}"/>
  </target>
  
  <!-- =================================================================== -->
  <!-- Use FOP to create preliminary print (pdf) doc                       -->
  <!-- Note: fop.jar and xml.jar (from xml-fop) must be on classpath       -->

  <!-- This is VERY preliminary, not yet for inclusion in distribution     -->
  <!-- =================================================================== -->

  <!--Collate the xml sources into a single xml source with a litle extra structure -->
  <target name="print.docs" depends="prepare">
    <echo message="fop.jar and xml.jar must be on the classpath"/>
    <java fork="yes" classname="org.apache.xalan.xslt.Process"
      classpath="${java.class.path}:${build.dir}/xalan.jar">
      <arg line="-xsl ${xdocs.dir}/sources/xalan-c-collate.xsl 
                 -out ${xdocs.dir}/sources/xalan/xalan-c-collate.xml"/>
    </java>
    
    <!-- Transform collation into Formatting Objects 
         (with a little work on links along the way) -->    
    <java fork="yes" classname="org.apache.xalan.xslt.Process"
      classpath="${java.class.path}:${build.dir}/xalan.jar">
      <arg line="-in  ${xdocs.dir}/sources/xalan/xalan-c-collate.xml
                 -param resourceFile '../../sources/xalan/resources.xml'
                 -param project ${Name}
                 -xsl ${xdocs.style}/stylesheets/xml2fo.xsl 
                 -out ${build.docs}/xalan-c-collate.fo"/>
    </java>
    
    <!-- Use FOP to generate a pdf file -->
    <java fork="yes" classname="org.apache.fop.apps.CommandLine"
      classpath="${java.class.path}:${build.dir}/xalan.jar:${bin.dir}/fop.jar:${bin.dir}/w3c.jar">
      <arg line="${build.docs}/xalan-c-collate.fo build/docs/xalan-c.pdf"/>
    </java>
  </target>

  <!-- package documentation (user guide and apidocs) for distribution -->
  <target name="pack.docs">
    <tar tarfile="${docs.package.name}.tar" basedir="${build.docs}" includes="**"/>
    <gzip src="${docs.package.name}.tar" zipfile="${docs.package.name}.tar.gz"/>
    <delete file="${docs.package.name}.tar"/>
    
    <zip zipfile="${docs.package.name}.zip" basedir="${build.docs}" includes="**"/>
  </target>

  <!-- package documentation (user guide and apidocs) for transfer to website -->
  <target name="pack.webdocs">
    <tar tarfile="${webdocs.package.name}.tar" basedir="${site.dir}" includes="**"/>
    <gzip src="${webdocs.package.name}.tar" zipfile="${webdocs.package.name}.tar.gz"/>
    <delete file="${webdocs.package.name}.tar"/>
    
    <zip zipfile="${webdocs.package.name}.zip" basedir="${site.dir}" includes="**"/>
  </target>

  <!-- package source code for distribution -->
  <target name="pack.src">
    <tar tarfile="${src.package.name}.tar" basedir="../.." includes="xml-xalan/**" excludes="xml-xalan/c/build/** xml-xalan/c/xml-site/**" defaultexcludes="no"/>
    <gzip src="${src.package.name}.tar" zipfile="${src.package.name}.tar.gz"/>
    <delete file="${src.package.name}.tar"/>
    
    <!-- this rule is not picking up the CVS directories dd anybody know how to fix? -->
    <zip zipfile="${src.package.name}.zip" basedir="../.." includes="xml-xalan/**" excludes="xml-xalan/c/build/** xml-xalan/c/xml-site/**" defaultexcludes="no"/>
  </target>
  
</project>