# Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. #[=======================================================================[.rst: FindLibUV --------- Find libuv includes and library. Imported Targets ^^^^^^^^^^^^^^^^ An :ref:`imported target ` named ``LibUV::LibUV`` is provided if libuv has been found. Result Variables ^^^^^^^^^^^^^^^^ This module defines the following variables: ``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. Cache Variables ^^^^^^^^^^^^^^^ This module uses the following cache variables: ``LibUV_LIBRARY`` The location of the libuv library file. ``LibUV_INCLUDE_DIR`` The location of the libuv include directory containing ``uv.h``. The cache variables should not be used by project code. They may be set by end users to point at libuv components. #]=======================================================================] #----------------------------------------------------------------------------- find_library(LibUV_LIBRARY NAMES uv libuv ) mark_as_advanced(LibUV_LIBRARY) find_path(LibUV_INCLUDE_DIR NAMES uv.h ) mark_as_advanced(LibUV_INCLUDE_DIR) #----------------------------------------------------------------------------- # Extract version number if possible. set(_LibUV_H_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_H REGEX "${_LibUV_H_REGEX}") elseif(LibUV_INCLUDE_DIR AND EXISTS "${LibUV_INCLUDE_DIR}/uv/version.h") file(STRINGS "${LibUV_INCLUDE_DIR}/uv/version.h" _LibUV_H REGEX "${_LibUV_H_REGEX}") elseif(LibUV_INCLUDE_DIR AND EXISTS "${LibUV_INCLUDE_DIR}/uv.h") file(STRINGS "${LibUV_INCLUDE_DIR}/uv.h" _LibUV_H REGEX "${_LibUV_H_REGEX}") else() set(_LibUV_H "") endif() foreach(c MAJOR MINOR PATCH) if(_LibUV_H MATCHES "#[ \t]*define[ \t]+UV_VERSION_${c}[ \t]+([0-9]+)") set(_LibUV_VERSION_${c} "${CMAKE_MATCH_1}") else() unset(_LibUV_VERSION_${c}) endif() endforeach() 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() 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_H_REGEX) unset(_LibUV_H) #----------------------------------------------------------------------------- include(${CMAKE_CURRENT_LIST_DIR}/../../Modules/FindPackageHandleStandardArgs.cmake) FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibUV FOUND_VAR LibUV_FOUND REQUIRED_VARS LibUV_LIBRARY LibUV_INCLUDE_DIR VERSION_VAR LibUV_VERSION ) set(LIBUV_FOUND ${LibUV_FOUND}) #----------------------------------------------------------------------------- # Provide documented result variables and targets. if(LibUV_FOUND) set(LibUV_INCLUDE_DIRS ${LibUV_INCLUDE_DIR}) set(LibUV_LIBRARIES ${LibUV_LIBRARY}) if(NOT TARGET LibUV::LibUV) add_library(LibUV::LibUV UNKNOWN IMPORTED) set_target_properties(LibUV::LibUV PROPERTIES IMPORTED_LOCATION "${LibUV_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${LibUV_INCLUDE_DIRS}" ) endif() endif()