Parcourir la source

Fixes problems with cmake detection of GnuTLS. The current CMakeLists.txt uses check_function_exists to identify legacy versions of GnuTLS but cmake performs this test by linking a small test program. If libgnutls, libgcrypt, or libgpg-error are outside the default library search path, linking the test program fails even though gnutls and it's dependencies are installed. This patch makes it possible to specify the location of each of the three libraries independently and only as needed.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@5160 3789f03b-4d11-0410-bbf8-ca57d06f2519
tags/v1.3.90
Brian Hinz il y a 10 ans
Parent
révision
236b019980
3 fichiers modifiés avec 84 ajouts et 0 suppressions
  1. 12
    0
      CMakeLists.txt
  2. 36
    0
      cmake/Modules/FindGcrypt.cmake
  3. 36
    0
      cmake/Modules/FindGpg_Error.cmake

+ 12
- 0
CMakeLists.txt Voir le fichier

@@ -303,8 +303,20 @@ endif()
option(ENABLE_GNUTLS "Enable protocol encryption and advanced authentication" ON)
if(ENABLE_GNUTLS)
find_package(GnuTLS)
find_package(Gcrypt)
find_package(Gpg_Error)
if (GNUTLS_FOUND)
include_directories(${GNUTLS_INCLUDE_DIR})
if (GCRYPT_FOUND)
include_directories(${GCRYPT_INCLUDE_DIR})
set(GNUTLS_LIBRARIES ${GNUTLS_LIBRARIES};${GCRYPT_LIBRARIES})
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${GCRYPT_LIBRARIES})
if (GPG_ERROR_FOUND)
include_directories(${GPG_ERROR_INCLUDE_DIR})
set(GNUTLS_LIBRARIES ${GNUTLS_LIBRARIES};${GPG_ERROR_LIBRARIES})
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${GPG_ERROR_LIBRARIES})
endif()
endif()
add_definitions("-DHAVE_GNUTLS")
add_definitions(${GNUTLS_DEFINITIONS})

+ 36
- 0
cmake/Modules/FindGcrypt.cmake Voir le fichier

@@ -0,0 +1,36 @@
# - Find gcrypt
# Find the native GCRYPT includes and library
#
# GCRYPT_FOUND - True if gcrypt found.
# GCRYPT_INCLUDE_DIR - where to find gcrypt.h, etc.
# GCRYPT_LIBRARIES - List of libraries when using gcrypt.

if (GCRYPT_INCLUDE_DIR AND GCRYPT_LIBRARIES)
set(GCRYPT_FIND_QUIETLY TRUE)
endif (GCRYPT_INCLUDE_DIR AND GCRYPT_LIBRARIES)

# Include dir
find_path(GCRYPT_INCLUDE_DIR
NAMES
gcrypt.h
)

# Library
find_library(GCRYPT_LIBRARY
NAMES gcrypt
)

# handle the QUIETLY and REQUIRED arguments and set GCRYPT_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GCRYPT DEFAULT_MSG GCRYPT_LIBRARY GCRYPT_INCLUDE_DIR)

IF(GCRYPT_FOUND)
SET( GCRYPT_LIBRARIES ${GCRYPT_LIBRARY} )
ELSE(GCRYPT_FOUND)
SET( GCRYPT_LIBRARIES )
ENDIF(GCRYPT_FOUND)

# Lastly make it so that the GCRYPT_LIBRARY and GCRYPT_INCLUDE_DIR variables
# only show up under the advanced options in the gui cmake applications.
MARK_AS_ADVANCED( GCRYPT_LIBRARY GCRYPT_INCLUDE_DIR )

+ 36
- 0
cmake/Modules/FindGpg_Error.cmake Voir le fichier

@@ -0,0 +1,36 @@
# - Find gpg-error
# Find the native GPG_ERROR includes and library
#
# GPG_ERROR_FOUND - True if gpg-error found.
# GPG_ERROR_INCLUDE_DIR - where to find gpg-error.h, etc.
# GPG_ERROR_LIBRARIES - List of libraries when using gpg-error.

if (GPG_ERROR_INCLUDE_DIR AND GPG_ERROR_LIBRARIES)
set(GPG_ERROR_FIND_QUIETLY TRUE)
endif (GPG_ERROR_INCLUDE_DIR AND GPG_ERROR_LIBRARIES)

# Include dir
find_path(GPG_ERROR_INCLUDE_DIR
NAMES
gpg-error.h
)

# Library
find_library(GPG_ERROR_LIBRARY
NAMES gpg-error
)

# handle the QUIETLY and REQUIRED arguments and set GPG_ERROR_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GPG_ERROR DEFAULT_MSG GPG_ERROR_LIBRARY GPG_ERROR_INCLUDE_DIR)

IF(GPG_ERROR_FOUND)
SET( GPG_ERROR_LIBRARIES ${GPG_ERROR_LIBRARY} )
ELSE(GPG_ERROR_FOUND)
SET( GPG_ERROR_LIBRARIES )
ENDIF(GPG_ERROR_FOUND)

# Lastly make it so that the GPG_ERROR_LIBRARY and GPG_ERROR_INCLUDE_DIR variables
# only show up under the advanced options in the gui cmake applications.
MARK_AS_ADVANCED( GPG_ERROR_LIBRARY GPG_ERROR_INCLUDE_DIR )

Chargement…
Annuler
Enregistrer