2021-05-25 18:07:50 +02:00
|
|
|
AC_DEFUN([AX_GSS_API], [
|
|
|
|
|
|
|
|
gssapi_path=""
|
|
|
|
|
|
|
|
AC_ARG_WITH([gssapi],
|
|
|
|
[AS_HELP_STRING([--with-gssapi=PATH],
|
|
|
|
[specify a path to krb5-config file])],
|
|
|
|
[gssapi_path="$withval"; enable_gssapi="yes"])
|
|
|
|
|
|
|
|
#
|
|
|
|
# Check availability of gssapi, which will be used for unit tests.
|
|
|
|
#
|
2021-06-01 10:02:06 +02:00
|
|
|
ENABLE_GSSAPI=no
|
2021-05-25 18:07:50 +02:00
|
|
|
GSSAPI_CFLAGS=
|
|
|
|
GSSAPI_LIBS=
|
|
|
|
|
|
|
|
AC_MSG_CHECKING([for gssapi support])
|
|
|
|
if test "x$gssapi_path" = "x" ; then
|
|
|
|
AC_MSG_RESULT([no])
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT([yes])
|
|
|
|
if test "$gssapi_path" = "yes"; then
|
|
|
|
AC_PATH_PROG([KRB5_CONFIG], [krb5-config])
|
|
|
|
else
|
|
|
|
KRB5_CONFIG="$gssapi_path"
|
|
|
|
fi
|
2021-05-26 16:03:14 +00:00
|
|
|
if test -x "${KRB5_CONFIG}" ; then
|
2021-05-25 18:07:50 +02:00
|
|
|
GSSAPI_CFLAGS=`${KRB5_CONFIG} --cflags gssapi`
|
2021-05-26 16:03:14 +00:00
|
|
|
GSSAPI_LIBS=`${KRB5_CONFIG} --libs gssapi`
|
2021-05-25 18:07:50 +02:00
|
|
|
else
|
|
|
|
AC_MSG_ERROR([Unable to locate krb5-config.])
|
|
|
|
fi
|
2021-06-12 20:45:13 +02:00
|
|
|
CXXFLAGS_SAVED="$CXXFLAGS"
|
|
|
|
CXXFLAGS="$CXXFLAGS $GSSAPI_CFLAGS"
|
2021-05-26 16:03:14 +00:00
|
|
|
|
|
|
|
# Checks
|
2021-06-12 20:45:13 +02:00
|
|
|
AC_CHECK_HEADERS([gssapi/gssapi.h gssapi/gssapi_krb5.h],,
|
|
|
|
AC_MSG_ERROR([Missing required gss-api header files]))
|
|
|
|
|
|
|
|
AC_CHECK_HEADERS([krb5/krb5.h],,
|
|
|
|
[AC_CHECK_HEADERS([krb5.h],,
|
|
|
|
AC_MSG_ERROR([Missing required krb5 header files]))])
|
2021-05-26 16:03:14 +00:00
|
|
|
|
|
|
|
# Verify that GSS-API with Kerberos 5 is usable.
|
|
|
|
LIBS_SAVED="$LIBS"
|
|
|
|
LIBS="$LIBS $GSSAPI_LIBS"
|
|
|
|
if test $enable_static_link = yes; then
|
|
|
|
LIBS="-static $LIBS"
|
|
|
|
fi
|
|
|
|
AC_MSG_CHECKING([checking for GSS-API with Kerberos 5 libraries])
|
|
|
|
AC_LINK_IFELSE(
|
|
|
|
[AC_LANG_PROGRAM(
|
|
|
|
[[#include <gssapi/gssapi_krb5.h>]],
|
|
|
|
[[gss_ctx_id_t ctx;
|
|
|
|
OM_uint32 minor;
|
|
|
|
OM_uint32 major;
|
|
|
|
major = gss_delete_sec_context(&minor, &ctx, GSS_C_NO_BUFFER);]])],
|
|
|
|
[AC_MSG_RESULT([yes])],
|
|
|
|
[AC_MSG_RESULT([no])
|
2021-06-12 20:45:13 +02:00
|
|
|
AC_MSG_ERROR([failed to link with GSS-API with Kerberos 5 libraries])])
|
|
|
|
AC_MSG_CHECKING([checking for gss_str_to_oid availability])
|
2021-05-26 16:03:14 +00:00
|
|
|
AC_COMPILE_IFELSE(
|
|
|
|
[AC_LANG_PROGRAM(
|
2021-06-12 20:45:13 +02:00
|
|
|
[[#include <gssapi/gssapi.h>]],
|
|
|
|
[[return (gss_str_to_oid(0, 0, 0));]])],
|
|
|
|
[AC_MSG_RESULT([yes])
|
|
|
|
AC_DEFINE([HAVE_GSS_STR_TO_OID], [1], [gss_str_to_oid is available])],
|
|
|
|
[AC_MSG_RESULT([no])])
|
2021-05-26 16:03:14 +00:00
|
|
|
CXXFLAGS="$CXXFLAGS_SAVED"
|
|
|
|
LIBS="$LIBS_SAVED"
|
2021-06-12 20:45:13 +02:00
|
|
|
AC_MSG_CHECKING([checking for MIT implementation vs Heimdal])
|
|
|
|
if `${KRB5_CONFIG} --all | grep Vendor | grep -q Heimdal`; then
|
|
|
|
AC_MSG_RESULT([Heimdal])
|
|
|
|
AC_DEFINE([WITH_HEIMDAL], [1], [Heimdal GSS-API implementation])
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT([MIT])
|
|
|
|
fi
|
2021-06-01 10:02:06 +02:00
|
|
|
ENABLE_GSSAPI=yes
|
2021-05-25 18:07:50 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
AC_SUBST(GSSAPI_CFLAGS)
|
|
|
|
AC_SUBST(GSSAPI_LIBS)
|
2021-06-01 10:02:06 +02:00
|
|
|
AM_CONDITIONAL([HAVE_GSSAPI], [test $ENABLE_GSSAPI = "yes"])
|
2021-05-25 18:07:50 +02:00
|
|
|
|
|
|
|
])dnl AX_GSS_API
|