Simplify the CMaks utility script structure.
* build/FindAPR.cmake: Include functions from build/APRCommon.cmake.
Make the acutal find-pacakge script conditional on an external variable.
* build/FindAPRUtil.cmake: Include FindAPR.cmake for utility functions.
* build/APRCommon.cmake: Removed.
git-svn-id: https://svn.apache.org/repos/asf/serf/trunk@1835399 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/build/APRCommon.cmake b/build/APRCommon.cmake
deleted file mode 100644
index 4a207f8..0000000
--- a/build/APRCommon.cmake
+++ /dev/null
@@ -1,65 +0,0 @@
-# ===================================================================
-# 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# 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.
-# ===================================================================
-
-function(_apru_config _program _varname _regexp)
- execute_process(COMMAND ${_program} ${ARGN}
- OUTPUT_VARIABLE _apru_output
- RESULT_VARIABLE _apru_failed)
-
- if(_apru_failed)
- message(FATAL_ERROR "${_program} ${ARGN} failed")
- else()
-
- # Join multi-line outupt
- string(REGEX REPLACE "[\r\n]" "" _apru_output "${_apru_output}")
-
- # Optionally apply the regular expression filter
- if(NOT ${_regexp} STREQUAL "")
- string(REGEX REPLACE "${_regexp}" " " _apru_output "${_apru_output}")
- endif()
-
- # Remove leading and trailing spaces
- string(REGEX REPLACE "^ +" "" _apru_output "${_apru_output}")
- string(REGEX REPLACE " +$" "" _apru_output "${_apru_output}")
-
- separate_arguments(_apru_output)
- set(${_varname} ${_apru_output} PARENT_SCOPE)
- endif()
-endfunction(_apru_config)
-
-function(_apru_version _version_varname _major_varname _minor_varname _header _prefix)
- file(STRINGS ${_header} _apru_major
- REGEX "^ *# *define +${_prefix}_MAJOR_VERSION +[0-9]+.*$")
- file(STRINGS ${_header} _apru_minor
- REGEX "^ *# *define +${_prefix}_MINOR_VERSION +[0-9]+.*$")
- file(STRINGS ${_header} _apru_patch
- REGEX "^ *# *define +${_prefix}_PATCH_VERSION +[0-9]+.*$")
- string(REGEX REPLACE "^[^0-9]+([0-9]+).*$" "\\1" _apru_major ${_apru_major})
- string(REGEX REPLACE "^[^0-9]+([0-9]+).*$" "\\1" _apru_minor ${_apru_minor})
- string(REGEX REPLACE "^[^0-9]+([0-9]+).*$" "\\1" _apru_patch ${_apru_patch})
- set(${_version_varname} "${_apru_major}.${_apru_minor}.${_apru_patch}" PARENT_SCOPE)
- set(${_major_varname} ${_apru_major} PARENT_SCOPE)
- set(${_minor_varname} ${_apru_minor} PARENT_SCOPE)
-endfunction(_apru_version)
-
-function(_apru_find_dll _varname _dllname)
- set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll")
- find_library(${_varname} NAMES ${_dllname}
- PATHS ${ARGN} NO_DEFAULT_PATH PATH_SUFFIXES "bin" "lib")
-endfunction(_apru_find_dll)
diff --git a/build/FindAPR.cmake b/build/FindAPR.cmake
index 4c10628..6802e18 100644
--- a/build/FindAPR.cmake
+++ b/build/FindAPR.cmake
@@ -17,76 +17,135 @@
# under the License.
# ===================================================================
+cmake_minimum_required(VERSION 3.0)
+
+# This module uses:
+# APR_ROOT, the (optional) root of the APR install area.
# This module defines:
-# APR_FOUND, set to TRUE if found, FALSE otherwise.
-# APR_VERSION, the version of APR that was found.
-# APR_CONTAINS_APRUTIL, set to TRUE if the APR major version is 2 or greater.
-# APR_INCLUDES, where to find apr.h, etc.
-# APR_LIBRARIES, linker switches to use with ld to link against APR
-# APR_EXTRALIBS, additional libraries to link against.
-# APR_CFLAGS, the flags to use to compile.
-# APR_STATIC_LIBS, on Windows: list of static libraries.
-# APR_RUNTIME_LIBS, on Windows: list of DLLs that will be loaded at runtime.
+# APR_FOUND, set to TRUE if found, FALSE otherwise.
+# APR_VERSION, the version of APR that was found.
+# APR_CONTAINS_APRUTIL, set to TRUE if the APR major version is 2 or greater.
+# APR_INCLUDES, where to find apr.h, etc.
+# APR_LIBRARIES, linker switches to use with ld to link against APR
+# APR_EXTRALIBS, additional libraries to link against.
+# APR_CFLAGS, the flags to use to compile.
+# APR_STATIC_LIBS, on Windows: list of static libraries.
+# APR_RUNTIME_LIBS, on Windows: list of DLLs that will be loaded at runtime.
-set(APR_FOUND FALSE)
-include(APRCommon)
+# -------------------------------------------------------------------
+# Common utility functions for FindAPR.cmaks and FindAPRtil.cmake
+# -------------------------------------------------------------------
-if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+function(_apru_config _program _varname _regexp)
+ execute_process(COMMAND ${_program} ${ARGN}
+ OUTPUT_VARIABLE _apru_output
+ RESULT_VARIABLE _apru_failed)
- if(NOT DEFINED APR_ROOT)
- message(FATAL_ERROR "APR_ROOT must be defined on Windows")
- endif()
-
- include(CheckIncludeFile)
-
- set(APR_INCLUDES "${APR_ROOT}/include")
- if(NOT EXISTS "${APR_INCLUDES}/apr.h")
- message(FATAL_ERROR "apr.h was not found in ${APR_INCLUDES}")
- endif()
- if(NOT EXISTS "${APR_INCLUDES}/apr_version.h")
- message(FATAL_ERROR "apr_version.h was not found in ${APR_INCLUDES}")
- endif()
-
- _apru_version(APR_VERSION _apr_major _apr_minor "${APR_INCLUDES}/apr_version.h" "APR")
- set(_apr_name "apr-${_apr_major}")
-
- find_library(APR_LIBRARIES NAMES "lib${_apr_name}.lib"
- PATHS ${APR_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib")
- find_library(APR_STATIC_LIBS NAMES "${_apr_name}.lib"
- PATHS ${APR_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib")
- _apru_find_dll(APR_RUNTIME_LIBS "lib${_apr_name}.dll" ${APR_ROOT})
-
-else() #NOT Windows
-
- if(DEFINED APR_ROOT)
- find_program(APR_CONFIG_EXECUTABLE NAMES apr-2-config apr-1-config
- PATHS "${APR_ROOT}/bin" NO_DEFAULT_PATH)
+ if(_apru_failed)
+ message(FATAL_ERROR "${_program} ${ARGN} failed")
else()
- find_program(APR_CONFIG_EXECUTABLE NAMES apr-2-config apr-1-config)
+ # Join multi-line outupt
+ string(REGEX REPLACE "[\r\n]" "" _apru_output "${_apru_output}")
+
+ # Optionally apply the regular expression filter
+ if(NOT ${_regexp} STREQUAL "")
+ string(REGEX REPLACE "${_regexp}" " " _apru_output "${_apru_output}")
+ endif()
+
+ # Remove leading and trailing spaces
+ string(REGEX REPLACE "^ +" "" _apru_output "${_apru_output}")
+ string(REGEX REPLACE " +$" "" _apru_output "${_apru_output}")
+
+ separate_arguments(_apru_output)
+ set(${_varname} ${_apru_output} PARENT_SCOPE)
endif()
- mark_as_advanced(APR_CONFIG_EXECUTABLE)
+endfunction(_apru_config)
- macro(_apr_invoke _varname _regexp)
- _apru_config(${APR_CONFIG_EXECUTABLE} ${_varname} "${_regexp}" "${ARGN}")
- endmacro(_apr_invoke)
+function(_apru_version _version_varname _major_varname _minor_varname _header _prefix)
+ file(STRINGS ${_header} _apru_major
+ REGEX "^ *# *define +${_prefix}_MAJOR_VERSION +[0-9]+.*$")
+ file(STRINGS ${_header} _apru_minor
+ REGEX "^ *# *define +${_prefix}_MINOR_VERSION +[0-9]+.*$")
+ file(STRINGS ${_header} _apru_patch
+ REGEX "^ *# *define +${_prefix}_PATCH_VERSION +[0-9]+.*$")
+ string(REGEX REPLACE "^[^0-9]+([0-9]+).*$" "\\1" _apru_major ${_apru_major})
+ string(REGEX REPLACE "^[^0-9]+([0-9]+).*$" "\\1" _apru_minor ${_apru_minor})
+ string(REGEX REPLACE "^[^0-9]+([0-9]+).*$" "\\1" _apru_patch ${_apru_patch})
+ set(${_version_varname} "${_apru_major}.${_apru_minor}.${_apru_patch}" PARENT_SCOPE)
+ set(${_major_varname} ${_apru_major} PARENT_SCOPE)
+ set(${_minor_varname} ${_apru_minor} PARENT_SCOPE)
+endfunction(_apru_version)
- _apr_invoke(APR_CFLAGS "(^| )-(g|O)[^ ]*" --cppflags --cflags)
- _apr_invoke(APR_INCLUDES "(^| )-I" --includes)
- _apr_invoke(APR_LIBRARIES "" --link-ld)
- _apr_invoke(APR_EXTRALIBS "" --libs)
- _apr_invoke(APR_VERSION "" --version)
- string(REGEX REPLACE "^([0-9]+)\\..*$" "\\1" _apr_major "${APR_VERSION}")
+function(_apru_find_dll _varname _dllname)
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll")
+ find_library(${_varname} NAMES ${_dllname}
+ PATHS ${ARGN} NO_DEFAULT_PATH PATH_SUFFIXES "bin" "lib")
+endfunction(_apru_find_dll)
-endif() # NOT Windows
+# -------------------------------------------------------------------
-if(_apr_major GREATER 2)
- set(APR_CONTAINS_APRUTIL TRUE)
-else()
- set(APR_CONTAINS_APRUTIL FALSE)
-endif()
+if(NOT _apru_include_only_utilities)
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(APR
- REQUIRED_VARS APR_LIBRARIES APR_INCLUDES
- VERSION_VAR APR_VERSION)
+ set(APR_FOUND FALSE)
+
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+
+ if(NOT DEFINED APR_ROOT)
+ message(FATAL_ERROR "APR_ROOT must be defined on Windows")
+ endif()
+
+ include(CheckIncludeFile)
+
+ set(APR_INCLUDES "${APR_ROOT}/include")
+ if(NOT EXISTS "${APR_INCLUDES}/apr.h")
+ message(FATAL_ERROR "apr.h was not found in ${APR_INCLUDES}")
+ endif()
+ if(NOT EXISTS "${APR_INCLUDES}/apr_version.h")
+ message(FATAL_ERROR "apr_version.h was not found in ${APR_INCLUDES}")
+ endif()
+
+ _apru_version(APR_VERSION _apr_major _apr_minor "${APR_INCLUDES}/apr_version.h" "APR")
+ set(_apr_name "apr-${_apr_major}")
+
+ find_library(APR_LIBRARIES NAMES "lib${_apr_name}.lib"
+ PATHS ${APR_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib")
+ find_library(APR_STATIC_LIBS NAMES "${_apr_name}.lib"
+ PATHS ${APR_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib")
+ _apru_find_dll(APR_RUNTIME_LIBS "lib${_apr_name}.dll" ${APR_ROOT})
+
+ else() #NOT Windows
+
+ if(DEFINED APR_ROOT)
+ find_program(APR_CONFIG_EXECUTABLE NAMES apr-2-config apr-1-config
+ PATHS "${APR_ROOT}/bin" NO_DEFAULT_PATH)
+ else()
+ find_program(APR_CONFIG_EXECUTABLE NAMES apr-2-config apr-1-config)
+ endif()
+ mark_as_advanced(APR_CONFIG_EXECUTABLE)
+
+ macro(_apr_invoke _varname _regexp)
+ _apru_config(${APR_CONFIG_EXECUTABLE} ${_varname} "${_regexp}" "${ARGN}")
+ endmacro(_apr_invoke)
+
+ _apr_invoke(APR_CFLAGS "(^| )-(g|O)[^ ]*" --cppflags --cflags)
+ _apr_invoke(APR_INCLUDES "(^| )-I" --includes)
+ _apr_invoke(APR_LIBRARIES "" --link-ld)
+ _apr_invoke(APR_EXTRALIBS "" --libs)
+ _apr_invoke(APR_VERSION "" --version)
+ string(REGEX REPLACE "^([0-9]+)\\..*$" "\\1" _apr_major "${APR_VERSION}")
+
+ endif() # NOT Windows
+
+ if(_apr_major GREATER 2)
+ set(APR_CONTAINS_APRUTIL TRUE)
+ else()
+ set(APR_CONTAINS_APRUTIL FALSE)
+ endif()
+
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(APR
+ REQUIRED_VARS APR_LIBRARIES APR_INCLUDES
+ VERSION_VAR APR_VERSION)
+
+endif(NOT _apru_include_only_utilities)
diff --git a/build/FindAPRUtil.cmake b/build/FindAPRUtil.cmake
index 946ceb2..0e6466c 100644
--- a/build/FindAPRUtil.cmake
+++ b/build/FindAPRUtil.cmake
@@ -17,18 +17,22 @@
# under the License.
# ===================================================================
+cmake_minimum_required(VERSION 3.0)
+
+# This module uses:
+# APRUTIL_ROOT, the (optional) root of the APR-Util install area.
# This module defines:
-# APRUTIL_FOUND, set to TRUE if found, FALSE otherwise.
-# APRUTIL_VERSION, the version of APR that was found.
-# APRUTIL_INCLUDES, where to find apr.h, etc.
-# APRUTIL_LIBRARIES, linker switches to use with ld to link against APR
-# APRUTIL_EXTRALIBS, additional libraries to link against.
-# APRUTIL_STATIC_LIBS, on Windows: list of static libraries.
-# APRUTIL_RUNTIME_LIBS, on Windows: list of DLLs that will be loaded at runtime.
+# APRUTIL_FOUND, set to TRUE if found, FALSE otherwise.
+# APRUTIL_VERSION, the version of APR that was found.
+# APRUTIL_INCLUDES, where to find apr.h, etc.
+# APRUTIL_LIBRARIES, linker switches to use with ld to link against APR
+# APRUTIL_EXTRALIBS, additional libraries to link against.
+# APRUTIL_STATIC_LIBS, on Windows: list of static libraries.
+# APRUTIL_RUNTIME_LIBS, on Windows: list of DLLs that will be loaded at runtime.
-if(NOT APR_FOUND)
- find_package(APR)
+if(NOT APR_FOUND) # FIXME: should become: if(NOT TARGET APR::APR)
+ find_package(APR REQUIRED)
endif()
if(APR_CONTAINS_APRUTIL)
@@ -43,8 +47,11 @@
else(APR_CONTAINS_APRUTIL)
+ set(_apru_include_only_utilities TRUE)
+ include(${CMAKE_CURRENT_LIST_DIR}/FindAPR.cmake)
+ unset(_apru_include_only_utilities)
+
set(APRUTIL_FOUND FALSE)
- include(APRCommon)
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")