122 lines
3.8 KiB
CMake
122 lines
3.8 KiB
CMake
# 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 <Imported targets>` 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
|
|
)
|
|
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.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()
|