wireshark/cmake/modules/FindCARES.cmake

82 lines
2.2 KiB
CMake

#
# - Find cares
# Find the native CARES includes and library
#
# CARES_INCLUDE_DIRS - where to find cares.h, etc.
# CARES_LIBRARIES - List of libraries when using cares.
# CARES_FOUND - True if cares found.
# CARES_DLL_DIR - (Windows) Path to the c-ares DLL.
# CARES_DLL - (Windows) Name of the c-ares DLL.
IF (CARES_INCLUDE_DIRS)
# Already in cache, be silent
SET(CARES_FIND_QUIETLY TRUE)
ENDIF (CARES_INCLUDE_DIRS)
INCLUDE(FindWSWinLibs)
FindWSWinLibs("c-ares-.*" "CARES_HINTS")
find_path( CARES_INCLUDE_DIR
NAMES ares.h
PATH_SUFFIXES
include
HINTS
"${CARES_INCLUDEDIR}"
"${CARES_HINTS}"
)
find_library( CARES_LIBRARY
NAMES cares libcares-2
PATH_SUFFIXES
lib64 lib
HINTS
"${CARES_LIBDIR}"
"${CARES_HINTS}"
)
# Try to retrieve version from header if found
if(CARES_INCLUDE_DIR)
set(_version_regex "^#define[ \t]+ARES_VERSION_STR[ \t]+\"([^\"]+)\".*")
file(STRINGS "${CARES_INCLUDE_DIR}/ares_version.h" CARES_VERSION REGEX "${_version_regex}")
string(REGEX REPLACE "${_version_regex}" "\\1" CARES_VERSION "${CARES_VERSION}")
unset(_version_regex)
endif()
# handle the QUIETLY and REQUIRED arguments and set CARES_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CARES
REQUIRED_VARS CARES_LIBRARY CARES_INCLUDE_DIR
VERSION_VAR CARES_VERSION)
IF(CARES_FOUND)
SET( CARES_LIBRARIES ${CARES_LIBRARY} )
SET( CARES_INCLUDE_DIRS ${CARES_INCLUDE_DIR} )
if (WIN32)
set ( CARES_DLL_DIR "${CARES_HINTS}/bin"
CACHE PATH "Path to C-Ares DLL"
)
file( GLOB _cares_dll RELATIVE "${CARES_DLL_DIR}"
"${CARES_DLL_DIR}/cares.dll"
)
set ( CARES_DLL ${_cares_dll}
CACHE FILEPATH "C-Ares DLL file name"
)
file( GLOB _cares_pdb RELATIVE "${CARES_DLL_DIR}"
"${CARES_DLL_DIR}/cares.pdb"
)
set ( CARES_PDB ${_cares_pdb}
CACHE FILEPATH "C-Ares PDB file name"
)
mark_as_advanced( CARES_DLL_DIR CARES_DLL CARES_PDB )
endif()
ELSE(CARES_FOUND)
SET( CARES_LIBRARIES )
SET( CARES_INCLUDE_DIRS )
SET( CARES_DLL_DIR )
SET( CARES_DLL )
ENDIF(CARES_FOUND)
MARK_AS_ADVANCED( CARES_LIBRARIES CARES_INCLUDE_DIRS )