This is a CMake find-module, which attempts to find c-ares without a CMake package file being available. If such a file is available, it uses that. Otherwise, it searches for the library and include directory manually.pull/20815/head
parent
bcb716a5df
commit
933d75653d
4 changed files with 58 additions and 3 deletions
@ -0,0 +1,48 @@ |
||||
include(FindPackageHandleStandardArgs) |
||||
|
||||
function(__cares_get_version) |
||||
if(c-ares_INCLUDE_DIR AND EXISTS "${c-ares_INCLUDE_DIR}/ares_version.h") |
||||
file(STRINGS "${c-ares_INCLUDE_DIR}/ares_version.h" _cares_version_str REGEX "^#define ARES_VERSION_STR \"([^\n]*)\"$") |
||||
if(_cares_version_str MATCHES "#define ARES_VERSION_STR \"([^\n]*)\"") |
||||
set(c-ares_VERSION "${CMAKE_MATCH_1}" PARENT_SCOPE) |
||||
endif() |
||||
endif() |
||||
endfunction() |
||||
|
||||
# We need to disable version checking, since c-ares does not provide it. |
||||
set(_cares_version_var_suffixes "" _MAJOR _MINOR _PATCH _TWEAK _COUNT) |
||||
foreach(_suffix IN LISTS _cares_version_var_suffixes) |
||||
set(_cares_save_FIND_VERSION${_suffix} ${c-ares_FIND_VERSION${_suffix}}) |
||||
unset(c-ares_FIND_VERSION${_suffix}) |
||||
endforeach() |
||||
find_package(c-ares CONFIG) |
||||
foreach(_suffix IN LISTS _cares_version_var_suffixes) |
||||
set(c-ares_FIND_VERSION${_suffix} ${_cares_save_FIND_VERSION${_suffix}}) |
||||
endforeach() |
||||
|
||||
if(c-ares_FOUND) |
||||
if(NOT DEFINED c-ares_VERSION) |
||||
__cares_get_version() |
||||
endif() |
||||
|
||||
find_package_handle_standard_args(c-ares CONFIG_MODE) |
||||
return() |
||||
endif() |
||||
|
||||
find_path(c-ares_INCLUDE_DIR NAMES ares.h) |
||||
__cares_get_version() |
||||
|
||||
find_library(c-ares_LIBRARY cares) |
||||
|
||||
find_package_handle_standard_args(c-ares |
||||
REQUIRED_VARS c-ares_INCLUDE_DIR c-ares_LIBRARY |
||||
VERSION_VAR c-ares_VERSION |
||||
) |
||||
|
||||
if(c-ares_FOUND) |
||||
add_library(c-ares::cares UNKNOWN IMPORTED) |
||||
set_target_properties(c-ares::cares PROPERTIES |
||||
IMPORTED_LOCATION "${c-ares_LIBRARY}" |
||||
INTERFACE_INCLUDE_DIRECTORIES "${c-ares_INCLUDE_DIR}" |
||||
) |
||||
endif() |
Loading…
Reference in new issue