X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=blobdiff_plain;f=macros%2Fgssapi-check.m4;h=dee7892dd4d3a09d56fb6af2fa0442781aea245b;hp=9f738be994b844e7da3279bf1be45bea1ab2ab45;hb=3a84db87064922ad10ac10cc1d6833380e575995;hpb=4cf280eea4586d4da02aa8b1b7a225bc1f902d18 diff --git a/macros/gssapi-check.m4 b/macros/gssapi-check.m4 index 9f738be9..dee7892d 100644 --- a/macros/gssapi-check.m4 +++ b/macros/gssapi-check.m4 @@ -1,161 +1,101 @@ -dnl $Id: gssapi-check.m4,v 1.3 2005-04-28 20:50:05 bfernhomberg Exp $ dnl Autoconf macro to check for kerberos AC_DEFUN([NETATALK_GSSAPI_CHECK], [ - FOUND_GSSAPI=no - GSSAPI_LIBS="" - GSSAPI_CFLAGS="" - - AC_ARG_WITH(gssapi, - [ --with-gssapi[[=PATH]] path to GSSAPI for Kerberos V UAM [[auto]]], - [compilegssapi=$withval], - [compilegssapi=auto] - ) - - if test x"$compilegssapi" != x"no"; then + FOUND_GSSAPI=no + GSSAPI_LIBS="" + GSSAPI_CFLAGS="" + GSSAPI_LDFLAGS="" + save_CFLAGS="$CFLAGS" + save_LDFLAGS="$LDFLAGS" + save_LIBS="$LIBS" + + AC_ARG_WITH(gssapi, + [ --with-gssapi[[=PATH]] path to GSSAPI for Kerberos V UAM [[auto]]], + [compilegssapi=$withval], + [compilegssapi=auto] + ) + + if test x"$compilegssapi" != x"no" ; then + if test "x$compilegssapi" != "xyes" -a "x$compilegssapi" != "xauto" ; then + export CFLAGS="-I$withval/include" + export LDFLAGS="-L$withval/${atalk_libname}" + AC_MSG_NOTICE([checking for GSSAPI support in $compilegssapi]) + fi - if test "x$compilegssapi" != "xyes" -a "x$compilegssapi" != "xauto"; then - GSSAPI_CFLAGS="-I$withval/include" - GSSAPI_CPPFLAGS="-I$withval/include" - GSSAPI_LDFLAGS="-L$withval/${atalk_libname}" - FOUND_GSSAPI=yes - AC_MSG_CHECKING([checking for GSSAPI support in]) - AC_MSG_RESULT([$compilegssapi]) + if test x"$compilegssapi" = x"yes" -o x"$compilegssapi" = x"auto" ; then + # check for krb5-config from recent MIT and Heimdal kerberos 5 + AC_PATH_PROG(KRB5_CONFIG, krb5-config) + AC_MSG_CHECKING([for working krb5-config that takes --libs gssapi]) + + if test -x "$KRB5_CONFIG" ; then + TEMP="`$KRB5_CONFIG --libs gssapi`" + if test $? -eq 0 ; then + GSSAPI_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" + GSSAPI_LIBS="$TEMP" + FOUND_GSSAPI=yes + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy) fi - - - # Do no harm to the values of CFLAGS and LIBS while testing for - # Kerberos support. - - save_CFLAGS=$CFLAGS - save_CPPFLAGS=$CPPFLAGS - save_LDFLAGS=$LDFLAGS - save_LIBS=$LIBS - - if test x$FOUND_GSSAPI = x"no"; then - ################################################# - # check for krb5-config from recent MIT and Heimdal kerberos 5 - AC_PATH_PROG(KRB5_CONFIG, krb5-config) - AC_MSG_CHECKING(for working krb5-config) - if test -x "$KRB5_CONFIG"; then - TEMP="`$KRB5_CONFIG --libs gssapi`" - if test $? -eq 0 ; then - save_CFLAGS=$CFLAGS - CFLAGS="";export CFLAGS - save_LDFLAGS=$LDFLAGS - LDFLAGS="";export LDFLAGS - GSSAPI_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" - GSSAPI_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" - GSSAPI_LIBS="$TEMP" - CFLAGS=$save_CFLAGS;export CFLAGS - LDFLAGS=$save_LDFLAGS;export LDFLAGS - FOUND_GSSAPI=yes - AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy) + fi + fi + fi + + if test x"$compilegssapi" != x"no" -a x"$FOUND_GSSAPI" = x"no" ; then + # check for gssapi headers + gss_headers_found=no + AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h gssapi/gssapi_krb5.h, + [gss_headers_found=yes]) + if test x"$gss_headers_found" = x"no" ; then + AC_MSG_ERROR([GSSAPI installation not found, headers missing]) + fi + # check for libs + AC_SEARCH_LIBS(gss_display_status, [gss gssapi gssapi_krb5]) + if test x"$ac_cv_search_gss_display_status" = x"no" ; then + AC_MSG_ERROR([GSSAPI installation not found, library missing]) + fi + GSSAPI_CFLAGS="$CFLAGS" + GSSAPI_LIBS="$LIBS" + FOUND_GSSAPI=yes + fi + + if test x"$FOUND_GSSAPI" = x"yes" ; then + # check for functions + export CFLAGS="$GSSAPI_CFLAGS" + export LIBS="$GSSAPI_LIBS" + AC_CHECK_FUNC(gss_acquire_cred, [], [AC_MSG_ERROR([GSSAPI: required function gss_acquire_cred missing])]) + + # Heimdal/MIT compatibility fix + if test "$ac_cv_header_gssapi_h" = "yes" ; then + 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]) + ) else - AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy) + 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]) + ) fi - else - AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy) - fi - fi - - if test x$FOUND_GSSAPI = x"no"; then - ################################################# - # see if this box has the SuSE location for the heimdal krb implementation - AC_MSG_CHECKING(for /usr/include/heimdal) - if test -d /usr/include/heimdal; then - if test -f /usr/lib/heimdal/lib/libkrb5.a; then - GSSAPI_CFLAGS="-I/usr/include/heimdal" - GSSAPI_CPPFLAGS="-I/usr/include/heimdal" - GSSAPI_LDFLAGS="-L/usr/lib/heimdal/lib" - AC_MSG_RESULT(yes) - FOUND_GSSAPI=yes - else - GSSAPI_CFLAGS="-I/usr/include/heimdal" - GSSAPI_CPPFLAGS="-I/usr/include/heimdal" - AC_MSG_RESULT(yes) - FOUND_GSSAPI=yes - fi - else - AC_MSG_RESULT(no) - fi - fi - - if test x$FOUND_GSSAPI = x"no"; then - ################################################# - # see if this box has the RedHat location for kerberos - AC_MSG_CHECKING(for /usr/kerberos) - if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then - GSSAPI_LDFLAGS="-L/usr/kerberos/lib" - GSSAPI_CFLAGS="-I/usr/kerberos/include" - GSSAPI_CPPFLAGS="-I/usr/kerberos/include" - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi - fi - - CFLAGS="$CFLAGS $GSSAPI_CFLAGS" - CPPFLAGS="$CPPFLAGS $GSSAPI_CPPFLAGS" - LDFLAGS="$LDFLAGS $GSSAPI_LDFLAGS" - LIBS="$LIBS $GSSAPI_LIBS" - - # check for gssapi headers - - gss_headers_found=no - AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h gssapi/gssapi_krb5.h,[gss_headers_found=yes],[],[]) - if test x"$gss_headers_found" = x"no"; then - AC_MSG_ERROR([GSSAPI installation not found, headers missing]) - fi - - # check for libs - - AC_CHECK_LIB(gssapi, gss_display_status) - AC_CHECK_LIB(gssapi_krb5, gss_display_status) - AC_CHECK_LIB(gss, gss_display_status) - - # check for functions - - AC_CHECK_FUNC(gss_acquire_cred,[],[AC_MSG_ERROR([GSSAPI: required function gss_acquire_cred missing])]) - - # Heimdal/MIT compatibility fix - if test "$ac_cv_header_gssapi_h" = "yes"; then - 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])) - else - 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])) - fi - - - AC_MSG_CHECKING(whether GSSAPI support is used) - if test x"$ac_cv_func_gss_acquire_cred" = x"yes"; then - AC_DEFINE(HAVE_GSSAPI,1,[Whether to enable GSSAPI support]) - AC_MSG_RESULT([yes]) - GSSAPI_LIBS="$LDFLAGS $LIBS" - else - AC_MSG_RESULT([no]) - if test x"$compilegssapi" = x"yes"; then - AC_MSG_ERROR([GSSAPI installation not found]) - fi - GSSAPI_LIBS="" - fi - - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" - LDFLAGS="$save_LDFLAGS" - CPPFLAGS="$save_CPPFLAGS" - fi - - if test x"$ac_cv_func_gss_acquire_cred" = x"yes"; then + AC_DEFINE(HAVE_GSSAPI, 1, [Whether to enable GSSAPI support]) + if test x"$ac_cv_func_gss_acquire_cred" = x"yes" ; then ifelse([$1], , :, [$1]) else ifelse([$2], , :, [$2]) fi + fi + AC_SUBST(GSSAPI_LIBS) + AC_SUBST(GSSAPI_CFLAGS) + AC_SUBST(GSSAPI_LDFLAGS) - AC_SUBST(GSSAPI_LIBS) - AC_SUBST(GSSAPI_CFLAGS) - AC_SUBST(GSSAPI_LDFLAGS) - + export LIBS="$save_LIBS" + export CFLAGS="$save_CFLAGS" + export LDFLAGS="$save_LDFLAGS" ])