blob: cf4f5123446f2917324cfe0e087ed1b028235080 [file] [log] [blame]
<?xml version="1.0"?>
<!DOCTYPE project [ <!ENTITY desc SYSTEM "../style/description.xml"> ]>
<!--
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.
-->
<project name="manual" default="en" basedir=".">
<!-- for a description type 'build -projecthelp' -->
&desc;
<!-- load prerequisites and dependency defs -->
<import file="prereq.xml" />
<import file="deps.xml" />
<import file="../style/lang-targets.xml" />
<!-- #################################################################### -->
<!-- build targets -->
<!-- #################################################################### -->
<target name="dist-all" description="- builds all, zip-all and war-all"
depends="all, zip-all, war-all" />
<pathconvert
property="ap.docroot"
dirsep="${file.separator}"
pathsep=" ">
<path><pathelement path="..${file.separator}" /></path>
</pathconvert>
<!-- help -->
<!-- ==================================================================== -->
<target name="help" description="- use `build -projecthelp` instead!">
<echo message="Try `build -projecthelp`" />
</target>
<!-- typemaps -->
<!-- ==================================================================== -->
<target name="typemaps" depends="metafiles" unless="typemaps.done"
description="- (re-)builds all typemap files if necessary">
<echo message="checking typemaps..." />
<dependencies.typemaps />
<!-- iterate over all desired files -->
<xslt style="../style/xsl/typemap.xsl"
basedir="${ap.docroot}" destdir="${ap.docroot}"
includes="**/*.xml.meta">
<patternset refid="excludes" />
<patternset refid="scratch" />
<mapper type="glob" from="*.xml.meta" to="*.html" />
<xmlcatalog refid="w3c-catalog" />
</xslt>
<echo message="typemaps are up to date." />
<property name="typemaps.done" value="yes!" />
</target>
<!-- convenience rewrite map -->
<!-- ==================================================================== -->
<target name="convmap" depends="modulelists" unless="convmap.done"
description="- (re-)builds convenience map file if necessary">
<echo message="checking convenience map ..." />
<!-- <dependencies.convmap /> -->
<xslt style="../style/xsl/convmap.xsl"
in="${ap.docroot}/mod/allmodules.xml"
out="${ap.docroot}/convenience.map">
<xmlcatalog refid="w3c-catalog" />
</xslt>
<echo message="convenience map is up to date." />
<property name="convmap.done" value="yes!" />
</target>
<!-- XHTML validation. -->
<!-- The resulting output is intended to be valid (X)HTML. Check it from -->
<!-- time to time... -->
<!-- ==================================================================== -->
<target name="validate-xhtml" description="- validates all (X)HTML result files">
<xmlvalidate lenient="false" failonerror="false" warn="true">
<xmlcatalog refid="w3c-catalog" />
<fileset dir="../" includes="**/*.html.*">
<patternset refid="scratch" />
</fileset>
</xmlvalidate>
</target>
<!-- metafiles maintenance target. -->
<!-- If you're confused how to edit the *.xml.meta files, just run -->
<!-- `build metafiles`, which checks and possibly rebuilds them -->
<!-- automatically for you. -->
<!-- ==================================================================== -->
<target name="metafiles" depends="modulelists" unless="metafiles.done"
description="- (re-)builds all *.xml.meta files if necessary">
<dependencies.perlcheck />
<if><equals arg1="${perl.available}" arg2="yes" /><then>
<echo message="checking metafiles..." />
<delete>
<fileset dir="../" includes=".outdated*" />
</delete>
<apply executable="perl" dir="../" parallel="false" failonerror="true">
<env key="DOCROOT" value="${ap.docroot}" />
<arg value="build/lib/metafile.pl" />
<arg value="${inputext.en}" />
<srcfile />
<dirset dir="../">
<patternset refid="scratch" />
<patternset refid="baddirs" />
</dirset>
</apply>
<echo message="metafiles are up to date." />
</then>
<else>
<echo message="skipping metafiles (requires a working perl installation in PATH)." />
</else></if>
<property name="metafiles.done" value="yes!" />
</target>
<!-- modulelists maintenance target. -->
<!-- If you're confused how to edit the allmodules.xml* files, just run -->
<!-- `build modulelists`, which checks and possibly rebuilds them -->
<!-- automatically for you. It's not invoked by default, because it -->
<!-- needs a perl installation in PATH. -->
<!-- ==================================================================== -->
<target name="modulelists" unless="modulelists.done"
description="- (re-)builds all allmodules.xml* files if necessary">
<dependencies.perlcheck />
<if><equals arg1="${perl.available}" arg2="yes" />
<then>
<echo message="checking modulelists..." />
<exec dir="../" executable="perl">
<env key="DOCROOT" value="${ap.docroot}" />
<arg line="build/lib/allmodules.pl" />
</exec>
<echo message="modulelists are up to date." />
</then>
<else>
<echo message="skipping modulelists (requires a working perl installation in PATH)." />
</else>
</if>
<property name="modulelists.done" value="yes!" />
</target>
<!-- Pack the buildtools -->
<!-- -->
<!-- This target is mostly useful for the website maintainers to provide -->
<!-- a zipped package of the build tool stuff for users without cvs. -->
<!-- ==================================================================== -->
<target name="tools" description="- builds the zipped tool package">
<dependencies.tools />
<!-- Convenience for windows users -->
<copy file="../_tools/lib/LICENSE" tofile="../_tools/lib/LICENSE.txt" />
<copy file="../_tools/lib/README" tofile="../_tools/lib/README.txt" />
<copy file="../_tools/lib/NOTICE" tofile="../_tools/lib/NOTICE.txt" />
<!-- newline issues -->
<fixcrlf srcdir="../_tools" eol="crlf" encoding="iso-8859-1"
includes="**/*.txt **/*.bat" />
<fixcrlf srcdir="../_tools" eol="lf" encoding="iso-8859-1"
includes="**/*.sh **/*.pl
**/*.pm **/README
**/LICENSE **/NOTICE
**/*.xml **/*.dtd **/*.ent" />
<!-- get the current date -->
<tstamp>
<format property="tools.date" pattern="yyyy-MM-dd" timezone="UTC" />
</tstamp>
<!-- and zzzzzzip -->
<delete file="${distdir}/tools-${tools.date}.zip" />
<zip destfile="${distdir}/tools-${tools.date}.zip"
compress="true"
encoding="ASCII">
<zipfileset prefix="build"
dir="../_tools"
includes="**/*">
</zipfileset>
</zip>
</target>
<!-- clean up scratch directories and files -->
<!-- -->
<target name="clean"
description="- cleans up most generated files and directories">
<delete dir="../_chm" />
<delete dir="../_off" />
<delete dir="../_tools" />
<delete dir="../_dist" />
<delete dir="../style/_generated" />
<delete>
<fileset dir="../" includes="**/*.tex **/*.aux **/*.out **/*.log
**/*.pdf **/*.toc .outdated*
mod/.translated.*" />
</delete>
</target>
<!-- clean up scratch directories and files -->
<!-- -->
<target name="extraclean" depends="clean"
description="- 'clean' plus the perl generated files (metafiles)">
<delete>
<fileset dir="../" includes="**/*.xml.meta mod/allmodules.xml*" />
</delete>
<!-- this forces a rebuild of all files next time -->
<touch>
<fileset dir="../style/lang" includes="*.xml" />
</touch>
</target>
<!-- bootstrap -->
<!-- Boostrap languages -->
<!-- ==================================================================== -->
<target name="bootstrap"
description="- boostraps languages from style/lang/*.xml">
<echo message="starting bootstrap..." />
<dependencies.bootstrap />
<!-- Look for the languages -->
<property name="styledir" location="../style/" />
<property name="langdir" location="${styledir}/lang" />
<fileset dir="${langdir}" includes="**/*.xml" id="languagefiles" />
<pathconvert pathsep=" " dirsep="" refid="languagefiles"
property="languages">
<mapper type="glob" from="${langdir}/*.xml" to="*" />
</pathconvert>
<echo message="Found languages: ${languages}" />
<!-- create basic styles -->
<xslt style="../style/xsl/language.xsl" force="yes"
basedir="${langdir}" destdir="${styledir}" includes="*.xml">
<mapper type="glob" from="*.xml" to="manual.*.xsl"/>
<param name="type" expression="manual" />
</xslt>
<!-- create language list (in is unused -> arbitrary xml file) -->
<xslt in="../style/lang/en.xml"
out="../style/_generated/list.xml"
style="../style/xsl/language.xsl" force="yes">
<param name="type" expression="list" />
<param name="langs" expression="${languages}" />
</xslt>
<!-- create typemap designation data -->
<xslt in="../style/_generated/list.xml"
out="../style/xsl/util/designations.xml"
style="../style/xsl/language.xsl">
<param name="type" expression="design" />
</xslt>
<!-- create language targets -->
<xslt in="../style/_generated/list.xml"
out="../style/lang-targets.xml"
style="../style/xsl/language.xsl">
<param name="type" expression="targets" />
</xslt>
<!-- create list of allmodules.xml.* files -->
<xslt in="../style/_generated/list.xml"
out="../style/xsl/util/allmodules.xml"
style="../style/xsl/language.xsl">
<param name="type" expression="modlists" />
</xslt>
<!-- create project description -->
<xslt in="../style/_generated/list.xml"
out="../style/description.xml"
style="../style/xsl/language.xsl">
<param name="type" expression="desc" />
</xslt>
<echo message="bootstrap done." />
</target>
<!-- #################################################################### -->
<!-- helper targets, not intended to be called from commandline -->
<!-- #################################################################### -->
<!-- Generic html transformation task. -->
<!-- checks and transforms all files of one language variant to HTML -->
<!-- -->
<macrodef name="html.generic">
<attribute name="lang" />
<sequential>
<echo message="checking HTML documentation (@{lang})..." />
<runtarget target="metafiles" />
<dependencies.html lang="@{lang}" />
<!-- iterate over all desired files -->
<for param="srcfile">
<path>
<fileset dir="../" includes="**/*${inputext.@{lang}}" excludes="mod/*${inputext.@{lang}}">
<patternset refid="excludes" />
<patternset refid="scratch" />
</fileset>
</path>
<sequential>
<basename property="@{srcfile}.basename" file="@{srcfile}"
suffix="${inputext.@{lang}}" />
<dirname property="@{srcfile}.dirname" file="@{srcfile}" />
<!-- depends on the accompanying metafile -->
<dependset>
<srcfileset dir="${@{srcfile}.dirname}"
includes="${@{srcfile}.basename}.xml.meta" />
<targetfileset dir="${@{srcfile}.dirname}"
includes="${@{srcfile}.basename}${outputext.@{lang}}" />
</dependset>
<xslt in="@{srcfile}"
out="${@{srcfile}.dirname}/${@{srcfile}.basename}${outputext.@{lang}}"
style="../style/manual.@{lang}.xsl">
<xmlcatalog refid="w3c-catalog" />
</xslt>
</sequential>
</for>
<for param="srcfile">
<path>
<fileset dir="../" includes="mod/*${inputext.@{lang}}">
<patternset refid="excludes" />
<patternset refid="scratch" />
</fileset>
</path>
<sequential>
<basename property="@{srcfile}.basename" file="@{srcfile}"
suffix="${inputext.@{lang}}" />
<dirname property="@{srcfile}.dirname" file="@{srcfile}" />
<!-- depends on the accompanying metafile -->
<dependset>
<srcfileset dir="${@{srcfile}.dirname}"
includes="${@{srcfile}.basename}.xml.meta
${@{srcfile}.basename}.xml" />
<targetfileset dir="${@{srcfile}.dirname}"
includes="${@{srcfile}.basename}${outputext.@{lang}}" />
</dependset>
<xslt in="@{srcfile}"
out="${@{srcfile}.dirname}/${@{srcfile}.basename}${outputext.@{lang}}"
style="../style/manual.@{lang}.xsl">
<xmlcatalog refid="w3c-catalog" />
</xslt>
</sequential>
</for>
<if><not><available file="../.outdated.@{lang}" /></not><then>
<echo message="HTML documentation (@{lang}) is up to date." />
</then></if>
<!-- for convenience -->
<runtarget target="typemaps" />
<!-- for caution -->
<show.outdated lang="@{lang}" />
</sequential>
</macrodef>
<macrodef name="show.outdated">
<attribute name="lang" />
<sequential>
<if><available file="../.outdated.@{lang}" /><then>
<concat>
<header>
================================================================
===== NOTE: The following translations are NOT UP TO DATE: =====
================================================================
</header>
<filelist dir="../" files=".outdated.@{lang}" />
</concat></then>
</if>
</sequential>
</macrodef>
<!-- Generic manpage transformation target. -->
<!-- checks and transforms all files of one language variant to nroff -->
<!-- -->
<macrodef name="nroff.generic">
<attribute name="lang" />
<sequential>
<echo message="checking nroff man pages (@{lang})..." />
<!-- <runtarget target="metafiles" /> -->
<dependencies.nroff lang="@{lang}" />
<for param="section" list="1, 8" trim="true">
<sequential>
<for param="file" list="${ap.manpages.@{section}}" delimiter=" " trim="true">
<sequential>
<nroff.generic.loop lang="@{lang}" section="@{section}"
files="@{file}${inputext.@{lang}}" />
</sequential>
</for>
</sequential>
</for>
<!-- cleanup -->
<delete>
<fileset dir="../../man" includes="*.tmp *.old" />
</delete>
<echo message="nroff manpages (@{lang}) are up to date." />
</sequential>
</macrodef>
<!-- nroff generation of a single section -->
<!-- -->
<macrodef name="nroff.generic.loop">
<attribute name="lang" />
<attribute name="section" />
<attribute name="files" />
<sequential>
<if><equals arg1="@{lang}" arg2="en" />
<then>
<property name="mandir" location="../../man" />
</then>
<else>
<property name="mandir" location="../../man/@{lang}" />
</else>
</if>
<for param="srcfile">
<path>
<fileset dir="../programs/" includes="@{files}" />
</path>
<sequential>
<basename property="@{srcfile}.basename" file="@{srcfile}"
suffix="${inputext.@{lang}}"/>
<dirname property="@{srcfile}.dirname" file="@{srcfile}"/>
<dependset>
<srcfileset dir="${@{srcfile}.dirname}"
includes="${@{srcfile}.basename}.xml.meta" />
<targetfileset dir="${mandir}/"
includes="${@{srcfile}.basename}.@{section}" />
</dependset>
<if>
<not>
<uptodate
srcfile="@{srcfile}"
targetfile="${mandir}/${@{srcfile}.basename}.@{section}"
/>
</not>
<then>
<if>
<available
file="${mandir}/${@{srcfile}.basename}.@{section}.tmp"
/>
<then>
<copy file="${mandir}/${@{srcfile}.basename}.@{section}.tmp"
tofile="${mandir}/${@{srcfile}.basename}.@{section}.old"
preservelastmodified="true" overwrite="true" />
<!-- sample line: -->
<!-- .TH "AB" 8 "2004-01-04" "Apache HTTP Server" "ab" -->
<!-- we replace ^^^^^^^^^^ the date with @@date@@ -->
<!-- -->
<replaceregexp
file="${mandir}/${@{srcfile}.basename}.@{section}.tmp"
match='^(\.TH\s+"[^"]*"\s+\d\s+)"[^"]+"'
replace='\1"@@date@@"'
byline="true"
/>
</then></if>
<xslt in="@{srcfile}"
out="${mandir}/${@{srcfile}.basename}.@{section}"
style="../style/_generated/man.@{lang}.xsl">
<xmlcatalog refid="w3c-catalog" />
<param name="section" expression="@{section}" />
<param name="date" expression="@@date@@" />
</xslt>
<if>
<and>
<available
file="${mandir}/${@{srcfile}.basename}.@{section}.old"
/>
<filesmatch
file1="${mandir}/${@{srcfile}.basename}.@{section}.tmp"
file2="${mandir}/${@{srcfile}.basename}.@{section}"
/>
</and>
<then>
<copy file="${mandir}/${@{srcfile}.basename}.@{section}.old"
tofile="${mandir}/${@{srcfile}.basename}.@{section}"
preservelastmodified="false" overwrite="true" />
</then>
<else>
<replaceregexp
file="${mandir}/${@{srcfile}.basename}.@{section}"
match="@@date@@"
replace="${nroff.date}"
/>
</else></if>
</then></if>
</sequential>
</for>
</sequential>
</macrodef>
<!-- Generic chm transformation target. -->
<!-- checks and transforms all files of one language variant to -->
<!-- MS compiled html format (chm). The HTML files are different from -->
<!-- the normal manual output, so don't worry that everything is -->
<!-- compiled again. -->
<!-- -->
<!-- REQUIREMENTS: -->
<!-- (1) You must have the hhc.exe compiler in your PATH. It is part of -->
<!-- the HTML Help Workshop which is freely available and can be -->
<!-- downloaded from -->
<!-- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp -->
<!-- -->
<!-- (2) Before you run `build chm-$lang` you MUST switch to the -->
<!-- appropriate locale. Otherwise the output of hhc.exe will -->
<!-- probably be garbled. -->
<!-- -->
<macrodef name="chm.generic">
<attribute name="lang" />
<sequential>
<echo message="building CHM file (@{lang})..." />
<runtarget target="metafiles" />
<dependencies.chm lang="@{lang}" />
<!-- build project file from sitemap -->
<xslt in="../_chm/@{lang}/sitemap${inputext.@{lang}}"
out="../_chm/@{lang}/manual.hhp"
style="../_chm/@{lang}/style/_generated/hhp.@{lang}.xsl">
<param name="httpd.version" expression="${ap.httpd.version}" />
<xmlcatalog refid="w3c-catalog" />
</xslt>
<fixcrlf srcdir="../_chm/@{lang}" eol="crlf" encoding="iso-8859-1"
includes="manual.hhp" />
<!-- build toc from sitemap -->
<xslt in="../_chm/@{lang}/sitemap${inputext.@{lang}}"
out="../_chm/@{lang}/toc.hhc"
style="../_chm/@{lang}/style/_generated/hhc.@{lang}.xsl">
<xmlcatalog refid="w3c-catalog" />
</xslt>
<fixcrlf srcdir="../_chm/@{lang}" eol="crlf" encoding="iso-8859-1"
includes="toc.hhc" />
<!-- build not-yet-translated documents -->
<if><not><equals arg1="@{lang}" arg2="en" /></not><then>
<chm.generic.loop lang="en" target="@{lang}" />
</then></if>
<!-- iterate over all documents -->
<chm.generic.loop lang="@{lang}" target="@{lang}" />
<!-- compile it -->
<if><not><equals arg1="${chm.prepare}" arg2="yes" /></not><then>
<exec dir="../_chm/@{lang}" executable="hhc.exe">
<arg line="manual.hhp" />
</exec>
<copy file="../_chm/@{lang}/httpd-docs-${ap.httpd.version}.@{lang}.chm"
tofile="${distdir}/httpd-docs-${ap.httpd.version}.@{lang}.chm"
overwrite="true" />
</then>
<else>
<echo message="This is a preparation run only. To actually compile" />
<echo message="the CHM file you need to go into the _chm/@{lang}" />
<echo message="directory and run 'hhc.exe manual'. Don't forget the" />
<echo message="appropriate locale (see `build -projecthelp`)" />
</else></if>
</sequential>
</macrodef>
<macrodef name="chm.generic.loop">
<attribute name="lang" />
<attribute name="target" />
<sequential>
<for param="srcfile">
<path>
<fileset dir="../_chm/@{target}" includes="**/*${inputext.@{lang}}">
<patternset refid="excludes" />
</fileset>
</path>
<sequential>
<basename property="@{srcfile}.basename" file="@{srcfile}"
suffix="${inputext.@{lang}}"/>
<dirname property="@{srcfile}.dirname" file="@{srcfile}"/>
<!-- just do it -->
<xslt in="@{srcfile}"
out="${@{srcfile}.dirname}/${@{srcfile}.basename}.html"
style="../_chm/@{target}/style/_generated/chm.@{lang}.xsl"
force="yes">
<xmlcatalog refid="w3c-catalog" />
</xslt>
<fixcrlf srcdir="${@{srcfile}.dirname}" eol="crlf"
encoding="iso-8859-1"
includes="${@{srcfile}.basename}.html" />
</sequential>
</for>
</sequential>
</macrodef>
<!-- Generic zip package transformation target. -->
<!-- checks and transforms all files of one language variant to -->
<!-- simple html files and zips the resulting directory. The HTML files -->
<!-- are different from the normal manual output, so don't worry that -->
<!-- everything is transformed again. -->
<!-- -->
<macrodef name="offline.generic">
<attribute name="lang" />
<attribute name="style" />
<attribute name="dir" />
<sequential>
<if><available file="../index${inputext.@{lang}}" />
<then>
<echo message="building offline version (@{lang})..." />
<!-- build not-yet-translated documents -->
<if><not><equals arg1="@{lang}" arg2="en" /></not><then>
<offline.generic.loop lang="en" target="@{lang}" style="@{style}"
dir="@{dir}" />
</then></if>
<!-- iterate over our documents -->
<offline.generic.loop lang="@{lang}" target="@{lang}" style="@{style}"
dir="@{dir}" />
<!-- Newline issues -->
<fixcrlf srcdir="../@{dir}/@{lang}" eol="lf" encoding="iso-8859-1"
includes="**/*.html **/*.css" />
<!-- delete undistributed files -->
<delete>
<fileset dir="../@{dir}/@{lang}"
includes="**/*.xml **/*${inputext.@{lang}}
**/*.xml.meta
style/chm style/chm/**/*
style/lang style/lang/**/*
style/man style/man/**/*
style/w3c style/w3c/**/*
style/xsl style/xsl/**/*
style/zip style/zip/**/*
style/latex style/latex/**/*
style/*.dtd style/*.xsl style/*.xml
style/_generated style/_generated/**/*
style/build.properties
images/apache_header*
images/favicon.ico
images/home* images/index*
images/sub* images/pixel*
**/.*
"/>
</delete>
</then></if>
</sequential>
</macrodef>
<macrodef name="offline.generic.loop">
<attribute name="lang" />
<attribute name="target" />
<attribute name="style" />
<attribute name="dir" />
<sequential>
<for param="srcfile">
<path>
<fileset dir="../@{dir}/@{target}" includes="**/*${inputext.@{lang}}">
<patternset refid="excludes" />
</fileset>
</path>
<sequential>
<basename property="@{srcfile}.basename" file="@{srcfile}"
suffix="${inputext.@{lang}}"/>
<dirname property="@{srcfile}.dirname" file="@{srcfile}"/>
<xslt in="@{srcfile}"
out="${@{srcfile}.dirname}/${@{srcfile}.basename}.html"
style="../@{dir}/@{target}/style/_generated/@{style}.@{lang}.xsl"
force="yes">
<xmlcatalog refid="w3c-catalog" />
</xslt>
</sequential>
</for>
</sequential>
</macrodef>
<macrodef name="war.generic">
<attribute name="lang" />
<sequential>
<if><available file="../index${inputext.@{lang}}" />
<then>
<echo message="building Konqueror Web Archive package (@{lang})..." />
<!-- pack it -->
<delete file="${distdir}/httpd-docs-${ap.httpd.version}.@{lang}.war" />
<tar destfile="${distdir}/httpd-docs-${ap.httpd.version}.@{lang}.war"
compression="gzip">
<tarfileset dir="../_off/@{lang}"
includes="**/*"
excludes="index.rdf" />
</tar>
</then></if>
</sequential>
</macrodef>
<macrodef name="zip.generic">
<attribute name="lang" />
<sequential>
<if><available file="../index${inputext.@{lang}}" />
<then>
<echo message="building ZIP package (@{lang})..." />
<!-- pack it -->
<delete file="${distdir}/httpd-docs-${ap.httpd.version}.@{lang}.zip" />
<zip destfile="${distdir}/httpd-docs-${ap.httpd.version}.@{lang}.zip"
compress="true"
encoding="ASCII">
<zipfileset prefix="httpd-docs-${ap.httpd.version}.@{lang}"
dir="../_off/@{lang}"
includes="**/*" />
</zip>
</then></if>
</sequential>
</macrodef>
<!-- Generation of a single latex file; for now, en only. -->
<!-- -->
<!-- You'll have to run another tool to post-process the resulting latex -->
<!-- files into a usable PDF file. For example pdflatex together with -->
<!-- sitemap.tex can be used for this: just call 'pdflatex sitemap' in -->
<!-- the manual dir. -->
<!-- ==================================================================== -->
<macrodef name="latex.generic">
<attribute name="lang" />
<sequential>
<for param="srcfile">
<path>
<fileset dir="../" includes="**/*${inputext.@{lang}}">
<patternset refid="excludes" />
<patternset refid="scratch" />
</fileset>
</path>
<sequential>
<basename property="@{srcfile}.basename" file="@{srcfile}"
suffix="${inputext.@{lang}}"/>
<dirname property="@{srcfile}.dirname" file="@{srcfile}"/>
<xslt in="@{srcfile}"
out="${@{srcfile}.dirname}/${@{srcfile}.basename}.tex"
style="../style/latex/latex.xsl">
<xmlcatalog refid="w3c-catalog" />
</xslt>
</sequential>
</for>
</sequential>
</macrodef>
</project>