blob: 04157935f2e160603e887cad6e2cc136df25d436 [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<!-- ===================================================================
Build file for XPath Api
Sample usage: build javacc test -Dtest.expr="a/b /a/b /a|b"
Setup instructions:
Before running an Ant build, you must
- set the JAVA_HOME environment variable to the JDK root directory
Build Instructions:
To build, run
ant [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.
Authors:
Shane Curcuru <shane_curcuru@lotus.com>
Scott Boag <scott_boag@us.ibm.com>
Lionel Villard <villard@us.ibm.com>
Copyright:
Copyright (c) 1999-2003 The Apache Software Foundation.
$Id$
==================================================================== -->
<project name="XPathAPI" default="javacc" basedir=".">
<property name="year" value="2003"/>
<property name="version" value="0.5"/>
<property name="build.dir" value="../build"/>
<property name="build.classes" value="${build.dir}/classes"/>
<property name="build.debug" value="on"/>
<!-- Note bin.dir assumes we're using Xalan's checked-in copy of ant.jar -->
<property name="bin.dir" value="${ant.home}/bin"/>
<property name="jarfilename" value="xpath.jar"/>
<property name="spec" value="xpath"/>
<property name="grammar.dir" value="grammar"/>
<property name="tree.xsl" value="${grammar.dir}/etree.xsl"/>
<property name="src.dir" value="src2"/>
<property name="xpath.dir" value="org/apache/xpath"/>
<property name="xml.dir" value="org/apache/xml"/>
<property name="parser.dir" value="${src.dir}/${xpath.dir}/impl/parser"/>
<property name="parser.package" value="org.apache.xpath.impl.parser"/>
<property name="test.class" value="org.apache.xpath.test.TestAST"/>
<property name="test.expr" value=""/>
<property name="docs.dir" value="build/docs"/>
<path id="classpath">
<!-- This should include all .jars needed to compile, including
a checked-in copy of xalan.jar and the JavaCC.zip file -->
<fileset dir="${bin.dir}" includes="*.jar"/>
<fileset dir="${bin.dir}" includes="*.zip"/>
</path>
<path id="test.classpath">
<path refid="classpath" />
<fileset dir="${build.dir}" includes="*.jar"/>
</path>
<path id="docs.class.path">
<pathelement location="${build.dir}/${jarfilename}" />
<pathelement path="${classpath}" />
</path>
<target name="clean"
description="Clean up classfiles and ${jarfilename}">
<delete dir="${build.classes}"/>
<delete file="${build.dir}/${jarfilename}"/>
</target>
<target name="clean-gen" depends="clean"
description="Clean up generated files as well as compiled ones">
<delete file="${grammar.dir}/custom-xpath-grammar.xml"/>
<delete file="${parser.dir}/xpath-grammar.jj"/>
<delete file="${parser.dir}/xpath-grammar.jjt"/>
<delete>
<fileset dir="${parser.dir}" includes="XPath.java,XPathConstants.java,XPathTreeConstants.java,XPathTokenManager.java,XPathVisitor.java"/>
</delete>
</target>
<target name="init">
<echo message="Preset classpath is ${java.class.path}; ant.home is ${ant.home}"/>
<mkdir dir="${build.classes}"/>
<mkdir dir="${parser.dir}"/>
</target>
<!-- ==== Code generation targets ==== -->
<target name="gen-grammar" depends="init"
description="[1]Use style task to turn grammar into jjt files">
<!-- Transform spec-defined xpath-grammar.xml into our custom-xpath-grammar.xml -->
<style style="${grammar.dir}/customize.xsl" in="${grammar.dir}/xpath-grammar.xml"
out="${grammar.dir}/custom-xpath-grammar.xml" force="yes" extension=".xml"
destdir="${grammar.dir}" classpathref="classpath" />
<!-- Transform our custom-xpath-grammar.xml into jjtree input xpath-grammar.jjt -->
<style style="${tree.xsl}" in="${grammar.dir}/custom-xpath-grammar.xml"
out="${parser.dir}/xpath-grammar.jjt" force="yes" extension=".jjt"
destdir="${spec}" classpathref="classpath" >
<param name="spec" expression="${spec}"/>
<param name="package-name" expression="${parser.package}"/>
</style>
</target>
<target name="jjtree" depends="gen-grammar"
description="[2]Use JJTree to create tree sources">
<!-- JJTree converts .jjt file into .jj file for input to javacc -->
<jjtree target="${parser.dir}/xpath-grammar.jjt"
javacchome="${bin.dir}"
outputdirectory="${parser.dir}"
static="false"/>
</target>
<target name="javacc" depends="jjtree"
description="[3]Compile compile the tree sources">
<!-- javacc converts .jj file into source .java files -->
<javacc target="${parser.dir}/xpath-grammar.jj"
javacchome="${bin.dir}"
debugtokenmanager="${debug}"
debugparser="${debug}"
sanitycheck="true"
static="false"
unicodeinput="${unicodeinput}"
javaunicodeescape="${unicodeinput}"
outputdirectory="${parser.dir}"/>
</target>
<!-- ==== Code compilation and jar targets ==== -->
<target name="compile" depends="init"
description="[4]Compile all sources, including generated parser">
<javac srcdir="${src.dir}" destdir="${build.classes}" debug="${build.debug}">
<classpath refid="classpath"/>
</javac>
</target>
<target name="jar" depends="compile"
description="[5]Jar standalone XPath engine into ${jarfilename}">
<jar jarfile="${build.dir}/${jarfilename}">
<fileset dir="${build.classes}"
includes="${xpath.dir}/**,${xml.dir}/**,${xpath.dir}/test/TestSamples.xml"/>
</jar>
</target>
<target name="test" depends="jar"
description="[last]Run a simple test of XPath AST creation">
<java fork="yes" classname="${test.class}" >
<classpath refid="test.classpath" />
<arg line="${test.expr}"/>
</java>
</target>
<target name="exportsrc" depends="jar"
description="Create exportable files for inclusion in other projects (experimental!)">
<zip zipfile="${build.dir}/xpath-src.zip" >
<zipfileset dir="${src.dir}">
</zipfileset>
</zip>
</target>
<!-- ==== Documentation targets ==== -->
<target name="apidocs" depends="jar" description="[6]Build API documentation">
<mkdir dir="${docs.dir}"/>
<javadoc sourcepath="${src.dir}" destdir="${docs.dir}"
public="true"
packagenames="org.apache.xml,org.apache.xpath.*,org.apache.xpath.impl.*"
author="true"
version="true"
use="true"
windowtitle="XPath API"
doctitle="XPath API 2.0 Version ${version}"
bottom="Copyright &#169; ${year} Apache XML Project. All Rights Reserved.">
<classpath refid="docs.class.path" />
<group title="Namespace Support" packages="org.apache.xml"/>
<group title="XPath Public API" packages="org.apache.xpath:org.apache.xpath.expression"/>
<group title="XPath Implementation API" packages="org.apache.xpath.datamodel:org.apache.xpath.impl*"/>
</javadoc>
</target>
</project>