<?xml version="1.0"?>
<!DOCTYPE project [ <!ENTITY desc SYSTEM "../style/description.xml"> ]>

<!--
 Copyright 2002-2005 The Apache Software Foundation or its licensors,
                     as applicable

 Licensed 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>

<!-- 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}}">
                    <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>

        <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}" />

        <!-- iterate over all (8) files -->
        <nroff.generic.loop lang="@{lang}" section="8"
                files="ab${inputext.@{lang}}
                       apachectl${inputext.@{lang}}
                       apxs${inputext.@{lang}}
                       httpd${inputext.@{lang}}
                       htcacheclean${inputext.@{lang}}
                       logresolve${inputext.@{lang}}
                       rotatelogs${inputext.@{lang}}
                       suexec${inputext.@{lang}}"/>

        <!-- iterate over all (1) files -->
        <nroff.generic.loop lang="@{lang}" section="1"
                files="dbmmanage${inputext.@{lang}}
                       htdbm${inputext.@{lang}}
                       htdigest${inputext.@{lang}}
                       htpasswd${inputext.@{lang}}"/>

        <!-- 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>
        <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="../../man/"
                           includes="${@{srcfile}.basename}.@{section}" />
                </dependset>

                <if>
                    <not>
                        <uptodate
                            srcfile="@{srcfile}"
                         targetfile="../../man/${@{srcfile}.basename}.@{section}"
                        />
                    </not>
                <then>
                    <if>
                        <available
                            file="../../man/${@{srcfile}.basename}.@{section}.tmp"
                        />
                    <then>
                        <copy file="../../man/${@{srcfile}.basename}.@{section}.tmp"
                            tofile="../../man/${@{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="../../man/${@{srcfile}.basename}.@{section}.tmp"
                            match='^(\.TH\s+"[^"]*"\s+\d\s+)"[^"]+"'
                          replace='\1"@@date@@"'
                           byline="true"
                        />
                    </then></if>

                    <xslt in="@{srcfile}"
                         out="../../man/${@{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="../../man/${@{srcfile}.basename}.@{section}.old"
                            />
                            <filesmatch
                                file1="../../man/${@{srcfile}.basename}.@{section}.tmp"
                                file2="../../man/${@{srcfile}.basename}.@{section}"
                            />
                        </and>
                    <then>
                        <copy file="../../man/${@{srcfile}.basename}.@{section}.old"
                            tofile="../../man/${@{srcfile}.basename}.@{section}"
                            preservelastmodified="false" overwrite="true" />
                    </then>
                    <else>
                        <replaceregexp
                               file="../../man/${@{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/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})..." />

        <!-- get the current date -->
        <tstamp>
            <format property="maf.date.@{lang}"
                     pattern="EEE MMM dd yyyy HH:mm:ss 'GMT-0000 (UTC)'"
                    timezone="UTC" locale="en, US" />
        </tstamp>

        <!-- generate RDF file -->
        <xslt in="../index${inputext.@{lang}}"
             out="../_off/@{lang}/index.rdf"
           style="../style/xsl/maf.xsl">
            <param name="date" expression="${maf.date.@{lang}}" />
            <param name="lang" expression="@{lang}" />
        </xslt>

        <!-- Newline issues -->
        <fixcrlf srcdir="../_off/@{lang}" eol="lf" encoding="iso-8859-1"
               includes="**/*.rdf" />

        <!-- pack it -->
        <delete file="${distdir}/httpd-docs-${ap.httpd.version}.@{lang}.maff.zip" />
        <zip destfile="${distdir}/httpd-docs-${ap.httpd.version}.@{lang}.maff.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>
