xref: /aosp_15_r20/external/grpc-grpc/cmake/modules/Findc-ares.cmake (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Workerinclude(FindPackageHandleStandardArgs)
2*cc02d7e2SAndroid Build Coastguard Worker
3*cc02d7e2SAndroid Build Coastguard Workerfunction(__cares_get_version)
4*cc02d7e2SAndroid Build Coastguard Worker  if(c-ares_INCLUDE_DIR AND EXISTS "${c-ares_INCLUDE_DIR}/ares_version.h")
5*cc02d7e2SAndroid Build Coastguard Worker    file(STRINGS "${c-ares_INCLUDE_DIR}/ares_version.h" _cares_version_str REGEX "^#define ARES_VERSION_STR \"([^\n]*)\"$")
6*cc02d7e2SAndroid Build Coastguard Worker    if(_cares_version_str MATCHES "#define ARES_VERSION_STR \"([^\n]*)\"")
7*cc02d7e2SAndroid Build Coastguard Worker      set(c-ares_VERSION "${CMAKE_MATCH_1}" PARENT_SCOPE)
8*cc02d7e2SAndroid Build Coastguard Worker    endif()
9*cc02d7e2SAndroid Build Coastguard Worker  endif()
10*cc02d7e2SAndroid Build Coastguard Workerendfunction()
11*cc02d7e2SAndroid Build Coastguard Worker
12*cc02d7e2SAndroid Build Coastguard Worker# We need to disable version checking, since c-ares does not provide it.
13*cc02d7e2SAndroid Build Coastguard Workerset(_cares_version_var_suffixes "" _MAJOR _MINOR _PATCH _TWEAK _COUNT)
14*cc02d7e2SAndroid Build Coastguard Workerforeach(_suffix IN LISTS _cares_version_var_suffixes)
15*cc02d7e2SAndroid Build Coastguard Worker  set(_cares_save_FIND_VERSION${_suffix} ${c-ares_FIND_VERSION${_suffix}})
16*cc02d7e2SAndroid Build Coastguard Worker  unset(c-ares_FIND_VERSION${_suffix})
17*cc02d7e2SAndroid Build Coastguard Workerendforeach()
18*cc02d7e2SAndroid Build Coastguard Workerfind_package(c-ares CONFIG)
19*cc02d7e2SAndroid Build Coastguard Workerforeach(_suffix IN LISTS _cares_version_var_suffixes)
20*cc02d7e2SAndroid Build Coastguard Worker  set(c-ares_FIND_VERSION${_suffix} ${_cares_save_FIND_VERSION${_suffix}})
21*cc02d7e2SAndroid Build Coastguard Workerendforeach()
22*cc02d7e2SAndroid Build Coastguard Worker
23*cc02d7e2SAndroid Build Coastguard Workerif(c-ares_FOUND)
24*cc02d7e2SAndroid Build Coastguard Worker  if(NOT DEFINED c-ares_VERSION)
25*cc02d7e2SAndroid Build Coastguard Worker    __cares_get_version()
26*cc02d7e2SAndroid Build Coastguard Worker  endif()
27*cc02d7e2SAndroid Build Coastguard Worker
28*cc02d7e2SAndroid Build Coastguard Worker  find_package_handle_standard_args(c-ares CONFIG_MODE)
29*cc02d7e2SAndroid Build Coastguard Worker  return()
30*cc02d7e2SAndroid Build Coastguard Workerendif()
31*cc02d7e2SAndroid Build Coastguard Worker
32*cc02d7e2SAndroid Build Coastguard Workerfind_path(c-ares_INCLUDE_DIR NAMES ares.h)
33*cc02d7e2SAndroid Build Coastguard Worker__cares_get_version()
34*cc02d7e2SAndroid Build Coastguard Worker
35*cc02d7e2SAndroid Build Coastguard Workerfind_library(c-ares_LIBRARY cares)
36*cc02d7e2SAndroid Build Coastguard Worker
37*cc02d7e2SAndroid Build Coastguard Workerfind_package_handle_standard_args(c-ares
38*cc02d7e2SAndroid Build Coastguard Worker  REQUIRED_VARS c-ares_INCLUDE_DIR c-ares_LIBRARY
39*cc02d7e2SAndroid Build Coastguard Worker  VERSION_VAR c-ares_VERSION
40*cc02d7e2SAndroid Build Coastguard Worker  )
41*cc02d7e2SAndroid Build Coastguard Worker
42*cc02d7e2SAndroid Build Coastguard Workerif(c-ares_FOUND)
43*cc02d7e2SAndroid Build Coastguard Worker  add_library(c-ares::cares UNKNOWN IMPORTED)
44*cc02d7e2SAndroid Build Coastguard Worker  set_target_properties(c-ares::cares PROPERTIES
45*cc02d7e2SAndroid Build Coastguard Worker    IMPORTED_LOCATION "${c-ares_LIBRARY}"
46*cc02d7e2SAndroid Build Coastguard Worker    INTERFACE_INCLUDE_DIRECTORIES "${c-ares_INCLUDE_DIR}"
47*cc02d7e2SAndroid Build Coastguard Worker    )
48*cc02d7e2SAndroid Build Coastguard Workerendif()
49