release to release as feedback is received from users and bugs and
limitations are resolved.
-This can be used with Apache httpd 2.4.x by copying the following files from
-httpd trunk (in Subversion) into the 2.4.x source tree:
-
-* CMakeLists.txt
-* build/cpR_noreplace.pl
-
Important: Refer to the "Known Bugs and Limitations" section for further
information.
The following support libraries are mandatory:
* APR, built with cmake
- + Either APR 2.0-dev (trunk) or APR 1.4.x and APR-Util 1.5.x.
+ + Either APR 2.0-dev (trunk) or APR 1.5.x and APR-Util 1.5.x.
+ When building APR (but not APR-Util), specify the build option
APR_INSTALL_PRIVATE_H so that non-standard files required for building
Apache httpd are installed.
+ Additional APR settings affect httpd but are not mandatory, such as
APR_HAVE_IPV6.
-* PCRE
+* PCRE (version 6.7 or higher)
Certain optional features of APR 2.0-dev (trunk) or APR-Util 1.5.x
allow some optional features of httpd to be enabled. For example,
* openssl (mod_ssl and https support for ab)
* zlib (mod_deflate)
+OpenSSL
+-------
+
+If you have a binary install of OpenSSL in a well-known directory (e.g.,
+%HOME%\OpenSSL-Win64) and you wish to build httpd against a different
+install of OpenSSL, the cmake build may unexpectedly select OpenSSL
+libraries in the well-known directory even if the expected include files
+are used. Check the cmake output from your httpd build to confirm that
+the expected OpenSSL libraries and include files are used.
+
+The cmake FindOpenSSL module searches for OpenSSL libraries in a "VC"
+subdirectory of the OpenSSL install with filenames that indicate the build
+type (e.g., "<PREFIX>/lib/VC/ssleay32MD.lib"); defining CMAKE_PREFIX_PATH
+or OPENSSL_ROOT_DIR or even OPENSSL_LIBRARIES does not circumvent finding
+these libraries.
+
+To work around this issue, rename the well-known OpenSSL directory while
+building httpd. Let us know if you find a better solution.
+
How to build
------------
For NMake Makefiles the choices are at least DEBUG, RELEASE,
RELWITHDEBINFO, and MINSIZEREL
- Other backends make have other selections.
+ Other backends may have other selections.
ENABLE_foo:
the autoconf-based build. Key differences: The modpath (e.g.,
"generators") isn't provided or used, and the copy of the module
source being built is automatically updated when it changes.
- See also EXTRA_INCLUDE_DIRS.
+ See also EXTRA_COMPILE_FLAGS, EXTRA_INCLUDES, and EXTRA_LIBS.
+
+ EXTRA_COMPILE_FLAGS:
+
+ Space-delimited compile flags to define with the build.
- EXTRA_INCLUDE_DIRS:
+ EXTRA_INCLUDES:
List of additional directories to search for .h files. This may
be necessary when including third-party modules in the httpd build
via WITH_MODULES.
+ EXTRA_LIBS:
+
+ List of additional libraries to link with. This may be necessary when
+ including third-party modules in the httpd build via WITH_MODULES.
+
Port and SSLPort:
Port numbers for substitution into default .conf files. (The defaults
* ApacheMonitor has a build error and is disabled
* CGI examples aren't installed
* dbmmanage.pl and wintty aren't built/installed
-* mod_dav.lib and any similar libraries aren't installed, nor are any .exp
- files (though I'm not sure that is a problem)
* module enablement defaults are not in sync with the autoconf-based build
* no support for static support library builds; unclear if that is a
requirement; if so: taking PCRE as an example, we'd need to detect that it
is static and then turn on PCRE_STATIC for the libhttpd build
-* program attributes like descriptive name and version aren't set for most
- binaries
-* build/cpR_noreplace.pl doesn't declare what version of Perl is required
- and doesn't work with File::Path that is missing make_path
Generally: