1266733SpeterExperimental cmake-based build support for APR on Microsoft Windows
2266733Speter
3266733SpeterStatus
4266733Speter------
5266733Speter
6266733SpeterThis build support is currently intended only for Microsoft Windows.
7266733SpeterOnly Windows NT-based systems can be targeted.  (The traditional 
8266733SpeterWindows build support for APR can target Windows 9x as well.)
9266733Speter
10266733SpeterThis build support is experimental.  Specifically,
11266733Speter
12266733Speter* It does not support all features of APR.
13266733Speter* Some components may not be built correctly and/or in a manner
14266733Speter  compatible with the previous Windows build support.
15266733Speter* Build interfaces, such as the mechanisms which are used to enable
16266733Speter  optional functionality or specify prerequisites, may change from
17266733Speter  release to release as feedback is received from users and bugs and
18266733Speter  limitations are resolved.
19266733Speter
20266733SpeterImportant: Refer to the "Known Bugs and Limitations" section for further
21266733Speter           information.
22266733Speter
23266733Speter           It is beyond the scope of this document to document or explain
24266733Speter           how to utilize the various cmake features, such as different
25266733Speter           build backends or provisions for finding support libraries.
26266733Speter
27266733Speter           Please refer to the cmake documentation for additional information
28266733Speter           that applies to building any project with cmake.
29266733Speter
30266733SpeterPrerequisites
31266733Speter-------------
32266733Speter
33266733SpeterThe following tools must be in PATH:
34266733Speter
35266733Speter* cmake, version 2.8 or later
36266733Speter* If using a command-line compiler: compiler and linker and related tools
37266733Speter  (Refer to the cmake documentation for more information.)
38266733Speter
39266733SpeterHow to build
40266733Speter------------
41266733Speter
42266733Speter1. cd to a clean directory for building (i.e., don't build in your
43266733Speter   source tree)
44266733Speter
45266733Speter2. Some cmake backends may want your compile tools in PATH.  (Hint: "Visual
46266733Speter   Studio Command Prompt")
47266733Speter
48266733Speter3. cmake -G "some backend, like 'NMake Makefiles'"
49266733Speter     -DCMAKE_INSTALL_PREFIX=d:/path/to/aprinst
50266733Speter     -DAPR-specific-flags
51266733Speter     d:/path/to/aprsource
52266733Speter
53266733Speter   Alternately, use cmake-gui and update settings in the GUI.
54266733Speter
55266733Speter   APR feature flags:
56266733Speter
57266733Speter       APR_INSTALL_PRIVATE_H  Install extra .h files which are required when
58266733Speter                              building httpd and Subversion but which aren't
59266733Speter                              intended for use by applications.
60266733Speter                              Default: OFF
61266733Speter       APR_HAVE_IPV6          Enable IPv6 support
62266733Speter                              Default: ON
63266733Speter       APR_BUILD_TESTAPR      Build APR test suite
64266733Speter                              Default: OFF
65266733Speter       TEST_STATIC_LIBS       Build the test suite to test the APR static
66266733Speter                              library instead of the APR dynamic library.
67266733Speter                              Default: OFF
68266733Speter                              In order to build the test suite against both
69266733Speter                              static and dynamic libraries, separate builds
70266733Speter                              will be required, one with TEST_STATIC_LIBS
71266733Speter                              set to ON.
72266733Speter       MIN_WINDOWS_VER        Minimum Windows version supported by this build
73266733Speter                              (This controls the setting of _WIN32_WINNT.)
74266733Speter                              "Vista" or "Windows7" or a numeric value like
75266733Speter                              "0x0601"
76266733Speter                              Default: "Vista"
77266733Speter                              For desktop/server equivalence or other values,
78266733Speter                              refer to
79266733Speter                              http://msdn.microsoft.com/en-us/library/windows/
80266733Speter                              desktop/aa383745(v=vs.85).aspx
81266733Speter       INSTALL_PDB            Install .pdb files if generated.
82266733Speter                              Default: ON
83266733Speter
84266733Speter   CMAKE_C_FLAGS_RELEASE, _DEBUG, _RELWITHDEBINFO, _MINSIZEREL
85266733Speter
86266733Speter   CMAKE_BUILD_TYPE
87266733Speter
88266733Speter       For NMake Makefiles the choices are at least DEBUG, RELEASE,
89266733Speter       RELWITHDEBINFO, and MINSIZEREL
90266733Speter       Other backends make have other selections.
91266733Speter
92266733Speter4. build using chosen backend (e.g., "nmake install")
93266733Speter
94266733SpeterKnown Bugs and Limitations
95266733Speter--------------------------
96266733Speter
97266733Speter* If include/apr.h or other generated files have been created in the source
98266733Speter  directory by another build system, they will be used unexpectedly and
99266733Speter  cause the build to fail.
100266733Speter* Options should be provided for remaining features:
101266733Speter  + APR_POOL_DEBUG
102266733Speter* APR-CHANGES.txt, APR-LICENSE.txt, and APR-NOTICE.txt are not installed,
103266733Speter  though perhaps that is a job for a higher-level script.
104266733Speter
105266733SpeterGenerally:
106266733Speter
107266733Speter* Many APR features have not been tested with this build.
108266733Speter* Developers need to examine the existing Windows build in great detail and see
109266733Speter  what is missing from the cmake-based build, whether a feature or some build
110266733Speter  nuance.
111266733Speter* Any feedback you can provide on your experiences with this build will be
112266733Speter  helpful.
113