FindGnuTLS.cmake 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. # file Copyright.txt or https://cmake.org/licensing for details.
  3. #[=======================================================================[.rst:
  4. FindGnuTLS
  5. ----------
  6. Find the GNU Transport Layer Security library (gnutls)
  7. Imported Targets
  8. ^^^^^^^^^^^^^^^^
  9. .. versionadded:: 3.16
  10. This module defines :prop_tgt:`IMPORTED` target ``GnuTLS::GnuTLS``, if
  11. gnutls has been found.
  12. Result Variables
  13. ^^^^^^^^^^^^^^^^
  14. ``GNUTLS_FOUND``
  15. System has gnutls
  16. ``GNUTLS_INCLUDE_DIR``
  17. The gnutls include directory
  18. ``GNUTLS_LIBRARIES``
  19. The libraries needed to use gnutls
  20. ``GNUTLS_DEFINITIONS``
  21. Compiler switches required for using gnutls
  22. ``GNUTLS_VERSION``
  23. version of gnutls.
  24. #]=======================================================================]
  25. # Note that this doesn't try to find the gnutls-extra package.
  26. if (GNUTLS_INCLUDE_DIR AND GNUTLS_LIBRARY)
  27. # in cache already
  28. set(gnutls_FIND_QUIETLY TRUE)
  29. endif ()
  30. if (NOT WIN32)
  31. # try using pkg-config to get the directories and then use these values
  32. # in the find_path() and find_library() calls
  33. # also fills in GNUTLS_DEFINITIONS, although that isn't normally useful
  34. find_package(PkgConfig QUIET)
  35. if(PKG_CONFIG_FOUND)
  36. pkg_check_modules(PC_GNUTLS QUIET gnutls)
  37. endif()
  38. set(GNUTLS_DEFINITIONS ${PC_GNUTLS_CFLAGS_OTHER})
  39. set(GNUTLS_VERSION ${PC_GNUTLS_VERSION})
  40. # keep for backward compatibility
  41. set(GNUTLS_VERSION_STRING ${PC_GNUTLS_VERSION})
  42. endif ()
  43. find_path(GNUTLS_INCLUDE_DIR gnutls/gnutls.h
  44. HINTS
  45. ${PC_GNUTLS_INCLUDEDIR}
  46. ${PC_GNUTLS_INCLUDE_DIRS}
  47. )
  48. find_library(GNUTLS_LIBRARY NAMES gnutls libgnutls
  49. HINTS
  50. ${PC_GNUTLS_LIBDIR}
  51. ${PC_GNUTLS_LIBRARY_DIRS}
  52. )
  53. mark_as_advanced(GNUTLS_INCLUDE_DIR GNUTLS_LIBRARY)
  54. include(FindPackageHandleStandardArgs)
  55. find_package_handle_standard_args(GnuTLS
  56. REQUIRED_VARS GNUTLS_LIBRARY GNUTLS_INCLUDE_DIR
  57. VERSION_VAR GNUTLS_VERSION_STRING)
  58. if(GNUTLS_FOUND)
  59. set(GNUTLS_LIBRARIES ${GNUTLS_LIBRARY})
  60. set(GNUTLS_INCLUDE_DIRS ${GNUTLS_INCLUDE_DIR})
  61. if(NOT TARGET GnuTLS::GnuTLS)
  62. add_library(GnuTLS::GnuTLS UNKNOWN IMPORTED)
  63. set_target_properties(GnuTLS::GnuTLS PROPERTIES
  64. INTERFACE_INCLUDE_DIRECTORIES "${GNUTLS_INCLUDE_DIRS}"
  65. INTERFACE_COMPILE_DEFINITIONS "${GNUTLS_DEFINITIONS}"
  66. IMPORTED_LINK_INTERFACE_LANGUAGES "C"
  67. IMPORTED_LOCATION "${GNUTLS_LIBRARIES}")
  68. endif()
  69. endif()