diff --git a/configure-aprutil.bat b/configure-aprutil.bat
deleted file mode 100755
index 6477b2c..0000000
--- a/configure-aprutil.bat
+++ /dev/null
@@ -1,19 +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
-
-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".
diff --git a/src/test/cpp/CMakeLists.txt b/src/test/cpp/CMakeLists.txt
index 793a30b..1c359fb 100644
--- a/src/test/cpp/CMakeLists.txt
+++ b/src/test/cpp/CMakeLists.txt
@@ -55,6 +55,7 @@
     add_test(NAME ${testName}
         COMMAND ${testName} -v
         WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/../resources
+        ENVIRONMENT "TOTO=wonderful;key1=value1;key2=value2"
     )
     if(WIN32)
       set_tests_properties(${testName} PROPERTIES ENVIRONMENT
