blob: a1ab5fd45976f6988510dd8725a0cac323b7bdca [file] [log] [blame]
# 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()