<?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 -->
    <for param="srcfile">
        <path>
            <fileset dir="../" includes="**/*.xml.meta">
                <patternset refid="excludes" />
                <patternset refid="scratch" />
            </fileset>
        </path>

        <sequential>
            <basename property="@{srcfile}.basename" file="@{srcfile}"
                        suffix=".xml.meta"/>
            <dirname  property="@{srcfile}.dirname"  file="@{srcfile}"/>

            <xslt in="@{srcfile}"
                 out="${@{srcfile}.dirname}/${@{srcfile}.basename}.html"
               style="../style/xsl/typemap.xsl">
                <xmlcatalog refid="w3c-catalog" />
            </xslt>
        </sequential>
    </for>

    <echo message="typemaps are up to date." />
    <property name="typemaps.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" includes="**/*.txt **/*.bat" />
    <fixcrlf srcdir="../_tools" eol="lf" 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 />

    <!-- create basic styles -->
    <var name="languages" value="" />
    <for param="srcfile">
        <path>
            <fileset dir="../style/lang" includes="**/*.xml" />
        </path>

        <sequential>
            <basename property="@{srcfile}.basename" file="@{srcfile}"
                        suffix=".xml"/>
            <dirname  property="@{srcfile}.dirname"  file="@{srcfile}"/>

            <var name="languages" value="${languages} ${@{srcfile}.basename}" />

            <xslt in="@{srcfile}"
                 out="../style/manual.${@{srcfile}.basename}.xsl"
               style="../style/xsl/language.xsl">
                <param name="type" expression="manual" />
            </xslt>
        </sequential>
    </for>

    <!-- 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 allmodules list -->
    <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}}
                       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" 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" 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"
                       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"
               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"
               includes="**/*.rdf" />

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