]> 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 f604c9d6e690f4b99866bffd204bd2209da7550b..dee7892dd4d3a09d56fb6af2fa0442781aea245b 100644 (file)
-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
+            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
 
-
-         # 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
-           save_CFLAGS=$CFLAGS
-           CFLAGS="";export CFLAGS
-           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=$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
-
-       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"
 ])