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