diff --git a/configure-aprutil.bat b/configure-aprutil.bat
deleted file mode 100755
index 576c22e..0000000
--- a/configure-aprutil.bat
+++ /dev/null
@@ -1,20 +0,0 @@
-ECHO OFF
-REM  Licensed to the Apache Software Foundation (ASF) under one or more
-REM  contributor license agreements.  See the NOTICE file distributed with
-REM  this work for additional information regarding copyright ownership.
-REM  The ASF licenses this file to You under the Apache License, Version 2.0
-REM  (the "License"); you may not use this file except in compliance with
-REM  the License.  You may obtain a copy of the License at
-REM 
-REM       http://www.apache.org/licenses/LICENSE-2.0
-REM 
-REM  Unless required by applicable law or agreed to in writing, software
-REM  distributed under the License is distributed on an "AS IS" BASIS,
-REM  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-REM  See the License for the specific language governing permissions and
-REM  limitations under the License.
-REM 
-REM 
-sed -i -e "s/#define APU_HAVE_APR_ICONV\b.*/#define APU_HAVE_APR_ICONV 0/" ..\apr-util\include\apu.hw
-sed -i -e "s/#define APR_HAS_LDAP\b.*/#define APR_HAS_LDAP 0/" ..\apr-util\include\apr_ldap.hw
-
diff --git a/src/site/apt/building/ant.apt b/src/site/apt/building/ant.apt
deleted file mode 100644
index ceb2838..0000000
--- a/src/site/apt/building/ant.apt
+++ /dev/null
@@ -1,229 +0,0 @@
-~~ 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.
- ------
- Building Apache log4cxx with Apache Ant
- ------
- ------
- ------
-
-Building Apache log4cxx with Apache Ant
-
-   {{{https://ant.apache.org}Apache Ant}} with cpptasks from the
-   {{{http://ant-contrib.sourceforge.net}Ant-Contrib}} project can be used to build log4cxx
-   with supported compilers and is also used to generate the IDE project files included
-   in the releases.  The Apache Maven build which is used to generate the site documentation
-   and release packaging delegates to this build.  The Ant build can build APR and APR-Util
-   if source is available.
-
-* Quick start:
-
-   * Install {{{https://ant.apache.org}Apache Ant}} 1.6.5 or later.
-
-   * Install cpptasks 1.0b5 or later from the {{{http://ant-contrib.sourceforge.net}Ant-Contrib Project}}.
-     ant-contribs 1.0b3 or later is needed for some less frequent build targets.
-
-   * Install APR and APR-Util or place source in apr and apr-util directories as a
-     sibling to the log4cxx directory.
-
-   * Install gzip and zip (used for compression by RollingFileAppender) and
-     sed (used to normalize output files for comparison in unit tests).
-
-   * Install log4j 1.2.  Used in testing of SocketAppender.
-
-   Building and testing log4cxx on a Unix platform with packaged APR and APR-Util.
-
-+----+
-$ export CLASSPATH=~/cpptasks/cpptasks-1.0b5.jar
-$ cd apache-log4cxx-x.x.x
-$ ant
-+----+
-
-   Building and testing log4cxx on a Unix platform with APR and APR-Util built from source.
-
-+----+
-$ export CLASSPATH=~/cpptasks/cpptasks-1.0b5.jar
-$ tar -xvzf apr-1.2.12.tar.gz
-$ mv apr-1.2.12 apr
-$ tar -xvzf apr-util-1.2.12.tar.gz
-$ mv apr-util-1.2.12 apr-util
-$ cd apache-log4cxx-x.x.x
-$ ant
-+----+
-
-   Building and testing log4cxx on a Microsoft Windows with APR and APR-Util built from source.
-
-+----+
-$ "%VS120COMNTOOLS%\vsvars32.bat"
-$ set PATH=\apache-ant-1.7.0\bin;%PATH%
-$ set CLASSPATH=\cpptasks\cpptasks-1.0b5.jar
-$ tar -xvzf apr-1.2.12.tar.gz
-$ rename apr-1.2.12 apr
-$ tar -xvzf apr-util-1.2.12.tar.gz
-$ rename apr-util-1.2.12 apr-util
-$ cd apache-log4cxx-x.x.x
-$ ant -Dcompiler=xyz
-+----+
-
-* Common ant targets
-
-*-----------------------+---------------------------------------------------------------------------------------------+
-| build                 | build log4cxx library.                                                                      |
-*-----------------------+---------------------------------------------------------------------------------------------+
-| check                 | build logcxx library and build and run unit tests and examples.                             |
-*-----------------------+---------------------------------------------------------------------------------------------+
-| clean                 | Delete all generated files.                                                                 |
-*-----------------------+---------------------------------------------------------------------------------------------+
-| build-unittest        | build log4cxx library and unit test.                                                        |
-*-----------------------+---------------------------------------------------------------------------------------------+
-| run-socketserver      | Tests SocketAppender with Java-based receiver.                                              |
-*-----------------------+---------------------------------------------------------------------------------------------+
-| build-projects-vc6    | Build Microsoft Visual Studio 6 project files.                                              |
-*-----------------------+---------------------------------------------------------------------------------------------+
-| build-projects-vc7    | Build Microsoft Visual Studio .NET project files.                                           |
-*-----------------------+---------------------------------------------------------------------------------------------+
-| build-projects-vc8    | Build Microsoft Visual Studio 2005 project files.                                           |
-*-----------------------+---------------------------------------------------------------------------------------------+
-| build-projects-vc9    | Build Microsoft Visual Studio 2008 project files.                                           |
-*-----------------------+---------------------------------------------------------------------------------------------+
-| build-projects-xcode  | Build Apple Xcode project files.                                                            |
-*-----------------------+---------------------------------------------------------------------------------------------+
-
-   All build products will be placed in the target subdirectory.
-
-   Project files should be generated after successfully building the library, however it is possible
-   to generate Microsoft Visual Studio project files on other platforms.  The project
-   files will typically be missing references to the Platform SDK libraries.
-   The Maven project modifies the generated project files for release preparation.  Generation
-   of Xcode projects from Microsoft Windows is not supported.
-
-* ant options
-
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Dcompiler        | Compiler, see {{{http://ant-contrib.sourceforge.net/cpptasks/antdocs/CCTask.html}cpptasks documentation}} for full list. |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Ddebug           | Build for debugging, yes (default), no.                                                                                  |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Dfind            | Attempt to locate compiled APR and APR-Util, yes (default), no.                                                          |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Dwith-apr        | path to non-default location for APR.                                                                                    |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Dwith-apr-util   | path to non-default location for APR-Util.                                                                               |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Denable-char     | Enable char API methods, choice of yes (default), no.                                                                    |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Denable-wchar_t  | Enable wchar_t API methods, choice of yes (default), no.                                                                 |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Denable-unichar  | Enable UniChar API methods, choice of yes, no (default).                                                                 |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Denable-cfstring | Enable CFString API methods, requires Mac OS/X CoreFoundation, choice of yes, no (default).                              |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Dwith-logchar    | Internal character representation, choice of utf-8 (default non-Windows), wchar_t (default Windows), unichar.            |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Dwith-charset    | External character encoding, choice of utf-8, iso-8859-1, usascii, ebcdic, auto (default).                               |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Dwith-SMTP       | SMTP implementation for SMTPAppender, choice of libesmtp, no (default).                                                  |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Dwith-ODBC       | OBDC implementation for ODBCAppender, choice of auto (default), unixODBC, iODBC, Microsoft, no                           |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Dlog4j.jar       | Path to log4j.jar for run-socketserver.                                                                                  |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Dprojects.dir    | Location for generated IDE projects.                                                                                     |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Dlib.type        | Library type to create, choice of shared (default), static.                                                              |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Druntime         | Type of C runtime library to use, choice of dynamic (default), static.                                                   |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -Doptimize        | Optimization: none (default), speed, size.                                                                               |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-| -p                | Display available targets and quit.                                                                                      |
-*-------------------+--------------------------------------------------------------------------------------------------------------------------+
-
-   SMTP and ODBC options can depend on libraries that that have different licenses. You should
-   review the corresponding licenses and understand the implications before redistribution.
-
-   Combining -Dlib.type=shared and -Druntime=static is unsafe.
-
-   Properties may also be placed in a build.properties file in the log4cxx directory. The file has
-   to be in the default format for {{{https://en.wikipedia.org/wiki/.properties}Java properties files}},
-   especially one must not provide options using the syntax -Dxy=z like on the shell, but only as
-   xy=z per line.
-
-* Platform specific notes:
-
-   ** Microsoft Windows
-
-   {{{http://gnuwin32.sourceforge.net}GnuWin32}}
-   provides binary versions of sed, gzip and zip.  Alternative,
-   the bin directory of {{{https://www.cygwin.com}Cygwin}} may be placed on the path.
-
-   If -Dwith-SMTP=libesmtp is specified, the build will attempt to build
-   libesmtp from source, unfortunately libesmtp depends on poll.h and will not build.
-
-   APR 1.2.12 has a known issue that will prevent
-   compilation with Visual Studio 6 unless a later Platform SDK is installed.
-   See APR bug {{{https://issues.apache.org/bugzilla/show_bug.cgi?44327}44327}}.
-   APR 1.2.11 and the corresponding APR-Util 1.2.10 will compile with Visual Studio 6.
-
-   If your are using Visual Studio, vsvars32.bat from the directory ...\Common7\Tools needs to be
-   executed manually before a build. This script sets include paths etc., else you will get a lot
-   of errors about missing windows.h and such.
-
-   *** Cygwin:
-
-   gcc 3.x does not provide wchar_t support which needs to be explicitly disabled.
-   The Win32 path to the APR libraries need to be provided (CYGWIN_HOME/lib) if compiling against an installed APR and APR-Util.
-
-+-----+
-$ cd apache-log4cxx-x.x.x
-$ ant -Dos.family=cygwin -Dwith-apr=/cygwin/lib -Dwith-apr-util=/cygwin/lib -Denable-wchar_t=0
-+-----+
-
-   *** MinGW:
-
-+----+
-$ cd apache-log4cxx-x.x.x
-$ path c:\mingw\bin;%PATH%
-$ ant -Dcompiler=gcc -Dfind=false build-all
-$ cd src\test\resources
-$ set TOTO=wonderful
-$ set key1=value1
-$ set key2=value2
-$ ..\..\..\target\debug\shared\testsuite -v
-$ ..\..\..\target\debug\shared\trivial
-$ ..\..\..\target\debug\shared\stream
-+----+
-
-   Running "ant check" was observed to fail with unexpected exceptions
-   in streamtestcase and datetimedateformattestcase.
-   See {{{https://issues.apache.org/jira/browse/LOGCXX-244}LOGCXX-244}}.
-
-   ** Debian:
-
-   Apache APR, APR-Util, Ant and log4j and zip may be installed using:
-
-+----+
-$ sudo apt-get install libapr1-dev libaprutil1-dev ant ant-optional liblog4j1.2-java zip
-+----+
-
-   ** Mac OS/X:
-
-   APR and APR-Util are provided by the platform in Mac OS/X 10.5 and iODBC in 10.4.
-
-   Site generation requires "doxygen" command on path which can be provided
-   by installing Doxygen.app and then setting the path like:
-
-+---+
-$ setenv PATH /Applications/Doxygen.app/Contents/Resources:$PATH
-+---+
diff --git a/src/site/apt/building/xcode.apt b/src/site/apt/building/xcode.apt
deleted file mode 100644
index 33a163a..0000000
--- a/src/site/apt/building/xcode.apt
+++ /dev/null
@@ -1,65 +0,0 @@
-~~ 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.
- ------
- Building Apache log4cxx with Apple Xcode
- ------
- ------
- ------
-
-Building Apache log4cxx with Apple Xcode
-
-*Building log4cxx.dylib
-
-   Run configure to generate log4cxx.h and log4cxx_private.h
-   then launch Xcode.
-
-+----+
-cd apache-log4cxx-x.x.x
-./configure
-open projects/log4cxx.xcodeproj
-+----+
-
-
-*Running unit tests
-
-   Run configure then open projects/testsuite.xcodeproj
-   or projects/testsuite-standalone.xcodeproj
-   (test suite and implementation in one project) in Xcode.
-
-   The unit tests require the working directory and several environment variables
-   to be set. To set these, select the executable in Groups & Files, press Info and:
-
-   * In the General pane, set Working Directory to Custom with path "../src/test/resources".
-
-   * In the Arguments pane, add following key value pairs to "Variables to be set in the environment":
-     TOTO=wonderful, key1=value1 and key2=value2.
-
-   * In the Arguments pane, add "-v" for verbose output, or individual test names in "Arguments to be passed on launch".
-
-*Issues
-
-   The project file generation does does not
-   properly create an entry in the "Link Binary with Libraries"
-   build phase for projects (such as the examples and unit tests) that depend
-   on log4cxx.  To work around the problem, open the project in Xcode and
-   in the Groups & Files pane, drag log4cxx.dylib
-   and drop on the "Link Binary with Libraries" folder
-   under Targets.
-
-   See issue {{{https://issues.apache.org/jira/browse/LOGCXX-245}LOGCXX-245}} for further information.
-
-   The projects provided in the release target Mac OS/X 10.5 which provides
-   preinstalled APR and APR-Util libraries.  To generate XCode projects to target Mac OS/X 10.4,
-   set up the ant build and then "ant build-projects-xcode -Dfind=false".
