# Try to find the libuv library; once done this will define # # LIBUV_FOUND - True if libuv was found, false otherwise. # LIBUV_INCLUDE_DIRS - Include directories needed to include libuv headers. # LIBUV_LIBRARIES - Libraries needed to link to libuv. # LIBUV_VERSION - The version of libuv found. # LIBUV_VERSION_MAJOR - The major version of libuv. # LIBUV_VERSION_MINOR - The minor version of libuv. # LIBUV_VERSION_PATCH - The patch version of libuv. if(UNIX) if(CMAKE_VERSION VERSION_LESS "2.8.0") find_package(PkgConfig) pkg_check_modules(_LIBUV libuv) else() find_package(PkgConfig QUIET) pkg_check_modules(_LIBUV QUIET libuv) endif() endif() set(_LIBUV_ROOT_HINTS ${LIBUV_ROOT_DIR} ENV LIBUV_ROOT_DIR ${_LIBUV_ROOT_HINTS}) if(NOT WIN32) set(_LIBUV_ROOT_PATHS "/usr/" "/usr/local/") if (APPLE) set(_LIBUV_ROOT_PATHS ${_LIBUV_ROOT_PATHS} "/opt/homebrew/") endif() if(_LIBUV_FOUND) set(_LIBUV_ROOT_PATHS ${_LIBUV_ROOT_PATHS} ${_LIBUV_LIBDIR}) endif() endif() set(_LIBUV_ROOT_HINTS_AND_PATHS HINTS ${_LIBUV_ROOT_HINTS} PATHS ${_LIBUV_ROOT_PATHS}) find_path(LIBUV_INCLUDE_DIR NAMES uv.h ${_LIBUV_ROOT_HINTS_AND_PATHS} PATH_SUFFIXES include NO_DEFAULT_PATH) set(_LIBUV_NAMES "uv" "libuv") if(CASS_USE_STATIC_LIBS) set(_LIBUV_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) if(WIN32) set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) else() set(CMAKE_FIND_LIBRARY_SUFFIXES .a) endif() set(_LIBUV_NAMES "uv_a" "${_LIBUV_NAMES}") endif() find_library(LIBUV_LIBRARY NAMES ${_LIBUV_NAMES} ${_LIBUV_ROOT_HINTS_AND_PATHS} PATH_SUFFIXES lib lib/${CMAKE_LIBRARY_ARCHITECTURE} NO_DEFAULT_PATH) # Extract version number if possible. set(_LIBUV_VERSION_REGEX "#[\t ]*define[\t ]+UV_VERSION_(MAJOR|MINOR|PATCH)[\t ]+[0-9]+") if(LIBUV_INCLUDE_DIR AND EXISTS "${LIBUV_INCLUDE_DIR}/uv/version.h") file(STRINGS "${LIBUV_INCLUDE_DIR}/uv/version.h" _LIBUV_VERSION REGEX "${_LIBUV_VERSION_REGEX}") elseif(LIBUV_INCLUDE_DIR AND EXISTS "${LIBUV_INCLUDE_DIR}/uv-version.h") file(STRINGS "${LIBUV_INCLUDE_DIR}/uv-version.h" _LIBUV_VERSION REGEX "${_LIBUV_VERSION_REGEX}") elseif(LIBUV_INCLUDE_DIR AND EXISTS "${LIBUV_INCLUDE_DIR}/uv.h") file(STRINGS "${LIBUV_INCLUDE_DIR}/uv.h" _LIBUV_VERSION REGEX "${_LIBUV_VERSION_REGEX}") else() set(_LIBUV_VERSION "") endif() # Complete the extraction from the major, minor, patch components foreach(a MAJOR MINOR PATCH) if(_LIBUV_VERSION MATCHES "#[\t ]*define[\t ]+UV_VERSION_${a}[\t ]+([0-9]+)") set(_LIBUV_VERSION_${a} "${CMAKE_MATCH_1}") else() unset(_LIBUV_VERSION_${a}) endif() endforeach() # Assign the libuv version for the defined components if(DEFINED _LIBUV_VERSION_MAJOR AND DEFINED _LIBUV_VERSION_MINOR) set(LIBUV_VERSION_MAJOR "${_LIBUV_VERSION_MAJOR}") set(LIBUV_VERSION_MINOR "${_LIBUV_VERSION_MINOR}") set(LIBUV_VERSION "${LIBUV_VERSION_MAJOR}.${LIBUV_VERSION_MINOR}") if(DEFINED _LIBUV_VERSION_PATCH) set(LIBUV_VERSION_PATCH "${_LIBUV_VERSION_PATCH}") set(LIBUV_VERSION "${LIBUV_VERSION}.${LIBUV_VERSION_PATCH}") else() unset(LIBUV_VERSION_PATCH) endif() message(STATUS "libuv version: v${LIBUV_VERSION}") else() set(LIBUV_VERSION_MAJOR "") set(LIBUV_VERSION_MINOR "") set(LIBUV_VERSION_PATCH "") set(LIBUV_VERSION "") endif() unset(_LIBUV_VERSION_MAJOR) unset(_LIBUV_VERSION_MINOR) unset(_LIBUV_VERSION_PATCH) unset(_LIBUV_VERSION_REGEX) unset(_LIBUV_VERSION) unset(_LIBUV_NAMES) include(FindPackageHandleStandardArgs) set(_LIBUV_FAIL_MESSAGE "Could NOT find libuv, try to set the path to libuv root folder in the system variable LIBUV_ROOT_DIR") if(LIBUV_VERSION) if(CMAKE_VERSION VERSION_LESS "2.8.0") find_package_handle_standard_args(Libuv REQUIRED_VARS LIBUV_FOUND LIBUV_LIBRARY LIBUV_INCLUDE_DIR) if(NOT LIBUV_FOUND) message(FATAL_ERROR "${_LIBUV_FAIL_MESSAGE}") endif() else() find_package_handle_standard_args(Libuv REQUIRED_VARS LIBUV_LIBRARY LIBUV_INCLUDE_DIR VERSION_VAR LIBUV_VERSION) endif() else() find_package_handle_standard_args(Libuv "${_LIBUV_FAIL_MESSAGE}" LIBUV_LIBRARY LIBUV_INCLUDE_DIR) endif() if(LIBUV_FOUND) set(LIBUV_INCLUDE_DIRS ${LIBUV_INCLUDE_DIR}) set(LIBUV_LIBRARIES ${LIBUV_LIBRARY}) endif() mark_as_advanced(LIBUV_INCLUDE_DIRS LIBUV_LIBRARIES LIBUV_VERSION LIBUV_VERSION_MAJOR LIBUV_VERSION_MINOR LIBUV_VERSION_PATCH) # Restore the original find library ordering if(CASS_USE_STATIC_LIBS) set(CMAKE_FIND_LIBRARY_SUFFIXES ${_LIBUV_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) endif()