2 # Once done this will define
4 # KRB5_CONFIG - Path to krb5-config
5 # GSSAPI_ROOT_DIR - Set this variable to the root installation of GSSAPI
8 # GSSAPI_FLAVOR_MIT - set to TRUE if MIT Kerberos has been found
9 # GSSAPI_FLAVOR_HEIMDAL - set to TRUE if Heimdal Kerberos has been found
10 # GSSAPI_FOUND - system has GSSAPI
11 # GSSAPI_INCLUDE_DIR - the GSSAPI include directory
12 # GSSAPI_LIBRARIES - Link these to use GSSAPI
13 # GSSAPI_DEFINITIONS - Compiler switches required for using GSSAPI
15 #=============================================================================
16 # Copyright (c) 2013 Andreas Schneider <asn@cryptomilk.org>
18 # Distributed under the OSI-approved BSD License (the "License");
19 # see accompanying file Copyright.txt for details.
21 # This software is distributed WITHOUT ANY WARRANTY; without even the
22 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
23 # See the License for more information.
24 #=============================================================================
27 find_path(GSSAPI_ROOT_DIR
28 NAMES include/gssapi.h include/gssapi/gssapi.h
29 HINTS ${_GSSAPI_ROOT_HINTS}
30 PATHS ${_GSSAPI_ROOT_PATHS})
31 mark_as_advanced(GSSAPI_ROOT_DIR)
34 find_program(KRB5_CONFIG
36 PATHS ${GSSAPI_ROOT_DIR}/bin /opt/local/bin)
37 mark_as_advanced(KRB5_CONFIG)
40 # Check if we have MIT KRB5
42 COMMAND ${KRB5_CONFIG} --vendor
43 RESULT_VARIABLE _GSSAPI_VENDOR_RESULT
44 OUTPUT_VARIABLE _GSSAPI_VENDOR_STRING)
46 if(_GSSAPI_VENDOR_STRING MATCHES ".*Massachusetts.*")
47 set(GSSAPI_FLAVOR_MIT TRUE)
50 COMMAND ${KRB5_CONFIG} --libs gssapi
51 RESULT_VARIABLE _GSSAPI_LIBS_RESULT
52 OUTPUT_VARIABLE _GSSAPI_LIBS_STRING)
54 if(_GSSAPI_LIBS_STRING MATCHES ".*roken.*")
55 set(GSSAPI_FLAVOR_HEIMDAL TRUE)
61 COMMAND ${KRB5_CONFIG} --cflags gssapi
62 RESULT_VARIABLE _GSSAPI_INCLUDE_RESULT
63 OUTPUT_VARIABLE _GSSAPI_INCLUDE_STRING)
64 string(REGEX REPLACE "(\r?\n)+$" "" _GSSAPI_INCLUDE_STRING "${_GSSAPI_INCLUDE_STRING}")
65 string(REGEX REPLACE " *-I" "" _GSSAPI_INCLUDEDIR "${_GSSAPI_INCLUDE_STRING}")
68 if(NOT GSSAPI_FLAVOR_MIT AND NOT GSSAPI_FLAVOR_HEIMDAL)
70 find_package(PkgConfig)
72 pkg_check_modules(_GSSAPI heimdal-gssapi)
76 set(GSSAPI_FLAVOR_HEIMDAL TRUE)
78 find_path(_GSSAPI_ROKEN
80 PATHS ${GSSAPI_ROOT_DIR}/include ${_GSSAPI_INCLUDEDIR})
82 set(GSSAPI_FLAVOR_HEIMDAL TRUE)
88 find_path(GSSAPI_INCLUDE_DIR
89 NAMES gssapi.h gssapi/gssapi.h
90 PATHS ${GSSAPI_ROOT_DIR}/include ${_GSSAPI_INCLUDEDIR})
93 find_library(GSSAPI_LIBRARY
95 PATHS ${GSSAPI_ROOT_DIR}/lib ${_GSSAPI_LIBDIR})
97 find_library(KRB5_LIBRARY
99 PATHS ${GSSAPI_ROOT_DIR}/lib ${_GSSAPI_LIBDIR})
101 find_library(K5CRYPTO_LIBRARY
103 PATHS ${GSSAPI_ROOT_DIR}/lib ${_GSSAPI_LIBDIR})
105 find_library(COM_ERR_LIBRARY
107 PATHS ${GSSAPI_ROOT_DIR}/lib ${_GSSAPI_LIBDIR})
110 set(GSSAPI_LIBRARIES ${GSSAPI_LIBRARIES} ${GSSAPI_LIBRARY})
114 set(GSSAPI_LIBRARIES ${GSSAPI_LIBRARIES} ${KRB5_LIBRARY})
118 set(GSSAPI_LIBRARIES ${GSSAPI_LIBRARIES} ${K5CRYPTO_LIBRARY})
122 set(GSSAPI_LIBRARIES ${GSSAPI_LIBRARIES} ${COM_ERR_LIBRARY})
126 if(GSSAPI_FLAVOR_HEIMDAL)
127 find_library(GSSAPI_LIBRARY
129 PATHS ${GSSAPI_ROOT_DIR}/lib ${_GSSAPI_LIBDIR})
131 find_library(KRB5_LIBRARY
133 PATHS ${GSSAPI_ROOT_DIR}/lib ${_GSSAPI_LIBDIR})
135 find_library(HCRYPTO_LIBRARY
137 PATHS ${GSSAPI_ROOT_DIR}/lib ${_GSSAPI_LIBDIR})
139 find_library(COM_ERR_LIBRARY
141 PATHS ${GSSAPI_ROOT_DIR}/lib ${_GSSAPI_LIBDIR})
143 find_library(HEIMNTLM_LIBRARY
145 PATHS ${GSSAPI_ROOT_DIR}/lib ${_GSSAPI_LIBDIR})
147 find_library(HX509_LIBRARY
149 PATHS ${GSSAPI_ROOT_DIR}/lib ${_GSSAPI_LIBDIR})
151 find_library(ASN1_LIBRARY
153 PATHS ${GSSAPI_ROOT_DIR}/lib ${_GSSAPI_LIBDIR})
155 find_library(WIND_LIBRARY
157 PATHS ${GSSAPI_ROOT_DIR}/lib ${_GSSAPI_LIBDIR})
159 find_library(ROKEN_LIBRARY
161 PATHS ${GSSAPI_ROOT_DIR}/lib ${_GSSAPI_LIBDIR})
164 set(GSSAPI_LIBRARIES ${GSSAPI_LIBRARIES} ${GSSAPI_LIBRARY})
168 set(GSSAPI_LIBRARIES ${GSSAPI_LIBRARIES} ${KRB5_LIBRARY})
172 set(GSSAPI_LIBRARIES ${GSSAPI_LIBRARIES} ${HCRYPTO_LIBRARY})
176 set(GSSAPI_LIBRARIES ${GSSAPI_LIBRARIES} ${COM_ERR_LIBRARY})
180 set(GSSAPI_LIBRARIES ${GSSAPI_LIBRARIES} ${HEIMNTLM_LIBRARY})
184 set(GSSAPI_LIBRARIES ${GSSAPI_LIBRARIES} ${HX509_LIBRARY})
188 set(GSSAPI_LIBRARIES ${GSSAPI_LIBRARIES} ${ASN1_LIBRARY})
192 set(GSSAPI_LIBRARIES ${GSSAPI_LIBRARIES} ${WIND_LIBRARY})
196 set(GSSAPI_LIBRARIES ${GSSAPI_LIBRARIES} ${WIND_LIBRARY})
200 include(FindPackageHandleStandardArgs)
201 find_package_handle_standard_args(GSSAPI DEFAULT_MSG GSSAPI_LIBRARIES GSSAPI_INCLUDE_DIR)
203 if(GSSAPI_INCLUDE_DIRS AND GSSAPI_LIBRARIES)
204 set(GSSAPI_FOUND TRUE)
205 endif(GSSAPI_INCLUDE_DIRS AND GSSAPI_LIBRARIES)
207 # show the GSSAPI_INCLUDE_DIRS and GSSAPI_LIBRARIES variables only in the advanced view
208 mark_as_advanced(GSSAPI_INCLUDE_DIRS GSSAPI_LIBRARIES)