mirror of
https://github.com/libgit2/libgit2.git
synced 2026-01-25 11:06:32 +00:00
Our custom CMake module currently live in "cmake/Modules". As the "cmake/" directory doesn't contain anything except the "Modules" directory, it doesn't really make sense to have the additional intermediate directory. So let's instead move the modules one level up into the "cmake/" top level directory.
325 lines
7.8 KiB
CMake
325 lines
7.8 KiB
CMake
# - Try to find GSSAPI
|
|
# Once done this will define
|
|
#
|
|
# KRB5_CONFIG - Path to krb5-config
|
|
# GSSAPI_ROOT_DIR - Set this variable to the root installation of GSSAPI
|
|
#
|
|
# Read-Only variables:
|
|
# GSSAPI_FLAVOR_MIT - set to TURE if MIT Kerberos has been found
|
|
# GSSAPI_FLAVOR_HEIMDAL - set to TRUE if Heimdal Kerberos has been found
|
|
# GSSAPI_FOUND - system has GSSAPI
|
|
# GSSAPI_INCLUDE_DIR - the GSSAPI include directory
|
|
# GSSAPI_LIBRARIES - Link these to use GSSAPI
|
|
# GSSAPI_DEFINITIONS - Compiler switches required for using GSSAPI
|
|
#
|
|
#=============================================================================
|
|
# Copyright (c) 2013 Andreas Schneider <asn@cryptomilk.org>
|
|
#
|
|
# Distributed under the OSI-approved BSD License (the "License");
|
|
# see accompanying file Copyright.txt for details.
|
|
#
|
|
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
# See the License for more information.
|
|
#=============================================================================
|
|
#
|
|
|
|
find_path(GSSAPI_ROOT_DIR
|
|
NAMES
|
|
include/gssapi.h
|
|
include/gssapi/gssapi.h
|
|
HINTS
|
|
${_GSSAPI_ROOT_HINTS}
|
|
PATHS
|
|
${_GSSAPI_ROOT_PATHS}
|
|
)
|
|
mark_as_advanced(GSSAPI_ROOT_DIR)
|
|
|
|
if (UNIX)
|
|
find_program(KRB5_CONFIG
|
|
NAMES
|
|
krb5-config
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/bin
|
|
/opt/local/bin)
|
|
mark_as_advanced(KRB5_CONFIG)
|
|
|
|
if (KRB5_CONFIG)
|
|
# Check if we have MIT KRB5
|
|
execute_process(
|
|
COMMAND
|
|
${KRB5_CONFIG} --vendor
|
|
RESULT_VARIABLE
|
|
_GSSAPI_VENDOR_RESULT
|
|
OUTPUT_VARIABLE
|
|
_GSSAPI_VENDOR_STRING)
|
|
|
|
if (_GSSAPI_VENDOR_STRING MATCHES ".*Massachusetts.*")
|
|
set(GSSAPI_FLAVOR_MIT TRUE)
|
|
else()
|
|
execute_process(
|
|
COMMAND
|
|
${KRB5_CONFIG} --libs gssapi
|
|
RESULT_VARIABLE
|
|
_GSSAPI_LIBS_RESULT
|
|
OUTPUT_VARIABLE
|
|
_GSSAPI_LIBS_STRING)
|
|
|
|
if (_GSSAPI_LIBS_STRING MATCHES ".*roken.*")
|
|
set(GSSAPI_FLAVOR_HEIMDAL TRUE)
|
|
endif()
|
|
endif()
|
|
|
|
# Get the include dir
|
|
execute_process(
|
|
COMMAND
|
|
${KRB5_CONFIG} --cflags gssapi
|
|
RESULT_VARIABLE
|
|
_GSSAPI_INCLUDE_RESULT
|
|
OUTPUT_VARIABLE
|
|
_GSSAPI_INCLUDE_STRING)
|
|
string(REGEX REPLACE "(\r?\n)+$" "" _GSSAPI_INCLUDE_STRING "${_GSSAPI_INCLUDE_STRING}")
|
|
string(REGEX REPLACE " *-I" "" _GSSAPI_INCLUDEDIR "${_GSSAPI_INCLUDE_STRING}")
|
|
endif()
|
|
|
|
if (NOT GSSAPI_FLAVOR_MIT AND NOT GSSAPI_FLAVOR_HEIMDAL)
|
|
# Check for HEIMDAL
|
|
find_package(PkgConfig)
|
|
if (PKG_CONFIG_FOUND)
|
|
pkg_check_modules(_GSSAPI heimdal-gssapi)
|
|
endif (PKG_CONFIG_FOUND)
|
|
|
|
if (_GSSAPI_FOUND)
|
|
set(GSSAPI_FLAVOR_HEIMDAL TRUE)
|
|
else()
|
|
find_path(_GSSAPI_ROKEN
|
|
NAMES
|
|
roken.h
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/include
|
|
${_GSSAPI_INCLUDEDIR})
|
|
if (_GSSAPI_ROKEN)
|
|
set(GSSAPI_FLAVOR_HEIMDAL TRUE)
|
|
endif()
|
|
endif ()
|
|
endif()
|
|
endif (UNIX)
|
|
|
|
find_path(GSSAPI_INCLUDE_DIR
|
|
NAMES
|
|
gssapi.h
|
|
gssapi/gssapi.h
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/include
|
|
${_GSSAPI_INCLUDEDIR}
|
|
)
|
|
|
|
if (GSSAPI_FLAVOR_MIT)
|
|
find_library(GSSAPI_LIBRARY
|
|
NAMES
|
|
gssapi_krb5
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/lib
|
|
${_GSSAPI_LIBDIR}
|
|
)
|
|
|
|
find_library(KRB5_LIBRARY
|
|
NAMES
|
|
krb5
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/lib
|
|
${_GSSAPI_LIBDIR}
|
|
)
|
|
|
|
find_library(K5CRYPTO_LIBRARY
|
|
NAMES
|
|
k5crypto
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/lib
|
|
${_GSSAPI_LIBDIR}
|
|
)
|
|
|
|
find_library(COM_ERR_LIBRARY
|
|
NAMES
|
|
com_err
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/lib
|
|
${_GSSAPI_LIBDIR}
|
|
)
|
|
|
|
if (GSSAPI_LIBRARY)
|
|
set(GSSAPI_LIBRARIES
|
|
${GSSAPI_LIBRARIES}
|
|
${GSSAPI_LIBRARY}
|
|
)
|
|
endif (GSSAPI_LIBRARY)
|
|
|
|
if (KRB5_LIBRARY)
|
|
set(GSSAPI_LIBRARIES
|
|
${GSSAPI_LIBRARIES}
|
|
${KRB5_LIBRARY}
|
|
)
|
|
endif (KRB5_LIBRARY)
|
|
|
|
if (K5CRYPTO_LIBRARY)
|
|
set(GSSAPI_LIBRARIES
|
|
${GSSAPI_LIBRARIES}
|
|
${K5CRYPTO_LIBRARY}
|
|
)
|
|
endif (K5CRYPTO_LIBRARY)
|
|
|
|
if (COM_ERR_LIBRARY)
|
|
set(GSSAPI_LIBRARIES
|
|
${GSSAPI_LIBRARIES}
|
|
${COM_ERR_LIBRARY}
|
|
)
|
|
endif (COM_ERR_LIBRARY)
|
|
endif (GSSAPI_FLAVOR_MIT)
|
|
|
|
if (GSSAPI_FLAVOR_HEIMDAL)
|
|
find_library(GSSAPI_LIBRARY
|
|
NAMES
|
|
gssapi
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/lib
|
|
${_GSSAPI_LIBDIR}
|
|
)
|
|
|
|
find_library(KRB5_LIBRARY
|
|
NAMES
|
|
krb5
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/lib
|
|
${_GSSAPI_LIBDIR}
|
|
)
|
|
|
|
find_library(HCRYPTO_LIBRARY
|
|
NAMES
|
|
hcrypto
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/lib
|
|
${_GSSAPI_LIBDIR}
|
|
)
|
|
|
|
find_library(COM_ERR_LIBRARY
|
|
NAMES
|
|
com_err
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/lib
|
|
${_GSSAPI_LIBDIR}
|
|
)
|
|
|
|
find_library(HEIMNTLM_LIBRARY
|
|
NAMES
|
|
heimntlm
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/lib
|
|
${_GSSAPI_LIBDIR}
|
|
)
|
|
|
|
find_library(HX509_LIBRARY
|
|
NAMES
|
|
hx509
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/lib
|
|
${_GSSAPI_LIBDIR}
|
|
)
|
|
|
|
find_library(ASN1_LIBRARY
|
|
NAMES
|
|
asn1
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/lib
|
|
${_GSSAPI_LIBDIR}
|
|
)
|
|
|
|
find_library(WIND_LIBRARY
|
|
NAMES
|
|
wind
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/lib
|
|
${_GSSAPI_LIBDIR}
|
|
)
|
|
|
|
find_library(ROKEN_LIBRARY
|
|
NAMES
|
|
roken
|
|
PATHS
|
|
${GSSAPI_ROOT_DIR}/lib
|
|
${_GSSAPI_LIBDIR}
|
|
)
|
|
|
|
if (GSSAPI_LIBRARY)
|
|
set(GSSAPI_LIBRARIES
|
|
${GSSAPI_LIBRARIES}
|
|
${GSSAPI_LIBRARY}
|
|
)
|
|
endif (GSSAPI_LIBRARY)
|
|
|
|
if (KRB5_LIBRARY)
|
|
set(GSSAPI_LIBRARIES
|
|
${GSSAPI_LIBRARIES}
|
|
${KRB5_LIBRARY}
|
|
)
|
|
endif (KRB5_LIBRARY)
|
|
|
|
if (HCRYPTO_LIBRARY)
|
|
set(GSSAPI_LIBRARIES
|
|
${GSSAPI_LIBRARIES}
|
|
${HCRYPTO_LIBRARY}
|
|
)
|
|
endif (HCRYPTO_LIBRARY)
|
|
|
|
if (COM_ERR_LIBRARY)
|
|
set(GSSAPI_LIBRARIES
|
|
${GSSAPI_LIBRARIES}
|
|
${COM_ERR_LIBRARY}
|
|
)
|
|
endif (COM_ERR_LIBRARY)
|
|
|
|
if (HEIMNTLM_LIBRARY)
|
|
set(GSSAPI_LIBRARIES
|
|
${GSSAPI_LIBRARIES}
|
|
${HEIMNTLM_LIBRARY}
|
|
)
|
|
endif (HEIMNTLM_LIBRARY)
|
|
|
|
if (HX509_LIBRARY)
|
|
set(GSSAPI_LIBRARIES
|
|
${GSSAPI_LIBRARIES}
|
|
${HX509_LIBRARY}
|
|
)
|
|
endif (HX509_LIBRARY)
|
|
|
|
if (ASN1_LIBRARY)
|
|
set(GSSAPI_LIBRARIES
|
|
${GSSAPI_LIBRARIES}
|
|
${ASN1_LIBRARY}
|
|
)
|
|
endif (ASN1_LIBRARY)
|
|
|
|
if (WIND_LIBRARY)
|
|
set(GSSAPI_LIBRARIES
|
|
${GSSAPI_LIBRARIES}
|
|
${WIND_LIBRARY}
|
|
)
|
|
endif (WIND_LIBRARY)
|
|
|
|
if (ROKEN_LIBRARY)
|
|
set(GSSAPI_LIBRARIES
|
|
${GSSAPI_LIBRARIES}
|
|
${WIND_LIBRARY}
|
|
)
|
|
endif (ROKEN_LIBRARY)
|
|
endif (GSSAPI_FLAVOR_HEIMDAL)
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(GSSAPI DEFAULT_MSG GSSAPI_LIBRARIES GSSAPI_INCLUDE_DIR)
|
|
|
|
if (GSSAPI_INCLUDE_DIRS AND GSSAPI_LIBRARIES)
|
|
set(GSSAPI_FOUND TRUE)
|
|
endif (GSSAPI_INCLUDE_DIRS AND GSSAPI_LIBRARIES)
|
|
|
|
# show the GSSAPI_INCLUDE_DIRS and GSSAPI_LIBRARIES variables only in the advanced view
|
|
mark_as_advanced(GSSAPI_INCLUDE_DIRS GSSAPI_LIBRARIES)
|