blob: 39c8d749ac5d31a0be219cad17770461a883f21b [file] [log] [blame]
CMake based build support for APR on Microsoft Windows
Status
------
This build support is currently intended only for Microsoft Windows.
Prerequisites
-------------
The following tools must be in PATH:
* cmake, version 3.0 or later
cmake version 3.1.3 or later is required to work with current OpenSSL
releases. (OpenSSL is an optional prerequisite of APR.)
* If using a command-line compiler: compiler and linker and related tools
(Refer to the cmake documentation for more information.)
Additional support libraries allow optional features of APR to be enabled:
* Expat
* Iconv
* Libxml2
* SQlite3
* OpenSSL
How to build
------------
1. cd to a clean directory for building (i.e., don't build in your
source tree)
2. Some cmake backends may want your compile tools in PATH. (Hint: "Visual
Studio Command Prompt")
3. cmake -G "some backend, like 'Ninja' or 'NMake Makefiles'"
-DCMAKE_INSTALL_PREFIX=d:/path/to/aprinst
-DAPR-specific-flags
d:/path/to/aprsource
Alternately, use cmake-gui and update settings in the GUI.
APR feature flags:
Exactly one of APU_USE_EXPAT and APU_USE_LIBXML2 must be specified.
APU_USE_EXPAT Use Expat as the underlying XML implementation
Default: ON
APU_USE_LIBXML2 Use libxml2 as the underlying XML
implementation
Default: OFF
APR_INSTALL_PRIVATE_H Install extra .h files which are required when
building httpd and Subversion but which aren't
intended for use by applications.
Default: OFF
APU_HAVE_CRYPTO Build crypt support (only the OpenSSL
implementation is currently supported)
Default: OFF
APU_HAVE_ODBC Build ODBC DBD driver
Default: ON
APR_HAVE_IPV6 Enable IPv6 support
Default: ON
APR_BUILD_TESTAPR Build APR test suite
Default: OFF
TEST_STATIC_LIBS Build the test suite to test the APR static
library instead of the APR dynamic library.
Default: OFF
In order to build the test suite against both
static and dynamic libraries, separate builds
will be required, one with TEST_STATIC_LIBS
set to ON.
INSTALL_PDB Install .pdb files if generated.
Default: ON
LIBXML2_ICONV_INCLUDE_DIR, LIBXML2_ICONV_LIBRARIES
If using libxml2 for the XML implementation and the build of libxml2
requires iconv, set these variables to allow iconv includes
and libraries to be found.
CMAKE_C_FLAGS_RELEASE, _DEBUG, _RELWITHDEBINFO, _MINSIZEREL
CMAKE_BUILD_TYPE
For NMake Makefiles the choices are at least DEBUG, RELEASE,
RELWITHDEBINFO, and MINSIZEREL
Other backends make have other selections.
4. build using chosen backend (e.g., "nmake install")
Tested generators
-----------------
1. Ninja
This has been tested successfully with the following:
1. Visual Studio 2019 and Visual Studio 2022
Known Bugs and Limitations
--------------------------
* If include/apr.h or other generated files have been created in the source
directory by another build system, they will be used unexpectedly and
cause the build to fail.
* Options should be provided for remaining features, along with finding any
necessary libraries
+ APR_POOL_DEBUG
+ DBM:
. APU_HAVE_GDBM
. APU_HAVE_NDBM
. APU_HAVE_DB
+ DBD:
. APU_HAVE_PGSQL
. APU_HAVE_MYSQL
. APU_HAVE_SQLITE3
. APU_HAVE_SQLITE2
. APU_HAVE_ORACLE
+ CRYPTO:
. APU_HAVE_NSS
+ APU_HAVE_ICONV
* Static builds of APR modules are not supported.
* XML implementation (i.e., Expat or libxml2) could support static XML impl
with apr-2.lib.
Generally:
* Any feedback you can provide on your experiences with this build will be
helpful.