This is barely enough to run testapr.  For now it is intended only for
Windows.  include/apr.hwc is just apr.hw with variables for
APR_HAS_EXPAT|LIBXML2.  (And sorry about that mixed LF/CR-LF patch.)

I point to the latest Windows binary installs of libxml2 and expat like
this:

set
CMAKE_LIBRARY_PATH=c:\Users\Trawick\libxml2-2.7.8.win32\lib;c:\Users\Trawick\Expat2.1.0\Bin;
set
CMAKE_INCLUDE_PATH=c:\Users\Trawick\libxml2-2.7.8.win32\include;c:\Users\Trawick\Expat2.1.0\Source\lib

and I've only used the nmake backend (from a VS 2010 prompt).

I haven't actually tried very hard to use libxml2; the build I have seems
to want a GNU iconv??  More work would be required to use that.

-- 
Born in Roswell... married an alien...
http://emptyhammock.com/
Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt      (revision 0)
+++ CMakeLists.txt      (working copy)
@@ -0,0 +1,342 @@
+PROJECT(APR C)
+
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8.6)
+
+INCLUDE(GenerateExportHeader)
+
+# Either Expat or LibXml2 is required
+FIND_PACKAGE(Expat)
+FIND_PACKAGE(LibXml2)
+
+IF(NOT EXPAT_FOUND AND NOT LIBXML2_FOUND)
+  MESSAGE(FATAL_ERROR "Either Expat or LibXml2 is required, but neither was 
found")
+ENDIF()
+
+IF(EXPAT_FOUND)
+  OPTION(APR_USE_EXPAT      "Use Expat"                    ON)
+  IF(LIBXML2_FOUND)
+    OPTION(APR_USE_LIBXML2  "Use LibXml2"                  OFF)
+  ENDIF()
+ELSE()
+  OPTION(APR_USE_LIBXML2    "Use LibXml2"                  ON)
+ENDIF()
+
+OPTION(APR_SHOW_SETTINGS    "Show the build configuration" ON)
+OPTION(APR_BUILD_TESTAPR    "Build the test suite"         OFF)
+
+IF(NOT APR_USE_EXPAT AND NOT APR_USE_LIBXML2)
+  MESSAGE(FATAL_ERROR "Either Expat or LibXml2 must be selected")
+ENDIF()
+IF(APR_USE_EXPAT AND APR_USE_LIBXML2)
+  MESSAGE(FATAL_ERROR "Only one of Expat and LibXml2 can be selected")
+ENDIF()
+IF(APR_USE_EXPAT)
+  SET(apr_use_expat_10 1)
+  SET(apr_use_libxml2_10 0)
+ELSE()
+  SET(apr_use_expat_10 0)
+  SET(apr_use_libxml2_10 1)
+ENDIF()
+
+CONFIGURE_FILE(include/apr.hwc
+               ${PROJECT_BINARY_DIR}/apr.h)
+
+IF(APR_USE_EXPAT)
+  SET(XMLLIB_INCLUDE_DIR ${EXPAT_INCLUDE_DIRS})
+  SET(XMLLIB_LIBRARIES   ${EXPAT_LIBRARIES})
+ELSE()
+  SET(XMLLIB_INCLUDE_DIR ${LIBXML2_INCLUDE_DIR})
+  SET(XMLLIB_LIBRARIES   ${LIBXML2_LIBRARIES})
+ENDIF()
+
+# BROKEN: not searching PROJECT_BINARY_DIR first, so I have to
+#         manually delete apr.h in PROJECT_SOURCE_DIR/include if
+#         I've generated apr.h before using a Unix-style build
+INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}/include 
${PROJECT_SOURCE_DIR}/include/private ${PROJECT_SOURCE_DIR}/include/arch/win32 
${PROJECT_SOURCE_DIR}/include/private ${PROJECT_SOURCE_DIR}/include/arch/unix 
${XMLLIB_INCLUDE_DIR})
+
+ADD_DEFINITIONS(-DAPR_DECLARE_EXPORT)
+
+SET(APR_HEADERS ${PROJECT_BINARY_DIR}/apr.h)
+
+SET(APR_SOURCES
+  exports.c
+  export_vars.c
+  atomic/win32/apr_atomic.c
+  buckets/apr_brigade.c
+  buckets/apr_buckets.c
+  buckets/apr_buckets_alloc.c
+  buckets/apr_buckets_eos.c
+  buckets/apr_buckets_file.c
+  buckets/apr_buckets_flush.c
+  buckets/apr_buckets_heap.c
+  buckets/apr_buckets_mmap.c
+  buckets/apr_buckets_pipe.c
+  buckets/apr_buckets_pool.c
+  buckets/apr_buckets_refcount.c
+  buckets/apr_buckets_simple.c
+  buckets/apr_buckets_socket.c
+  crypto/apr_crypto.c
+  crypto/apr_crypto_commoncrypto.c
+  crypto/apr_crypto_nss.c
+  crypto/apr_crypto_openssl.c
+  crypto/apr_md4.c
+  crypto/apr_md5.c
+  crypto/apr_passwd.c
+  crypto/apr_sha1.c
+  crypto/crypt_blowfish.c
+  crypto/getuuid.c
+  crypto/uuid.c
+  dbd/apr_dbd.c
+  dbd/apr_dbd_mysql.c
+  dbd/apr_dbd_odbc.c
+  dbd/apr_dbd_oracle.c
+  dbd/apr_dbd_pgsql.c
+  dbd/apr_dbd_sqlite2.c
+  dbd/apr_dbd_sqlite3.c
+  dbd/unsupported/apr_dbd_freetds.c
+  dbm/apr_dbm.c
+  dbm/apr_dbm_berkeleydb.c
+  dbm/apr_dbm_gdbm.c
+  dbm/apr_dbm_ndbm.c
+  dbm/apr_dbm_sdbm.c
+  dbm/sdbm/sdbm.c
+  dbm/sdbm/sdbm_hash.c
+  dbm/sdbm/sdbm_lock.c
+  dbm/sdbm/sdbm_pair.c
+  dso/win32/dso.c
+  encoding/apr_base64.c
+  encoding/apr_escape.c
+  file_io/unix/copy.c
+  file_io/unix/fileacc.c
+  file_io/unix/filepath_util.c
+  file_io/unix/fullrw.c
+  file_io/unix/mktemp.c
+  file_io/unix/tempdir.c
+  file_io/win32/buffer.c
+  file_io/win32/dir.c
+  file_io/win32/filedup.c
+  file_io/win32/filepath.c
+  file_io/win32/filestat.c
+  file_io/win32/filesys.c
+  file_io/win32/flock.c
+  file_io/win32/open.c
+  file_io/win32/pipe.c
+  file_io/win32/readwrite.c
+  file_io/win32/seek.c
+  hooks/apr_hooks.c
+  locks/win32/proc_mutex.c
+  locks/win32/thread_cond.c
+  locks/win32/thread_mutex.c
+  locks/win32/thread_rwlock.c
+  memcache/apr_memcache.c
+  memory/unix/apr_pools.c
+  misc/unix/errorcodes.c
+  misc/unix/getopt.c
+  misc/unix/otherchild.c
+  misc/unix/version.c
+  misc/win32/apr_app.c
+  misc/win32/charset.c
+  misc/win32/env.c
+  misc/win32/internal.c
+  misc/win32/misc.c
+  misc/win32/rand.c
+  misc/win32/start.c
+  misc/win32/utf8.c
+  mmap/unix/common.c
+  mmap/win32/mmap.c
+  network_io/unix/inet_ntop.c
+  network_io/unix/inet_pton.c
+  network_io/unix/multicast.c
+  network_io/unix/sockaddr.c
+  network_io/unix/socket_util.c
+  network_io/win32/sendrecv.c
+  network_io/win32/sockets.c
+  network_io/win32/sockopt.c
+  passwd/apr_getpass.c
+  poll/unix/poll.c
+  poll/unix/pollcb.c
+  poll/unix/pollset.c
+  poll/unix/select.c
+  poll/unix/wakeup.c
+  random/unix/apr_random.c
+  random/unix/sha2.c
+  random/unix/sha2_glue.c
+  shmem/win32/shm.c
+  strings/apr_cpystrn.c
+  strings/apr_fnmatch.c
+  strings/apr_snprintf.c
+  strings/apr_strings.c
+  strings/apr_strnatcmp.c
+  strings/apr_strtok.c
+  strmatch/apr_strmatch.c
+  tables/apr_hash.c
+  tables/apr_tables.c
+  threadproc/win32/proc.c
+  threadproc/win32/signals.c
+  threadproc/win32/thread.c
+  threadproc/win32/threadpriv.c
+  time/win32/time.c
+  time/win32/timestr.c
+  tools/gen_test_char.c
+  uri/apr_uri.c
+  user/win32/groupinfo.c
+  user/win32/userinfo.c
+  util-misc/apr_date.c
+  util-misc/apr_queue.c
+  util-misc/apr_reslist.c
+  util-misc/apr_rmm.c
+  util-misc/apr_thread_pool.c
+  util-misc/apu_dso.c
+  xlate/xlate.c
+  xml/apr_xml.c
+  xml/apr_xml_expat.c
+  xml/apr_xml_libxml2.c
+)
+
+SET(APR_TEST_SOURCES
+  test/abts.c
+  test/testargs.c
+  test/testatomic.c
+  test/testbase64.c
+  test/testbuckets.c
+  test/testcond.c
+  test/testcrypto.c
+  test/testdate.c
+  test/testdbd.c
+  test/testdbm.c
+  test/testdir.c
+  test/testdso.c
+  test/testdup.c
+  test/testenv.c
+  test/testescape.c
+  test/testfile.c
+  test/testfilecopy.c
+  test/testfileinfo.c
+  test/testflock.c
+  test/testfmt.c
+  test/testfnmatch.c
+  test/testglobalmutex.c
+  test/testhash.c
+  test/testhooks.c
+  test/testipsub.c
+  test/testlfs.c
+  test/testlfsabi.c
+  test/testlfsabi32.c
+  test/testlfsabi64.c
+  test/testlfsabi_include.c
+  test/testlock.c
+  test/testmd4.c
+  test/testmd5.c
+  test/testmemcache.c
+  test/testmmap.c
+  test/testnames.c
+  test/testoc.c
+  test/testpass.c
+  test/testpath.c
+  test/testpipe.c
+  test/testpoll.c
+  test/testpools.c
+  test/testproc.c
+  test/testprocmutex.c
+  test/testqueue.c
+  test/testrand.c
+  test/testreslist.c
+  test/testrmm.c
+  test/testshm.c
+  test/testsleep.c
+  test/testsock.c
+  test/testsockets.c
+  test/testsockopt.c
+  test/teststr.c
+  test/teststrmatch.c
+  test/teststrnatcmp.c
+  test/testtable.c
+  test/testtemp.c
+  test/testthread.c
+  test/testtime.c
+  test/testud.c
+  test/testuri.c
+  test/testuser.c
+  test/testutil.c
+  test/testuuid.c
+  test/testvsn.c
+  test/testxlate.c
+  test/testxml.c
+)
+
+ADD_LIBRARY(apr ${APR_HEADERS} ${APR_SOURCES} ${PROJECT_BINARY_DIR}/apr.h)
+SET(targets ${targets} apr)
+TARGET_LINK_LIBRARIES(apr)
+
+SET(WINDOWS_LIBS
+  wsock32
+  ws2_32
+  rpcrt4
+)
+
+IF(APR_BUILD_TESTAPR)
+  EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory 
${PROJECT_BINARY_DIR}/data)
+  EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different 
${PROJECT_SOURCE_DIR}/test/data/billion-laughs.xml 
${PROJECT_BINARY_DIR}/data/billion-laughs.xml)
+  EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different 
${PROJECT_SOURCE_DIR}/test/data/file_datafile.txt 
${PROJECT_BINARY_DIR}/data/file_datafile.txt)
+  EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different 
${PROJECT_SOURCE_DIR}/test/data/mmap_datafile.txt 
${PROJECT_BINARY_DIR}/data/mmap_datafile.txt)
+
+  ADD_EXECUTABLE(testall ${APR_TEST_SOURCES})
+  SET(targets ${targets} testall)
+  TARGET_LINK_LIBRARIES(testall apr ${XMLLIB_LIBRARIES} ${WINDOWS_LIBS})
+
+  ADD_LIBRARY(mod_test MODULE test/mod_test.c)
+  SET(targets ${targets} mod_test)
+  TARGET_LINK_LIBRARIES(mod_test apr ${WINDOWS_LIBS})
+  SET_PROPERTY(TARGET mod_test APPEND PROPERTY LINK_FLAGS /export:print_hello)
+  # nasty work-around for difficulties adding more than one additional flag
+  # (they get joined in a bad way behind the scenes)
+  GET_PROPERTY(link_flags TARGET mod_test PROPERTY LINK_FLAGS)
+  SET(link_flags "${link_flags} /export:count_reps")
+  SET_TARGET_PROPERTIES(mod_test PROPERTIES LINK_FLAGS ${link_flags})
+
+  ADD_EXECUTABLE(occhild test/occhild.c)
+  SET(targets ${targets} occhild)
+  TARGET_LINK_LIBRARIES(occhild apr ${WINDOWS_LIBS})
+
+  ADD_EXECUTABLE(globalmutexchild test/globalmutexchild.c)
+  SET(targets ${targets} globalmutexchild)
+  TARGET_LINK_LIBRARIES(globalmutexchild apr ${WINDOWS_LIBS})
+
+  ADD_EXECUTABLE(proc_child test/proc_child.c)
+  SET(targets ${targets} proc_child)
+  TARGET_LINK_LIBRARIES(proc_child apr ${WINDOWS_LIBS})
+
+  ADD_EXECUTABLE(readchild test/readchild.c)
+  SET(targets ${targets} readchild)
+  TARGET_LINK_LIBRARIES(readchild apr ${WINDOWS_LIBS})
+
+  ADD_EXECUTABLE(sockchild test/sockchild.c)
+  SET(targets ${targets} sockchild)
+  TARGET_LINK_LIBRARIES(sockchild apr ${WINDOWS_LIBS})
+
+  ADD_EXECUTABLE(testshmconsumer test/testshmconsumer.c)
+  SET(targets ${targets} testshmconsumer)
+  TARGET_LINK_LIBRARIES(testshmconsumer apr ${WINDOWS_LIBS})
+
+  ADD_EXECUTABLE(testshmproducer test/testshmproducer.c)
+  SET(targets ${targets} testshmproducer)
+  TARGET_LINK_LIBRARIES(testshmproducer apr ${WINDOWS_LIBS})
+
+  ADD_EXECUTABLE(tryread test/tryread.c)
+  SET(targets ${targets} tryread)
+  TARGET_LINK_LIBRARIES(tryread apr ${WINDOWS_LIBS})
+ENDIF (APR_BUILD_TESTAPR)
+
+IF(APR_SHOW_SETTINGS)
+  STRING(TOUPPER "${CMAKE_BUILD_TYPE}" buildtype)
+  MESSAGE(STATUS "")
+  MESSAGE(STATUS "")
+  MESSAGE(STATUS "APR configuration summary:")
+  MESSAGE(STATUS "")
+  MESSAGE(STATUS "  Install prefix .................. : 
${CMAKE_INSTALL_PREFIX}")
+  MESSAGE(STATUS "  C compiler ...................... : ${CMAKE_C_COMPILER}")
+  MESSAGE(STATUS "  Use Expat ....................... : ${APR_USE_EXPAT}")
+  MESSAGE(STATUS "  Use LibXml2 ..................... : ${APR_USE_LIBXML2}")
+  MESSAGE(STATUS "  Library files for XML ........... : ${XMLLIB_LIBRARIES}")
+  MESSAGE(STATUS "  Build test suite ................ : ${APR_BUILD_TESTAPR}")
+ENDIF(APR_SHOW_SETTINGS)
Index: include/apr.hwc
===================================================================
--- include/apr.hwc     (revision 0)
+++ include/apr.hwc     (working copy)
@@ -0,0 +1,739 @@
+/* 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.
+ */
+
+
+#ifndef APR_H
+#define APR_H
+
+/* GENERATED FILE WARNING!  DO NOT EDIT apr.h
+ *
+ * You must modify apr.hw instead.
+ *
+ * And please, make an effort to stub apr.hnw and apr.h.in in the process.
+ *
+ * This is the Win32 specific version of apr.h.  It is copied from
+ * apr.hw by the apr.dsp and libapr.dsp projects.
+ */
+
+/**
+ * @file apr.h
+ * @brief APR Platform Definitions
+ * @remark This is a generated header generated from include/apr.h.in by
+ * ./configure, or copied from include/apr.hw or include/apr.hnw 
+ * for Win32 or Netware by those build environments, respectively.
+ */
+
+/* Make sure we have our platform identifier macro defined we ask for later.
+ */
+#if defined(_WIN32) && !defined(WIN32)
+#define WIN32 1
+#endif
+
+/* Ignore most warnings (back down to /W3) for poorly constructed headers,
+ * excluded from doxygen parsing
+ */
+#if defined(_MSC_VER) && _MSC_VER >= 1200
+#pragma warning(push, 3)
+#endif
+
+/* disable or reduce the frequency of...
+ *   C4057: indirection to slightly different base types
+ *   C4075: slight indirection changes (unsigned short* vs short[])
+ *   C4100: unreferenced formal parameter
+ *   C4127: conditional expression is constant
+ *   C4163: '_rotl64' : not available as an intrinsic function
+ *   C4201: nonstandard extension nameless struct/unions
+ *   C4244: int to char/short - precision loss
+ *   C4514: unreferenced inline function removed
+ */
+#if defined(_MSC_VER)
+#pragma warning(disable: 4100 4127 4163 4201 4514; once: 4057 4075 4244)
+#endif
+
+/* Ignore Microsoft's interpretation of secure development
+ * and the POSIX string handling API
+ */
+#if defined(_MSC_VER) && _MSC_VER >= 1400
+#ifndef _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_DEPRECATE
+#endif
+#pragma warning(disable: 4996)
+#endif
+
+/**
+ * @file apr.h
+ * @brief APR Platform Definitions
+ * @remark This is a generated header generated from include/apr.h.in by
+ * ./configure, or copied from include/apr.hw or include/apr.hnw
+ * for Win32 or Netware by those build environments, respectively.
+ */
+
+/**
+ * @defgroup APR Apache Portability Runtime library
+ * @{
+ */
+/**
+ * @defgroup apr_platform Platform Definitions
+ * @{
+ * @warning
+ * <strong><em>The actual values of macros and typedefs on this page<br>
+ * are platform specific and should NOT be relied upon!</em></strong>
+ */
+
+/* So that we can use inline on some critical functions, and use
+ * GNUC attributes (such as to get -Wall warnings for printf-like
+ * functions).  Only do this in gcc 2.7 or later ... it may work
+ * on earlier stuff, but why chance it.
+ *
+ * We've since discovered that the gcc shipped with NeXT systems
+ * as "cc" is completely broken.  It claims to be __GNUC__ and so
+ * on, but it doesn't implement half of the things that __GNUC__
+ * means.  In particular it's missing inline and the __attribute__
+ * stuff.  So we hack around it.  PR#1613. -djg
+ */
+#if defined(_MSC_VER)
+#define APR_INLINE __inline
+#define APR_HAS_INLINE          1
+#ifndef __attribute__
+#define __attribute__(__x)
+#endif
+#elif !defined(__GNUC__) || __GNUC__ < 2 || \
+    (__GNUC__ == 2 && __GNUC_MINOR__ < 7) ||\
+    defined(NEXT)
+#ifndef __attribute__
+#define __attribute__(__x)
+#endif
+#define APR_INLINE
+#define APR_HAS_INLINE          0
+#else
+#define APR_INLINE __inline__
+#define APR_HAS_INLINE          1
+#endif
+
+#ifdef _WIN32_WCE
+#define APR_NOT_IN_WCE          0
+#else
+#define APR_NOT_IN_WCE          1
+#endif
+
+#define APR_HAVE_ARPA_INET_H    0
+#define APR_HAVE_CONIO_H         APR_NOT_IN_WCE
+#define APR_HAVE_CRYPT_H        0
+#define APR_HAVE_CTYPE_H         APR_NOT_IN_WCE
+#define APR_HAVE_DIRENT_H       0
+#define APR_HAVE_ERRNO_H         APR_NOT_IN_WCE
+#define APR_HAVE_FCNTL_H         APR_NOT_IN_WCE
+#define APR_HAVE_IFADDRS_H      0
+#define APR_HAVE_IO_H            APR_NOT_IN_WCE
+#define APR_HAVE_LIMITS_H        APR_NOT_IN_WCE
+#define APR_HAVE_MSWSOCK_H       APR_NOT_IN_WCE
+#define APR_HAVE_NETDB_H        0
+#define APR_HAVE_NETINET_IN_H   0
+#define APR_HAVE_NETINET_SCTP_H 0
+#define APR_HAVE_NETINET_SCTP_UIO_H 0
+#define APR_HAVE_NETINET_TCP_H  0
+#define APR_HAVE_PROCESS_H      1
+#define APR_HAVE_PTHREAD_H      0
+#define APR_HAVE_SEMAPHORE_H    0
+#define APR_HAVE_SIGNAL_H        APR_NOT_IN_WCE
+#define APR_HAVE_STDARG_H        APR_NOT_IN_WCE
+#define APR_HAVE_STDDEF_H        APR_NOT_IN_WCE
+#define APR_HAVE_STDINT_H       0
+#define APR_HAVE_STDIO_H         1
+#define APR_HAVE_STDLIB_H        1
+#define APR_HAVE_STRING_H        1
+#define APR_HAVE_STRINGS_H      0
+#define APR_HAVE_SYS_IOCTL_H    0
+#define APR_HAVE_SYS_SENDFILE_H 0
+#define APR_HAVE_SYS_SIGNAL_H   0
+#define APR_HAVE_SYS_SOCKET_H   0
+#define APR_HAVE_SYS_SOCKIO_H   0
+#define APR_HAVE_SYS_SYSLIMITS_H 0
+#define APR_HAVE_SYS_TIME_H     0
+#define APR_HAVE_SYS_TYPES_H     APR_NOT_IN_WCE
+#define APR_HAVE_SYS_UIO_H      0
+#define APR_HAVE_SYS_UN_H       0
+#define APR_HAVE_SYS_WAIT_H     0
+#define APR_HAVE_TIME_H          APR_NOT_IN_WCE
+#define APR_HAVE_UNISTD_H       0
+#define APR_HAVE_WINDOWS_H       1
+#define APR_HAVE_WINSOCK2_H      APR_NOT_IN_WCE
+#define APR_HAVE_WS2TCPIP_H      APR_NOT_IN_WCE
+
+/** @} */
+/** @} */
+
+/* We don't include our conditional headers within the doxyblocks
+ * or the extern "C" namespace
+ */
+
+/* If windows.h was already included, our preferences don't matter.
+ * If not, include a restricted set of windows headers to our tastes.
+ */
+#if APR_HAVE_WINDOWS_H
+#ifndef _WINDOWS_
+
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x0501
+#endif
+
+#ifndef NOUSER
+#define NOUSER
+#endif
+#ifndef NOMCX
+#define NOMCX
+#endif
+#ifndef NOIME
+#define NOIME
+#endif
+
+/* Impossible to include winsock2.h after winsock.h, while windows.h
+ * attempts to load winsock.  Setting _WINSOCKAPI_ will dodge this.
+ */
+#if APR_HAVE_WINSOCK2_H
+#define _WINSOCKAPI_
+#endif
+
+#include <windows.h>
+#endif
+#endif
+
+#if APR_HAVE_WINSOCK2_H
+#include <winsock2.h>
+
+#if APR_HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+
+#if APR_HAVE_MSWSOCK_H
+#include <mswsock.h>
+#endif
+
+#else /* !APR_HAVE_WINSOCK2_H */
+
+#if APR_HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+
+#endif /* !APR_HAVE_WINSOCK2_H */
+
+#if APR_HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#if APR_HAVE_STDDEF_H
+#include <stddef.h>
+#endif
+
+#if APR_HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+#if APR_HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
+#if APR_HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
+/* header files for PATH_MAX, _POSIX_PATH_MAX */
+#if APR_HAVE_LIMITS_H
+#include <limits.h>
+#else
+#if APR_HAVE_SYS_SYSLIMITS_H
+#include <sys/syslimits.h>
+#endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @addtogroup apr_platform
+ * @ingroup APR
+ * @{
+ */
+
+#define APR_HAVE_SHMEM_MMAP_TMP     0
+#define APR_HAVE_SHMEM_MMAP_SHM     0
+#define APR_HAVE_SHMEM_MMAP_ZERO    0
+#define APR_HAVE_SHMEM_SHMGET_ANON  0
+#define APR_HAVE_SHMEM_SHMGET       0
+#define APR_HAVE_SHMEM_MMAP_ANON    0
+#define APR_HAVE_SHMEM_BEOS         0
+
+#define APR_USE_SHMEM_MMAP_TMP     0
+#define APR_USE_SHMEM_MMAP_SHM     0
+#define APR_USE_SHMEM_MMAP_ZERO    0
+#define APR_USE_SHMEM_SHMGET_ANON  0
+#define APR_USE_SHMEM_SHMGET       0
+#define APR_USE_SHMEM_MMAP_ANON    0
+#define APR_USE_SHMEM_BEOS         0
+
+#define APR_USE_FLOCK_SERIALIZE           0
+#define APR_USE_SYSVSEM_SERIALIZE         0
+#define APR_USE_POSIXSEM_SERIALIZE        0
+#define APR_USE_FCNTL_SERIALIZE           0
+#define APR_USE_PROC_PTHREAD_SERIALIZE    0
+#define APR_USE_PTHREAD_SERIALIZE         0
+
+#define APR_HAS_FLOCK_SERIALIZE           0
+#define APR_HAS_SYSVSEM_SERIALIZE         0
+#define APR_HAS_POSIXSEM_SERIALIZE        0
+#define APR_HAS_FCNTL_SERIALIZE           0
+#define APR_HAS_PROC_PTHREAD_SERIALIZE    0
+
+#define APR_PROCESS_LOCK_IS_GLOBAL        0
+
+#define APR_HAVE_CORKABLE_TCP   0
+#define APR_HAVE_GETRLIMIT      0
+#define APR_HAVE_ICONV          0
+#define APR_HAVE_IN_ADDR        1
+#define APR_HAVE_INET_ADDR      1
+#define APR_HAVE_INET_NETWORK   0
+#define APR_HAVE_IPV6           0
+#define APR_HAVE_SOCKADDR_UN    0
+#define APR_HAVE_MEMMOVE        1
+#define APR_HAVE_SETRLIMIT      0
+#define APR_HAVE_SIGACTION      0
+#define APR_HAVE_SIGSUSPEND     0
+#define APR_HAVE_SIGWAIT        0
+#define APR_HAVE_SA_STORAGE     0
+#define APR_HAVE_STRCASECMP     0
+#define APR_HAVE_STRDUP         1
+#define APR_HAVE_STRICMP        APR_NOT_IN_WCE
+#define APR_HAVE_STRNCASECMP    0
+#define APR_HAVE_STRNICMP       APR_NOT_IN_WCE
+#define APR_HAVE_STRSTR         1
+#define APR_HAVE_MEMCHR         1
+#define APR_HAVE_STRUCT_RLIMIT  0
+#define APR_HAVE_UNION_SEMUN    0
+#define APR_HAVE_SCTP           0
+#define APR_HAVE_IOVEC          0
+
+/*  APR Feature Macros */
+#define APR_HAS_SHARED_MEMORY     1
+#define APR_HAS_THREADS           1
+#define APR_HAS_SENDFILE          APR_NOT_IN_WCE
+#define APR_HAS_MMAP              1
+#define APR_HAS_FORK              0
+#define APR_HAS_RANDOM            1
+#define APR_HAS_OTHER_CHILD       1
+#define APR_HAS_DSO               1
+#define APR_HAS_SO_ACCEPTFILTER   0
+#define APR_HAS_UNICODE_FS        1
+#define APR_HAS_PROC_INVOKED      1
+#define APR_HAS_USER              APR_NOT_IN_WCE
+#define APR_HAS_LARGE_FILES       APR_NOT_IN_WCE
+#define APR_HAS_XTHREAD_FILES     APR_NOT_IN_WCE
+#define APR_HAS_OS_UUID           1
+
+#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD APR_NOT_IN_WCE
+
+/* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible
+ * to poll on files/pipes.
+ */
+#define APR_FILES_AS_SOCKETS      0
+
+/* This macro indicates whether or not EBCDIC is the native character set.
+ */
+#define APR_CHARSET_EBCDIC        0
+
+/* If we have a TCP implementation that can be "corked", what flag
+ * do we use?
+ */
+#define APR_TCP_NOPUSH_FLAG       0
+
+/* Is the TCP_NODELAY socket option inherited from listening sockets?
+ */
+#define APR_TCP_NODELAY_INHERITED 1
+
+/* Is the O_NONBLOCK flag inherited from listening sockets?
+ */
+#define APR_O_NONBLOCK_INHERITED 1
+
+/* Typedefs that APR needs. */
+
+typedef  unsigned char     apr_byte_t;
+
+typedef  short             apr_int16_t;
+typedef  unsigned short    apr_uint16_t;
+
+typedef  int               apr_int32_t;
+typedef  unsigned int      apr_uint32_t;
+
+typedef  __int64           apr_int64_t;
+typedef  unsigned __int64  apr_uint64_t;
+
+typedef  size_t      apr_size_t;
+#if APR_HAVE_STDDEF_H
+typedef  ptrdiff_t   apr_ssize_t;
+#else
+typedef  int         apr_ssize_t;
+#endif
+
+#if APR_HAS_LARGE_FILES
+typedef  __int64     apr_off_t;
+#else
+typedef  long        apr_off_t;
+#endif
+typedef  int         apr_socklen_t;
+typedef  apr_uint64_t      apr_ino_t;
+
+#ifdef _WIN64
+#define APR_SIZEOF_VOIDP   8
+#else
+#define APR_SIZEOF_VOIDP   4
+#endif
+
+#if APR_SIZEOF_VOIDP == 8
+typedef  apr_uint64_t            apr_uintptr_t;
+#else
+typedef  apr_uint32_t            apr_uintptr_t;
+#endif
+
+/* Are we big endian? */
+/* XXX: Fatal assumption on Alpha platforms */
+#define APR_IS_BIGENDIAN        0
+
+/* Mechanisms to properly type numeric literals */
+
+#ifndef __GNUC__
+#define APR_INT64_C(val) (val##i64)
+#define APR_UINT64_C(val) (val##Ui64)
+#else
+#define APR_INT64_C(val) (val##LL)
+#define APR_UINT64_C(val) (val##ULL)
+#endif
+
+#ifdef INT16_MIN
+#define APR_INT16_MIN   INT16_MIN
+#else
+#define APR_INT16_MIN   (-0x7fff - 1)
+#endif
+
+#ifdef INT16_MAX
+#define APR_INT16_MAX  INT16_MAX
+#else
+#define APR_INT16_MAX   (0x7fff)
+#endif
+
+#ifdef UINT16_MAX
+#define APR_UINT16_MAX  UINT16_MAX
+#else
+#define APR_UINT16_MAX  (0xffff)
+#endif
+
+#ifdef INT32_MIN
+#define APR_INT32_MIN   INT32_MIN
+#else
+#define APR_INT32_MIN   (-0x7fffffff - 1)
+#endif
+
+#ifdef INT32_MAX
+#define APR_INT32_MAX  INT32_MAX
+#else
+#define APR_INT32_MAX  0x7fffffff
+#endif
+
+#ifdef UINT32_MAX
+#define APR_UINT32_MAX  UINT32_MAX
+#else
+#define APR_UINT32_MAX  (0xffffffffU)
+#endif
+
+#ifdef INT64_MIN
+#define APR_INT64_MIN   INT64_MIN
+#else
+#define APR_INT64_MIN   (APR_INT64_C(-0x7fffffffffffffff) - 1)
+#endif
+
+#ifdef INT64_MAX
+#define APR_INT64_MAX   INT64_MAX
+#else
+#define APR_INT64_MAX   APR_INT64_C(0x7fffffffffffffff)
+#endif
+
+#ifdef UINT64_MAX
+#define APR_UINT64_MAX  UINT64_MAX
+#else
+#define APR_UINT64_MAX  APR_UINT64_C(0xffffffffffffffff)
+#endif
+
+#define APR_SIZE_MAX    (~((apr_size_t)0))
+
+/* Definitions that APR programs need to work properly. */
+
+/**
+ * APR public API wrap for C++ compilers.
+ */
+#ifdef __cplusplus
+#define APR_BEGIN_DECLS     extern "C" {
+#define APR_END_DECLS       }
+#else
+#define APR_BEGIN_DECLS
+#define APR_END_DECLS
+#endif
+
+/**
+ * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC,
+ * so that they follow the platform's calling convention.
+ * <PRE>
+ *
+ * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data);
+ *
+ * </PRE>
+ */
+#define APR_THREAD_FUNC  __stdcall
+
+
+#if defined(DOXYGEN) || !defined(WIN32)
+
+/**
+ * The public APR functions are declared with APR_DECLARE(), so they may
+ * use the most appropriate calling convention.  Public APR functions with
+ * variable arguments must use APR_DECLARE_NONSTD().
+ *
+ * @remark Both the declaration and implementations must use the same macro.
+ *
+ * <PRE>
+ * APR_DECLARE(rettype) apr_func(args)
+ * </PRE>
+ * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA
+ * @remark Note that when APR compiles the library itself, it passes the
+ * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32)
+ * to export public symbols from the dynamic library build.\n
+ * The user must define the APR_DECLARE_STATIC when compiling to target
+ * the static APR library on some platforms (e.g. Win32.)  The public symbols
+ * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n
+ * By default, compiling an application and including the APR public
+ * headers, without defining APR_DECLARE_STATIC, will prepare the code to be
+ * linked to the dynamic library.
+ */
+#define APR_DECLARE(type)            type
+
+/**
+ * The public APR functions using variable arguments are declared with
+ * APR_DECLARE_NONSTD(), as they must follow the C language calling convention.
+ * @see APR_DECLARE @see APR_DECLARE_DATA
+ * @remark Both the declaration and implementations must use the same macro.
+ * <PRE>
+ *
+ * APR_DECLARE_NONSTD(rettype) apr_func(args, ...);
+ *
+ * </PRE>
+ */
+#define APR_DECLARE_NONSTD(type)     type
+
+/**
+ * The public APR variables are declared with APR_DECLARE_DATA.
+ * This assures the appropriate indirection is invoked at compile time.
+ * @see APR_DECLARE @see APR_DECLARE_NONSTD
+ * @remark Note that the declaration and implementations use different forms,
+ * but both must include the macro.
+ *
+ * <PRE>
+ *
+ * extern APR_DECLARE_DATA type apr_variable;\n
+ * APR_DECLARE_DATA type apr_variable = value;
+ *
+ * </PRE>
+ */
+#define APR_DECLARE_DATA
+
+#elif defined(APR_DECLARE_STATIC)
+#define APR_DECLARE(type)            type __stdcall
+#define APR_DECLARE_NONSTD(type)     type __cdecl
+#define APR_DECLARE_DATA
+#elif defined(APR_DECLARE_EXPORT)
+#define APR_DECLARE(type)            __declspec(dllexport) type __stdcall
+#define APR_DECLARE_NONSTD(type)     __declspec(dllexport) type __cdecl
+#define APR_DECLARE_DATA             __declspec(dllexport)
+#else
+#define APR_DECLARE(type)            __declspec(dllimport) type __stdcall
+#define APR_DECLARE_NONSTD(type)     __declspec(dllimport) type __cdecl
+#define APR_DECLARE_DATA             __declspec(dllimport)
+#endif
+
+#if !defined(WIN32) || defined(APU_MODULE_DECLARE_STATIC)
+/**
+ * Declare a dso module's exported module structure as APR_MODULE_DECLARE_DATA.
+ *
+ * Unless APR_MODULE_DECLARE_STATIC is defined at compile time, symbols
+ * declared with APR_MODULE_DECLARE_DATA are always exported.
+ * @code
+ * module APR_MODULE_DECLARE_DATA mod_tag
+ * @endcode
+ */
+#define APR_MODULE_DECLARE_DATA
+#else
+#define APR_MODULE_DECLARE_DATA           __declspec(dllexport)
+#endif
+
+/**
+ * @deprecated
+ * @see APR_MODULE_DECLARE_DATA
+ */
+#define APU_MODULE_DECLARE_DATA           APR_MODULE_DECLARE_DATA
+
+/* Define APR_SSIZE_T_FMT.
+ * If ssize_t is an integer we define it to be "d",
+ * if ssize_t is a long int we define it to be "ld",
+ * if ssize_t is 64-bit, we define it to be msvc specific "I64d"
+ */
+#ifdef _WIN64
+#define APR_SSIZE_T_FMT          "I64d"
+#define APR_SIZE_T_FMT           "I64u"
+#else
+#define APR_SSIZE_T_FMT          "d"
+#define APR_SIZE_T_FMT           "u"
+#endif
+
+#if APR_HAS_LARGE_FILES
+#define APR_OFF_T_FMT            "I64d"
+#else
+#define APR_OFF_T_FMT            "d"
+#endif
+
+#define APR_PID_T_FMT            "d"
+
+#define APR_INT64_T_FMT          "I64d"
+#define APR_UINT64_T_FMT         "I64u"
+#define APR_UINT64_T_HEX_FMT     "I64x"
+
+/* No difference between PROC and GLOBAL mutex */
+#define APR_PROC_MUTEX_IS_GLOBAL      1
+
+/* Local machine definition for console and log output. */
+#define APR_EOL_STR              "\r\n"
+
+typedef int apr_wait_t;
+
+#if APR_HAS_UNICODE_FS
+/* An arbitrary size that is digestable. True max is a bit less than 32000 */
+#define APR_PATH_MAX 8192
+#else /* !APR_HAS_UNICODE_FS */
+#define APR_PATH_MAX MAX_PATH
+#endif
+
+#define APR_DSOPATH "PATH"
+
+/*
+ * we always have SDBM (it's in our codebase)
+ */
+#define APU_HAVE_SDBM           1
+
+#ifndef APU_DSO_MODULE_BUILD
+#define APU_HAVE_GDBM           0
+#define APU_HAVE_NDBM           0
+#define APU_HAVE_DB             0
+
+#if APU_HAVE_DB
+#define APU_HAVE_DB_VERSION     0
+#endif
+#endif
+
+/*
+ * we always enable dynamic driver loads within apr_dbd
+ * driver builds enable these flags individually
+ */
+#ifndef APU_DSO_MODULE_BUILD
+#define APU_HAVE_PGSQL          0
+#define APU_HAVE_MYSQL          0
+#define APU_HAVE_SQLITE3        0
+#define APU_HAVE_SQLITE2        0
+#define APU_HAVE_ORACLE         0
+#define APU_HAVE_ODBC           0
+#endif
+
+#define APU_HAVE_CRYPTO         0
+
+#ifndef APU_DSO_MODULE_BUILD
+#define APU_HAVE_OPENSSL        0
+#define APU_HAVE_NSS            0
+#define APU_HAVE_COMMONCRYPTO   0
+#endif
+
+#define APU_HAVE_ICONV          0
+#define APR_HAS_XLATE           (APU_HAVE_ICONV)
+
+#define APU_USE_EXPAT           @apr_use_expat_10@
+#define APU_USE_LIBXML2         @apr_use_libxml2_10@
+
+/** @} */
+
+/* Definitions that only Win32 programs need to compile properly. */
+
+/* XXX These simply don't belong here, perhaps in apr_portable.h
+ * based on some APR_HAVE_PID/GID/UID?
+ */
+#ifdef WIN32
+#ifndef __WATCOMC__
+#ifndef __GNUC__
+typedef  int         pid_t;
+#endif
+typedef  int         uid_t;
+typedef  int         gid_t;
+#endif
+#endif
+
+/* Typically defined in stdio.h or unistd.h
+ */
+#ifndef STDIN_FILENO
+#define STDIN_FILENO  0
+#endif
+#ifndef STDOUT_FILENO
+#define STDOUT_FILENO 1
+#endif
+#ifndef STDERR_FILENO
+#define STDERR_FILENO 2
+#endif
+
+#if APR_HAVE_IPV6
+
+/* Appears in later flavors, not the originals. */
+#ifndef in_addr6
+#define  in6_addr    in_addr6
+#endif
+
+#ifndef WS2TCPIP_INLINE
+#define IN6_IS_ADDR_V4MAPPED(a) \
+    (   (*(const apr_uint64_t *)(const void *)(&(a)->s6_addr[0]) == 0) \
+     && (*(const apr_uint32_t *)(const void *)(&(a)->s6_addr[8]) == 
ntohl(0x0000ffff)))
+#endif
+
+#endif /* APR_HAVE_IPV6 */
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Done with badly written headers, leave 'deprecated CRT' undeprecated
+ */
+#if defined(_MSC_VER) && _MSC_VER >= 1200
+#pragma warning(pop)
+#if _MSC_VER >= 1400
+#pragma warning(disable: 4996)
+#endif
+#endif
+
+#endif /* APR_H */

Reply via email to