66 lines
2.5 KiB
CMake
66 lines
2.5 KiB
CMake
include(CheckFunctionExists)
|
|
|
|
# First check whether the system has cares built-in. Prefer that over everything else.
|
|
check_function_exists(ares_init HAVE_CARES)
|
|
|
|
if (NOT HAVE_CARES)
|
|
|
|
# If the user passed in a path for cares, see if we can find a copy of it there.
|
|
# If they didn't pass one, build our local copy of it.
|
|
if (CARES_ROOT_DIR)
|
|
|
|
find_path(CARES_ROOT_DIR NAMES "include/ares.h")
|
|
|
|
# Prefer linking statically but look for a shared library version too.
|
|
find_library(
|
|
CARES_LIBRARIES NAMES "libcares_static${CMAKE_STATIC_LIBRARY_SUFFIX}"
|
|
"libcares${CMAKE_SHARED_LIBRARY_SUFFIX}"
|
|
HINTS ${CARES_ROOT_DIR}/lib)
|
|
|
|
find_path(CARES_INCLUDE_DIRS NAMES "ares.h" HINTS ${CARES_ROOT_DIR}/include)
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(CARES DEFAULT_MSG CARES_LIBRARIES CARES_INCLUDE_DIRS)
|
|
|
|
mark_as_advanced(CARES_ROOT_DIR CARES_LIBRARIES CARES_INCLUDE_DIRS)
|
|
|
|
set(HAVE_CARES true)
|
|
set(zeekdeps ${zeekdeps} ${CARES_LIBRARIES})
|
|
include_directories(BEFORE ${CARES_INCLUDE_DIRS})
|
|
|
|
else ()
|
|
|
|
option(CARES_STATIC "" ON)
|
|
option(CARES_SHARED "" OFF)
|
|
option(CARES_INSTALL "" OFF)
|
|
option(CARES_STATIC_PIC "" ON)
|
|
option(CARES_BUILD_TESTS "" OFF)
|
|
option(CARES_BUILD_CONTAINER_TESTS "" OFF)
|
|
option(CARES_BUILD_TOOLS "" OFF)
|
|
|
|
set(cares_src "${CMAKE_CURRENT_SOURCE_DIR}/auxil/c-ares")
|
|
set(cares_build "${CMAKE_CURRENT_BINARY_DIR}/auxil/c-ares")
|
|
set(cares_lib c-ares::cares_static)
|
|
|
|
# For reasons we haven't been able to determine, systems with c-ares already
|
|
# installed will sometimes add /usr/local/include to the include path with
|
|
# the call to add_subdirectory() below, which breaks things since it tries
|
|
# use those versions of the c-ares headers before the local ones. I think
|
|
# this is tied to a bug in c-ares 1.17.1 but we never nailed it down to that.
|
|
# Instead, ensure that the local paths end up in the include path before
|
|
# anything c-ares adds.
|
|
include_directories(BEFORE ${cares_src}/include)
|
|
include_directories(BEFORE ${cares_build})
|
|
|
|
add_subdirectory(auxil/c-ares)
|
|
|
|
set(HAVE_CARES true)
|
|
set(zeekdeps ${zeekdeps} ${cares_lib})
|
|
|
|
endif ()
|
|
endif ()
|
|
|
|
if (NOT HAVE_CARES)
|
|
message(FATAL_ERROR "Failed to find a working version of c-ares.")
|
|
endif ()
|