1dnl 2dnl GSSAPI/Kerberos library detection for CUPS. 3dnl 4dnl Copyright © 2020-2024 by OpenPrinting. 5dnl Copyright @ 2007-2017 by Apple Inc. 6dnl Copyright @ 2006-2007 by Easy Software Products. 7dnl 8dnl This file contains Kerberos support code, copyright 2006 by 9dnl Jelmer Vernooij. 10dnl 11dnl Licensed under Apache License v2.0. See the file "LICENSE" for more 12dnl information. 13dnl 14 15AC_ARG_ENABLE([gssapi], AS_HELP_STRING([--enable-gssapi], [enable (deprecated) GSSAPI/Kerberos support])) 16 17LIBGSSAPI="" 18AC_SUBST([LIBGSSAPI]) 19 20AS_IF([test x$enable_gssapi = xyes], [ 21 AC_PATH_TOOL([KRB5CONFIG], [krb5-config]) 22 AS_CASE(["$host_os_name"], [darwin*], [ 23 # macOS weak-links to the Kerberos framework... 24 AC_DEFINE([HAVE_GSSAPI], [1], [Is GSSAPI available?]) 25 LIBGSSAPI="-weak_framework Kerberos" 26 AC_MSG_CHECKING([for GSS framework]) 27 AS_IF([test -d /System/Library/Frameworks/GSS.framework], [ 28 AC_MSG_RESULT([yes]) 29 LIBGSSAPI="$LIBGSSAPI -weak_framework GSS" 30 ], [ 31 AC_MSG_RESULT([no]) 32 ]) 33 ], [sunos* | solaris*], [ 34 # Solaris has a non-standard krb5-config, don't use it! 35 SAVELIBS="$LIBS" 36 AC_CHECK_LIB([gss], [gss_display_status], [ 37 AC_DEFINE([HAVE_GSSAPI], [1], [Is GSSAPI available?]) 38 AS_IF([test "x$KRB5CONFIG" != x], [ 39 CFLAGS="$($KRB5CONFIG --cflags) $CFLAGS" 40 CPPFLAGS="$($KRB5CONFIG --cflags) $CPPFLAGS" 41 LIBGSSAPI="-lgss $($KRB5CONFIG --libs)" 42 ], [ 43 LIBGSSAPI="-lgss" 44 ]) 45 ], [ 46 AC_MSG_ERROR([--enable-gssapi specified but GSSAPI library cannot be found.]) 47 ]) 48 LIBS="$SAVELIBS" 49 ], [*], [ 50 # Other platforms just ask for GSSAPI 51 AS_IF([test "x$KRB5CONFIG" = x], [ 52 AC_MSG_ERROR([--enable-gssapi specified but krb5-config cannot be found.]) 53 ], [ 54 AC_DEFINE([HAVE_GSSAPI], [1], [Is GSSAPI available?]) 55 CFLAGS="$($KRB5CONFIG --cflags gssapi) $CFLAGS" 56 CPPFLAGS="$($KRB5CONFIG --cflags gssapi) $CPPFLAGS" 57 LIBGSSAPI="$($KRB5CONFIG --libs gssapi)" 58 ]) 59 ]) 60 61 AC_CHECK_HEADER([krb5.h], [AC_DEFINE([HAVE_KRB5_H], [1], [Have <krb5.h> header?])]) 62 AS_IF([test -d /System/Library/Frameworks/GSS.framework], [ 63 AC_CHECK_HEADER([GSS/gssapi.h], [AC_DEFINE([HAVE_GSS_GSSAPI_H], [1], [Have <GSS/gssapi.h> header?])]) 64 AC_CHECK_HEADER([GSS/gssapi_generic.h], [AC_DEFINE([HAVE_GSS_GSSAPI_GENERIC_H], [1], [Have <GSS/gssapi_generic.h> header?])]) 65 AC_CHECK_HEADER([GSS/gssapi_spi.h], [AC_DEFINE([HAVE_GSS_GSSAPI_SPI_H], [1], [Have <GSS/gssapi_spi.h> header?])]) 66 ], [ 67 AC_CHECK_HEADER([gssapi.h], [AC_DEFINE([HAVE_GSSAPI_H], [1], [Have <gssapi.h> header?])]) 68 AC_CHECK_HEADER([gssapi/gssapi.h], [AC_DEFINE([HAVE_GSSAPI_GSSAPI_H], [1], [Have <gssapi/gssapi.h> header?])]) 69 ]) 70 71 SAVELIBS="$LIBS" 72 LIBS="$LIBS $LIBGSSAPI" 73 PKGCONFIG_LIBS_STATIC="$PKGCONFIG_LIBS_STATIC $LIBGSSAPI" 74 75 AC_CHECK_FUNC([__ApplePrivate_gss_acquire_cred_ex_f], [ 76 AC_DEFINE([HAVE_GSS_ACQUIRE_CRED_EX_F], [1], [Have __ApplePrivate_gss_acquire_cred_ex_f function?]) 77 ]) 78 79 AC_MSG_CHECKING([for GSS_C_NT_HOSTBASED_SERVICE]) 80 AS_IF([test x$ac_cv_header_gssapi_gssapi_h = xyes], [ 81 AC_COMPILE_IFELSE([ 82 AC_LANG_PROGRAM([[#include <gssapi/gssapi.h>]], [[ 83 gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE; 84 ]]) 85 ], [ 86 AC_DEFINE([HAVE_GSS_C_NT_HOSTBASED_SERVICE], [1], [Have GSS_C_NT_HOSTBASED_SERVICE?]) 87 AC_MSG_RESULT([yes]) 88 ], [ 89 AC_MSG_RESULT([no]) 90 ]) 91 ], [test x$ac_cv_header_gss_gssapi_h = xyes], [ 92 AC_COMPILE_IFELSE([ 93 AC_LANG_PROGRAM([[#include <GSS/gssapi.h>]], [[ 94 gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE; 95 ]]) 96 ], [ 97 AC_DEFINE([HAVE_GSS_C_NT_HOSTBASED_SERVICE], [1], [Have GSS_C_NT_HOSTBASED_SERVICE?]) 98 AC_MSG_RESULT([yes]) 99 ], [ 100 AC_MSG_RESULT([no]) 101 ]) 102 ], [ 103 AC_COMPILE_IFELSE([ 104 AC_LANG_PROGRAM([[#include <gssapi.h>]], [[ 105 gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE; 106 ]]) 107 ], [ 108 AC_DEFINE([HAVE_GSS_C_NT_HOSTBASED_SERVICE], [1], [Have GSS_C_NT_HOSTBASED_SERVICE?]) 109 AC_MSG_RESULT([yes]) 110 ], [ 111 AC_MSG_RESULT([no]) 112 ]) 113 ]) 114 115 LIBS="$SAVELIBS" 116]) 117 118dnl Default GSS service name... 119AC_ARG_WITH([gssservicename], AS_HELP_STRING([--with-gssservicename], [set default gss service name]), [ 120 default_gssservicename="$withval" 121], [ 122 default_gssservicename="default" 123]) 124 125AS_IF([test x$default_gssservicename != xno], [ 126 AS_IF([test "x$default_gssservicename" = "xdefault"], [ 127 CUPS_DEFAULT_GSSSERVICENAME="host" 128 ], [ 129 CUPS_DEFAULT_GSSSERVICENAME="$default_gssservicename" 130 ]) 131], [ 132 CUPS_DEFAULT_GSSSERVICENAME="" 133]) 134 135AC_SUBST([CUPS_DEFAULT_GSSSERVICENAME]) 136AC_DEFINE_UNQUOTED([CUPS_DEFAULT_GSSSERVICENAME], ["$CUPS_DEFAULT_GSSSERVICENAME"], [Default GSSServiceName value.]) 137