summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt91
-rw-r--r--README.cmake137
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.