<!-- // This file is part of TagSoup and is Copyright 2002-2008 by John Cowan. // // TagSoup is licensed under the Apache License, // Version 2.0. You may obtain a copy of this license at // http://www.apache.org/licenses/LICENSE-2.0 . You may also have // additional legal rights not granted by this license. // // TagSoup is distributed in the hope that it will be useful, but // unless required by applicable law or agreed to in writing, TagSoup // is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS // OF ANY KIND, either express or implied; not even the implied warranty // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --> <project name="tagsoup" default="dist"> <!-- generic properties --> <property file="etc/build/build.properties"/> <!-- additional tasks --> <taskdef file="etc/build/taskdefs.txt" classpath="bin"/> <available property="transformer.factory" classname="com.icl.saxon.TransformerFactoryImpl" value="com.icl.saxon.TransformerFactoryImpl"/> <available property="transformer.factory" classname="net.sf.saxon.TransformerFactoryImpl" value="net.sf.saxon.TransformerFactoryImpl"/> <available property="transformer.factory" classname="org.apache.xalan.processor.TransformerFactoryImpl" value="org.apache.xalan.processor.TransformerFactoryImpl"/> <available property="transformer.factory" classname="com.sun.org.apache.xalan.processor.TransformerFactoryImpl" value="com.sun.org.apache.xalan.processor.TransformerFactoryImpl"/> <!-- some folder settings --> <property name="bin" value="bin"/> <property name="src" value="src"/> <property name="build" value="build"/> <property name="dist" value="dist"/> <property name="docs" value="docs"/> <property name="tmp" value="tmp"/> <!-- initialize project --> <target name="init" description="Init project."> <tstamp/> </target> <!-- ensure needed folders are available --> <target name="prepare" description="Set up folders."> <mkdir dir="${build}"/> <mkdir dir="${tmp}"/> </target> <!-- Build a distribution jar file --> <target name="dist" depends="init,compile" description="Build a binary distribution file."> <antcall target="jar-release"> <param name="buildDir" value="build"/> <param name="version" value="${tagsoup.version}"/> </antcall> </target> <target name="jar-release" depends="init" description="Build a release jar file."> <mkdir dir="${dist}/lib" /> <jar jarfile="${dist}/lib/tagsoup-${tagsoup.version}.jar" basedir="${buildDir}"> <manifest> <attribute name="Version" value="${tagsoup.version}"/> <attribute name="Main-Class" value="org.ccil.cowan.tagsoup.CommandLine"/> </manifest> </jar> </target> <!-- compile java sources --> <target name="compile" depends="init,prepare,build-parser" description="Compile java classes."> <javac source="1.4" target="1.4" srcdir="${src}/java" destdir="${build}" deprecation="on" verbose="off" debug="on"> <src path="${src}/java"/> <src path="${tmp}/src"/> </javac> </target> <!-- prepare generation of the parser classes based on the definition files --> <target depends="init,prepare" description="Prepare generation of parser classes." name="prepare-parser"> <echo> Using ${transformer.factory} as the TransformerFactory </echo> <xslt in="${src}/definitions/html.tssl" out="${tmp}/HTMLModels.i" style="tssl/tssl-models.xslt"> <factory name="${transformer.factory}"/> </xslt> <xslt in="${src}/definitions/html.tssl" out="${tmp}/HTMLSchema.i" style="tssl/tssl.xslt"> <factory name="${transformer.factory}"/> </xslt> <xslt in="${src}/definitions/html.stml" out="${tmp}/HTMLScanner.i" style="stml/stml.xslt"> <factory name="${transformer.factory}"/> </xslt> </target> <!-- patch the parser class files --> <target name="build-parser" depends="prepare-parser" description="Generate parser class files."> <property name="parser.pkg-path" value="org/ccil/cowan/tagsoup"/> <mkdir dir="${tmp}/src/${parser.pkg-path}"/> <antcall target="patch-file"> <param name="file-pref" value="HTMLModels"/> <param name="token" value="MODEL_DEFINITIONS"/> </antcall> <antcall target="patch-file"> <param name="file-pref" value="HTMLSchema"/> <param name="token" value="SCHEMA_CALLS"/> </antcall> <antcall target="patch-file"> <param name="file-pref" value="HTMLScanner"/> <param name="token" value="STATE_TABLE"/> </antcall> </target> <!-- patch one parser class file --> <target name="patch-file" depends="" description="Patch a parser class file."> <copy file="${src}/templates/${parser.pkg-path}/${file-pref}.java" toDir="${tmp}/src/${parser.pkg-path}"/> <loadfile property="patch" srcFile="${tmp}/${file-pref}.i"/> <replace file="${tmp}/src/${parser.pkg-path}/${file-pref}.java" token="@@${token}@@" value="${patch}"/> </target> <!-- clean up the mess --> <target name="clean" description="Clean up folders."> <delete dir="${build}"/> <delete dir="${tmp}"/> <delete dir="${docs}"/> <delete dir="${dist}"/> </target> <!-- generate javadoc for the java classes --> <target name="docs-api" depends="init" description="Generate javadoc documentation."> <mkdir dir="${docs}/api"/> <javadoc packagenames="org.*" sourcepath="${src}/java" destdir="${docs}/api" use="true" windowtitle="TagSoup ${tagsoup.version} API"> <doctitle><![CDATA[<h1>TagSoup Package Documentation</h1>]]></doctitle> <bottom><![CDATA[<em>Licence</em>: <strong>Academic Free License 3.0</strong> and/or <strong>GPL 2.0</strong>]]></bottom> </javadoc> </target> </project>