1 Experimental cmake-based build support for APR-Util on Microsoft Windows
6 This build support is currently intended only for Microsoft Windows.
7 Only Windows NT-based systems can be targeted. (The traditional
8 Windows build support for APR can target Windows 9x as well.)
10 This build support is experimental. Specifically,
12 * It does not support all features of APR-Util.
13 * Some components may not be built correctly and/or in a manner
14 compatible with the previous Windows build support.
15 * Build interfaces, such as the mechanisms which are used to enable
16 optional functionality or specify prerequisites, may change from
17 release to release as feedback is received from users and bugs and
18 limitations are resolved.
20 Important: Refer to the "Known Bugs and Limitations" section for further
23 It is beyond the scope of this document to document or explain
24 how to utilize the various cmake features, such as different
25 build backends or provisions for finding support libraries.
27 Please refer to the cmake documentation for additional information
28 that applies to building any project with cmake.
33 The following tools must be in PATH:
35 * cmake, version 2.8 or later
36 cmake version 3.1.3 or later is required to work with current OpenSSL
37 releases. (OpenSSL is an optional prerequisite of APR-Util.)
38 * If using a command-line compiler: compiler and linker and related tools
39 (Refer to the cmake documentation for more information.)
41 The following support libraries are mandatory:
43 * APR 1.4.x or APR 1.5.x, built with cmake
45 Optional support libraries allow optional features of APR to be enabled:
48 * many others potentially, though the build support isn't currently
54 1. cd to a clean directory for building (i.e., don't build in your
57 2. Some cmake backends may want your compile tools in PATH. (Hint: "Visual
58 Studio Command Prompt")
60 3. set CMAKE_LIBRARY_PATH=d:\path\to\prereq1\lib;d:\path\to\prereq2\lib;...
62 4. set CMAKE_INCLUDE_PATH=d:\path\to\prereq1\include;d:\path\to\prereq2\include;...
64 5. cmake -G "some backend, like 'NMake Makefiles'"
65 -DCMAKE_INSTALL_PREFIX=d:/path/to/aprinst
66 -DAPR-Util-specific-flags
67 d:/path/to/aprutilsource
69 If APR 1.x was installed to a different directory than APR-Util,
70 also pass these additional arguments:
72 -DAPR_INCLUDE_DIR=d:/path/to/apr1inst/include
73 -DAPR_LIBRARIES=d:/path/to/apr1inst/lib/libapr-1.lib
75 Alternately, use cmake-gui and update settings in the GUI.
77 APR-Util feature flags:
79 APU_HAVE_CRYPTO Build crypt support (only the OpenSSL
80 implementation is currently supported)
82 APU_HAVE_ODBC Build ODBC DBD driver
84 APR_BUILD_TESTAPR Build APR-Util test suite
86 TEST_STATIC_LIBS Build the test suite to test the APR static
87 library instead of the APR dynamic library.
89 In order to build the test suite against both
90 static and dynamic libraries, separate builds
91 will be required, one with TEST_STATIC_LIBS
93 INSTALL_PDB Install .pdb files if generated.
96 CMAKE_C_FLAGS_RELEASE, _DEBUG, _RELWITHDEBINFO, _MINSIZEREL
100 For NMake Makefiles the choices are at least DEBUG, RELEASE,
101 RELWITHDEBINFO, and MINSIZEREL
102 Other backends make have other selections.
104 6. build using chosen backend (e.g., "nmake install")
106 Known Bugs and Limitations
107 --------------------------
109 * If include/apu.h or other generated files have been created in the source
110 directory by another build system, they will be used unexpectedly and
111 cause the build to fail.
112 * Options should be provided for remaining features, along with finding any
126 + XLATE, APU_HAVE_ICONV (no way to consume an apr-iconv build yet)
127 * Static builds of APR modules are not supported.
128 * CHANGES/LICENSE/NOTICE is not installed, unlike Makefile.win.
129 (But unlike Makefile.win we want to call them APR-Util-CHANGES.txt
130 and so on.) But perhaps that is a job for a higher-level script.
134 * Many APR-Util features have not been tested with this build.
135 * Developers need to examine the existing Windows build in great detail and see
136 what is missing from the cmake-based build, whether a feature or some build
138 * Any feedback you can provide on your experiences with this build will be