The following tools must be in PATH:
* cmake, version 2.8 or later
+ cmake version 3.1.3 or later is required to work with current OpenSSL
+ releases. (OpenSSL is an optional prerequisite of httpd.)
* Perl
* If the WITH_MODULES feature is used: awk
* If using a command-line compiler: compiler and linker and related tools
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,
* libxml2 (e.g., mod_proxy_html)
* lua 5.1 (mod_lua)
+* nghttp2 (mod_http2)
* 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.
+
+nghttp2
+-------
+
+This is required for mod_http2.
+
+cmake-based build support for nghttp2 for Windows can be found at
+https://github.com/trawick/nghttp2-minimal-cmake. That easily fits into
+a build system that already uses cmake for httpd, apr, and perhaps other
+packages. A dynamic build of nghttp2 using its normal Windows build
+system should also be usable by nghttp2.
+
How to build
------------
Alternately, you can use the cmake-gui and update settings in the GUI.
- PCRE_INCLUDE_DIR, PCRE_LIBRARIES, APR_INCLUDE_DIR, APR_LIBRARIES:
+ PCRE_INCLUDE_DIR, PCRE_LIBRARIES, APR_INCLUDE_DIR, APR_LIBRARIES,
+ NGHTTP2_INCLUDE_DIR, NGHTTP2_LIBRARIES:
cmake doesn't bundle FindXXX for these packages, so the crucial
information has to be specified in this manner if they aren't found
APR-Util are found in the default location, the LDAP library will be
included if it is present.
+ -DNGHTTP2_INCLUDE_DIR=d:/path/to/nghttp2inst/include (which has nghttp2/*.h)
+ -DNGHTTP2_LIBRARIES=d:/path/to/nghttp2inst/lib/nghttp2.lib"
+
+ These will have to be specified if nghttp2 was installed to a different
+ directory than httpd.
+
LIBXML2_ICONV_INCLUDE_DIR, LIBXML2_ICONV_LIBRARIES
If using a module that requires libxml2 *and* the build of libxml2 requires