#!/bin/sh
#
# $Id$
#
########################################################################
#
#  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.
#
########################################################################

if [ "$BASH" = "" ]; then
    # this is not Bash; try to invoke it
    if [ -x /usr/local/bin/bash ]; then
        /usr/local/bin/bash $0 "$@"
        exit $?
    fi
fi

readonly www_stdcxx_dir="/www/stdcxx.apache.org/builds"

# current date and time to compute log ages
readonly now=`date`

XBUILDGEN=`which xbuildgen 2>/dev/null`

if [ "$XBUILDGEN" = "" ]; then
    XBUILDGEN=`dirname $0`/xbuildgen
fi

# default directory where to look for build logs to process
logdir=.

# show the command line to invoke xbuildgen without actually
# invoking the script
dryrun=0

# write verbose progress output to stdout?
verbose=0

# process command line options
while getopts "dvD:L:o:V:" opt_name; do
    case $opt_name in
        # options with no arguments

        d)  # dry run (do not invoke xbuildgen)
            dryrun=1
            ;;

        v) # verbose mode
           verbose=1
           ;;

        # options with arguments

        D)  # argument names the directory where to create output files
            outdir=$OPTARG
            ;;

        L)  # argument names the directory containing build logs
            logdir=$OPTARG
            ;;

        o)  # argument is the name of output file (stdout by default)
            outfile=$OPTARG

            # temporary output file (will replace outfile when done)
            tmpout=$outfile.$$
            ;;

        V)  # specify stdcxx branch/version to generate cross-build
            # result views for (trunk by default)
            version=$OPTARG
            ;;

     esac;
done


# set the Subversion and output directories based on version
if [ "$version" = "" ]; then

    # Subversion (sub)directory under stdcxx/
    svndir="trunk"

    # set output directory unless already set on the command line
    if [ "$outdir" = "" -a -w $www_stdcxx_dir ]; then
        outdir="/www/stdcxx.apache.org/builds/$svndir"
    fi
else
    # Subversion (sub)directory under stdcxx/
    svndir="branches/$version"

    # set output directory unless already set on the command line
    if [ "$outdir" = "" -a -w $www_stdcxx_dir ]; then
        outdir="/www/stdcxx.apache.org/builds/$version"
    fi

    verarg="-V$version"
fi


# extract the script's revision number
myrev='$Revision$'
myrev=${myrev#'$Revision: '}   # strip leading text
myrev=${myrev%' $'}            # strip trailing text

# form the URL to this version of the script in the repository
myurl='$HeadURL$'
myurl=${myurl#'$HeadURL: '}   # strip leading text
myurl=${myurl##*asf/}         # strip svn prefix
myurl=${myurl%' $'}           # strip trailing text

# prepend ViewVC prefix
myurl="http://svn.apache.org/viewvc/$myurl"

# extract program name from the url (used in diagnostic messages)
readonly myname=${myurl##*/}

myurl="$myurl?view=markup&rev=$myrev"

######################################################################
# validate arguments

if [ ! -x $XBUILDGEN ]; then
    echo "$myname $error: cannot find xbuildgen" >&1
    exit 2
fi


if [ ! -d "$logdir" -o ! -r "$logdir" ]; then
    echo "$myname error: \"$logdir\" does not exist or isn't readable" >&2
    exit 2
fi


if [ $verbose -ne 0 ]; then
    echo "$myname: using output directory: \"$outdir\""
    echo "$myname: reading logs from: \"$logdir\""
fi

######################################################################

# write to output file when specified or to stdout otherwise
output ()
{
    if [ $# -eq 0 ]; then
        # no arguments provided, copy its own stdin to tmpout
        if [ -z $tmpout ]; then
            cat
        else
            cat >>$tmpout
        fi
    elif [ -z $tmpout ]; then
        echo "$*"
    else
        echo "$*" >>$tmpout
    fi
}

######################################################################

# start the clock measuring the amount of wall clock time to process
# all logs and generate the page
readonly start_time=`LC_ALL=C date`


readonly scripturl="<a href=\"$myurl\"><code>$myname</code></a>"

cat<<EOF | output
<html>
  <body>
    <style type="text/css">

      table {
          border-width:0px;
          background:#000000;
          font-size:smaller;
      }
      th {
          font-size:smaller;
          background:#cccccc;
          text-align:center;
      }
      td {
          font-size:smaller;
          padding: 3px;
          text-align: center;
          background-color: lightblue;
      }
    </style>
    <h1>Available Multi-platform Build Result Views</h1>
    Generated `date` by $scripturl on `hostname` running `uname -sr`
    <hr>
    <table>
      <thead>
        <tr>
          <th>Operating System</td>
          <th>Architecture</td>
          <th>Compiler</td>
          <th title="Cross-build result page">Build Results</td>
          <th title="Total number of logs">Logs</td>
          <th title="Number of logs added since the last run">New</td>
          <th title="Timestamp of oldest log">Age</td>
          <th title="Time to process all logs">Time<br>(sec)</td>
        </tr>
      </thead>
      <tbody>
EOF


process_results ()
{
    osname="$1"
    arch="$2"
    compiler="$3"
    alllogs="$4"
    xfile="$5"

    if [ $verbose -ne 0 ]; then
        echo "$myname: processing logs for $compiler on $osname, $arch"
        echo "$myname: searching for files matching \"$alllogs\""
    fi

    cat<<EOF | output
        <tr>
          <td>$osname</td>
          <td>$arch</td>
          <td>$compiler</td>
EOF

    # build types:
    #    8: not reentrant, optimized, no debugging info
    #   11: not reentrant, not optimized with debugging info
    #   12: reentrant, optimized, no debugging info
    #   15: reentrant, not optimized, with debugging info
    btypes="8 11 12 15"

    # a, A: AIX shared archive (32-bit and 64-bit, respectively)
    # d, D: shared library (.sl, .so, or .dll)
    # s, S: archive library (.a or .lib)
    suffixes="a A d D s S"

    unset buildlogs
    unset oldest_age
    unset oldest_time

    count=0

    for b in $btypes; do
        for s in $suffixes; do
            log=`  echo $logdir/$alllogs | tr ' ' '\n' \
                 | grep "[-]$b$s-" | sort | tail -n 1`

            if [ "$log" != "" ]; then
                buildlogs="$buildlogs $log"
                count=`expr $count + 1`
            fi
        done
    done

    if [ -e $outdir/$xfile ]; then
        # count the number of logs that are newer than the cross-build file
        newlogs=`find $logdir/ -name "$alllogs" -newer $outdir/$xfile | wc -l`
    else
        # cross-build file doesn't exist yet, all logs are considered new
        newlogs=$count
    fi

    if [ $verbose -ne 0 ]; then
        echo "$myname: found $count logs ($newlogs new): $buildlogs"
    fi

    # create a title for the page
    title="$compiler results on $osname/$arch"

    # start the clock
    duration=`expr \( $(date +%M) \* 60 \) + $(date +%S)`

    if [ "$buildlogs" = "" ]; then
        # format missing logs in italics
        output "          <td><i>$xfile</i></td>"
    else
        output "          <td><a href=\"$xfile\">$xfile</a></td>"

        oldest_time=`  cd $logdir && LANG=C ls -lrt $buildlogs | head -n 1 \
                    | awk '{ print $6 " " $7 " " $8 }'`

        if [ $newlogs -gt 0 ]; then

            # only invoken xbuildgen when there are new logs to proecess
            # otherwise simply point at the previously generated cross
            # build file

            if [ $verbose -ne 0 ]; then
                echo "$myname: $XBUILDGEN $verarg -s -o$outdir/$xfile -T\"$title\" $buildlogs"
            fi

            if [ $dryrun -eq 0 ]; then
                $XBUILDGEN $verarg -s -o$outdir/$xfile -T"$title" $buildlogs
            fi
        fi
    fi

    # compute the number of seconds it took to process the logs
    end=`expr \( \( $(date +%M) \* 60 \) + $(date +%S) \)`

    if [ $end -lt $duration ]; then
        # adjust for overflow
        end=`expr $end + 60`
    fi

    # compute the amount of time it took to process this batch
    duration=`expr $end - $duration`

    # compute the age of the oldest log
    if [ "$oldest_time" != "" ]; then
        oldest_age=`duration "$oldest_time" "$now"`
    fi

    cat<<EOF | output
          <td>$count</td>
          <td>$newlogs</td>
          <td title="$oldest_time">$oldest_age</td>
          <td>$duration</td>
        </tr>
EOF
}

########################################################################
# operating systems and compilers below are listed alphabetically
# starting with the most recent version first

# AIX ##################################################################
process_results "AIX 5.3" "PowerPC" "IBM XLC++ 9.0" \
                "aix-5.3-ppc-vacpp-9.0-*-*-log.gz.txt" \
                aix-5.3-ppc-vacpp-9.0.html

process_results "AIX 5.3" "PowerPC" "IBM XLC++ 8.0" \
                "aix-5.3-ppc-vacpp-8.0-*-*-log.gz.txt" \
                aix-5.3-ppc-vacpp-8.0.html

process_results "AIX 5.3" "PowerPC" "IBM XLC++ 7.0" \
                "aix-5.3-ppc-vacpp-7.0-*-*-log.gz.txt" \
                aix-5.3-ppc-vacpp-7.0.html

process_results "AIX 5.2" "PowerPC" "IBM VisualAge C++ 6.0" \
                "aix-5.2-ppc-vacpp-6.0-*-*-log.gz.txt" \
                aix-5.2-ppc-vacpp-6.0.html

# FreeBSD ##############################################################
process_results "FreeBSD 6.2" "x86" "gcc 3.4.4" \
                "freebsd-6.2-x86-gcc-3.4.4-*-*-log.gz.txt" \
                freebsd-6.2-x86-gcc-3.4.4.html

# HP-UX ################################################################
process_results "HP-UX 11.31" "IPF" "HP aCC 6.16" \
                "hpux-11.31-ia64-acc-6.16-*-*-log.gz.txt" \
                hpux-11.31-ia64-6.16.html

process_results "HP-UX 11.31" "IPF" "HP aCC 6.15" \
                "hpux-11.31-ia64-acc-6.15-*-*-log.gz.txt" \
                hpux-11.31-ia64-6.15.html

process_results "HP-UX 11.31" "PA-RISC" "HP aCC 3.74" \
                "hpux-11.31-pa-acc-3.74-*-*-log.gz.txt" \
                hpux-11.31-pa-acc-3.74.html

process_results "HP-UX 11.31" "PA-RISC" "HP aCC 3.73" \
                "hpux-11.31-pa-acc-3.73-*-*-log.gz.txt" \
                hpux-11.31-pa-acc-3.73.html

process_results "HP-UX 11.23" "IPF" "HP aCC 6.13" \
                "hpux-11.23-ia64-acc-6.13-*-*-log.gz.txt" \
                hpux-11.23-ia64-acc-6.13.html

process_results "HP-UX 11.23" "IPF" "HP aCC 6.00" \
                "hpux-11.23-ia64-acc-6.00-*-*-log.gz.txt" \
                hpux-11.23-ia64-acc-6.00.html

process_results "HP-UX 11.23" "IPF" "HP aCC 5.57" \
                "hpux-11.23-ia64-acc-5.57-*-*-log.gz.txt" \
                hpux-11.23-ia64-acc-5.57.html

process_results "HP-UX 11.23" "PA-RISC" "HP aCC 3.80" \
                "hpux-11.23-pa-acc-3.80-*-*-log.gz.txt" \
                hpux-11.23-pa-acc-3.80.html

process_results "HP-UX 11.23" "PA-RISC" "HP aCC 3.73" \
                "hpux-11.23-pa-acc-3.73-*-*-log.gz.txt" \
                hpux-11.23-pa-acc-3.73.html

process_results "HP-UX 11.23" "PA-RISC" "HP aCC 3.63" \
                "hpux-11.23-pa-acc-3.63-*-*-log.gz.txt" \
                hpux-11.23-pa-acc-3.63.html

process_results "HP-UX 11.11" "PA-RISC" "HP aCC 3.73" \
                "hpux-11.11-pa-acc-3.73-*-*-log.gz.txt" \
                hpux-11.11-pa-acc-3.73.html

process_results "HP-UX 11.11" "PA-RISC" "HP aCC 3.63" \
                "hpux-11.11-pa-acc-3.63-*-*-log.gz.txt" \
                hpux-11.11-pa-acc-3.63.html

# IRIX #################################################################
process_results "IRIX 6.5" "MIPS" "SGI MIPSpro 7.41" \
                "irix-6.5-mips-mipspro-7.41-*-*-log.gz.txt" \
                irix-6.5-mips-mipspro-7.41.html

# Red Hat Linux ########################################################
# Red Hat Enterprise Linux 5.0
process_results "Red Hat Enterprise Linux 5.0" "EM64T" "EDG eccp 3.9" \
                "linux_redhat_el-5.0-em64t-eccp-3.9-*-*-log.gz.txt" \
                linux_redhat_el-5.0-em64t-eccp-3.9.html

process_results "Red Hat Enterprise Linux 5.0" "EM64T" "gcc 4.3.0" \
                "linux_redhat_el-5.0-em64t-gcc-4.3.0-*-*-log.gz.txt" \
                linux_redhat_el-5.0-em64t-gcc-4.3.0.html

process_results "Red Hat Enterprise Linux 5.0" "EM64T" "gcc 4.1.1" \
                "linux_redhat_el-5.0-em64t-gcc-4.1.1-*-*-log.gz.txt" \
                linux_redhat_el-5.0-em64t-gcc-4.1.1.html

process_results "Red Hat Enterprise Linux 5.0" "EM64T" "Intel C++ 11.0" \
                "linux_redhat_el-5.0-em64t-icc-11.0-*-*-log.gz.txt" \
                linux_redhat_el-5.0-em64t-icc-11.0.html

process_results "Red Hat Enterprise Linux 5.0" "EM64T" "Intel C++ 10.0" \
                "linux_redhat_el-5.0-em64t-icc-10.0-*-*-log.gz.txt" \
                linux_redhat_el-5.0-em64t-icc-10.0.html

process_results "Red Hat Enterprise Linux 5.0" "EM64T" "Intel C++ 9.1" \
                "linux_redhat_el-5.0-em64t-icc-9.1-*-*-log.gz.txt" \
                linux_redhat_el-5.0-em64t-icc-9.1.html

# Red Hat Enterprise Linux 4 Update 4
process_results "Red Hat Enterprise Linux 4 Update 4" "AMD64" "gcc 4.3.0" \
                "linux_redhat_el-4.4-amd64-gcc-4.3.0-*-*-log.gz.txt" \
                linux_redhat_el-4.4-amd64-gcc-4.3.0.html

process_results "Red Hat Enterprise Linux 4 Update 4" "AMD64" "gcc 3.4.6" \
                "linux_redhat_el-4.4-amd64-gcc-3.4.6-*-*-log.gz.txt" \
                linux_redhat_el-4.4-amd64-gcc-3.4.6.html

process_results "Red Hat Enterprise Linux 4 Update 4" "EM64T" "Intel C++ 10.0" \
                "linux_redhat_el-4.4-em64t-icc-10.0-*-*-log.gz.txt" \
                linux_redhat_el-4.4-em64t-icc-10.0.html

process_results "Red Hat Enterprise Linux 4 Update 4" "EM64T" "Intel C++ 9.1" \
                "linux_redhat_el-4.4-em64t-icc-9.1-*-*-log.gz.txt" \
                linux_redhat_el-4.4-em64t-icc-9.1.html

# Red Hat Enterprise Linux 4 Update 2
process_results "Red Hat Enterprise Linux 4 Update 4" "AMD64" "gcc 3.4.6" \
                "linux_redhat_el-4.4-amd64-gcc-3.4.6-*-*-log.gz.txt" \
                linux_redhat_el-4.4-amd64-gcc-3.4.6.html

process_results "Red Hat Enterprise Linux 4 Update 2" "IA64" "gcc 3.4.4" \
                "linux_redhat_el-4.2-ia64-gcc-3.4.4-*-*-log.gz.txt" \
                linux_redhat_el-4.2-ia64-gcc-3.4.4.html

process_results "Red Hat Enterprise Linux 4 Update 2" "IA64" "Intel C++ 9.1" \
                "linux_redhat_el-4.2-ia64-icc-9.1-*-*-log.gz.txt" \
                linux_redhat_el-4.2-ia64-icc-9.1.html

# Red Hat Enterprise Linux 3 Update 8
process_results "Red Hat Enterprise Linux 3 Update 8" "EM64T" "gcc 3.2.3" \
                "linux_redhat_el-3.8-em64t-gcc-3.2.3-*-*-log.gz.txt" \
                linux_redhat_el-3.8-em64t-gcc-3.2.3.html

# Solaris ##############################################################
process_results "Solaris 10" "SPARC" "EDG eccp 3.9" \
                "solaris-10-sparc-eccp-3.9-*-*-log.gz.txt" \
                solaris-10-sparc-eccp-3.9.html

process_results "Solaris 10" "SPARC" "gcc 4.3.0" \
                "solaris-10-sparc-gcc-4.3.0-*-*-log.gz.txt" \
                solaris-10-sparc-gcc-4.3.0.html

process_results "Solaris 10" "SPARC" "gcc 4.1.1" \
                "solaris-10-sparc-gcc-4.1.1-*-*-log.gz.txt" \
                solaris-10-sparc-gcc-4.1.1.html

process_results "Solaris 10" "SPARC" "Sun C++ 5.9" \
                "solaris-10-sparc-sunpro-5.9-*-*-log.gz.txt" \
                solaris-10-sparc-sunpro-5.9.html

process_results "Solaris 10" "SPARC" "Sun C++ 5.8" \
                "solaris-10-sparc-sunpro-5.8-*-*-log.gz.txt" \
                solaris-10-sparc-sunpro-5.8.html

process_results "Solaris 10" "SPARC" "Sun C++ 5.7" \
                "solaris-10-sparc-sunpro-5.7-*-*-log.gz.txt" \
                solaris-10-sparc-sunpro-5.7.html

process_results "Solaris 9" "SPARC" "EDG eccp 3.9" \
                "solaris-9-sparc-eccp-3.9-*-*-log.gz.txt" \
                solaris-9-sparc-eccp-3.9.html

process_results "Solaris 9" "SPARC" "Sun C++ 5.9" \
                "solaris-9-sparc-sunpro-5.9-*-*-log.gz.txt" \
                solaris-9-sparc-sunpro-5.9.html

process_results "Solaris 9" "SPARC" "Sun C++ 5.6" \
                "solaris-9-sparc-sunpro-5.6-*-*-log.gz.txt" \
                solaris-9-sparc-sunpro-5.6.html

process_results "Solaris 8" "SPARC" "Sun C++ 5.8" \
                "solaris-8-sparc-sunpro-5.8-*-*-log.gz.txt" \
                solaris-8-sparc-sunpro-5.8.html

process_results "Solaris 8" "SPARC" "Sun C++ 5.3" \
                "solaris-8-sparc-sunpro-5.3-*-*-log.gz.txt" \
                solaris-8-sparc-sunpro-5.3.html

process_results "Solaris 10" "AMD64" "Sun C++ 5.9" \
                "solaris-10-amd64-sunpro-5.9-*-*-log.gz.txt" \
                solaris-10-amd64-sunpro-5.9.html

process_results "Solaris 10" "AMD64" "Sun C++ 5.8" \
                "solaris-10-amd64-sunpro-5.8-*-*-log.gz.txt" \
                solaris-10-amd64-sunpro-5.8.html

# SuSE Linux ###########################################################
# SuSE Enterprise Server 10
process_results "SuSE Enterprise Server 10.0" "EM64T" "EDG eccp 3.9" \
                "linux_suse-10.0-em64t-eccp-3.9-*-*-log.gz.txt" \
                linux_suse-10.0-em64t-eccp-3.9.html

process_results "SuSE Enterprise Server 10.0" "EM64T" "gcc 4.3.0" \
                "linux_suse-10.0-em64t-gcc-4.3.0-*-*-log.gz.txt" \
                linux_suse-10.0-em64t-gcc-4.3.0.html

process_results "SuSE Enterprise Server 10.0" "EM64T" "gcc 4.1.0" \
                "linux_suse-10.0-em64t-gcc-4.1.0-*-*-log.gz.txt" \
                linux_suse-10.0-em64t-gcc-4.1.0.html

process_results "SuSE Enterprise Server 10.0" "EM64T" "Intel C++ 10.0" \
                "linux_suse-10.0-em64t-icc-10.0-*-*-log.gz.txt" \
                linux_suse-10.0-em64t-icc-10.0.html

process_results "SuSE Enterprise Server 10.0" "EM64T" "Intel C++ 9.1" \
                "linux_suse-10.0-em64t-icc-9.1-*-*-log.gz.txt" \
                linux_suse-10.0-em64t-icc-9.1.html

# SuSE Enterprise Server 9.1
process_results "SuSE Enterprise Server 9.1" "AMD64" "gcc 3.3.3" \
                "linux_suse-9.1-amd64-gcc-3.3.3-*-*-log.gz.txt" \
                linux_suse-9.1-amd64-gcc-3.3.3.html

process_results "SuSE Enterprise Server 9.1" "AMD64" "Intel C++ 10.0" \
                "linux_suse-9.1-amd64-icc-10.0-*-*-log.gz.txt" \
                linux_suse-9.1-amd64-icc-10.0.html

process_results "SuSE Enterprise Server 9.1" "AMD64" "Intel C++ 9.1" \
                "linux_suse-9.1-amd64-icc-9.1-*-*-log.gz.txt" \
                linux_suse-9.1-amd64-icc-9.1.html

process_results "SuSE Enterprise Server 9.1" "AMD64" "EDG eccp 3.9" \
                "linux_suse-9.1-amd64-eccp-3.9-*-*-log.gz.txt" \
                linux_suse-9.1-amd64-eccp-3.9.html

process_results "SuSE Enterprise Server 9.1" "AMD64" "Sun C++ 5.9" \
                "linux_suse-9.1-amd64-sunpro-5.9-*-*-log.gz.txt" \
                linux_suse-9.1-amd64-sunpro-5.9.html

# Tru64 UNIX ###########################################################

process_results "Tru64 UNIX 5.1" "Alpha" "HP C++ 7.1" \
                "tru64-5.1-alpha-compaq-7.1-*-*-log.gz.txt" \
                tru64-5.1-alpha-compaq-7.1.html

# CygWin ###############################################################
process_results "CygWin/Windows XP" "x86" "gcc 3.4.4" \
                "win_xp-2-x86-gcc-3.4.4-*-*-log.gz.txt" \
                 win_xp-2-x86-gcc-3.4.4.html

# Windows ##############################################################

process_results "Windows 2008" "EM64T" "MSVC 9.0" \
                "win_2008-0-em64t-msvc-9.0-*-*-log.gz.txt" \
                 win_2008_0-em64t-msvc-9.0.html

process_results "Windows 2008" "EM64T" "MSVC 8.0" \
                "win_2008-0-em64t-msvc-8.0-*-*-log.gz.txt" \
                 win_2008_0-em64t-msvc-8.0.html

process_results "Windows 2008" "EM64T" "Intel C++ 11.0" \
                "win_2008-0-em64t-icl-11.0-*-*-log.gz.txt" \
                 win_2008_0-em64t-icl-11.0.html

process_results "Windows Vista" "EM64T" "MSVC 9.0" \
                "win_vista-0-em64t-msvc-9.0-*-*-log.gz.txt" \
                 win_vista_0-em64t-msvc-9.0.html

process_results "Windows Vista" "EM64T" "MSVC 8.0" \
                "win_vista-0-em64t-msvc-8.0-*-*-log.gz.txt" \
                 win_vista_0-em64t-msvc-8.0.html

process_results "Windows Vista" "EM64T" "Intel C++ 11.0" \
                "win_vista-0-em64t-icl-11.0-*-*-log.gz.txt" \
                 win_vista_0-em64t-icl-11.0.html

process_results "Windows Vista" "EM64T" "Intel C++ 10.0" \
                "win_vista-0-em64t-icl-10.0-*-*-log.gz.txt" \
                 win_vista_0-em64t-icl-10.0.html

process_results "Windows XP, SP2" "x86" "MSVC 8.0" \
                "win_xp-2-x86-msvc-8.0-*-*-log.gz.txt" \
                 win_xp_2-x86-msvc-8.0.html

process_results "Windows XP, SP2" "x86" "MSVC 7.1" \
                "win_xp-2-x86-msvc-7.1-*-*-log.gz.txt" \
                 win_xp_2-x86-msvc-7.1.html

process_results "Windows XP, SP2" "x86" "Intel C++ 11.0" \
                "win_xp-2-x86-icl-11.0-*-*-log.gz.txt" \
                 win_xp_2-x86-icl-11.0.html

process_results "Windows XP, SP2" "x86" "Intel C++ 10.0" \
                "win_xp-2-x86-icl-10.0-*-*-log.gz.txt" \
                 win_xp_2-x86-icl-10.0.html

process_results "Windows XP, SP2" "x86" "Intel C++ 9.1" \
                "win_xp-2-x86-icl-9.1-*-*-log.gz.txt" \
                 win_xp_2-x86-icl-9.1.html

process_results "Windows XP, SP1" "EM64T" "MSVC 9.0" \
                "win_xp-1-em64t-msvc-9.0-*-*-log.gz.txt" \
                 win_xp_1-em64t-msvc-9.0.html

process_results "Windows XP, SP1" "EM64T" "MSVC 8.0" \
                "win_xp-1-em64t-msvc-8.0-*-*-log.gz.txt" \
                 win_xp_1-em64t-msvc-8.0.html

process_results "Windows XP, SP1" "EM64T" "Intel C++ 10.0" \
                "win_xp-1-em64t-icl-10.0-*-*-log.gz.txt" \
                 win_xp_1-em64t-icl-10.0.html

process_results "Windows 2003, SP1" "EM64T" "MSVC 9.0" \
                "win_2003-1-em64t-msvc-9.0-*-*-log.gz.txt" \
                 win_2003_1-em64t-msvc-9.0.html

process_results "Windows 2003, SP1" "EM64T" "MSVC 8.0" \
                "win_2003-1-em64t-msvc-8.0-*-*-log.gz.txt" \
                 win_2003_1-em64t-msvc-8.0.html

process_results "Windows 2003, SP1" "EM64T" "Intel C++ 10.0" \
                "win_2003-1-em64t-icl-10.0-*-*-log.gz.txt" \
                 win_2003_1-em64t-icl-10.0.html

process_results "Windows 2000, SP4" "x86" "MSVC 7.1" \
                "win_2000-4-x86-msvc-7.1-*-*-log.gz.txt" \
                 win_2000_4-x86-msvc-7.1.html

process_results "Windows 2000, SP4" "x86" "Intel C++ 9.1" \
                "win_2000-4-x86-icl-9.1-*-*-log.gz.txt" \
                 win_2000_4-x86-icl-9.1.html


# compute the number of seconds it took to process all logs
processing_time=`duration "$start_time" "$now"`

cat<<EOF | output
    </table>
    <hr>
    <i>Generated in $processing_time.</i>
  </body>
</html>
EOF

# rerame the temporary output file to $outfile, possibly replacing
# the original $outfile if it exists
if [ -f "$tmpout" ]; then
    mv $tmpout $outfile
fi
