blob: be96dce840ba362ece37066b034a6a63f051273e [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<!--
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
-->
<!-- ===================================================================
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/xsltc: use JDK 1.2.x or higher
Build Instructions:
To build, run
build.bat (win32) or build.sh (unix) [antoptions] [targets]
in the directory where this file is located; you should also be
able to use an installation of Ant v1.4.1 or later.
build -projecthelp will show a list of supported targets.
Developers: include a description="" attribute in all user-callable targets.
If you build a target that depends on other targets, those other
targets are *usually* created in the correct order; however a
few of the larger targets like dist do not list all dependencies.
Other Important Notes:
- 'dist' produces a .tar file that works with GNU compatible tar
programs, because that's what Ant does when it finds a path that's
longer than 100 characters (like in our docs). Sorry!
- External build maintainers: look for GUMP: comments; developers
please use great caution when changing these lines!
- Unusual build items: the docs and xsltc.compile targets leave
cruft in the source areas; various clean targets get most of this.
Authors:
Shane Curcuru <shane_curcuru@lotus.com>
Don Leslie <donald_leslie@lotus.com>
$Id$
==================================================================== -->
<project name="Xalan" default="jar" basedir=".">
<property name="name" value="xalan"/>
<property name="year" value="2014"/>
<property name="build.debug" value="on"/>
<!-- Xalan Java version information -->
<property name="version.VERSION" value="2"/>
<property name="version.RELEASE" value="7"/>
<property name="version.DEVELOPER" value=""/><!-- Set this to 'D' if a developer release; blank "" if maintenance release -->
<property name="version.MINOR" value="2"/><!-- EITHER the developer release number, or a maintenance release number -->
<property name="version" value="${version.VERSION}_${version.RELEASE}_${version.DEVELOPER}${version.MINOR}"/><!-- GUMP: version # of dist file -->
<property name="impl.version" value="${version.VERSION}.${version.RELEASE}.${version.DEVELOPER}${version.MINOR}"/><!-- Used in jar task for filtering MANIFEST.MF file -->
<!-- Xerces Java version information -->
<property name="parser.version.VERSION" value="2"/>
<property name="parser.version.RELEASE" value="11"/>
<property name="parser.version.MINOR" value="0"/>
<!-- Xalan Java directories -->
<!-- <property name="bin.dir" value="./bin"/> -->
<property name="build.dir" value="./build"/>
<property name="lib.dir" value="./lib"/>
<property name="samples.dir" value="./samples"/>
<property name="src.dir" value="./src"/>
<property name="tools.dir" value="./tools"/>
<property name="xdocs.dir" value="./xdocs"/>
<property name="apachexml.reldir" value="org/apache/xml"/>
<property name="serializer.reldir" value="org/apache/xml/serializer"/>
<property name="xpath.reldir" value="org/apache/xpath"/>
<property name="xalan.reldir" value="org/apache/xalan"/>
<property name="domxpath.reldir" value="org/w3c/dom/xpath"/>
<property name="xsltc.reldir" value="${xalan.reldir}/xsltc"/>
<!-- Jars needed to run Xalan Java (Interpretive, Compiled, or both) -->
<property name="xmlapis.jar.name" value="xml-apis.jar"/>
<property name="xmlapis.jar" value="${lib.dir}/${xmlapis.jar.name}"/>
<property name="parser.jar.name" value="xercesImpl.jar"/>
<property name="parser.jar" value="${lib.dir}/${parser.jar.name}"/>
<property name="bcel.jar.name" value="BCEL.jar"/>
<property name="bcel.jar" value="${lib.dir}/${bcel.jar.name}"/>
<property name="runtime.jar.name" value="runtime.jar"/>
<property name="runtime.jar" value="${lib.dir}/${runtime.jar.name}"/>
<property name="regexp.jar.name" value="regexp.jar"/>
<property name="regexp.jar" value="${lib.dir}/${regexp.jar.name}"/>
<!-- Jars need to build Xalan Java (Interpretive, Compiled, or both) or build the docs -->
<property name="java_cup.jar.name" value="java_cup.jar"/>
<property name="java_cup.jar" value="${tools.dir}/${java_cup.jar.name}"/>
<property name="jlex.jar.name" value="JLex.jar"/>
<property name="jlex.jar" value="${tools.dir}/${jlex.jar.name}"/>
<property name="stylebook.jar.name" value="stylebook-1.0-b3_xalan-2.jar"/>
<property name="stylebook.jar" value="${tools.dir}/${stylebook.jar.name}"/>
<property name="doclet.jar.name" value="xalan2jdoc.jar"/>
<property name="doclet.jar" value="${tools.dir}/${doclet.jar.name}"/>
<property name="taglet.jar.name" value="xalan2jtaglet.jar"/>
<property name="taglet.jar" value="${tools.dir}/${taglet.jar.name}"/>
<!-- Relative locations of source directories -->
<property name="manifest.mf" value="./src/MANIFEST.MF"/>
<property name="manifest.xsltc.mf" value="./src/manifest.xsltc"/>
<property name="manifest.xalan-interpretive.mf" value="./src/manifest.xalan-interpretive"/>
<property name="XSLTInfo.props" value="./src/org/apache/xalan/res/XSLTInfo.properties"/>
<property name="generated.xpathparser" value="${src.dir}/${xsltc.reldir}/compiler/XPathParser.java"/>
<property name="generated.xpathlexer" value="${src.dir}/${xsltc.reldir}/compiler/XPathLexer.java"/>
<property name="generated.xpathsym" value="${src.dir}/${xsltc.reldir}/compiler/sym.java"/>
<!-- Build and distribution output areas -->
<property name="build.xalan.jar" value="${build.dir}/${name}.jar"/><!-- GUMP: actual path/name of jar target output -->
<property name="build.xalan-unbundled.jar" value="${build.dir}/${name}-unbundled.jar"/>
<property name="build.xalan-interpretive.jar" value="${build.dir}/${name}.jar"/>
<property name="build.xsltc.jar" value="${build.dir}/xsltc.jar"/>
<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.servlet" value="${build.samples}/servlet"/>
<property name="build.apidocs" value="${build.docs}/apidocs"/>
<property name="dist.pkg" value="${name}-j_${version}"/><!-- GUMP: actual path/name of dist target .tar.gz/.zip-->
<property name="dist.file" value="${dist.pkg}"/>
<property name="dist.dir" value="${build.dir}/${dist.pkg}"/>
<!-- xml-commons sources (for Javadoc) -->
<property name="xml-commons-srcs.tar.gz" value="${src.dir}/xml-commons-external-1.3.02-src.tar.gz"/>
<property name="xml-commons-srcs.tar" value="${build.dir}/xml-commons-external-1.3.02-src.tar"/>
<!-- Documentation and samples information -->
<property name="Name-in-docs" value="Xalan-Java"/>
<property name="version.file" value="${xalan.reldir}/processor/XSLProcessorVersion.java"/>
<property name="build.samples.jar" value="${build.dir}/xalansamples.jar"/>
<property name="build.servlet.war" value="${build.dir}/xalanservlet.war"/>
<property name="build.xsltc.applet.jar" value="${build.dir}/xsltcapplet.jar"/>
<property name="build.xsltc.brazil.jar" value="${build.dir}/xsltcbrazil.jar"/>
<property name="build.xsltc.ejb.jar" value="${build.dir}/xsltcejb.jar"/>
<property name="build.xsltc.servlet.jar" value="${build.dir}/xsltcservlet.jar"/>
<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,stylesheets/done.xsl,loaderdesign.xml,stylesheets/design2project.xsl,stylesheets/designdoc2html.xsl,stylesheets/xml2fo.xsl"/>
<property name="xalan.cmdline.class" value="org.apache.xalan.xslt.Process"/>
<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-j"/>
<property name="site.book" value="${xdocs.dir}/sources/xalan-jsite.xml"/>
<property name="xalan.apache.org.site.root" value="./xalan-apache-org-site"/>
<property name="xalan.apache.org.site.dir" value="${xalan.apache.org.site.root}/target/xalan-apache-org"/>
<property name="xalan.apache.org.site.book" value="${xdocs.dir}/sources/xalan-apache-org-site.xml"/>
<property name="xdocs.DONE.file" value="${xdocs.dir}/sources/xalan/DONE"/>
<property name="xdocs.XSLTCDONE.file" value="XSLTCDONE"/>
<property name="xdocs.XSLTCDONE.location" value="${xdocs.dir}/sources/xalan/${xdocs.XSLTCDONE.file}"/>
<!-- PROPERTIES TO COMPILE THE SERIALIZER ======================================= -->
<property name="serializer.src.dir" value="./src"/>
<property name="serializer.build.dir" value="./build"/>
<property name="serializer.build.classes" value="${serializer.build.dir}/serializer"/>
<!-- PROPERTIES TO MAKE THE SERIALIZER JAR ======================================= -->
<property name="serializer.manifest.basename" value="MANIFEST.SERIALIZER"/>
<property name="serializer.manifest" value="${serializer.src.dir}/${serializer.manifest.basename}"/>
<property name="serializer.impl.version" value="${impl.version}"/>
<property name="serializer.java.version" value="${java.version}"/>
<property name="serializer.java.vendor" value="${java.vendor}"/>
<property name="serializer.jar.name" value="serializer.jar"/>
<property name="build.serializer.jar" value="${serializer.build.dir}/${serializer.jar.name}"/>
<property name="lib.serializer.jar" value="./lib/${serializer.jar.name}"/>
<!-- Class paths used in various targets -->
<path id="docs.class.path">
<pathelement location="${xmlapis.jar}" />
<pathelement location="${parser.jar}" />
<pathelement location="${bcel.jar}" />
<pathelement location="${runtime.jar}" />
<pathelement location="${stylebook.jar}" />
<pathelement location="${doclet.jar}" />
<pathelement location="${taglet.jar}" />
<pathelement location="${build.serializer.jar}" />
<pathelement location="${build.xalan.jar}" />
<pathelement path="${java.class.path}" />
</path>
<path id="samples.class.path">
<pathelement location="${xmlapis.jar}" />
<pathelement location="${build.serializer.jar}" />
<pathelement location="${parser.jar}" />
<pathelement location="${build.xalan.jar}" />
<pathelement path="${java.class.path}" />
</path>
<path id="compile.class.path">
<!-- Ensure the selected parser.jar file is used to compile against -->
<pathelement location="${build.classes}" />
<pathelement location="${serializer.build.classes}" />
<pathelement location="${xmlapis.jar}" />
<pathelement location="${build.serializer.jar}" />
<pathelement location="${parser.jar}" />
<pathelement path="${java.class.path}" />
</path>
<path id="xslt.boot.class.path">
<!-- Put this version of xalan in front of the jdk's for JDK 1.4+ -->
<!-- Set build.boot.class.path to a JDK 1.1.x classes.zip file to check
compatibility with 1.1.x. If you omit this property, compatability
with 1.1.x will not be checked even though javac specifies a target of 1.1 -->
<pathelement location="${build.classes}" />
<pathelement location="${serializer.build.classes}" />
<pathelement location="${xmlapis.jar}" />
<pathelement location="${build.serializer.jar}" />
<pathelement location="${parser.jar}" />
<pathelement path="${build.boot.class.path}" />
<pathelement path="${sun.boot.class.path}" />
</path>
<path id="compile.source.path">
<dirset dir="${src.dir}" includes="/org/apache/**" />
</path>
<!-- patternsets for source and binary distribution packages -->
<patternset id="bin-distro" >
<include name="${dist.file}/LICENSE.txt"/>
<include name="${dist.file}/NOTICE.txt"/>
<include name="${dist.file}/readme.html"/>
<include name="${dist.file}/xalan.jar"/>
<!-- xsltc.jar will only be picked up if it has been built -->
<include name="${dist.file}/xsltc.jar"/>
<include name="${dist.file}/${xmlapis.jar.name}"/>
<include name="${dist.file}/${parser.jar.name}"/>
<include name="${dist.file}/${serializer.jar.name}"/>
<include name="${dist.file}/samples/"/>
<include name="${dist.file}/samples/xalansamples.jar"/>
<include name="${dist.file}/samples/xalanservlet.war"/>
<include name="${dist.file}/samples/xsltcapplet.jar"/>
<include name="${dist.file}/samples/xsltcbrazil.jar"/>
<include name="${dist.file}/samples/xsltcejb.jar"/>
<include name="${dist.file}/samples/xsltcservlet.jar"/>
<include name="${dist.file}/docs/"/>
</patternset>
<patternset id="bin-distro-nodocs" >
<include name="${dist.file}/LICENSE.txt"/>
<include name="${dist.file}/NOTICE.txt"/>
<include name="${dist.file}/readme.html"/>
<include name="${dist.file}/xalan.jar"/>
<!-- xsltc.jar will only be picked up if it has been built -->
<include name="${dist.file}/xsltc.jar"/>
<include name="${dist.file}/${xmlapis.jar.name}"/>
<include name="${dist.file}/${parser.jar.name}"/>
<include name="${dist.file}/${serializer.jar.name}"/>
<include name="${dist.file}/samples/"/>
<include name="${dist.file}/samples/xalansamples.jar"/>
<include name="${dist.file}/samples/xalanservlet.war"/>
<include name="${dist.file}/samples/xsltcapplet.jar"/>
<include name="${dist.file}/samples/xsltcbrazil.jar"/>
<include name="${dist.file}/samples/xsltcejb.jar"/>
<include name="${dist.file}/samples/xsltcservlet.jar"/>
</patternset>
<patternset id="src-distro" >
<include name="${dist.file}/LICENSE.txt"/>
<include name="${dist.file}/NOTICE.txt"/>
<include name="${dist.file}/build.*"/>
<include name="${dist.file}/commits.xml"/>
<include name="${dist.file}/KEYS"/>
<include name="${dist.file}/readme.html"/>
<include name="${dist.file}/lib/"/>
<include name="${dist.file}/tools/"/>
<include name="${dist.file}/samples/"/>
<exclude name="${dist.file}/samples/xalansamples.jar"/>
<exclude name="${dist.file}/samples/xalanservlet.war"/>
<exclude name="${dist.file}/samples/xsltcapplet.jar"/>
<exclude name="${dist.file}/samples/xsltcbrazil.jar"/>
<exclude name="${dist.file}/samples/xsltcejb.jar"/>
<exclude name="${dist.file}/samples/xsltcservlet.jar"/>
<include name="${dist.file}/src/"/>
<include name="${dist.file}/xdocs/"/>
</patternset>
<!-- XSLTC engine dependency .jar files -->
<patternset id="xsltc-deps-jars" >
<include name="${dist.file}/lib/${bcel.jar.name}"/>
<include name="${dist.file}/tools/${java_cup.jar.name}"/>
<include name="${dist.file}/tools/${jlex.jar.name}"/>
<include name="${dist.file}/lib/${runtime.jar.name}"/>
<include name="${dist.file}/lib/${regexp.jar.name}"/>
</patternset>
<!-- =================================================================== -->
<!-- Creates output build directories and doc prerequistes -->
<!-- =================================================================== -->
<target name="prepare">
<echo message="Project:${Name-in-docs} version:${version} build.xml $Revision$"/>
<mkdir dir="${build.dir}"/>
<mkdir dir="${build.classes}"/>
<!-- Note that all testing-related targets *must* depend on
this target, either directly or indirectly, to get
the tests-available property set for them.
-->
<available file="${test.relpath}" property="tests-available" />
<available property="xerces.present"
classname="org.apache.xerces.parsers.SAXParser"/>
<!-- Update version information. This copies the Version.src
file into Version.java, while replacing the following tokens
-->
<filter token="version.VERSION" value="${version.VERSION}"/>
<filter token="version.RELEASE" value="${version.RELEASE}"/>
<filter token="version.MINOR" value="${version.MINOR}"/>
<filter token="version.DEVELOPER" value="${version.DEVELOPER}"/>
<filter token="parser.version.VERSION" value="${parser.version.VERSION}"/>
<filter token="parser.version.RELEASE" value="${parser.version.RELEASE}"/>
<filter token="parser.version.MINOR" value="${parser.version.MINOR}"/>
<copy tofile="${src.dir}/${xalan.reldir}/Version.java" file="${src.dir}/${xalan.reldir}/Version.src" filtering="true"/>
<copy tofile="${src.dir}/${xalan.reldir}/processor/XSLProcessorVersion.java" file="${src.dir}/${xalan.reldir}/processor/XSLProcessorVersion.src" filtering="true"/>
<copy tofile="${src.dir}/${serializer.reldir}/Version.java" file="${src.dir}/${serializer.reldir}/Version.src" filtering="true"/>
<copy tofile="${xdocs.dir}/sources/entities.ent" file="${xdocs.dir}/sources/entities.src" filtering="true"/>
</target>
<!-- Must depend on jar since we use Xalan to process xml files -->
<target name="prepare.docs" depends="jar,prepare.docs.nojardepends"/>
<target name="prepare.docs.nojardepends">
<mkdir dir="${build.docs}"/>
<mkdir dir="${build.apidocs}"/>
<gunzip src="${doc.generator.styletargz}"/>
<untar src="${doc.generator.styletar}" dest="${xdocs.dir}"/>
<delete file="${doc.generator.styletar}"/>
<!-- We use a sed script to extract Xalan-Java 2 commits from the repository into commits.xml
The following operation transforms commits.xml (just including source code commits) and
puts the result in xdocs/sources/xalan for inclusion in the readme.xml -->
<echo message="Transform commits.xml and put the result in ${xdocs.dir}"/>
<java fork="yes" classname="${xalan.cmdline.class}" >
<classpath refid="docs.class.path" />
<arg line="-in commits.xml -xsl ${xdocs.style}/stylesheets/done.xsl -out ${xdocs.DONE.file} -param xsltcdone ${xdocs.XSLTCDONE.file}"/>
</java>
<echo message="Generate Xalan-J 2.x design document"/>
<java fork="yes" classname="${doc.generator}" >
<classpath refid="docs.class.path" />
<arg line="loaderConfig=sbk:/style/loaderdesign.xml targetDirectory=./build/docs/design/
./xdocs/sources/xalandesign.xml ./xdocs/style"/>
</java>
</target>
<!-- =================================================================== -->
<!-- Compile the DTM implementation and xml utilities -->
<!-- =================================================================== -->
<target name="xml.compile" depends="prepare,serializer.jar">
<echo message="Compiling DTM implementation and utilities" />
<javac srcdir="${src.dir}"
destdir="${build.classes}"
debug="${build.debug}" >
<include name="${apachexml.reldir}/**/*.java" />
<!-- exclude the serializer -->
<exclude name="${serializer.reldir}/**/*.java" />
<!-- Exclude file that depends upon presence of Xerces in build path -->
<exclude name="**/IncrementalSAXSource_Xerces.java"
unless="xerces.present" />
<classpath refid="compile.class.path" />
<bootclasspath refid="xslt.boot.class.path" />
</javac>
<!-- Copy needed properties, resource, etc. files to be put into .jar file -->
<copy todir="${build.classes}">
<fileset dir="${src.dir}"
includes="${apachexml.reldir}/**/*.properties"
excludes="${serializer.reldir}/**/*.properties"
/>
</copy>
</target>
<!-- =================================================================== -->
<!-- Compile the Xalan interpreter source tree -->
<!-- =================================================================== -->
<target name="xalan-interpretive.compile" depends="xml.compile"
description="Compile the Xalan interpretive classes (skips XSLTC)" >
<echo message="Compiling Xalan interpretive classes" />
<javac srcdir="${src.dir}"
destdir="${build.classes}"
debug="${build.debug}" >
<include name="${xpath.reldir}/**/*.java" />
<include name="${domxpath.reldir}/**/*.java" />
<include name="${xalan.reldir}/**/*.java" />
<exclude name="${xsltc.reldir}/**/*.java" />
<classpath refid="compile.class.path" />
<bootclasspath refid="xslt.boot.class.path" />
<sourcepath refid="compile.source.path" />
</javac>
<!-- Copy needed properties, resource, etc. files to be put into .jar file -->
<copy todir="${build.classes}">
<fileset dir="${src.dir}" includes="**/*.properties,META-INF/services/*" excludes="**/XSLTInfo.properties"/>
</copy>
<filter token="impl.version" value="${impl.version}"/>
<copy todir="${build.classes}/org/apache/xalan/res" file="${XSLTInfo.props}" filtering="true"/>
</target>
<!-- Compile all java sources (Xalan interpretive and XSLTC) -->
<target name="compile" depends="xalan-interpretive.compile,xsltc.compile"
description="Compile all java source files (Xalan interpretive + XSLTC)" >
</target>
<!-- =================================================================== -->
<!-- Compile just the XSLTC compiler portion -->
<!-- =================================================================== -->
<path id="xsltc.class.path">
<pathelement location="${xmlapis.jar}" />
<pathelement location="${build.serializer.jar}" />
<pathelement location="${bcel.jar}" />
<pathelement location="${jlex.jar}" />
<pathelement location="${java_cup.jar}" />
<pathelement location="${runtime.jar}" />
<!-- build.classes needed for
org.apache.xalan.xsltc.util.JavaCupRedirect -->
<pathelement location="${build.classes}" />
<pathelement path="${java.class.path}" />
</path>
<!-- Attempt to determine dependency info for generated sources -->
<target name="xsltc.prepare" depends="prepare" >
<!-- The first step compiles the utils directory, which includes
a special wrapper for the xsltc.codegen / java_cup step next. -->
<echo message="Compiling XSLTC utilities"/>
<javac srcdir="${src.dir}"
destdir="${build.classes}"
includes="${xsltc.reldir}/util/**/*.java"
debug="${build.debug}">
<classpath refid="xsltc.class.path" />
<bootclasspath refid="xslt.boot.class.path" />
</javac>
<!-- These tricky uptodate statements hopefully determine if we
actually need to generate the java_cup and jlex files
in the two sub-targets below
-->
<uptodate property="xsltc.java_cup.not_needed" targetfile="${generated.xpathparser}" >
<srcfiles dir="${src.dir}/${xsltc.reldir}/compiler" includes="xpath.cup" />
</uptodate>
<uptodate property="xsltc.jlex.not_needed" targetfile="${generated.xpathlexer}" >
<srcfiles dir="${src.dir}/${xsltc.reldir}/compiler" includes="xpath.lex" />
</uptodate>
<!-- Determine whether the support jars are already expanded -->
<available file="${build.classes}/org/apache/bcel" type="dir" property="xsltc.bcel_jar.not_needed" />
<available file="${build.classes}/JLex" type="dir" property="xsltc.jlex_jar.not_needed" />
<available file="${build.classes}/java_cup/Main.class" type="file" property="xsltc.java_cup_jar.not_needed" />
<available file="${build.classes}/java_cup/runtime" type="dir" property="xsltc.runtime_jar.not_needed" />
<available file="${build.classes}/org/apache/regexp" type="dir" property="xsltc.regexp_jar.not_needed" />
</target>
<!-- Generate the XPath parser sources for xsltc if needed -->
<target name="xsltc.java_cup" depends="xsltc.prepare" unless="xsltc.java_cup.not_needed">
<!-- The second step generates sym.java and XPathParser.java. -->
<echo message="java_cup preparsing"/>
<java fork="yes" failonerror="true"
classname="org.apache.xalan.xsltc.util.JavaCupRedirect" >
<classpath refid="xsltc.class.path" />
<!-- need to bootclasspath java_cup for JDKs that include JavaCupRedirect -->
<jvmarg value="-Xbootclasspath/p:${java_cup.jar}${path.separator}${runtime.jar}"/>
<!-- We're using JavaCupRedirect to call the java_cup application -->
<arg line="-parser XPathParser -expect 0
-stdin ${src.dir}/${xsltc.reldir}/compiler/xpath.cup"/>
</java>
<echo message="java_cup move output files"/>
<move file="XPathParser.java" tofile="${generated.xpathparser}"/>
<move file="sym.java" tofile="${generated.xpathsym}"/>
</target>
<!-- Generate the XPath lexer sources for xsltc if needed -->
<target name="xsltc.jlex" depends="xsltc.java_cup" unless="xsltc.jlex.not_needed">
<!-- The third step generates XPathLexer.java. The lexiographical analyser
has to be generated after sym.java, so order is important. -->
<echo message="JLex preparsing"/>
<java fork="yes" failonerror="true" classname="JLex.Main" >
<classpath refid="xsltc.class.path" />
<arg line="-static ${src.dir}/${xsltc.reldir}/compiler/xpath.lex"/>
</java>
<echo message="JLex move output file"/>
<move file="${src.dir}/${xsltc.reldir}/compiler/xpath.lex.java" tofile="${generated.xpathlexer}"/>
</target>
<!-- Compile the main XSLTC classes -->
<target name="xsltc.compile" depends="xsltc.java_cup,xsltc.jlex,xml.compile"
description="Compile just the XSLTC classes" >
<echo message="Compiling remaining XSLTC classes"/>
<javac srcdir="${src.dir}"
destdir="${build.classes}"
includes="${xsltc.reldir}/**/*.java"
excludes="${serializer.reldir}/**/*.java"
debug="${build.debug}">
<classpath refid="xsltc.class.path" />
<bootclasspath refid="xslt.boot.class.path" />
</javac>
</target>
<!-- Compile just the XSLTC classes w/o JLex, JCup recompilation -->
<target name="xsltc.fcompile" depends="xml.compile"
description="Compile just the XSLTC classes w/o JLex, JCup recompilation" >
<echo message="Compiling remaining XSLTC classes"/>
<javac srcdir="${src.dir}"
destdir="${build.classes}"
includes="${xsltc.reldir}/**/*.java"
debug="${build.debug}">
<classpath refid="xsltc.class.path" />
<bootclasspath refid="xslt.boot.class.path" />
</javac>
</target>
<!-- Jar up the XSLTC classes w/o the support jars -->
<target name="xsltc.unbundledjar" depends="xsltc.compile"
description="Jar just the xsltc.jar file" >
<!-- Copy over the manifest, with filtering (for version number) -->
<filter token="impl.version" value="${impl.version}"/>
<filter token="java.version" value="${java.version}"/>
<filter token="java.vendor" value="${java.vendor}"/>
<copy todir="${build.dir}" file="${manifest.xsltc.mf}" filtering="true"/>
<jar jarfile="${build.xsltc.jar}" manifest="${build.dir}/manifest.xsltc" basedir="${build.classes}" >
<patternset><!-- relative to jar/@basedir -->
<include name="org/apache/xml/**" />
<include name="${xsltc.reldir}/**/*" />
<exclude name="org/apache/xalan/xsltc/util/JavaCupRedirect*" />
</patternset>
</jar>
</target>
<!-- Copy license and readme files for XSLTC support jars -->
<target name="xsltc.copy-licenses" depends="xsltc.prepare">
</target>
<!-- A parametrized target which is used to copy and expand a XSLTC support jar -->
<target name="xsltc.copy-deps-jar" unless="${param_unless}">
<!-- copy the jar file to the build/classes directory -->
<copy todir="${build.classes}" file="${lib.dir}/${param_jar_name}"/>
<!-- unjar the jar file -->
<unjar src="${build.classes}/${param_jar_name}" dest="${build.classes}" />
<!-- remove the jar file -->
<delete file="${build.classes}/${param_jar_name}" />
</target>
<!-- Copy and expand the XSLTC support jars if needed -->
<target name="xsltc.copy-deps-jars" depends="xsltc.copy-licenses">
<echo message="Copying XSLTC support jars" />
<!-- copy the 3rd party support jar files -->
<antcall target="xsltc.copy-deps-jar">
<param name="param_unless" value="xsltc.bcel_jar.not_needed" />
<param name="param_jar_name" value="${bcel.jar.name}" />
</antcall>
<!-- We don't need to package the JLex or java_cup jars in the xalan.jar.
These are only required for building XSLTC, not for using XSLTC.
<antcall target="xsltc.copy-deps-jar">
<param name="param_unless" value="xsltc.jlex_jar.not_needed" />
<param name="param_jar_name" value="${jlex.jar.name}" />
</antcall>
<antcall target="xsltc.copy-deps-jar">
<param name="param_unless" value="xsltc.java_cup_jar.not_needed" />
<param name="param_jar_name" value="${java_cup.jar.name}" />
</antcall>
-->
<antcall target="xsltc.copy-deps-jar">
<param name="param_unless" value="xsltc.runtime_jar.not_needed" />
<param name="param_jar_name" value="${runtime.jar.name}" />
</antcall>
<antcall target="xsltc.copy-deps-jar">
<param name="param_unless" value="xsltc.regexp_jar.not_needed" />
<param name="param_jar_name" value="${regexp.jar.name}" />
</antcall>
<!-- remove the old META-INF/MANIFEST.MF file -->
<delete file="${build.classes}/META-INF/MANIFEST.MF" quiet="true"/>
</target>
<!-- =================================================================== -->
<!-- Creates the xsltc jar including all support jars -->
<!-- =================================================================== -->
<target name="xsltc.jar" depends="xsltc.compile,xsltc.copy-deps-jars"
description="Jar xsltc,xml,BCEL,JLex,java_cup,runtime and jakarta regexp">
<!-- create new META-INF dir w/ transformer factory default -->
<!-- GTM: comment this out so that bundled xsltc.jar does not have
service provider default until further notice 2/20/2002
<mkdir dir="${build.dir}/xsltctmp/META-INF"/>
<mkdir dir="${build.dir}/xsltctmp/META-INF/services"/>
<copy todir="${build.dir}/xsltctmp/META-INF/services"
file="${src.dir}/${xsltc.reldir}/javax.xml.transform.TransformerFactory"
/>
-->
<!-- Copy over the manifest, with filtering (for version number) -->
<filter token="impl.version" value="${impl.version}"/>
<filter token="java.version" value="${java.version}"/>
<filter token="java.vendor" value="${java.vendor}"/>
<copy todir="${build.dir}" file="${manifest.xsltc.mf}" filtering="true"/>
<!-- make bundled jar named xsltc.jar -->
<jar jarfile="${build.dir}/xsltc.jar" manifest="${build.dir}/manifest.xsltc" >
<fileset dir="${build.classes}">
<include name="org/apache/xalan/xsltc/**"/>
<exclude name="org/apache/xalan/xsltc/util/JavaCupRedirect*" />
</fileset>
<fileset dir="${build.classes}" includes="org/apache/xml/**"
excludes="${serializer.reldir}/**" />
<fileset dir="${build.classes}" includes="org/apache/bcel/**" />
<fileset dir="${build.classes}" includes="JLex/**" />
<fileset dir="${build.classes}" includes="java_cup/**" />
<fileset dir="${build.classes}" includes="org/apache/regexp/**" />
</jar>
</target>
<!-- =================================================================== -->
<!-- Creates the xalan interpretive jar -->
<!-- =================================================================== -->
<target name="xalan-interpretive.jar" depends="xalan-interpretive.compile"
description="Jar up everything in Xalan interpretive (without XSLTC)" >
<!-- Copy over the manifest, with filtering (for version number) -->
<filter token="impl.version" value="${impl.version}"/>
<filter token="java.version" value="${java.version}"/>
<filter token="java.vendor" value="${java.vendor}"/>
<copy todir="${build.dir}" file="${manifest.xalan-interpretive.mf}" filtering="true"/>
<jar jarfile="${build.xalan-interpretive.jar}" manifest="${build.dir}/manifest.xalan-interpretive" basedir="${build.classes}" >
<patternset><!-- relative to jar/@basedir -->
<include name="${apachexml.reldir}/**/*" />
<include name="${xpath.reldir}/**/*" />
<include name="${xalan.reldir}/**/*" />
<include name="${domxpath.reldir}/**/*" />
<include name="META-INF/services/*" />
<exclude name="${xsltc.reldir}/**/*" />
<exclude name="${serializer.reldir}/**/*" />
</patternset>
</jar>
</target>
<!-- =================================================================== -->
<!-- Creates the xalan unbundled jar (Xalan interpretive + XSLTC - -->
<!-- support jars -->
<!-- =================================================================== -->
<target name="unbundledjar" depends="xalan-interpretive.compile,xsltc.compile"
description="Jar up Xalan and XSLTC, without the XSLTC dependencies" >
<filter token="impl.version" value="${impl.version}"/>
<filter token="java.version" value="${java.version}"/>
<filter token="java.vendor" value="${java.vendor}"/>
<copy todir="${build.dir}" file="${manifest.mf}" filtering="true"/>
<jar jarfile="${build.xalan-unbundled.jar}" manifest="${build.dir}/MANIFEST.MF" basedir="${build.classes}" >
<patternset>
<include name="${apachexml.reldir}/**/*" />
<include name="${xpath.reldir}/**/*" />
<include name="${xalan.reldir}/**/*" />
<include name="META-INF/services/*" />
<exclude name="${xsltc.reldir}/util/JavaCupRedirect*" />
<exclude name="${serializer.reldir}/**/*.*" />
</patternset>
</jar>
</target>
<!-- =================================================================== -->
<!-- Creates one big xalan jar (Xalan interpretive + XSLTC + support jars) -->
<!-- =================================================================== -->
<target name="jar" depends="xalan-interpretive.compile,xsltc.compile,xsltc.copy-deps-jars"
description="Jar up everything (Xalan, XSLTC and XSLTC dependencies)" >
<!-- Copy over the manifest, with filtering (for version number) -->
<filter token="impl.version" value="${impl.version}"/>
<filter token="java.version" value="${java.version}"/>
<filter token="java.vendor" value="${java.vendor}"/>
<copy todir="${build.dir}" file="${manifest.mf}" filtering="true"/>
<!-- make bundled jar named xalan.jar -->
<jar jarfile="${build.xalan.jar}" manifest="${build.dir}/MANIFEST.MF"
basedir="${build.classes}" >
<patternset>
<exclude name="${xsltc.reldir}/util/JavaCupRedirect*" />
<exclude name="${serializer.reldir}/**/*" />
</patternset>
</jar>
</target>
<!-- =================================================================== -->
<!-- Default all target simply Creates the xalan JAR -->
<!-- =================================================================== -->
<target name="all" depends="serializer.jar,jar"><!-- 'Standardizing build.xml files' <bloritsch@apache.org> -->
<echo message="Redirect to jar target; please provide input on desired functionality of this target"/>
</target>
<!-- =================================================================== -->
<!-- Compiles the samples (servlet excluded) and jars the class files -->
<!-- =================================================================== -->
<target name="samples" depends="jar,samples.nojardepends,xsltc.samples"/>
<target name="samples.nojardepends" depends="xsltc.samples.nojardepends"
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"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<javac srcdir="${samples.dir}/UseStylesheetPI"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<javac srcdir="${samples.dir}/UseStylesheetParam"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<javac srcdir="${samples.dir}/SAX2SAX"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<javac srcdir="${samples.dir}/DOM2DOM"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<javac srcdir="${samples.dir}/Pipe"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<javac srcdir="${samples.dir}/UseXMLFilters"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<javac srcdir="${samples.dir}/Trace"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<javac srcdir="${samples.dir}/ApplyXPath"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<javac srcdir="${samples.dir}/ApplyXPathDOM"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<javac srcdir="${samples.dir}/trax"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<javac srcdir="${samples.dir}/extensions"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<javac srcdir="${samples.dir}/Validate"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<javac srcdir="${samples.dir}/TransformThread"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<javac srcdir="${samples.dir}/XPathAPI"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<jar jarfile="${build.samples.jar}" basedir="${build.samples}"
includes="*.class"/>
</target>
<!-- =================================================================== -->
<!-- Compiles all samples that require extra standard components in -->
<!-- order to compile. -->
<!-- =================================================================== -->
<target name="extra.std.samples"
depends="servlet,xsltc.applet,xsltc.ejb,xsltc.servlet"/>
<target name="extra.std.samples.nojardepends"
depends="servlet.nojardepends,xsltc.applet.nojardepends,
xsltc.ejb.nojardepends,xsltc.servlet.nojardepends"/>
<!-- =================================================================== -->
<!-- Compiles all samples that require extra non-standard components in -->
<!-- order to compile. -->
<!-- =================================================================== -->
<target name="extra.nonstd.samples" depends="xsltc.brazil"/>
<target name="extra.nonstd.samples.nojardepends" depends="xsltc.brazil.nojardepends"/>
<!-- =================================================================== -->
<!-- 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,servlet.nojardepends"/>
<target name="servlet.nojardepends"
description="Compile and jar the servlet samples in xalanservlet.war" >
<echo message="To compile the sample servlets, javax.servlet and javax.servlet.http must be on the classpath"/>
<mkdir dir="${build.servlet}"/>
<mkdir dir="${build.servlet}/WEB-INF/classes/servlet"/>
<mkdir dir="${build.servlet}/WEB-INF/lib"/>
<javac srcdir="${samples.dir}/servlet"
destdir="${build.servlet}/WEB-INF/classes"
debug="${build.debug}"
bootclasspathref="xslt.boot.class.path" >
<classpath refid="samples.class.path" />
</javac>
<copy todir="${build.servlet}/WEB-INF/classes/servlet">
<fileset dir="${samples.dir}/servlet" includes="media.properties"/>
</copy>
<copy todir="${build.servlet}/WEB-INF">
<fileset dir="${samples.dir}/servlet" includes="web.xml"/>
</copy>
<copy todir="${build.servlet}">
<fileset dir="${samples.dir}/servlet"
includes="birds.xml, birds.xsl, booklist1.xsl,
booklist2.xsl, catalog.xml, fooparam.xml, fooparam.xsl, jspSample.jsp"/>
</copy>
<copy todir="${build.servlet}/WEB-INF/lib">
<fileset dir="${lib.dir}" includes="${parser.jar.name}, ${xmlapis.jar.name}"/>
</copy>
<copy file="${build.xalan.jar}" todir="${build.servlet}/WEB-INF/lib" />
<jar jarfile="${build.servlet.war}"
basedir="${build.servlet}"
includes="**"/>
</target>
<!-- =================================================================== -->
<!-- Compiles (does not jar) the translet samples. -->
<!-- For time being, classes are generated in place. -->
<!-- To run these samples, add xsltc.jar, runtime.jar, bcel.jar, -->
<!-- and java_cup.jar (all in the bin directory) to the classpath -->
<!-- -->
<!-- When we have straightened out classpath issues, -->
<!-- add samples in CompiledApplet, CompiledBrazil, CompiledEJB and -->
<!-- CompiledServlet. -->
<!-- =================================================================== -->
<target name="xsltc.samples" depends="jar,xsltc.samples.nojardepends"/>
<target name="xsltc.samples.nojardepends">
<mkdir dir="${build.samples}"/>
<javac srcdir="${samples.dir}/translets"
classpath="${java.class.path}:${build.xalan.jar}"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" />
<javac srcdir="${samples.dir}/CompiledJAXP"
destdir="${build.samples}" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" />
</target>
<!-- =================================================================== -->
<!-- Compiles the XSLTC applet example and jars the class files. -->
<!-- =================================================================== -->
<target name="xsltc.applet" depends="jar,xsltc.applet.nojardepends"/>
<target name="xsltc.applet.nojardepends">
<mkdir dir="${build.samples}/CompiledApplet"/>
<javac srcdir="${samples.dir}/CompiledApplet"
destdir="${build.samples}/CompiledApplet" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" />
<jar jarfile="${build.xsltc.applet.jar}"
basedir="${build.samples}/CompiledApplet"
includes="*.class"/>
</target>
<!-- =================================================================== -->
<!-- Compiles the XSLTC brazil example and jars the class files. -->
<!-- =================================================================== -->
<target name="xsltc.brazil" depends="jar,xsltc.brazil.nojardepends"/>
<target name="xsltc.brazil.nojardepends">
<mkdir dir="${build.samples}/CompiledBrazil"/>
<javac srcdir="${samples.dir}/CompiledBrazil"
destdir="${build.samples}/CompiledBrazil" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" />
<jar jarfile="${build.xsltc.brazil.jar}"
basedir="${build.samples}/CompiledBrazil"
includes="*.class"/>
</target>
<!-- =================================================================== -->
<!-- Compiles the XSLTC EJB example and jars the class files. -->
<!-- ejb.jar must be on the classpath to compile this sample. -->
<!-- EJB 2.0 can be found at http://java.sun.com/products/ejb/docs.html -->
<!-- =================================================================== -->
<target name="xsltc.ejb" depends="jar,xsltc.ejb.nojardepends"/>
<target name="xsltc.ejb.nojardepends">
<mkdir dir="${build.samples}/CompiledEJB"/>
<javac srcdir="${samples.dir}/CompiledEJB"
destdir="${build.samples}/CompiledEJB" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" />
<jar jarfile="${build.xsltc.ejb.jar}"
basedir="${build.samples}/CompiledEJB"
includes="*.class"/>
</target>
<!-- =================================================================== -->
<!-- Compiles the XSLTC servlet example and jars the class files. -->
<!-- =================================================================== -->
<target name="xsltc.servlet" depends="jar,xsltc.servlet.nojardepends" />
<target name="xsltc.servlet.nojardepends">
<mkdir dir="${build.samples}/CompiledServlet"/>
<javac srcdir="${samples.dir}/CompiledServlet"
destdir="${build.samples}/CompiledServlet" excludes="${exclude}"
debug="${build.debug}" bootclasspathref="xslt.boot.class.path" />
<jar jarfile="${build.xsltc.servlet.jar}"
basedir="${build.samples}/CompiledServlet"
includes="*.class"/>
</target>
<!-- =================================================================== -->
<!-- Generate HTML docs -->
<!-- =================================================================== -->
<target name="docs" depends="jar,docs.nojardepends,xsltc.docs"/>
<target name="docs.nojardepends" depends="prepare.docs.nojardepends,autodocs"
description="Build the 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}"
classpathref="docs.class.path" >
<arg line="targetDirectory=${build.docs} ${xdocs.book} ${xdocs.style}"/>
</java>
</target>
<!-- =================================================================== -->
<!-- Creates the API documentation -->
<!-- =================================================================== -->
<target name="javadocs" depends="jar,javadocs.nojardepends"/>
<target name="javadocs.nojardepends" depends="prepare.docs.nojardepends,autojavadocs"
description="Build the Javadocs for Xalan 2.x and jaxp sources" >
<echo message="javadocs is human-usable target with dependencies"/>
<!-- Expand jaxp sources (JAXP 1.1, DOM 2, and SAX 2) into source tree for
inclusion in the Javadoc. -->
<!-- Note this is into the src area.-->
<gunzip src="${xml-commons-srcs.tar.gz}" dest="${build.dir}" />
<untar src="${xml-commons-srcs.tar}"
dest="${src.dir}">
<patternset>
<include name="**.java"/>
</patternset>
</untar>
<delete file="${xml-commons-srcs.tar}"/>
<antcall target="autojavadocs"/>
<!-- remove the jaxp sources -->
<delete dir="${src.dir}/javax" />
<delete dir="${src.dir}/org/w3c" />
<delete dir="${src.dir}/org/xml" />
<delete dir="${src.dir}/org/apache/xmlcommons" />
<delete file="${src.dir}/manifest.commons" />
</target>
<target name="autojavadocs"
depends="autojavadocs-1.4-or-higher-if,autojavadocs-non1.4-or-higher-if">
<echo message="autojavadocs is for automated build process, without dependencies"/>
</target>
<target name="check-using-java-1.4-or-higher">
<condition property="using-java-1.4-or-higher">
<not>
<or>
<equals arg1="${ant.java.version}" arg2="1.1"/>
<equals arg1="${ant.java.version}" arg2="1.2"/>
<equals arg1="${ant.java.version}" arg2="1.3"/>
</or>
</not>
</condition>
</target>
<target name="autojavadocs-1.4-or-higher-if" if="using-java-1.4-or-higher"
depends="check-using-java-1.4-or-higher">
<antcall target="autojavadocs-1.4-or-higher"/>
</target>
<target name="autojavadocs-non1.4-or-higher-if" unless="using-java-1.4-or-higher"
depends="check-using-java-1.4-or-higher">
<antcall target="autojavadocs-non1.4-or-higher"/>
</target>
<target name="autojavadocs-1.4-or-higher">
<!-- Ant ignores destdir arg if doclet is set, so must send to doclet in doclet subelement-->
<javadoc
additionalparam="-breakiterator"
destdir="${build.apidocs}"
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-in-docs} ${impl.version}"
doctitle="${Name-in-docs} ${impl.version}"
bottom="Copyright &#169; ${year} Apache XML Project. All Rights Reserved.">
<classpath refid="docs.class.path" />
<taglet name="xalan2jtaglet.XSLUsageTag" path="${taglet.jar}"/>
<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="Document Table Model (DTM)" packages="org.apache.xml.dtm*"/>
<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.xml.serialize*, org.apache.xalan.serialize"/>
<group title="SAX 2" packages="org.xml.sax*"/>
<group title="DOM 2" packages="org.w3c.dom*"/>
<group title="XSLTC Core"
packages="org.apache.xalan.xsltc*"/>
</javadoc>
</target>
<target name="autojavadocs-non1.4-or-higher">
<!-- Ant ignores destdir arg if doclet is set, so must send to doclet in doclet subelement-->
<javadoc
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-in-docs} ${impl.version}"
doctitle="${Name-in-docs} ${impl.version}"
bottom="Copyright &#169; ${year} Apache XML Project. All Rights Reserved.">
<classpath refid="docs.class.path" />
<doclet name="xalanjdoc.Standard" path="${doclet.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="Document Table Model (DTM)" packages="org.apache.xml.dtm*"/>
<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.xml.serialize*, org.apache.xalan.serialize"/>
<group title="SAX 2" packages="org.xml.sax*"/>
<group title="DOM 2" packages="org.w3c.dom*"/>
<group title="XSLTC Core"
packages="org.apache.xalan.xsltc*"/>
</javadoc>
</target>
<!-- =================================================================== -->
<!-- Various targets to clean the build tree -->
<!-- =================================================================== -->
<target name="distclean" depends="clean"
description="Clean everything, including dist/jar/docs/xsltc.*" >
<delete dir="${dist.dir}"/>
</target>
<target name="clean" depends="xsltc.clean"
description="Clean the ${build.dir} tree and doc outputs" >
<delete dir="${build.dir}"/>
<delete dir="${site.root}"/>
<delete dir="${xalan.apache.org.site.root}"/>
<delete quiet="true">
<fileset dir="${xdocs.style}" excludes="${xalanonly-styledocs}"/>
</delete>
<delete file="${xdocs.DONE.file}"/>
<delete file="${xdocs.XSLTCDONE.location}"/>
<delete file="${src.dir}/${xalan.reldir}/Version.java"/>
<delete file="${src.dir}/${serializer.reldir}/Version.java"/>
<delete file="${src.dir}/${xalan.reldir}/processor/XSLProcessorVersion.java"/>
<delete file="${xdocs.dir}/sources/entities.ent"/>
<!-- Also delete files expanded from ${xml-commons-srcs.tar.gz}-->
<delete dir="${src.dir}/javax" includeEmptyDirs="true" quiet="true"/>
<delete dir="${src.dir}/org/xml" includeEmptyDirs="true" quiet="true"/>
<delete dir="${src.dir}/org/w3c" includeEmptyDirs="true" quiet="true"/>
<delete dir="${src.dir}/xdocs/style/graphics" includeEmptyDirs="true" quiet="true"/>
<delete dir="${src.dir}/xdocs/style/resources" includeEmptyDirs="true" quiet="true"/>
</target>
<target name="xsltc.clean"
description="Clean miscellaneous generated sources from xsltc.compile" >
<delete file="${generated.xpathparser}" />
<delete file="${generated.xpathsym}" />
<delete file="${generated.xpathlexer}" />
</target>
<!-- =================================================================== -->
<!-- Install/Uninstall targets - not currently applicable -->
<!-- =================================================================== -->
<target name="install"><!-- 'Standardizing build.xml files' <bloritsch@apache.org> -->
<echo message="install target currently not supported in ${Name-in-docs}; try jar or dist instead"/>
</target>
<target name="uninstall"><!-- 'Standardizing build.xml files' <bloritsch@apache.org> -->
<echo message="uninstall target currently not supported in ${Name-in-docs}; try distclean instead"/>
</target>
<!-- =================================================================== -->
<!-- Creates a distribution that depends only on standard pieces -->
<!-- =================================================================== -->
<target name="dist" depends="build.std.dist,autodist"
description="Create a .zip/.tar.gz distribution module containing
all components without dependencies on non-standard
jars that are not part of the build system." >
<echo message="dist is human-useable target for distribution, with only standard dependencies"/>
</target>
<target name="dist-nodocs" depends="build.std.dist-nodocs,autodist-nodocs"
description="Create a .zip/.tar.gz distribution module containing
all components without dependencies on non-standard
jars that are not part of the build system." >
<echo message="dist-nodocs is human-useable target for distribution, with only standard dependencies and no documentation "/>
</target>
<!-- =================================================================== -->
<!-- Creates a complete distribution in which the xalan.jar contains -->
<!-- the interpretive, compiled and the common packages -->
<!-- =================================================================== -->
<target name="fulldist" depends="build.nonstd.dist,autodist"
description="Create a .zip/.tar.gz distribution module containing
all components.">
<echo message="fulldist is human-useable target for distribution, with all dependencies"/>
</target>
<target name="fulldist-nodocs" depends="build.nonstd.dist-nodocs,autodist-nodocs"
description="Create a .zip/.tar.gz distribution module containing
all components.">
<echo message="fulldist-nodocs is human-useable target for distribution, with all dependencies and no documentation"/>
</target>
<!-- =================================================================== -->
<!-- Creates a complete distribution with separate xalan.jar and -->
<!-- xsltc.jar. The common packages are contained in each jar. -->
<!-- =================================================================== -->
<target name="fulldist-separatejars" depends="build.nonstd-separatejars.dist,autodist"
description="Create a .zip/.tar.gz distribution module containing
all components.">
<echo message="fulldist is human-useable target for distribution, with all dependencies"/>
</target>
<target name="fulldist-separatejars-nodocs" depends="build.nonstd-separatejars.dist-nodocs,autodist-nodocs"
description="Create a .zip/.tar.gz distribution module containing
all components.">
<echo message="fulldist-separatejars-nodocs is human-useable target for distribution, with all dependencies and no documentation"/>
</target>
<target name="build.std.dist" depends="build.std.parts">
<property name="has.nonstd.parts" value="false"/>
</target>
<target name="build.std.dist-nodocs" depends="build.std.parts-nodocs">
<property name="has.nonstd.parts" value="false"/>
</target>
<target name="build.nonstd.dist" depends="build.std.parts,build.nonstd.parts">
<property name="has.nonstd.parts" value="true"/>
</target>
<target name="build.nonstd.dist-nodocs" depends="build.std.parts-nodocs,build.nonstd.parts">
<property name="has.nonstd.parts" value="true"/>
</target>
<target name="build.nonstd-separatejars.dist" depends="build.std-separatejars.parts,
build.nonstd-separatejars.parts">
<property name="has.nonstd.parts" value="true"/>
</target>
<target name="build.nonstd-separatejars.dist-nodocs" depends="build.std-separatejars.parts-nodocs,
build.nonstd-separatejars.parts">
<property name="has.nonstd.parts" value="true"/>
</target>
<target name="build.std.parts"
depends="jar,docs,javadocs,samples,extra.std.samples,xsltc.docs"/>
<target name="build.std.parts-nodocs"
depends="jar,samples,extra.std.samples"/>
<target name="build.std-separatejars.parts"
depends="xalan-interpretive.jar,xsltc.jar,
docs.nojardepends,javadocs.nojardepends,
samples.nojardepends,extra.std.samples.nojardepends,
xsltc.docs"/>
<target name="build.std-separatejars.parts-nodocs"
depends="xalan-interpretive.jar,xsltc.jar,
samples.nojardepends,extra.std.samples.nojardepends"/>
<target name="build.nonstd.parts" depends="extra.nonstd.samples"/>
<target name="build.nonstd-separatejars.parts" depends="extra.nonstd.samples.nojardepends"/>
<!-- =================================================================== -->
<!-- Autodist targets. Used by the distribution targets. -->
<!-- =================================================================== -->
<target name="autodist-mkdirs">
<mkdir dir="${dist.dir}"/>
<mkdir dir="${dist.dir}/lib"/>
<mkdir dir="${dist.dir}/samples"/>
<mkdir dir="${dist.dir}/src"/>
<mkdir dir="${dist.dir}/tools"/>
<mkdir dir="${dist.dir}/xdocs"/>
</target>
<target name="autodist-mkdirs-docs">
<mkdir dir="${dist.dir}/docs"/>
<mkdir dir="${dist.dir}/docs/apidocs"/>
</target>
<target name="autodist-copy-files">
<!-- Copy license files to distribution root -->
<copy todir="${dist.dir}">
<fileset dir=".">
<include name="LICENSE.txt,NOTICE.txt"/>
</fileset>
</copy>
<!-- Copy sources and source documentation -->
<copy todir="${dist.dir}/src">
<fileset dir="${src.dir}" excludes="javax/**,org/xml/**,org/w3c/**"/><!-- exclude jaxp, sax, dom -->
</copy>
<copy todir="${dist.dir}/xdocs">
<fileset dir="${xdocs.dir}"/>
</copy>
<!-- Copy samples -->
<copy todir="${dist.dir}/samples">
<fileset dir="${samples.dir}"/>
</copy>
<!-- Copy tools; used for source distribution -->
<copy todir="${dist.dir}/tools">
<fileset dir="${tools.dir}">
<include name="*.*"/>
</fileset>
</copy>
<!-- Copy runtime libs; used for source distribution -->
<copy todir="${dist.dir}/lib">
<fileset dir="${lib.dir}">
<include name="*.*"/>
</fileset>
</copy>
<!-- Copy built jars -->
<copy file="${build.dir}/xalansamples.jar" todir="${dist.dir}/samples"/>
<copy file="${build.dir}/xalanservlet.war" todir="${dist.dir}/samples"/>
<copy file="${build.dir}/xsltcapplet.jar" todir="${dist.dir}/samples"/>
<copy file="${build.dir}/xsltcbrazil.jar" todir="${dist.dir}/samples"
failonerror="${has.nonstd.parts}"/>
<copy file="${build.dir}/xsltcejb.jar" todir="${dist.dir}/samples"/>
<copy file="${build.dir}/xsltcservlet.jar" todir="${dist.dir}/samples"/>
<copy file="${build.xalan.jar}" todir="${dist.dir}" />
<!-- only copy the xsltc.jar file if it has been built -->
<copy todir="${dist.dir}">
<fileset dir="${build.dir}" includes="xsltc.jar"/>
</copy>
<copy file="${build.serializer.jar}" todir="${dist.dir}" />
<copy file="${xmlapis.jar}" todir="${dist.dir}" />
<copy file="${parser.jar}" todir="${dist.dir}" />
<copy todir="${dist.dir}">
<fileset dir="." includes="readme.html,KEYS,build.xml,build.sh,build.bat,commits.xml,
LICENSE.txt,NOTICE.txt"/>
</copy>
</target>
<target name="autodist-copy-files-docs">
<!-- Copy built documentation and javadoc -->
<copy todir="${dist.dir}/docs">
<fileset dir="${build.docs}"/>
</copy>
</target>
<target name="autodist-create-bin-packages">
<tar tarfile="${build.dir}/${dist.pkg}-bin.tar" >
<tarfileset dir="${build.dir}">
<patternset refid="bin-distro"/>
</tarfileset>
</tar>
<gzip src="${build.dir}/${dist.pkg}-bin.tar" zipfile="${build.dir}/${dist.pkg}-bin.tar.gz"/>
<delete file="${build.dir}/${dist.pkg}-bin.tar" />
<zip zipfile="${build.dir}/${dist.pkg}-bin.zip" >
<fileset dir="${build.dir}">
<patternset refid="bin-distro"/>
</fileset>
</zip>
</target>
<target name="autodist-create-bin-packages-nodocs">
<tar tarfile="${build.dir}/${dist.pkg}-bin-nodocs.tar" >
<tarfileset dir="${build.dir}">
<patternset refid="bin-distro-nodocs"/>
</tarfileset>
</tar>
<gzip src="${build.dir}/${dist.pkg}-bin-nodocs.tar" zipfile="${build.dir}/${dist.pkg}-bin-nodocs.tar.gz"/>
<delete file="${build.dir}/${dist.pkg}-bin-nodocs.tar" />
<zip zipfile="${build.dir}/${dist.pkg}-bin-nodocs.zip" >
<fileset dir="${build.dir}">
<patternset refid="bin-distro-nodocs"/>
</fileset>
</zip>
</target>
<target name="autodist-create-src-packages">
<tar tarfile="${build.dir}/${dist.pkg}-src.tar" >
<tarfileset dir="${build.dir}">
<patternset refid="src-distro"/>
<patternset refid="xsltc-deps-jars"/>
</tarfileset>
</tar>
<gzip src="${build.dir}/${dist.pkg}-src.tar" zipfile="${build.dir}/${dist.pkg}-src.tar.gz"/>
<delete file="${build.dir}/${dist.pkg}-src.tar" />
<zip zipfile="${build.dir}/${dist.pkg}-src.zip" >
<fileset dir="${build.dir}">
<patternset refid="src-distro"/>
<patternset refid="xsltc-deps-jars"/>
</fileset>
</zip>
</target>
<target name="autodist">
<echo message="autodist is for automated build processes, without dependencies"/>
<antcall target="autodist-mkdirs"/>
<antcall target="autodist-mkdirs-docs"/>
<antcall target="autodist-copy-files"/>
<antcall target="autodist-copy-files-docs"/>
<antcall target="autodist-create-bin-packages"/>
<antcall target="autodist-create-src-packages"/>
</target>
<target name="autodist-nodocs">
<echo message="autodist-nodocs is for automated build processes, without dependencies"/>
<antcall target="autodist-mkdirs"/>
<antcall target="autodist-copy-files"/>
<antcall target="autodist-create-bin-packages-nodocs"/>
<antcall target="autodist-create-src-packages"/>
</target>
<!-- =================================================================== -->
<!-- Creates the documentation tree for the xml.apache.org/xalan-j -->
<!-- website -->
<!-- =================================================================== -->
<target name="site" depends="prepare.docs,javadocs,xsltc.docs"
description="Build documentation for posting to the website" >
<mkdir dir="${site.dir}/apidocs"/>
<mkdir dir="${site.dir}/design"/>
<mkdir dir="${site.dir}/xsltc"/>
<java fork="yes"
classname="${doc.generator}"
classpathref="docs.class.path" >
<arg line="targetDirectory=${site.dir} ${site.book} ${xdocs.style}"/>
</java>
<!-- put xalan design doc in the site design subdir -->
<copy todir="${site.dir}/design">
<fileset dir="${build.docs}/design"/>
</copy>
<!-- put xsltc design doc in the site xsltc subdir -->
<copy todir="${site.dir}/xsltc">
<fileset dir="${build.docs}/xsltc"/>
</copy>
<!-- put in the javadoc -->
<copy todir="${site.dir}/apidocs">
<fileset dir="${build.apidocs}"/>
</copy>
</target>
<!-- =================================================================== -->
<!-- Creates the documentation tree for the xalan.apache.org website -->
<!-- =================================================================== -->
<target name="xalan.apache.org.site"
description="Build documentation for posting to the website" >
<mkdir dir="${xalan.apache.org.site.dir}"/>
<java fork="yes"
classname="${doc.generator}"
classpathref="docs.class.path" >
<arg line="targetDirectory=${xalan.apache.org.site.dir} ${xalan.apache.org.site.book} ${xdocs.style}"/>
</java>
</target>
<!-- =================================================================== -->
<!-- Compiles and runs mini/smoketest from xml-xalan\test, if present -->
<!-- =================================================================== -->
<property name="test.relpath" value="../test"/>
<target name="minitest" depends="prepare,minitest-run,tests-not-available"
description="Run the Minitest from xml-xalan/test" >
<!-- This target simply asks the minitest-run worker target to
actually have the Minitest run (by the test/build.xml file);
we then also call the tests-not-available target in case
the user never checked out the tests.
-->
</target>
<target name="minitest-run" if="tests-available" depends="jar" >
<echo message=" [minitest] Calling ${test.relpath}/build.xml to run the Minitest" />
<ant dir="${test.relpath}" antfile="build.xml" target="minitest.gump" >
</ant>
</target>
<target name="smoketest" depends="prepare,smoketest-run,tests-not-available"
description="Run Smoketests (Minitest, conf, harness) from xml-xalan/test" >
</target>
<target name="smoketest-run" if="tests-available" depends="jar" >
<echo message=" [minitest] Calling ${test.relpath}/build.xml to run the Smoketest" />
<ant dir="${test.relpath}" antfile="build.xml" target="smoketest.dev" >
</ant>
</target>
<target name="check" depends="smoketest"><!-- 'Standardizing build.xml files' <bloritsch@apache.org> -->
<echo message="Redirect to smoketest target"/>
</target>
<!-- Called from various testing targets if the test dir doesn't exist. -->
<target name="tests-not-available" unless="tests-available" >
<echo message=" [tests] The tests do not seem to be present in ${test.relpath}" />
<echo message=" [tests] You must have checked out from CVS to run the tests," />
<echo message=" [tests] it is not included in binary distributions." />
<echo message=" [tests] See http://xml.apache.org/xalan-j/test/ for more info." />
</target>
<!-- =================================================================== -->
<!-- Creates the xalan design document -->
<!-- =================================================================== -->
<target name="xalan-j2-design">
<java fork="yes"
classname="${doc.generator}"
classpathref="docs.class.path" >
<arg line="loaderConfig=sbk:/style/loaderdesign.xml targetDirectory=${build.dir}/docs/design/
${xdocs.dir}/sources/xalandesign.xml ${xdocs.style}"/>
</java>
</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="printerdocs" depends="prepare.docs">
<echo message="NOTICE: requires fop.jar and xml.jar on the classpath"/>
<java fork="yes"
classname="${xalan.cmdline.class}"
classpathref="docs.class.path" >
<arg line="-xsl ${xdocs.dir}/sources/xalan-collate.xsl
-out xdocs/sources/xalan/xalan-collate.xml"/>
</java>
<!-- Transform collation into Formatting Objects
(with a little work on links along the way) -->
<java fork="yes"
classname="${xalan.cmdline.class}"
classpathref="docs.class.path" >
<arg line="-in ${xdocs.dir}/sources/xalan/xalan-collate.xml
-param resourceFile '../../sources/xalan/resources.xml'
-param project ${Name-in-docs}
-xsl ${xdocs.style}/stylesheets/xml2fo.xsl
-out build/docs/xalan-collate.fo"/>
</java>
<!-- Use FOP to generate a pdf file (classpath may need updating! -sc 18-Apr-01)-->
<java fork="yes"
classname="org.apache.fop.apps.CommandLine"
classpath="${java.class.path}:${build.xalan.jar}:${bin.dir}/fop.jar:${bin.dir}/w3c.jar">
<arg line="${build.docs}/xalan-collate.fo build/docs/xalan.pdf"/>
</java>
</target>
<!-- =================================================================== -->
<!-- Build XSLTC design documentation. Eventually intend to incorporate -->
<!-- XSLTC into the Xalan book. -->
<!-- =================================================================== -->
<target name="xsltc.prepare.docs" depends="prepare.docs.nojardepends">
<mkdir dir="${build.docs}/xsltc"/>
<!--
<echo message="Transform xsltc_todo.xml and put the result in ${build.docs}/xsltc"/>
<java fork="yes" classname="${xalan.cmdline.class}">
<classpath refid="docs.class.path" />
<arg line="-in xsltc_todo.xml -xsl todo.xsl -out build/docs/xsltc/todo.html"/>
</java> -->
</target>
<target name="xsltc.docs" depends="xsltc.prepare.docs">
<echo message="Build the XSLTC Architectural documentation"/>
<java fork="yes"
classname="${doc.generator}"
classpathref="docs.class.path" >
<arg line="targetDirectory=${build.docs}/xsltc ${xdocs.dir}/sources/xsltc.xml ${xdocs.style}"/>
</java>
<copy todir="${build.docs}/xsltc"
file="${xdocs.dir}/sources/xsltc/README.xslt" />
<copy todir="${build.docs}/xsltc"
file="${xdocs.dir}/sources/xsltc/README.xsltc" />
</target>
<!-- pack all doc for transfer to website -->
<target name="pack.docs">
<!--tar tarfile="./build/xalan-j-docs.tar" basedir="./xml-site/target/xalan-j" includes="**"/>
<gzip src="./build/xalan-j-docs.tar" zipfile="./build/xalan-j-docs.tar.gz"/-->
<zip zipfile="./build/xalan-j-docs.zip" basedir="./xml-site/target/xalan-j" includes="**"/>
</target>
<!-- ####################################################
# START OF SECTION TO BUILD STAND-ALONE SERIALIZER #
#################################################### -->
<!-- try not to use other properties directly when building the serializer -->
<!-- either create new values, or copy, just in case we separate into -->
<!-- a totally new build.xml file -->
<property name="serializer.build.debug" value="${build.debug}" />
<!-- PROPERTIES TO MAKE THE SOURCE DISTRIBUTION ========================== -->
<property name="serializer.name" value="serializer" />
<property name="serializer.version" value="${version}" />
<property name="serializer.dist.file" value="${serializer.name}-j_${serializer.version}"/>
<property name="serializer.dist.dir" value="${serializer.build.dir}/${serializer.dist.file}"/>
<!-- patternset for source distribution packages -->
<patternset id="serializer-src-distro" >
<!-- some license and legal stuff -->
<include name="${serializer.dist.file}/LICENSE.txt"/>
<include name="${serializer.dist.file}/NOTICE.txt"/>
<include name="${serializer.dist.file}/KEYS"/>
<!-- The build stuff that uses Ant and this file itself, build.xml
this is getting into a strange loop but the source distribution
needs to build, and it uses this file, build.xml to do so ... -->
<include name="${serializer.dist.file}/build.bat"/>
<include name="${serializer.dist.file}/build.sh"/>
<include name="${serializer.dist.file}/build.xml"/>
<!-- The source code that the source distribution would build -->
<include name="${serializer.dist.file}/src/${serializer.reldir}/**/*.java" />
<include name="${serializer.dist.file}/src/${serializer.reldir}/**/*.properties" />
<include name="${serializer.dist.file}/src/${serializer.manifest.basename}" />
<!-- We need Ant in order to run build.xml in the source distribution -->
<include name="${serializer.dist.file}/tools/ant.jar"/>
<include name="${serializer.dist.file}/tools/antRun"/>
<include name="${serializer.dist.file}/tools/antRun.bat"/>
<!-- The serializer needs this jar in order to build -->
<include name="${serializer.dist.file}/xml-apis.jar"/>
<!-- Ant needs an XML parser in order to read in the build.xml, so it
can even do the build ... this is a strange loop ... -->
<include name="${serializer.dist.file}/xercesImpl.jar"/>
</patternset>
<!-- patternset for binary distribution packages ... if needed
<patternset id="serializer-bin-distro" >
<include name="${serializer.dist.file}/LICENSE.txt"/>
<include name="${serializer.dist.file}/NOTICE.txt"/>
<include name="${serializer.dist.file}/KEYS"/>
<include name="${serializer.dist.file}/${serializer.name}.jar"/>
<include name="${serializer.dist.file}/${xmlapis.jar.name}"/>
<include name="${serializer.dist.file}/${parser.jar.name}"/>
</patternset>
-->
<!-- =================================================================== -->
<!-- Creates the Serializer jar -->
<!-- =================================================================== -->
<target name="serializer.jar"
depends="serializer.prepare,serializer.compile"
description="Build the serializer and created serializer.jar" >
<!-- Copy over the manifest, with filtering (for version number) -->
<filter token="impl.version" value="${serializer.impl.version}"/>
<filter token="java.version" value="${serializer.java.version}"/>
<filter token="java.vendor" value="${serializer.java.vendor}"/>
<copy todir="${serializer.build.dir}" file="${serializer.manifest}" filtering="true"/>
<jar jarfile="${build.serializer.jar}"
manifest="${serializer.build.dir}/${serializer.manifest.basename}"
basedir="${serializer.build.classes}" >
<patternset><!-- relative to jar/@basedir -->
<include name="${serializer.reldir}/**/*" />
</patternset>
</jar>
</target>
<target name="serializer.prepare">
<mkdir dir="${serializer.build.dir}"/>
<mkdir dir="${serializer.build.classes}"/>
</target>
<target name="serializer.compile">
<echo message="Compiling the Serializer" />
<javac srcdir="${serializer.src.dir}"
destdir="${serializer.build.classes}"
debug="${serializer.build.debug}" >
<include name="${serializer.reldir}/**/*.java" />
<classpath refid="compile.class.path" />
<bootclasspath refid="xslt.boot.class.path" />
</javac>
<!-- Copy needed properties, resource, etc. files to be put into .jar file -->
<copy todir="${serializer.build.classes}">
<fileset dir="${serializer.src.dir}" includes="${serializer.reldir}/**/*.properties"/>
</copy>
</target>
<!-- =================================================================== -->
<!-- Creates the API documentation -->
<!-- =================================================================== -->
<target name="serializer.javadocs"
description="Build the Javadocs for the Serializer" >
<echo message="javadocs is human-usable target with dependencies"/>
<mkdir dir="${build.docs}"/>
<mkdir dir="${build.apidocs}"/>
<antcall target="serializer.autojavadocs"/>
</target>
<target name="serializer.autojavadocs"
depends="serializer.autojavadocs-1.4-or-higher-if,serializer.autojavadocs-non1.4-or-higher-if">
<echo message="serializer.autojavadocs is for automated build process, without dependencies"/>
</target>
<target name="serializer.autojavadocs-1.4-or-higher-if" if="using-java-1.4-or-higher"
depends="check-using-java-1.4-or-higher">
<antcall target="serializer.autojavadocs-1.4-or-higher"/>
</target>
<target name="serializer.autojavadocs-non1.4-or-higher-if" unless="using-java-1.4-or-higher"
depends="check-using-java-1.4-or-higher">
<antcall target="serializer.autojavadocs-non1.4-or-higher"/>
</target>
<target name="serializer.autojavadocs-1.4-or-higher">
<!-- Ant ignores destdir arg if doclet is set, so must send to doclet in doclet subelement-->
<javadoc
additionalparam="-breakiterator"
destdir="${build.apidocs}"
public="true"
sourcepath="${src.dir}"
packagenames="org.apache.*"
author="true"
version="true"
use="true"
windowtitle="${Name-in-docs} Serializer ${impl.version}"
doctitle="${Name-in-docs} Serializer ${impl.version}"
bottom="Copyright &#169; ${year} Apache XML Project. All Rights Reserved.">
<classpath refid="docs.class.path" />
<taglet name="xalan2jtaglet.XSLUsageTag" path="${taglet.jar}"/>
<group title="Serializer" packages="org.apache.xml.serialize*"/>
</javadoc>
</target>
<target name="serializer.autojavadocs-non1.4-or-higher">
<!-- Ant ignores destdir arg if doclet is set, so must send to doclet in doclet subelement-->
<javadoc
public="true"
sourcepath="${src.dir}"
packagenames="org.apache.*"
author="true"
version="true"
use="true"
windowtitle="${Name-in-docs} Serializer ${impl.version}"
doctitle="${Name-in-docs} Serializer ${impl.version}"
bottom="Copyright &#169; ${year} Apache XML Project. All Rights Reserved.">
<classpath refid="docs.class.path" />
<doclet name="xalanjdoc.Standard" path="${doclet.jar}">
<param name="-d" value="${build.apidocs}"/>
</doclet>
<group title="Serializer" packages="org.apache.xml.serialize*"/>
</javadoc>
</target>
<!-- =================================================================== -->
<!-- Create the serializer source distribution -->
<!-- =================================================================== -->
<target name="serializer-dist"
depends="serializer.jar"
description="Build the serializer source distribution .tar and .zip">
<antcall target="serializer-autodist-mkdirs"/>
<antcall target="serializer-autodist-copy-files"/>
<!-- <antcall target="serializer-autodist-create-bin-packages"/> -->
<antcall target="serializer-autodist-create-src-packages"/>
</target>
<target name="serializer-autodist-mkdirs">
<echo message="Serializer: making distribution directories" />
<mkdir dir="${serializer.dist.dir}"/>
<mkdir dir="${serializer.dist.dir}/src"/>
<mkdir dir="${serializer.dist.dir}/tools"/>
</target>
<target name="serializer-autodist-copy-files">
<!-- Copy bin directory, which includes preexisting checked-in .jar files -->
<!-- <copy todir="${serializer.dist.dir}/bin">
<fileset dir="${serializer.bin.dir}" />
</copy> -->
<echo message="Serializer: copy source files to ${serializer.dist.dir}/src" />
<echo message=" ... from ${serializer.src.dir}/${serializer.reldir}" />
<!-- Copy sources -->
<copy todir="${serializer.dist.dir}/src/${serializer.reldir}">
<fileset dir="${serializer.src.dir}/${serializer.reldir}"/>
</copy>
<!-- Copy the manifest -->
<copy file="${serializer.src.dir}/${serializer.manifest.basename}"
todir="${serializer.dist.dir}/src" />
<!-- Copy built jars -->
<copy file="${build.serializer.jar}" todir="${serializer.dist.dir}" />
<!-- Copy runtime jars -->
<copy file="${lib.dir}/${xmlapis.jar.name}" todir="${serializer.dist.dir}" />
<copy file="${lib.dir}/${parser.jar.name}" todir="${serializer.dist.dir}" />
<!-- Copy licenses -->
<copy todir="${serializer.dist.dir}">
<fileset dir="."
includes="LICENSE.txt,NOTICE.txt"/>
</copy>
<!-- Copy tools -->
<copy todir="${serializer.dist.dir}/tools">
<fileset dir="./tools" includes="ant*"/>
</copy>
<copy todir="${serializer.dist.dir}">
<fileset dir="." includes="KEYS,build.xml,build.sh,build.bat"/>
</copy>
</target>
<target name="serializer-autodist-create-bin-packages">
<tar tarfile="${serializer.build.dir}/${serializer.dist.file}-bin.tar" >
<tarfileset dir="${serializer.build.dir}">
<patternset refid="serializer-bin-distro"/>
</tarfileset>
</tar>
<gzip src="${serializer.build.dir}/${serializer.dist.file}-bin.tar"
zipfile="${serializer.build.dir}/${serializer.dist.file}-bin.tar.gz"/>
<!--
<delete file="${serializer.build.dir}/${serializer.dist.file}-bin.tar" />
-->
<zip zipfile="${serializer.build.dir}/${serializer.dist.file}-bin.zip" >
<fileset dir="${serializer.build.dir}">
<patternset refid="serializer-bin-distro"/>
</fileset>
</zip>
</target>
<target name="serializer-autodist-create-src-packages">
<tar tarfile="${serializer.build.dir}/${serializer.dist.file}-src.tar" >
<tarfileset dir="${serializer.build.dir}">
<patternset refid="serializer-src-distro"/>
</tarfileset>
</tar>
<gzip src="${serializer.build.dir}/${serializer.dist.file}-src.tar" zipfile="${serializer.build.dir}/${serializer.dist.file}-src.tar.gz"/>
<delete file="${serializer.build.dir}/${serializer.dist.file}-src.tar" />
<zip zipfile="${serializer.build.dir}/${serializer.dist.file}-src.zip" >
<fileset dir="${serializer.build.dir}">
<patternset refid="serializer-src-distro"/>
</fileset>
</zip>
</target>
<!-- ##################################################
# END OF SECTION TO BUILD STAND-ALONE SERIALIZER #
################################################## -->
</project>