| <!-- |
| // 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> |