diff options
Diffstat (limited to 'modules/FindGSSAPI.cmake')
-rw-r--r-- | modules/FindGSSAPI.cmake | 85 |
1 files changed, 52 insertions, 33 deletions
diff --git a/modules/FindGSSAPI.cmake b/modules/FindGSSAPI.cmake index f574602e..7ef66a0a 100644 --- a/modules/FindGSSAPI.cmake +++ b/modules/FindGSSAPI.cmake @@ -2,47 +2,66 @@ # Once done this will define # # GSSAPI_FOUND - system supports GSSAPI -# GSSAPI_INCS - the CSSAPI include directory +# GSSAPI_INCS - the GSSAPI include directory # GSSAPI_LIBS - the libraries needed to use GSSAPI -# GSSAPI_RPATH - the rpath for GSSAPI +# GSSAPI_FLAVOR - the type of API - MIT or HEIMDAL -# TODO: RPATH +IF (DEFINED CACHED_GSSAPI) -FIND_PROGRAM(KRB5_CONFIG NAMES krb5-config PATHS - /usr/bin - /usr/local/bin - /opt/local/bin -) - -#reset vars -set(GSSAPI_INCS) -set(GSSAPI_LIBS) -set(GSSAPI_FLAVOR) - -IF(KRB5_CONFIG) + # in cache already + IF ("${CACHED_GSSAPI}" STREQUAL "YES") + SET(GSSAPI_FOUND TRUE) + ENDIF ("${CACHED_GSSAPI}" STREQUAL "YES") - EXEC_PROGRAM(${KRB5_CONFIG} ARGS --libs gssapi RETURN_VALUE _return_VALUE OUTPUT_VARIABLE GSSAPI_LIBS) +ELSE (DEFINED CACHED_GSSAPI) - EXEC_PROGRAM(${KRB5_CONFIG} ARGS --cflags gssapi RETURN_VALUE _return_VALUE OUTPUT_VARIABLE GSSAPI_INCS) - STRING(REGEX REPLACE "(\r?\n)+$" "" GSSAPI_INCS "${GSSAPI_INCS}") + FIND_PROGRAM(KRB5_CONFIG NAMES krb5-config PATHS + /usr/bin + /usr/local/bin + /opt/local/bin + ) + + #reset vars + set(GSSAPI_INCS) + set(GSSAPI_LIBS) + set(GSSAPI_FLAVOR) + + IF(KRB5_CONFIG) + + EXEC_PROGRAM(${KRB5_CONFIG} ARGS --libs gssapi RETURN_VALUE _return_VALUE OUTPUT_VARIABLE GSSAPI_LIBS) + + EXEC_PROGRAM(${KRB5_CONFIG} ARGS --cflags gssapi RETURN_VALUE _return_VALUE OUTPUT_VARIABLE GSSAPI_INCS) + STRING(REGEX REPLACE "(\r?\n)+$" "" GSSAPI_INCS "${GSSAPI_INCS}") + + EXEC_PROGRAM(${KRB5_CONFIG} ARGS --vendor RETURN_VALUE _return_VALUE OUTPUT_VARIABLE gssapi_flavor_tmp) + set(GSSAPI_FLAVOR_MIT) + IF(gssapi_flavor_tmp MATCHES ".*Massachusetts.*") + SET(GSSAPI_FLAVOR "MIT") + ELSE(gssapi_flavor_tmp MATCHES ".*Massachusetts.*") + SET(GSSAPI_FLAVOR "HEIMDAL") + ENDIF(gssapi_flavor_tmp MATCHES ".*Massachusetts.*") + + IF(GSSAPI_LIBS) # GSSAPI_INCS can be also empty, so don't rely on that + SET(CACHED_GSSAPI "YES") + SET(GSSAPI_FOUND TRUE) + message(STATUS "Found GSSAPI: ${GSSAPI_LIBS}") - EXEC_PROGRAM(${KRB5_CONFIG} ARGS --vendor RETURN_VALUE _return_VALUE OUTPUT_VARIABLE gssapi_flavor_tmp) - set(GSSAPI_FLAVOR_MIT) - IF(gssapi_flavor_tmp MATCHES ".*Massachusetts.*") - SET(GSSAPI_FLAVOR "MIT") - ELSE(gssapi_flavor_tmp MATCHES ".*Massachusetts.*") - SET(GSSAPI_FLAVOR "HEIMDAL") - ENDIF(gssapi_flavor_tmp MATCHES ".*Massachusetts.*") + set(GSSAPI_INCS ${GSSAPI_INCS} CACHE STRING "The GSSAPI include directory" ) + set(GSSAPI_LIBS ${GSSAPI_LIBS} CACHE STRING "The libraries needed to use GSSAPI" ) + set(GSSAPI_FLAVOR ${GSSAPI_FLAVOR} CACHE STRING "The type of gss api, MIT or HEIMDAL") - IF(GSSAPI_LIBS) # GSSAPI_INCS can be also empty, so don't rely on that - SET(GSSAPI_FOUND TRUE) - message(STATUS "Found GSSAPI: ${GSSAPI_LIBS}") - ENDIF(GSSAPI_LIBS) + MARK_AS_ADVANCED(GSSAPI_INCS GSSAPI_LIBS GSSAPI_FLAVOR) -#ELSE(KRB5_CONFIG) + ELSE(GSSAPI_LIBS) + SET(CACHED_GSSAPI "NO") + ENDIF(GSSAPI_LIBS) + + ELSE(KRB5_CONFIG) -# TODO... + SET(CACHED_GSSAPI "NO") -ENDIF(KRB5_CONFIG) + ENDIF(KRB5_CONFIG) + + set(CACHED_GSSAPI ${CACHED_GSSAPI} CACHE INTERNAL "If gssapi (krb5) was checked") -MARK_AS_ADVANCED(GSSAPI_INCS GSSAPI_LIBS GSSAPI_FLAVOR) +ENDIF (DEFINED CACHED_GSSAPI) |