Findc-ares.cmake 1.5 KB

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