From 2b3bc710fc6f8f2a0505eee158698dd5d58f6dbe Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Sun, 13 Mar 2016 13:09:37 +0100 Subject: [PATCH] cmake: fix version checks for external packages The name passed to find_package should match the one that is passed to find_package_handle_standard_args, otherwise the version matching is not properly done. The names are based on the FindXXX.cmake filename. This also simplifies components reporting for Libevent (done by find_package_handle_standard_args) and results in reporting a library instead of include directory when found. --- cmake/FindJansson.cmake | 2 +- cmake/FindJemalloc.cmake | 2 +- cmake/FindLibevent.cmake | 34 ++++++++++++++-------------------- 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/cmake/FindJansson.cmake b/cmake/FindJansson.cmake index 8de971fb..4c4bcb73 100644 --- a/cmake/FindJansson.cmake +++ b/cmake/FindJansson.cmake @@ -28,7 +28,7 @@ endif() include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set JANSSON_FOUND to TRUE # if all listed variables are TRUE and the requested version matches. -find_package_handle_standard_args(jansson REQUIRED_VARS +find_package_handle_standard_args(Jansson REQUIRED_VARS JANSSON_LIBRARY JANSSON_INCLUDE_DIR VERSION_VAR JANSSON_VERSION) diff --git a/cmake/FindJemalloc.cmake b/cmake/FindJemalloc.cmake index 5b01a721..667d2995 100644 --- a/cmake/FindJemalloc.cmake +++ b/cmake/FindJemalloc.cmake @@ -28,7 +28,7 @@ endif() include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set JEMALLOC_FOUND to TRUE # if all listed variables are TRUE and the requested version matches. -find_package_handle_standard_args(jemalloc REQUIRED_VARS +find_package_handle_standard_args(Jemalloc REQUIRED_VARS JEMALLOC_LIBRARY JEMALLOC_INCLUDE_DIR VERSION_VAR JEMALLOC_VERSION) diff --git a/cmake/FindLibevent.cmake b/cmake/FindLibevent.cmake index 4e5af6a9..8f40d9fe 100644 --- a/cmake/FindLibevent.cmake +++ b/cmake/FindLibevent.cmake @@ -20,7 +20,7 @@ # LIBEVENT_INCLUDE_DIRS - Libevent include directories # LIBEVENT_LIBRARIES - Libevent libraries to be linked # LIBEVENT__FOUND - Component was found ( is uppercase) -# LIBEVENT__LIBRARY - Library to be linked for Libevent omponent . +# LIBEVENT__LIBRARY - Library to be linked for Libevent component . find_package(PkgConfig QUIET) pkg_check_modules(PC_LIBEVENT QUIET libevent) @@ -33,7 +33,6 @@ find_path(LIBEVENT_INCLUDE_DIR HINTS ${PC_LIBEVENT_INCLUDE_DIRS} ) -set(_LIBEVENT_REQUIRED_VARS LIBEVENT_INCLUDE_DIR) if(LIBEVENT_INCLUDE_DIR) set(_version_regex "^#define[ \t]+_EVENT_VERSION[ \t]+\"([^\"]+)\".*") @@ -51,6 +50,7 @@ if(LIBEVENT_INCLUDE_DIR) unset(_version_regex) endif() +set(_LIBEVENT_REQUIRED_VARS) foreach(COMPONENT ${Libevent_FIND_COMPONENTS}) set(_LIBEVENT_LIBNAME libevent) # Note: compare two variables to avoid a CMP0054 policy warning @@ -59,42 +59,36 @@ foreach(COMPONENT ${Libevent_FIND_COMPONENTS}) else() set(_LIBEVENT_LIBNAME "event_${COMPONENT}") endif() - string(TOUPPER "${COMPONENT}" COMPONENT) - find_library(LIBEVENT_${COMPONENT}_LIBRARY + string(TOUPPER "${COMPONENT}" COMPONENT_UPPER) + find_library(LIBEVENT_${COMPONENT_UPPER}_LIBRARY NAMES ${_LIBEVENT_LIBNAME} HINTS ${PC_LIBEVENT_LIBRARY_DIRS} ) - if(LIBEVENT_${COMPONENT}_LIBRARY) - set(LIBEVENT_${COMPONENT}_FOUND 1) + if(LIBEVENT_${COMPONENT_UPPER}_LIBRARY) + set(Libevent_${COMPONENT}_FOUND 1) endif() - list(APPEND _LIBEVENT_REQUIRED_VARS LIBEVENT_${COMPONENT}_LIBRARY) + list(APPEND _LIBEVENT_REQUIRED_VARS LIBEVENT_${COMPONENT_UPPER}_LIBRARY) endforeach() unset(_LIBEVENT_LIBNAME) include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set LIBEVENT_FOUND to TRUE # if all listed variables are TRUE and the requested version matches. -find_package_handle_standard_args(LIBEVENT REQUIRED_VARS +find_package_handle_standard_args(Libevent REQUIRED_VARS ${_LIBEVENT_REQUIRED_VARS} + LIBEVENT_INCLUDE_DIR VERSION_VAR LIBEVENT_VERSION HANDLE_COMPONENTS) if(LIBEVENT_FOUND) set(LIBEVENT_INCLUDE_DIRS ${LIBEVENT_INCLUDE_DIR}) set(LIBEVENT_LIBRARIES) - if(NOT Libevent_FIND_QUIETLY) - message(STATUS "Found the following Libevent components:") - endif() - foreach(_COMPONENT ${Libevent_FIND_COMPONENTS}) - string(TOUPPER "${_COMPONENT}" COMPONENT) - if(LIBEVENT_${COMPONENT}_FOUND) - if(NOT Libevent_FIND_QUIETLY) - message(STATUS " ${_COMPONENT}") - endif() - list(APPEND LIBEVENT_LIBRARIES ${LIBEVENT_${COMPONENT}_LIBRARY}) - endif() + foreach(COMPONENT ${Libevent_FIND_COMPONENTS}) + string(TOUPPER "${COMPONENT}" COMPONENT_UPPER) + list(APPEND LIBEVENT_LIBRARIES ${LIBEVENT_${COMPONENT_UPPER}_LIBRARY}) + set(LIBEVENT_${COMPONENT_UPPER}_FOUND ${Libevent_${COMPONENT}_FOUND}) endforeach() endif() -mark_as_advanced(${_LIBEVENT_REQUIRED_VARS}) +mark_as_advanced(LIBEVENT_INCLUDE_DIR ${_LIBEVENT_REQUIRED_VARS}) unset(_LIBEVENT_REQUIRED_VARS)