
The `find_package_handle_standard_args(FOUND_VAR)` is deprecated as of CMake 3.3 and both the `<PackageName>_FOUND` and the upper-cased `<PACKAGE_NAME>_FOUND` are set with or without using this option. Additionally, find modules and docs are also synced with this to make it clearer.
122 lines
3.9 KiB
CMake
122 lines
3.9 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 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
|
|
REQUIRED_VARS LibUV_LIBRARY LibUV_INCLUDE_DIR
|
|
VERSION_VAR LibUV_VERSION
|
|
)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# 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()
|