1*5e7646d2SAndroid Build Coastguard Workerdnl 2*5e7646d2SAndroid Build Coastguard Workerdnl GSSAPI/Kerberos library detection for CUPS. 3*5e7646d2SAndroid Build Coastguard Workerdnl 4*5e7646d2SAndroid Build Coastguard Workerdnl Copyright 2007-2017 by Apple Inc. 5*5e7646d2SAndroid Build Coastguard Workerdnl Copyright 2006-2007 by Easy Software Products. 6*5e7646d2SAndroid Build Coastguard Workerdnl 7*5e7646d2SAndroid Build Coastguard Workerdnl This file contains Kerberos support code, copyright 2006 by 8*5e7646d2SAndroid Build Coastguard Workerdnl Jelmer Vernooij. 9*5e7646d2SAndroid Build Coastguard Workerdnl 10*5e7646d2SAndroid Build Coastguard Workerdnl Licensed under Apache License v2.0. See the file "LICENSE" for more information. 11*5e7646d2SAndroid Build Coastguard Workerdnl 12*5e7646d2SAndroid Build Coastguard Worker 13*5e7646d2SAndroid Build Coastguard WorkerAC_ARG_ENABLE(gssapi, [ --disable-gssapi disable GSSAPI support]) 14*5e7646d2SAndroid Build Coastguard Worker 15*5e7646d2SAndroid Build Coastguard WorkerLIBGSSAPI="" 16*5e7646d2SAndroid Build Coastguard WorkerAC_SUBST(LIBGSSAPI) 17*5e7646d2SAndroid Build Coastguard Worker 18*5e7646d2SAndroid Build Coastguard Workerif test x$enable_gssapi != xno; then 19*5e7646d2SAndroid Build Coastguard Worker AC_PATH_TOOL(KRB5CONFIG, krb5-config) 20*5e7646d2SAndroid Build Coastguard Worker if test "x$KRB5CONFIG" != x; then 21*5e7646d2SAndroid Build Coastguard Worker case "$host_os_name" in 22*5e7646d2SAndroid Build Coastguard Worker darwin) 23*5e7646d2SAndroid Build Coastguard Worker # macOS weak-links to the Kerberos framework... 24*5e7646d2SAndroid Build Coastguard Worker LIBGSSAPI="-weak_framework Kerberos" 25*5e7646d2SAndroid Build Coastguard Worker AC_MSG_CHECKING(for GSS framework) 26*5e7646d2SAndroid Build Coastguard Worker if test -d /System/Library/Frameworks/GSS.framework; then 27*5e7646d2SAndroid Build Coastguard Worker AC_MSG_RESULT(yes) 28*5e7646d2SAndroid Build Coastguard Worker LIBGSSAPI="$LIBGSSAPI -weak_framework GSS" 29*5e7646d2SAndroid Build Coastguard Worker else 30*5e7646d2SAndroid Build Coastguard Worker AC_MSG_RESULT(no) 31*5e7646d2SAndroid Build Coastguard Worker fi 32*5e7646d2SAndroid Build Coastguard Worker ;; 33*5e7646d2SAndroid Build Coastguard Worker sunos*) 34*5e7646d2SAndroid Build Coastguard Worker # Solaris has a non-standard krb5-config, don't use it! 35*5e7646d2SAndroid Build Coastguard Worker AC_CHECK_LIB(gss, gss_display_status, 36*5e7646d2SAndroid Build Coastguard Worker AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available]) 37*5e7646d2SAndroid Build Coastguard Worker CFLAGS="`$KRB5CONFIG --cflags` $CFLAGS" 38*5e7646d2SAndroid Build Coastguard Worker CPPFLAGS="`$KRB5CONFIG --cflags` $CPPFLAGS" 39*5e7646d2SAndroid Build Coastguard Worker LIBGSSAPI="-lgss `$KRB5CONFIG --libs`") 40*5e7646d2SAndroid Build Coastguard Worker ;; 41*5e7646d2SAndroid Build Coastguard Worker *) 42*5e7646d2SAndroid Build Coastguard Worker # Other platforms just ask for GSSAPI 43*5e7646d2SAndroid Build Coastguard Worker CFLAGS="`$KRB5CONFIG --cflags gssapi` $CFLAGS" 44*5e7646d2SAndroid Build Coastguard Worker CPPFLAGS="`$KRB5CONFIG --cflags gssapi` $CPPFLAGS" 45*5e7646d2SAndroid Build Coastguard Worker LIBGSSAPI="`$KRB5CONFIG --libs gssapi`" 46*5e7646d2SAndroid Build Coastguard Worker ;; 47*5e7646d2SAndroid Build Coastguard Worker esac 48*5e7646d2SAndroid Build Coastguard Worker AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available]) 49*5e7646d2SAndroid Build Coastguard Worker else 50*5e7646d2SAndroid Build Coastguard Worker # Check for vendor-specific implementations... 51*5e7646d2SAndroid Build Coastguard Worker case "$host_os_name" in 52*5e7646d2SAndroid Build Coastguard Worker hp-ux*) 53*5e7646d2SAndroid Build Coastguard Worker AC_CHECK_LIB(gss, gss_display_status, 54*5e7646d2SAndroid Build Coastguard Worker AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available]) 55*5e7646d2SAndroid Build Coastguard Worker LIBGSSAPI="-lgss -lgssapi_krb5") 56*5e7646d2SAndroid Build Coastguard Worker ;; 57*5e7646d2SAndroid Build Coastguard Worker sunos*) 58*5e7646d2SAndroid Build Coastguard Worker AC_CHECK_LIB(gss, gss_display_status, 59*5e7646d2SAndroid Build Coastguard Worker AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available]) 60*5e7646d2SAndroid Build Coastguard Worker LIBGSSAPI="-lgss") 61*5e7646d2SAndroid Build Coastguard Worker ;; 62*5e7646d2SAndroid Build Coastguard Worker esac 63*5e7646d2SAndroid Build Coastguard Worker fi 64*5e7646d2SAndroid Build Coastguard Worker 65*5e7646d2SAndroid Build Coastguard Worker if test "x$LIBGSSAPI" != x; then 66*5e7646d2SAndroid Build Coastguard Worker AC_CHECK_HEADER(krb5.h, AC_DEFINE(HAVE_KRB5_H)) 67*5e7646d2SAndroid Build Coastguard Worker if test -d /System/Library/Frameworks/GSS.framework; then 68*5e7646d2SAndroid Build Coastguard Worker AC_CHECK_HEADER(GSS/gssapi.h, AC_DEFINE(HAVE_GSS_GSSAPI_H)) 69*5e7646d2SAndroid Build Coastguard Worker AC_CHECK_HEADER(GSS/gssapi_generic.h, AC_DEFINE(HAVE_GSS_GSSAPI_GENERIC_H)) 70*5e7646d2SAndroid Build Coastguard Worker AC_CHECK_HEADER(GSS/gssapi_spi.h, AC_DEFINE(HAVE_GSS_GSSAPI_SPI_H)) 71*5e7646d2SAndroid Build Coastguard Worker else 72*5e7646d2SAndroid Build Coastguard Worker AC_CHECK_HEADER(gssapi.h, AC_DEFINE(HAVE_GSSAPI_H)) 73*5e7646d2SAndroid Build Coastguard Worker AC_CHECK_HEADER(gssapi/gssapi.h, AC_DEFINE(HAVE_GSSAPI_GSSAPI_H)) 74*5e7646d2SAndroid Build Coastguard Worker fi 75*5e7646d2SAndroid Build Coastguard Worker 76*5e7646d2SAndroid Build Coastguard Worker SAVELIBS="$LIBS" 77*5e7646d2SAndroid Build Coastguard Worker LIBS="$LIBS $LIBGSSAPI" 78*5e7646d2SAndroid Build Coastguard Worker 79*5e7646d2SAndroid Build Coastguard Worker AC_CHECK_FUNC(__ApplePrivate_gss_acquire_cred_ex_f, 80*5e7646d2SAndroid Build Coastguard Worker AC_DEFINE(HAVE_GSS_ACQUIRE_CRED_EX_F)) 81*5e7646d2SAndroid Build Coastguard Worker 82*5e7646d2SAndroid Build Coastguard Worker AC_MSG_CHECKING(for GSS_C_NT_HOSTBASED_SERVICE) 83*5e7646d2SAndroid Build Coastguard Worker if test x$ac_cv_header_gssapi_gssapi_h = xyes; then 84*5e7646d2SAndroid Build Coastguard Worker AC_TRY_COMPILE([ #include <gssapi/gssapi.h> ], 85*5e7646d2SAndroid Build Coastguard Worker [ gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE; ], 86*5e7646d2SAndroid Build Coastguard Worker AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE) 87*5e7646d2SAndroid Build Coastguard Worker AC_MSG_RESULT(yes), 88*5e7646d2SAndroid Build Coastguard Worker AC_MSG_RESULT(no)) 89*5e7646d2SAndroid Build Coastguard Worker elif test x$ac_cv_header_gss_gssapi_h = xyes; then 90*5e7646d2SAndroid Build Coastguard Worker AC_TRY_COMPILE([ #include <GSS/gssapi.h> ], 91*5e7646d2SAndroid Build Coastguard Worker [ gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE; ], 92*5e7646d2SAndroid Build Coastguard Worker AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE) 93*5e7646d2SAndroid Build Coastguard Worker AC_MSG_RESULT(yes), 94*5e7646d2SAndroid Build Coastguard Worker AC_MSG_RESULT(no)) 95*5e7646d2SAndroid Build Coastguard Worker else 96*5e7646d2SAndroid Build Coastguard Worker AC_TRY_COMPILE([ #include <gssapi.h> ], 97*5e7646d2SAndroid Build Coastguard Worker [ gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE; ], 98*5e7646d2SAndroid Build Coastguard Worker AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE) 99*5e7646d2SAndroid Build Coastguard Worker AC_MSG_RESULT(yes), 100*5e7646d2SAndroid Build Coastguard Worker AC_MSG_RESULT(no)) 101*5e7646d2SAndroid Build Coastguard Worker fi 102*5e7646d2SAndroid Build Coastguard Worker 103*5e7646d2SAndroid Build Coastguard Worker LIBS="$SAVELIBS" 104*5e7646d2SAndroid Build Coastguard Worker fi 105*5e7646d2SAndroid Build Coastguard Workerfi 106*5e7646d2SAndroid Build Coastguard Worker 107*5e7646d2SAndroid Build Coastguard Workerdnl Default GSS service name... 108*5e7646d2SAndroid Build Coastguard WorkerAC_ARG_WITH(gssservicename, [ --with-gssservicename set default gss service name], 109*5e7646d2SAndroid Build Coastguard Worker default_gssservicename="$withval", 110*5e7646d2SAndroid Build Coastguard Worker default_gssservicename="default") 111*5e7646d2SAndroid Build Coastguard Worker 112*5e7646d2SAndroid Build Coastguard Workerif test x$default_gssservicename != xno; then 113*5e7646d2SAndroid Build Coastguard Worker if test "x$default_gssservicename" = "xdefault"; then 114*5e7646d2SAndroid Build Coastguard Worker CUPS_DEFAULT_GSSSERVICENAME="host" 115*5e7646d2SAndroid Build Coastguard Worker else 116*5e7646d2SAndroid Build Coastguard Worker CUPS_DEFAULT_GSSSERVICENAME="$default_gssservicename" 117*5e7646d2SAndroid Build Coastguard Worker fi 118*5e7646d2SAndroid Build Coastguard Workerelse 119*5e7646d2SAndroid Build Coastguard Worker CUPS_DEFAULT_GSSSERVICENAME="" 120*5e7646d2SAndroid Build Coastguard Workerfi 121*5e7646d2SAndroid Build Coastguard Worker 122*5e7646d2SAndroid Build Coastguard WorkerAC_SUBST(CUPS_DEFAULT_GSSSERVICENAME) 123*5e7646d2SAndroid Build Coastguard WorkerAC_DEFINE_UNQUOTED(CUPS_DEFAULT_GSSSERVICENAME, "$CUPS_DEFAULT_GSSSERVICENAME") 124