diff options
-rw-r--r-- | CMakeLists.txt | 91 | ||||
-rw-r--r-- | README.cmake | 137 |
2 files changed, 152 insertions, 76 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 8827d5c54..b3c6ca985 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,82 +1,21 @@ -PROJECT(APR C) - -# Experimental cmake-based build support for APR on Windows -# -# General usage: -# 0. Read the todos down below and make sure this is good enough for your -# purposes. -# 1. cd to a clean directory for building (i.e., don't build in your -# source tree) -# 2. set CMAKE_LIBRARY_PATH=d:\path\to\prereq1\lib;d:\path\to\prereq2\lib;... -# 3. set CMAKE_INCLUDE_PATH=d:\path\to\prereq1\include;d:\path\to\prereq2\include;... -# 4. cmake -G "some backend, like 'NMake Makefiles'" \ -# -DCMAKE_INSTALL_PREFIX=d:/path/to/aprinst \ -# -DAPR-specific-flags \ -# d:/path/to/aprsource -# Alternately, use cmake-gui and update settings in the GUI. +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at # -# APR flags: -# APU_USE_EXPAT Use Expat as the underlying XML implementation -# Default: ON -# APU_USE_LIBXML2 Use libxml2 as the underlying XML implementation -# Exactly one of APU_USE_EXPAT and APU_USE_LIBXML2 -# must be specified. -# Default: OFF -# APR_INSTALL_PRIVATE_H Install extra .h files which are required by httpd -# but which aren't intended for use by applications. -# Default: OFF -# APU_HAVE_CRYPTO Build crypt support (only the OpenSSL implementation -# is currently supported) -# Default: OFF -# APU_HAVE_ODBC Build ODBC DBD driver -# Default: ON -# APR_HAVE_IPV6 Enable IPv6 support -# Default: ON -# APR_SHOW_SETTINGS Display key build settings at the end of build -# generation -# Default: ON -# APR_BUILD_TESTAPR Build APR test suite -# Default: OFF +# http://www.apache.org/licenses/LICENSE-2.0 # -# Other flags of interest: -# LIBXML2_ICONV_INCLUDE_DIR, LIBXML2_ICONV_LIBRARIES -# If using libxml2 for the XML implementation and the build of libxml2 -# requires iconv, set these variables to allow iconv includes -# and libraries to be found. -# 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. -# 5. build using chosen backend (e.g., "nmake install") +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # -# Todos to properly support Windows: -# . Fix problem where srcdir/include/apr.h (if it exists) is found before builddir/apr.h -# (and similar for apu_want.h) -# . Build apr_app.c into libapr-2 properly (what about apr-2.lib?) -# . Options for remaining features, along with finding any necessary libraries -# + APR_POOL_DEBUG -# + DBM: -# . APU_HAVE_GDBM -# . APU_HAVE_NDBM -# . APU_HAVE_DB -# + DBD: -# . APU_HAVE_PGSQL -# . APU_HAVE_MYSQL -# . APU_HAVE_SQLITE3 -# . APU_HAVE_SQLITE2 -# . APU_HAVE_ORACLE -# + CRYPTO: -# . APU_HAVE_NSS -# + APU_HAVE_ICONV -# . Static builds of APR modules -# . Alternate build of test programs to use libapr-2.dll -# . Support static *or* shared build of Expat -# . Some easier way to run the test suite (the stuff besides testall.exe) -# . Install CHANGES/LICENSE/NOTICE like Makefile.win -# . test/internal/testucs -# . aprapp-2.lib/libaprapp-2.lib -# . All the other stuff Jeff doesn't know about yet +# Read README.cmake before using this. + +PROJECT(APR C) CMAKE_MINIMUM_REQUIRED(VERSION 2.8) diff --git a/README.cmake b/README.cmake new file mode 100644 index 000000000..e184fab8a --- /dev/null +++ b/README.cmake @@ -0,0 +1,137 @@ +Experimental cmake-based build support for APR 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 APR. +* 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. + +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 +* 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: + +* Either expat or libxml2 + +Additional support libraries allow optional features of APR to be enabled: + +* OpenSSL +* many others potentially, though the build support isn't currently + implemented + +How to build +------------ + +1. cd to a clean directory for building (i.e., don't build in your + source tree) + +2. Some cmake backends may want your compile tools in PATH. (Hint: "Visual + Studio Command Prompt") + +3. set CMAKE_LIBRARY_PATH=d:\path\to\prereq1\lib;d:\path\to\prereq2\lib;... + +4. set CMAKE_INCLUDE_PATH=d:\path\to\prereq1\include;d:\path\to\prereq2\include;... + +5. cmake -G "some backend, like 'NMake Makefiles'" + -DCMAKE_INSTALL_PREFIX=d:/path/to/aprinst + -DAPR-specific-flags + d:/path/to/aprsource + + Alternately, use cmake-gui and update settings in the GUI. + + APR feature flags: + + Exactly one of APU_USE_EXPAT and APU_USE_LIBXML2 must be specified. + + APU_USE_EXPAT Use Expat as the underlying XML implementation + Default: ON + APU_USE_LIBXML2 Use libxml2 as the underlying XML + implementation + Default: OFF + APR_INSTALL_PRIVATE_H Install extra .h files which are required by + httpd but which aren't intended for use by + applications. + Default: OFF + APU_HAVE_CRYPTO Build crypt support (only the OpenSSL + implementation is currently supported) + Default: OFF + APU_HAVE_ODBC Build ODBC DBD driver + Default: ON + APR_HAVE_IPV6 Enable IPv6 support + Default: ON + APR_SHOW_SETTINGS Display key build settings at the end of build + generation + Default: ON + APR_BUILD_TESTAPR Build APR test suite + Default: OFF + + LIBXML2_ICONV_INCLUDE_DIR, LIBXML2_ICONV_LIBRARIES + + If using libxml2 for the XML implementation and the build of libxml2 + requires iconv, set these variables to allow iconv includes + and libraries to be found. + + 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. + +6. build using chosen backend (e.g., "nmake install") + +Known Bugs and Limitations +-------------------------- + +* If include/apr.h or other generated files have been created in the source + directory by another build system, they will be used unexpectedly and + cause the build to fail. +* apr_app.c, aprapp-2.lib, and libaprapp-2.lib are not handled properly. +* Options should be provided for remaining features, along with finding any + necessary libraries + + APR_POOL_DEBUG + + DBM: + . APU_HAVE_GDBM + . APU_HAVE_NDBM + . APU_HAVE_DB + + DBD: + . APU_HAVE_PGSQL + . APU_HAVE_MYSQL + . APU_HAVE_SQLITE3 + . APU_HAVE_SQLITE2 + . APU_HAVE_ORACLE + + CRYPTO: + . APU_HAVE_NSS + + APU_HAVE_ICONV +* Static builds of APR modules are not supported. +* No test program build to use libapr-2.dll is created. +* Support static *or* shared build of Expat. +* No script or other mechanism is provided to run the test suite. +* CHANGES/LICENSE/NOTICE is not installed, unlike Makefile.win. +* test/internal/testucs is not built. |