-dnl
-dnl AUTHOR: Squid Web Cache team
-dnl
-dnl SQUID Web Proxy Cache http://www.squid-cache.org/
-dnl ----------------------------------------------------------
-dnl Squid is the result of efforts by numerous individuals from
-dnl the Internet community; see the CONTRIBUTORS file for full
-dnl details. Many organizations have provided support for Squid's
-dnl development; see the SPONSORS file for full details. Squid is
-dnl Copyrighted (C) 2001 by the Regents of the University of
-dnl California; see the COPYRIGHT file for full details. Squid
-dnl incorporates software developed and/or copyrighted by other
-dnl sources; see the CREDITS file for full details.
-dnl
-dnl This program is free software; you can redistribute it and/or modify
-dnl it under the terms of the GNU General Public License as published by
-dnl the Free Software Foundation; either version 2 of the License, or
-dnl (at your option) any later version.
-dnl
-dnl This program is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-dnl GNU General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU General Public License
-dnl along with this program; if not, write to the Free Software
-dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+## Copyright (C) 1996-2023 The Squid Software Foundation and contributors
+##
+## Squid software is distributed under GPLv2+ license and includes
+## contributions from numerous individuals and organizations.
+## Please see the COPYING and CONTRIBUTORS files for details.
+##
dnl these checks must be performed in the same order as here defined,
dnl and have mostly been lifted out of an inlined configure.ac.
dnl to yes if that's the case
AC_DEFUN([SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H], [
AC_CACHE_CHECK([for broken Solaris krb5.h],squid_cv_broken_krb5_h, [
+ SQUID_STATE_SAVE(squid_krb5_solaris_test)
+ CPPFLAGS="-I${srcdir:-.} $CPPFLAGS"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <krb5.h>
int i;
-]])], [ squid_cv_broken_krb5_h=no ], [
+]])], [ squid_cv_broken_krb5_h=no ], [
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#if defined(__cplusplus)
-#define KRB5INT_BEGIN_DECLS extern "C" {
-#define KRB5INT_END_DECLS
-KRB5INT_BEGIN_DECLS
-#endif
-#include <krb5.h>
+#define HAVE_BROKEN_SOLARIS_KRB5_H 1
+#include "compat/krb5.h"
int i;
]])], [ squid_cv_broken_krb5_h=yes ], [ squid_cv_broken_krb5_h=no ])
])
+ SQUID_STATE_ROLLBACK(squid_krb5_solaris_test)
])
]) dnl SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H
AC_DEFUN([SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H], [
AC_CACHE_CHECK([for broken Heimdal krb5.h],squid_cv_broken_heimdal_krb5_h, [
+ SQUID_STATE_SAVE(squid_krb5_heimdal_test)
+ CPPFLAGS="-I${srcdir:-.} $CPPFLAGS"
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <krb5.h>
int
}
]])], [ squid_cv_broken_heimdal_krb5_h=no ], [
AC_RUN_IFELSE([AC_LANG_SOURCE([[
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#include <krb5.h>
-#if defined(__cplusplus)
-}
-#endif
+#define HAVE_BROKEN_HEIMDAL_KRB5_H 1
+#include "compat/krb5.h"
int
main(void)
{
}
]])], [ squid_cv_broken_heimdal_krb5_h=yes ], [ squid_cv_broken_heimdal_krb5_h=no ])
])
+ SQUID_STATE_ROLLBACK(squid_krb5_heimdal_test)
])
]) dnl SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H
AC_DEFUN([SQUID_CHECK_MAX_SKEW_IN_KRB5_CONTEXT],[
AC_CACHE_CHECK([for max_skew in struct krb5_context],
squid_cv_max_skew_context, [
+ SQUID_STATE_SAVE(squid_krb5_test)
+ CPPFLAGS="-I${srcdir:-.} $CPPFLAGS"
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
-#if HAVE_BROKEN_SOLARIS_KRB5_H
-#if defined(__cplusplus)
-#define KRB5INT_BEGIN_DECLS extern "C" {
-#define KRB5INT_END_DECLS
-KRB5INT_BEGIN_DECLS
-#endif
-#endif
-#include <krb5.h>
+#include "compat/krb5.h"
krb5_context kc; kc->max_skew = 1;
]])
],[ squid_cv_max_skew_context=yes ],
[ squid_cv_max_skew_context=no ])
+ SQUID_STATE_ROLLBACK(squid_krb5_test)
])
])
dnl squid_cv_memory_cache if that's the case.
AC_DEFUN([SQUID_CHECK_KRB5_CONTEXT_MEMORY_CACHE],[
AC_CACHE_CHECK([for memory cache], squid_cv_memory_cache, [
+ SQUID_STATE_SAVE(squid_krb5_test)
+ CPPFLAGS="-I${srcdir:-.} $CPPFLAGS"
AC_RUN_IFELSE([
AC_LANG_SOURCE([[
-#if HAVE_BROKEN_SOLARIS_KRB5_H
-#if defined(__cplusplus)
-#define KRB5INT_BEGIN_DECLS extern "C" {
-#define KRB5INT_END_DECLS
-KRB5INT_BEGIN_DECLS
-#endif
-#endif
-#include <krb5.h>
+#include "compat/krb5.h"
int main(int argc, char *argv[])
{
krb5_context context;
}
]])
], [ squid_cv_memory_cache=yes ], [ squid_cv_memory_cache=no ], [:])
+ SQUID_STATE_ROLLBACK(squid_krb5_test)
+ ])
+])
+
+dnl check whether the kerberos context has a memory keytab. Sets
+dnl squid_cv_memory_keytab if that's the case.
+AC_DEFUN([SQUID_CHECK_KRB5_CONTEXT_MEMORY_KEYTAB],[
+ AC_CACHE_CHECK([for memory keytab], squid_cv_memory_keytab, [
+ SQUID_STATE_SAVE(squid_krb5_test)
+ CPPFLAGS="-I${srcdir:-.} $CPPFLAGS"
+ AC_RUN_IFELSE([
+ AC_LANG_SOURCE([[
+#include "compat/krb5.h"
+int main(int argc, char *argv[])
+{
+ krb5_context context;
+ krb5_keytab kt;
+
+ krb5_init_context(&context);
+ return krb5_kt_resolve(context, "MEMORY:test_keytab", &kt);
+}
+ ]])
+ ], [ squid_cv_memory_keytab=yes ], [ squid_cv_memory_keytab=no ], [:])
+ SQUID_STATE_ROLLBACK(squid_krb5_test)
])
])
#include <gss.h>
#endif
#else
+#if USE_APPLE_KRB5
+#define GSSKRB_APPLE_DEPRECATED(x)
+#endif
#if HAVE_GSSAPI_GSSAPI_H
#include <gssapi/gssapi.h>
#elif HAVE_GSSAPI_H
return 0;
}
]])], [ squid_cv_working_gssapi=yes ], [ squid_cv_working_gssapi=no ], [:])])
-if test "x$squid_cv_working_gssapi" = "xno" -a `echo $LIBS | grep -i -c "\-L"` -gt 0; then
- AC_MSG_NOTICE([Check Runtime library path !])
-fi
+ AS_IF([test "x$squid_cv_working_gssapi" = "xno" -a `echo $LIBS | grep -i -c "(-)L"` -gt 0],[
+ AC_MSG_NOTICE([Check Runtime library path !])
+ ])
])
dnl check for a working spnego, and set squid_cv_have_spnego
#include <gss.h>
#endif
#else
+#if USE_APPLE_KRB5
+#define GSSKRB_APPLE_DEPRECATED(x)
+#endif
#if HAVE_GSSAPI_GSSAPI_H
#include <gssapi/gssapi.h>
#elif HAVE_GSSAPI_H
return 1;
}
- ]])],
+ ]])],
[ squid_cv_have_spnego=yes ], [ squid_cv_have_spnego=no ],[:])])
])
dnl checks that krb5 is functional. Sets squid_cv_working_krb5
AC_DEFUN([SQUID_CHECK_WORKING_KRB5],[
AC_CACHE_CHECK([for working krb5], squid_cv_working_krb5, [
+ SQUID_STATE_SAVE(squid_krb5_test)
+ CPPFLAGS="-I${srcdir:-.} $CPPFLAGS"
AC_RUN_IFELSE([AC_LANG_SOURCE([[
-#if HAVE_KRB5_H
-#if HAVE_BROKEN_SOLARIS_KRB5_H
-#if defined(__cplusplus)
-#define KRB5INT_BEGIN_DECLS extern "C" {
-#define KRB5INT_END_DECLS
-KRB5INT_BEGIN_DECLS
-#endif
-#endif
-#if HAVE_BROKEN_HEIMDAL_KRB5_H
-extern "C" {
-#include <krb5.h>
-}
-#else
-#include <krb5.h>
-#endif
-#endif
-
+#include "compat/krb5.h"
int
main(void)
{
return 0;
}
]])], [ squid_cv_working_krb5=yes ], [ squid_cv_working_krb5=no ],[:])])
-if test "x$squid_cv_working_krb5" = "xno" -a `echo $LIBS | grep -i -c "\-L"` -gt 0; then
- AC_MSG_NOTICE([Check Runtime library path !])
-fi
+ SQUID_STATE_ROLLBACK(squid_krb5_test)
+ AS_IF([test "x$squid_cv_working_krb5" = "xno" -a `echo $LIBS | grep -i -c "(-)L"` -gt 0],[
+ AC_MSG_NOTICE([Check Runtime library path !])
+ ])
])
dnl checks for existence of krb5 functions
AC_DEFUN([SQUID_CHECK_KRB5_FUNCS],[
+ ac_com_error_message=no
+ AS_IF([test "x$ac_cv_header_com_err_h" = "xyes"],[
+ AC_EGREP_HEADER(error_message,com_err.h,ac_com_error_message=yes)],
+ [test "x$ac_cv_header_et_com_err_h" = "xyes"],[
+ AC_EGREP_HEADER(error_message,et/com_err.h,ac_com_error_message=yes)
+ ])
+
+ AS_IF([test `echo $KRB5LIBS | grep -c com_err` -ne 0 -a "x$ac_com_error_message" = "xyes"],[
+ AC_CHECK_LIB(com_err,error_message,
+ AC_DEFINE(HAVE_ERROR_MESSAGE,1,[Define to 1 if you have error_message]),)
+ ],[test "x$ac_com_error_message" = "xyes"],[
+ AC_CHECK_LIB(krb5,error_message,
+ AC_DEFINE(HAVE_ERROR_MESSAGE,1,[Define to 1 if you have error_message]),)
+ ])
+
AC_CHECK_LIB(krb5,krb5_get_err_text,
AC_DEFINE(HAVE_KRB5_GET_ERR_TEXT,1,
[Define to 1 if you have krb5_get_err_text]),)
AC_CHECK_LIB(krb5,krb5_get_error_message,
AC_DEFINE(HAVE_KRB5_GET_ERROR_MESSAGE,1,
[Define to 1 if you have krb5_get_error_message]),)
+ AC_CHECK_LIB(krb5,krb5_free_error_message,
+ AC_DEFINE(HAVE_KRB5_FREE_ERROR_MESSAGE,1,
+ [Define to 1 if you have krb5_free_error_message]),)
+ AC_CHECK_LIB(krb5,krb5_free_error_string,
+ AC_DEFINE(HAVE_KRB5_FREE_ERROR_STRING,1,
+ [Define to 1 if you have krb5_free_error_string]),)
AC_CHECK_DECLS(krb5_kt_free_entry,,,[#include <krb5.h>])
AC_CHECK_TYPE(krb5_pac,
AC_DEFINE(HAVE_KRB5_PAC,1,
AC_DEFINE(HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC,1,
[Define to 1 if you have krb5_get_init_creds_opt_alloc]),)
AC_MSG_CHECKING([for krb5_get_init_creds_free requires krb5_context])
+ SQUID_STATE_SAVE(squid_krb5_test)
+ CPPFLAGS="-I${srcdir:-.} $CPPFLAGS"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #include <krb5.h>
+#include "compat/krb5.h"
]],[[krb5_context context;
krb5_get_init_creds_opt *options;
krb5_get_init_creds_opt_free(context, options)]])],[
[Define to 1 if you krb5_get_init_creds_free requires krb5_context])
AC_MSG_RESULT(yes)
],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
-
+ SQUID_STATE_ROLLBACK(squid_krb5_test)
AC_CHECK_FUNCS(gss_map_name_to_any,
AC_DEFINE(HAVE_GSS_MAP_ANY_TO_ANY,1,
SQUID_DEFINE_BOOL(HAVE_KRB5_MEMORY_CACHE,$squid_cv_memory_cache,
[Define if kerberos has MEMORY: cache support])
+ SQUID_CHECK_KRB5_CONTEXT_MEMORY_KEYTAB
+ SQUID_DEFINE_BOOL(HAVE_KRB5_MEMORY_KEYTAB,$squid_cv_memory_keytab,
+ [Define if kerberos has MEMORY: keytab support])
+
SQUID_CHECK_WORKING_GSSAPI
SQUID_DEFINE_BOOL(HAVE_GSSAPI,$squid_cv_working_gssapi,[GSSAPI support])