1include(FindPackageHandleStandardArgs) 2 3function(__cares_get_version) 4 if(c-ares_INCLUDE_DIR AND EXISTS "${c-ares_INCLUDE_DIR}/ares_version.h") 5 file(STRINGS "${c-ares_INCLUDE_DIR}/ares_version.h" _cares_version_str REGEX "^#define ARES_VERSION_STR \"([^\n]*)\"$") 6 if(_cares_version_str MATCHES "#define ARES_VERSION_STR \"([^\n]*)\"") 7 set(c-ares_VERSION "${CMAKE_MATCH_1}" PARENT_SCOPE) 8 endif() 9 endif() 10endfunction() 11 12# We need to disable version checking, since c-ares does not provide it. 13set(_cares_version_var_suffixes "" _MAJOR _MINOR _PATCH _TWEAK _COUNT) 14foreach(_suffix IN LISTS _cares_version_var_suffixes) 15 set(_cares_save_FIND_VERSION${_suffix} ${c-ares_FIND_VERSION${_suffix}}) 16 unset(c-ares_FIND_VERSION${_suffix}) 17endforeach() 18find_package(c-ares CONFIG) 19foreach(_suffix IN LISTS _cares_version_var_suffixes) 20 set(c-ares_FIND_VERSION${_suffix} ${_cares_save_FIND_VERSION${_suffix}}) 21endforeach() 22 23if(c-ares_FOUND) 24 if(NOT DEFINED c-ares_VERSION) 25 __cares_get_version() 26 endif() 27 28 find_package_handle_standard_args(c-ares CONFIG_MODE) 29 return() 30endif() 31 32find_path(c-ares_INCLUDE_DIR NAMES ares.h) 33__cares_get_version() 34 35find_library(c-ares_LIBRARY cares) 36 37find_package_handle_standard_args(c-ares 38 REQUIRED_VARS c-ares_INCLUDE_DIR c-ares_LIBRARY 39 VERSION_VAR c-ares_VERSION 40 ) 41 42if(c-ares_FOUND) 43 add_library(c-ares::cares UNKNOWN IMPORTED) 44 set_target_properties(c-ares::cares PROPERTIES 45 IMPORTED_LOCATION "${c-ares_LIBRARY}" 46 INTERFACE_INCLUDE_DIRECTORIES "${c-ares_INCLUDE_DIR}" 47 ) 48endif() 49