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.
This commit is contained in:
parent
a45540fd79
commit
2b3bc710fc
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
# LIBEVENT_INCLUDE_DIRS - Libevent include directories
|
||||
# LIBEVENT_LIBRARIES - Libevent libraries to be linked
|
||||
# LIBEVENT_<C>_FOUND - Component <C> was found (<C> is uppercase)
|
||||
# LIBEVENT_<C>_LIBRARY - Library to be linked for Libevent omponent <C>.
|
||||
# LIBEVENT_<C>_LIBRARY - Library to be linked for Libevent component <C>.
|
||||
|
||||
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)
|
||||
|
|
Loading…
Reference in New Issue