summaryrefslogtreecommitdiff
path: root/README.cmake
diff options
context:
space:
mode:
authorJeff Trawick <trawick@apache.org>2013-08-29 17:59:11 +0000
committerJeff Trawick <trawick@apache.org>2013-08-29 17:59:11 +0000
commitc8364dfcb358c3453094121e028f515721b7a083 (patch)
treecfacff1d53777d8f0e354810c8e7af545e1ab3e7 /README.cmake
parentbf23ece364e35747dea541f5fce7559a8a106908 (diff)
downloadhttpd-c8364dfcb358c3453094121e028f515721b7a083.tar.gz
move cmake howto/buglist to a separate file, README.cmake
add license text to CMakeLists.txt git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1518736 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'README.cmake')
-rw-r--r--README.cmake160
1 files changed, 160 insertions, 0 deletions
diff --git a/README.cmake b/README.cmake
new file mode 100644
index 0000000000..182d4575e2
--- /dev/null
+++ b/README.cmake
@@ -0,0 +1,160 @@
+Experimental cmake-based build support for Apache httpd on Microsoft Windows
+
+Status
+------
+
+This build support is currently intended only for Microsoft Windows.
+
+This build support is experimental. Specifically,
+
+* It does not support all features of Apache httpd.
+* Some components may not be built correctly and/or in a manner
+ compatible with the previous Windows build support.
+* Build interfaces, such as the mechanisms which are used to enable
+ optional functionality or specify prerequisites, may change from
+ 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.
+
+ It is beyond the scope of this document to document or explain
+ how to utilize the various cmake features, such as different
+ build backends or provisions for finding support libraries.
+
+ Please refer to the cmake documentation for additional information
+ that applies to building any project with cmake.
+
+Prerequisites
+-------------
+
+The following tools must be in PATH:
+
+* cmake, version 2.8 or later
+* Perl
+* If the WITH_MODULES feature is used: awk
+* If using a command-line compiler: compiler and linker and related tools
+ (Refer to the cmake documentation for more 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.
+ + When building APR (but not APR-Util 1.5.x), 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
+
+Additional support libraries allow optional features of httpd to be enabled:
+
+* libxml2 (e.g., mod_proxy_html)
+* openssl (e.g., mod_ssl)
+* zlib (e.g., mod_deflate)
+
+How to build
+------------
+
+1. cd to a clean directory for building (i.e., don't build in your
+ source tree)
+
+2. Make sure Perl is in your PATH. Additionally, some backends may want
+ your compile tools in PATH. (Hint: "Visual Studio Command Prompt")
+ In the unlikely event that you use -DWITH_MODULES, make sure awk is
+ in PATH.
+
+3. cmake -G "some backend, like 'NMake Makefiles'"
+ -DCMAKE_INSTALL_PREFIX=d:/path/to/httpdinst
+ -DPCRE_INCLUDE_DIR=d:/path/to/pcreinst/include
+ -DPCRE_LIBRARIES=d:/path/to/pcreinst/lib/pcre[d].lib
+ -DAPR_INCLUDE_DIR=d:/path/to/aprinst/include
+ -DAPR_LIBRARIES="d:/path/to/aprinst/lib/libapr-1.lib;d:/path/to/aprinst/lib/libaprutil-1.lib"
+ -DENABLE_MOD_foo=A|I|O|a|i
+ d:/path/to/httpdsource
+
+ Alternately, you can use the cmake-gui and update settings in the GUI.
+
+ PCRE_INCLUDE_DIR, PCRE_LIBRARIES, APR_INCLUDE_DIR, APR_LIBRARIES:
+ cmake doesn't bundle FindXXX for these packages, so the crucial
+ information has to be specified in this manner
+
+ When building with APR trunk (future APR 2.x, with integrated APR-Util),
+ specify just the path to libapr-2.lib:
+
+ -DAPR_LIBRARIES=d:/path/to/aprinst/lib/libapr-2.lib
+
+ LIBXML2_ICONV_INCLUDE_DIR, LIBXML2_ICONV_LIBRARIES
+
+ If using a module that requires libxml2 and the build of libxml2 requires
+ iconv, set these variables to allow iconv includes and libraries to be
+ used. For example:
+
+ -DLIBXML2_ICONV_INCLUDE_DIR=c:\iconv-1.9.2.win32\include
+ -DLIBXML2_ICONV_LIBRARIES=c:\iconv-1.9.2.win32\lib\iconv.lib
+
+ 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.
+
+ ENABLE_MOD_foo:
+ Each module has a default setting which can be overridden with one of
+ the following values:
+ A build and Activate module
+ a build and Activate module IFF prereqs are available; if
+ prereqs are unavailable, don't build it
+ I build module but leave it Inactive (commented-out
+ LoadModule directive)
+ i build module but leave it Inactive IFF prereqs are
+ available; if prereqs are unavailable, don't build it
+ O Omit module completely
+
+ Examples: -DENABLE_MOD_ACCESS_COMPAT=O
+ -DENABLE_MOD_PROXY_HTML=i
+
+ WITH_MODULES:
+ Comma-separated paths to single file modules to statically link into
+ the server, like the --with-module=modpath:/path/to/mod_foo.c with
+ 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.
+
+ Port and SSLPort: port numbers for substitution into default .conf files.
+ (The defaults are 80 and 443.)
+
+4. build using chosen backend (e.g., "nmake install")
+
+Known Bugs and Limitations
+--------------------------
+
+* no support for APR/APU optional features as module prerequisites (e.g.,
+ the APU_HAVE_CRYPTO requirement of mod_session_crypto)
+* no logic to find support libraries needed by some modules (LUA, distcache)
+* no support for these modules:
+ + mod_ldap, mod_authnz_ldap, mod_socache_dc, mod_lua, mod_serf,
+ apreq+mod_apreq, mod_session_crypto
+ + additionally, mod_lbmethod_rr and mod_firehose don't compile on Windows
+ anyway
+* buildmark.c isn't necessarily rebuilt when httpd.exe is regenerated
+* ab + HAVE_OPENSSL isn't working at all, even for non-SSL
+* ApacheMonitor has a build error and is disabled
+* CGI examples aren't installed
+* .h files which reside outside of include are not installed
+* module enablement defaults are not in sync with the autoconf-based build
+
+Generally:
+
+* Many httpd features have not been tested with this build.
+* Developers need to examine the existing Windows build in great detail and see
+ what is missing from the cmake-based build, whether a feature or some build
+ nuance.
+* Any feedback you can provide on your experiences with this build will be
+ helpful.