--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+    Name:       include/ravnsgaard.xml
+    Purpose:    Declarations for Brian Ravnsgaard Riis' slave
+    Author:     Michael Wetherel
+    RCS-ID:     $Id$
+    Copyright:  (c) Michael Wetherell
+    Licence:    wxWidgets licence
+-->
+
+<bot xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+     xmlns:xi="http://www.w3.org/2001/XInclude">
+
+<xi:include href="defs.xml"/>
+
+<!--
+    build - Override <build> to add a slave lock. This has the effect of
+            serialising all the builds on this machine
+-->
+<xsl:template name="build">
+    <xsl:param name="content"/>
+    <build>
+        <lock>slave</lock>
+        <xsl:copy-of select="$content"/>
+    </build>
+</xsl:template>
+
+<!--
+    checkout - checks out to a shared directory
+
+    Checks out to a directory '../$branch' shared between builds. Then creates
+    a directory 'build' for this job to build in, and 'src' which is a link to
+    the shared sources. This relies on all builds for the same branch being
+    serialised with lock so that one build doesn't update the sources while
+    another is building them.
+
+    Usage typically just:
+        <checkout/>
+    for the trunk, or:
+        <checkout branch="branches/WX_2_8_BRANCH"/>
+    to checkout a branch.
+-->
+<xsl:template name="checkout">
+    <xsl:param name="content"/>
+    <xsl:param name="branch" select="'trunk'"/>
+    <xsl:variable name="nodes" select="exsl:node-set($content)"/>
+    <svn>
+        <xsl:if test="not($nodes/svnurl)">
+            <xsl:if test="not($nodes/baseURL)">
+                <baseURL><SVN_URL/></baseURL>
+            </xsl:if>
+            <xsl:if test="not($nodes/defaultBranch)">
+                <defaultBranch><xsl:value-of select="$branch"/></defaultBranch>
+            </xsl:if>
+        </xsl:if>
+        <xsl:if test="not($nodes/workdir)">
+            <workdir>../<xsl:value-of select="$branch"/></workdir>
+        </xsl:if>
+        <xsl:copy-of select="$content"/>
+    </svn>
+    <shellcommand>
+        <description>creating build directory</description>
+        <descriptionDone>create build directory</descriptionDone>
+        <workdir>.</workdir>
+        <command>
+            rm -rf build &&
+            mkdir build &&
+            ln -sf ../<xsl:value-of select="$branch"/> src
+        </command>
+    </shellcommand>
+</xsl:template>
+
+<!--
+    configure - use '../src/configure' as the default configure command,
+                include disable-precomp-headers in the default options and
+                post process the Makefiles to use ccache.
+
+    Usage: <configure options="-with-foobar"/>
+-->
+<xsl:template name="configure">
+    <xsl:param name="content"/>
+    <xsl:param name="options"/>
+    <configure>
+        <copy-with-defaults content="{$content}">
+            <command>../src/configure --disable-precomp-headers <xsl:value-of select="normalize-space($options)"/></command>
+        </copy-with-defaults>
+        <command>find . -name Makefile | xargs perl -pi -e 's/^(?:CC|CXX) = /$&ccache /'</command>
+    </configure>
+</xsl:template>
+
+</bot>