]> arthur.barton.de Git - netatalk.git/blobdiff - macros/gssapi-check.m4
Writing metadata xattr on directories with sticky bit set, FR#94
[netatalk.git] / macros / gssapi-check.m4
index d462468b2de23f947a9c48ae72eaca65a43c325d..dee7892dd4d3a09d56fb6af2fa0442781aea245b 100644 (file)
-dnl $Id: gssapi-check.m4,v 1.1 2003-09-03 18:27:14 samnoble Exp $
-dnl Autoconf macro to check for kerberos/gssapi support
-dnl based on samba3 configure.in
-dnl modified for netatalk use by bfernhomberg
+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[=DIR]     compile Kerberos V UAM],
-                [compilegssapi=$withval],
-                [compilegssapi=no]
-        )
-
-       if test x"$compilegssapi" != x"no"; then
-
-                if test "x$compilegssapi" != "xyes"; then
-                       GSSAPI_CFLAGS="-I$withval/include"
-                       GSSAPI_CPPFLAGS="-I$withval/include"
-                       GSSAPI_LDFLAGS="-L$withval/lib"
-                       FOUND_GSSAPI=yes
-                       AC_MSG_CHECKING([checking for GSSAPI support in])
-                       AC_MSG_RESULT([$compilegssapi])
+    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" = 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.
-
-               ac_save_CFLAGS=$CFLAGS
-               ac_save_CPPFLAGS=$CPPFLAGS
-               ac_save_LDFLAGS=$LDFLAGS
-               ac_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
-                       ac_save_CFLAGS=$CFLAGS
-                       CFLAGS="";export CFLAGS
-                       ac_save_LDFLAGS=$LDFLAGS
-                       LDFLAGS="";export LDFLAGS
-                       GSSAPI_LIBS="`$KRB5_CONFIG --libs gssapi`"
-                       GSSAPI_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
-                       GSSAPI_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
-                       CFLAGS=$ac_save_CFLAGS;export CFLAGS
-                       LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
-                       FOUND_GSSAPI=yes
-                       AC_MSG_RESULT(yes)
-                 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="$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) 
-
-               # 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_lib_gssapi_gss_display_status" = x"yes" || test x"$ac_cv_lib_gssapi_krb5_gss_display_status" = x"yes"; then
-                       AC_DEFINE(HAVE_GSSAPI,1,[Whether to enable GSSAPI support])
-                       AC_MSG_RESULT([yes])
-                       GSSAPI_LIBS="$LIBS $LDLAGS"
-               else
-                       AC_MSG_RESULT([no])
-                       AC_MSG_ERROR([GSSAPI installation not found])
-                       GSSAPI_LIBS=""
-               fi
-
-               LIBS="$ac_save_LIBS"
-               CFLAGS="$ac_save_CFLAGS"
-               LDFLAGS="$ac_save_LDFLAGS"
-               CPPFLAGS="$ac_save_CPPFLAGS"
-       fi
-
-       AM_CONDITIONAL(USE_GSSAPI, test x"$ac_cv_lib_gssapi_gss_display_status" = x"yes")
-       AC_SUBST(GSSAPI_LIBS)
-       AC_SUBST(GSSAPI_CFLAGS)
-
+            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_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_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)
+
+    export LIBS="$save_LIBS"
+    export CFLAGS="$save_CFLAGS"
+    export LDFLAGS="$save_LDFLAGS"
 ])