1dnl $Id: gssapi-check.m4,v 1.3 2005-04-28 20:50:05 bfernhomberg Exp $ 2dnl Autoconf macro to check for kerberos 3 4AC_DEFUN([NETATALK_GSSAPI_CHECK], 5[ 6 FOUND_GSSAPI=no 7 GSSAPI_LIBS="" 8 GSSAPI_CFLAGS="" 9 10 AC_ARG_WITH(gssapi, 11 [ --with-gssapi[[=PATH]] path to GSSAPI for Kerberos V UAM [[auto]]], 12 [compilegssapi=$withval], 13 [compilegssapi=auto] 14 ) 15 16 if test x"$compilegssapi" != x"no"; then 17 18 if test "x$compilegssapi" != "xyes" -a "x$compilegssapi" != "xauto"; then 19 GSSAPI_CFLAGS="-I$withval/include" 20 GSSAPI_CPPFLAGS="-I$withval/include" 21 GSSAPI_LDFLAGS="-L$withval/${atalk_libname}" 22 FOUND_GSSAPI=yes 23 AC_MSG_CHECKING([checking for GSSAPI support in]) 24 AC_MSG_RESULT([$compilegssapi]) 25 fi 26 27 28 # Do no harm to the values of CFLAGS and LIBS while testing for 29 # Kerberos support. 30 31 ac_save_CFLAGS=$CFLAGS 32 ac_save_CPPFLAGS=$CPPFLAGS 33 ac_save_LDFLAGS=$LDFLAGS 34 ac_save_LIBS=$LIBS 35 36 if test x$FOUND_GSSAPI = x"no"; then 37 ################################################# 38 # check for krb5-config from recent MIT and Heimdal kerberos 5 39 AC_PATH_PROG(KRB5_CONFIG, krb5-config) 40 AC_MSG_CHECKING(for working krb5-config) 41 if test -x "$KRB5_CONFIG"; then 42 ac_save_CFLAGS=$CFLAGS 43 CFLAGS="";export CFLAGS 44 ac_save_LDFLAGS=$LDFLAGS 45 LDFLAGS="";export LDFLAGS 46 GSSAPI_LIBS="`$KRB5_CONFIG --libs gssapi`" 47 GSSAPI_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" 48 GSSAPI_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" 49 CFLAGS=$ac_save_CFLAGS;export CFLAGS 50 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS 51 FOUND_GSSAPI=yes 52 AC_MSG_RESULT(yes) 53 else 54 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy) 55 fi 56 fi 57 58 if test x$FOUND_GSSAPI = x"no"; then 59 ################################################# 60 # see if this box has the SuSE location for the heimdal krb implementation 61 AC_MSG_CHECKING(for /usr/include/heimdal) 62 if test -d /usr/include/heimdal; then 63 if test -f /usr/lib/heimdal/lib/libkrb5.a; then 64 GSSAPI_CFLAGS="-I/usr/include/heimdal" 65 GSSAPI_CPPFLAGS="-I/usr/include/heimdal" 66 GSSAPI_LDFLAGS="-L/usr/lib/heimdal/lib" 67 AC_MSG_RESULT(yes) 68 FOUND_GSSAPI=yes 69 else 70 GSSAPI_CFLAGS="-I/usr/include/heimdal" 71 GSSAPI_CPPFLAGS="-I/usr/include/heimdal" 72 AC_MSG_RESULT(yes) 73 FOUND_GSSAPI=yes 74 fi 75 else 76 AC_MSG_RESULT(no) 77 fi 78 fi 79 80 if test x$FOUND_GSSAPI = x"no"; then 81 ################################################# 82 # see if this box has the RedHat location for kerberos 83 AC_MSG_CHECKING(for /usr/kerberos) 84 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then 85 GSSAPI_LDFLAGS="-L/usr/kerberos/lib" 86 GSSAPI_CFLAGS="-I/usr/kerberos/include" 87 GSSAPI_CPPFLAGS="-I/usr/kerberos/include" 88 AC_MSG_RESULT(yes) 89 else 90 AC_MSG_RESULT(no) 91 fi 92 fi 93 94 CFLAGS="$CFLAGS $GSSAPI_CFLAGS" 95 CPPFLAGS="$CPPFLAGS $GSSAPI_CPPFLAGS" 96 LDFLAGS="$LDFLAGS $GSSAPI_LDFLAGS" 97 LIBS="$GSSAPI_LIBS" 98 99 100 # check for gssapi headers 101 102 gss_headers_found=no 103 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h gssapi/gssapi_krb5.h,[gss_headers_found=yes],[],[]) 104 if test x"$gss_headers_found" = x"no"; then 105 AC_MSG_ERROR([GSSAPI installation not found, headers missing]) 106 fi 107 108 # check for libs 109 110 AC_CHECK_LIB(gssapi, gss_display_status) 111 AC_CHECK_LIB(gssapi_krb5, gss_display_status) 112 AC_CHECK_LIB(gss, gss_display_status) 113 114 # check for functions 115 116 AC_CHECK_FUNC(gss_acquire_cred,[],[AC_MSG_ERROR([GSSAPI: required function gss_acquire_cred missing])]) 117 118 # Heimdal/MIT compatibility fix 119 if test "$ac_cv_header_gssapi_h" = "yes"; then 120 AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE,1,[Wheter GSS_C_NT_HOSTBASED_SERVICE is in gssapi.h])) 121 else 122 AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi/gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE,1,[Wheter GSS_C_NT_HOSTBASED_SERVICE is in gssapi.h])) 123 fi 124 125 126 AC_MSG_CHECKING(whether GSSAPI support is used) 127 if test x"$ac_cv_func_gss_acquire_cred" = x"yes"; then 128 AC_DEFINE(HAVE_GSSAPI,1,[Whether to enable GSSAPI support]) 129 AC_MSG_RESULT([yes]) 130 GSSAPI_LIBS="$LDFLAGS $LIBS" 131 else 132 AC_MSG_RESULT([no]) 133 if test x"$compilegssapi" = x"yes"; then 134 AC_MSG_ERROR([GSSAPI installation not found]) 135 fi 136 GSSAPI_LIBS="" 137 fi 138 139 LIBS="$ac_save_LIBS" 140 CFLAGS="$ac_save_CFLAGS" 141 LDFLAGS="$ac_save_LDFLAGS" 142 CPPFLAGS="$ac_save_CPPFLAGS" 143 fi 144 145 if test x"$ac_cv_func_gss_acquire_cred" = x"yes"; then 146 ifelse([$1], , :, [$1]) 147 else 148 ifelse([$2], , :, [$2]) 149 fi 150 151 152 AC_SUBST(GSSAPI_LIBS) 153 AC_SUBST(GSSAPI_CFLAGS) 154 155]) 156