summaryrefslogtreecommitdiffstats
path: root/cmake/FindGSSAPI.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/FindGSSAPI.cmake')
-rw-r--r--cmake/FindGSSAPI.cmake39
1 files changed, 39 insertions, 0 deletions
diff --git a/cmake/FindGSSAPI.cmake b/cmake/FindGSSAPI.cmake
new file mode 100644
index 0000000000..6f22929b6c
--- /dev/null
+++ b/cmake/FindGSSAPI.cmake
@@ -0,0 +1,39 @@
+find_package(PkgConfig)
+pkg_check_modules(PC_GSSAPI QUIET krb5-gssapi)
+
+find_path(GSSAPI_INCLUDE_DIRS
+ NAMES gssapi/gssapi.h
+ HINTS ${PC_GSSAPI_INCLUDEDIR}
+ PATH_SUFFIXES gssapi)
+
+find_library(GSSAPI_LIBRARIES
+ NAMES
+ GSS # framework
+ gssapi_krb5
+ HINTS ${PC_GSSAPILIBDIR}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GSSAPI DEFAULT_MSG GSSAPI_LIBRARIES GSSAPI_INCLUDE_DIRS)
+
+if(GSSAPI_FOUND AND NOT TARGET GSSAPI::GSSAPI)
+ if(GSSAPI_LIBRARIES MATCHES "/([^/]+)\\.framework$")
+ add_library(GSSAPI::GSSAPI INTERFACE IMPORTED)
+ set_target_properties(GSSAPI::GSSAPI PROPERTIES
+ INTERFACE_LINK_LIBRARIES "${GSSAPI_LIBRARIES}")
+ else()
+ add_library(GSSAPI::GSSAPI UNKNOWN IMPORTED)
+ set_target_properties(GSSAPI::GSSAPI PROPERTIES
+ IMPORTED_LOCATION "${GSSAPI_LIBRARIES}")
+ endif()
+
+ set_target_properties(GSSAPI::GSSAPI PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${GSSAPI_INCLUDE_DIRS}")
+endif()
+
+mark_as_advanced(GSSAPI_INCLUDE_DIRS GSSAPI_LIBRARIES)
+
+include(FeatureSummary)
+set_package_properties(GSSAPI PROPERTIES
+ DESCRIPTION "Generic Security Services Application Program Interface")
+