mirror of
https://github.com/Kitware/CMake.git
synced 2025-05-08 22:37:04 +08:00

- Added examples section. - Synced module documentation with other similar find modules. - Documented some missing variables to make the result variables and cache variables sections consistent. The imported target is highlighted in the example. - Added deprecated variables section. - GnuTLS_FOUND variable used. GNUTLS_FOUND is also set to the same value as of CMake 3.3.
134 lines
3.6 KiB
CMake
134 lines
3.6 KiB
CMake
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
# file LICENSE.rst or https://cmake.org/licensing for details.
|
|
|
|
#[=======================================================================[.rst:
|
|
FindGnuTLS
|
|
----------
|
|
|
|
Finds the GNU Transport Layer Security library (GnuTLS). The GnuTLS
|
|
package includes the main libraries (libgnutls and libdane), as well as the
|
|
optional gnutls-openssl compatibility extra library. They are all distributed
|
|
as part of the same release. This module checks for the presence of the main
|
|
libgnutls library and provides usage requirements for integrating GnuTLS into
|
|
CMake projects.
|
|
|
|
Imported Targets
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
This module provides the following :ref:`Imported Targets`:
|
|
|
|
``GnuTLS::GnuTLS``
|
|
.. versionadded:: 3.16
|
|
|
|
Target encapsulating the GnuTLS usage requirements, available if GnuTLS is
|
|
found.
|
|
|
|
Result Variables
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
This module defines the following variables:
|
|
|
|
``GnuTLS_FOUND``
|
|
Boolean indicating whether the (requested version of) GnuTLS is found. For
|
|
backward compatibility, the ``GNUTLS_FOUND`` variable is also set to the same
|
|
value.
|
|
|
|
``GNUTLS_VERSION``
|
|
.. versionadded:: 3.16
|
|
|
|
The version of GnuTLS found.
|
|
|
|
``GNUTLS_INCLUDE_DIRS``
|
|
Include directories needed to use GnuTLS.
|
|
|
|
``GNUTLS_LIBRARIES``
|
|
Libraries needed to link against to use GnuTLS.
|
|
|
|
``GNUTLS_DEFINITIONS``
|
|
Compiler options required for using GnuTLS.
|
|
|
|
Cache Variables
|
|
^^^^^^^^^^^^^^^
|
|
|
|
The following cache variables may also be set:
|
|
|
|
``GNUTLS_INCLUDE_DIR``
|
|
The directory containing the ``gnutls/gnutls.h`` header file.
|
|
|
|
``GNUTLS_LIBRARY``
|
|
The path to the GnuTLS library.
|
|
|
|
Deprecated Variables
|
|
^^^^^^^^^^^^^^^^^^^^
|
|
|
|
These variables are provided for backward compatibility:
|
|
|
|
``GNUTLS_VERSION_STRING``
|
|
.. deprecated:: 3.16
|
|
Superseded by ``GNUTLS_VERSION``.
|
|
|
|
The version of GnuTLS found.
|
|
|
|
Examples
|
|
^^^^^^^^
|
|
|
|
Finding GnuTLS and linking it to a project target:
|
|
|
|
.. code-block:: cmake
|
|
|
|
find_package(GnuTLS)
|
|
target_link_libraries(project_target PRIVATE GnuTLS::GnuTLS)
|
|
#]=======================================================================]
|
|
|
|
if (GNUTLS_INCLUDE_DIR AND GNUTLS_LIBRARY)
|
|
# in cache already
|
|
set(gnutls_FIND_QUIETLY TRUE)
|
|
endif ()
|
|
|
|
if (NOT WIN32)
|
|
# try using pkg-config to get the directories and then use these values
|
|
# in the find_path() and find_library() calls
|
|
# also fills in GNUTLS_DEFINITIONS, although that isn't normally useful
|
|
find_package(PkgConfig QUIET)
|
|
if(PKG_CONFIG_FOUND)
|
|
pkg_check_modules(PC_GNUTLS QUIET gnutls)
|
|
endif()
|
|
set(GNUTLS_DEFINITIONS ${PC_GNUTLS_CFLAGS_OTHER})
|
|
set(GNUTLS_VERSION ${PC_GNUTLS_VERSION})
|
|
# keep for backward compatibility
|
|
set(GNUTLS_VERSION_STRING ${PC_GNUTLS_VERSION})
|
|
endif ()
|
|
|
|
find_path(GNUTLS_INCLUDE_DIR gnutls/gnutls.h
|
|
HINTS
|
|
${PC_GNUTLS_INCLUDEDIR}
|
|
${PC_GNUTLS_INCLUDE_DIRS}
|
|
)
|
|
|
|
find_library(GNUTLS_LIBRARY NAMES gnutls libgnutls
|
|
HINTS
|
|
${PC_GNUTLS_LIBDIR}
|
|
${PC_GNUTLS_LIBRARY_DIRS}
|
|
)
|
|
|
|
mark_as_advanced(GNUTLS_INCLUDE_DIR GNUTLS_LIBRARY)
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(GnuTLS
|
|
REQUIRED_VARS GNUTLS_LIBRARY GNUTLS_INCLUDE_DIR
|
|
VERSION_VAR GNUTLS_VERSION_STRING)
|
|
|
|
if(GnuTLS_FOUND)
|
|
set(GNUTLS_LIBRARIES ${GNUTLS_LIBRARY})
|
|
set(GNUTLS_INCLUDE_DIRS ${GNUTLS_INCLUDE_DIR})
|
|
|
|
if(NOT TARGET GnuTLS::GnuTLS)
|
|
add_library(GnuTLS::GnuTLS UNKNOWN IMPORTED)
|
|
set_target_properties(GnuTLS::GnuTLS PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES "${GNUTLS_INCLUDE_DIRS}"
|
|
INTERFACE_COMPILE_DEFINITIONS "${GNUTLS_DEFINITIONS}"
|
|
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
|
IMPORTED_LOCATION "${GNUTLS_LIBRARIES}")
|
|
endif()
|
|
endif()
|