Author: brane Date: Mon Jul 9 09:59:39 2018 New Revision: 1835399 URL: http://svn.apache.org/viewvc?rev=1835399&view=rev Log: 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. Removed: serf/trunk/build/APRCommon.cmake Modified: serf/trunk/build/FindAPR.cmake serf/trunk/build/FindAPRUtil.cmake Modified: serf/trunk/build/FindAPR.cmake URL: http://svn.apache.org/viewvc/serf/trunk/build/FindAPR.cmake?rev=1835399&r1=1835398&r2=1835399&view=diff ============================================================================== --- serf/trunk/build/FindAPR.cmake (original) +++ serf/trunk/build/FindAPR.cmake Mon Jul 9 09:59:39 2018 @@ -17,76 +17,135 @@ # under the License. # =================================================================== -# 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. +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. + + +# ------------------------------------------------------------------- +# Common utility functions for FindAPR.cmaks and FindAPRtil.cmake +# ------------------------------------------------------------------- + +function(_apru_config _program _varname _regexp) + execute_process(COMMAND ${_program} ${ARGN} + OUTPUT_VARIABLE _apru_output + RESULT_VARIABLE _apru_failed) -set(APR_FOUND FALSE) -include(APRCommon) + if(_apru_failed) + message(FATAL_ERROR "${_program} ${ARGN} failed") + else() + # Join multi-line outupt + string(REGEX REPLACE "[\r\n]" "" _apru_output "${_apru_output}") -if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") + # 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}") - if(NOT DEFINED APR_ROOT) - message(FATAL_ERROR "APR_ROOT must be defined on Windows") + separate_arguments(_apru_output) + set(${_varname} ${_apru_output} PARENT_SCOPE) endif() +endfunction(_apru_config) - include(CheckIncludeFile) +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) + +# ------------------------------------------------------------------- + +if(NOT _apru_include_only_utilities) + + 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}") - 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}") + endif() # NOT Windows - 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(_apr_major GREATER 2) + set(APR_CONTAINS_APRUTIL TRUE) else() - find_program(APR_CONFIG_EXECUTABLE NAMES apr-2-config apr-1-config) + set(APR_CONTAINS_APRUTIL FALSE) 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) + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(APR + REQUIRED_VARS APR_LIBRARIES APR_INCLUDES + VERSION_VAR APR_VERSION) + +endif(NOT _apru_include_only_utilities) Modified: serf/trunk/build/FindAPRUtil.cmake URL: http://svn.apache.org/viewvc/serf/trunk/build/FindAPRUtil.cmake?rev=1835399&r1=1835398&r2=1835399&view=diff ============================================================================== --- serf/trunk/build/FindAPRUtil.cmake (original) +++ serf/trunk/build/FindAPRUtil.cmake Mon Jul 9 09:59:39 2018 @@ -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 @@ if(APR_CONTAINS_APRUTIL) 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")