File: FindGnuTLS.cmake

package info (click to toggle)
cmake 4.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 147,284 kB
  • sloc: ansic: 403,915; cpp: 290,772; sh: 4,102; python: 3,357; yacc: 3,106; lex: 1,189; f90: 532; asm: 471; lisp: 375; cs: 270; java: 266; fortran: 230; perl: 217; objc: 215; xml: 198; makefile: 97; javascript: 83; pascal: 63; tcl: 55; php: 25; ruby: 22
file content (133 lines) | stat: -rw-r--r-- 3,736 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# 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()