]> arthur.barton.de Git - netatalk.git/blob - macros/gssapi-check.m4
big merge for db frontend and unicode.
[netatalk.git] / macros / gssapi-check.m4
1 dnl $Id: gssapi-check.m4,v 1.1.2.1 2003-09-09 16:42:22 didg Exp $
2 dnl Autoconf macro to check for kerberos
3
4 AC_DEFUN([NETATALK_GSSAPI_CHECK], 
5 [
6         FOUND_GSSAPI=no
7         GSSAPI_LIBS=""
8         GSSAPI_CFLAGS=""
9
10         AC_ARG_ENABLE(gssapi,
11                 [  --enable-gssapi[=DIR]     compile Kerberos V UAM],
12                 [compilegssapi=$enableval],
13                 [compilegssapi=no]
14         )
15
16         if test x"$compilegssapi" != x"no"; then
17
18                 if test "x$compilegssapi" != "xyes"; then
19                         GSSAPI_CFLAGS="-I$withval/include"
20                         GSSAPI_CPPFLAGS="-I$withval/include"
21                         GSSAPI_LDFLAGS="-L$withval/lib"
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
113                 # check for functions
114
115                 AC_CHECK_FUNC(gss_acquire_cred,[],[AC_MSG_ERROR([GSSAPI: required function gss_acquire_cred missing])])
116
117                 # Heimdal/MIT compatibility fix
118   if test "$ac_cv_header_gssapi_h" = "yes"; then
119     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]))
120   else
121     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]))
122   fi
123
124
125     AC_MSG_CHECKING(whether GSSAPI support is used)
126                 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
127                         AC_DEFINE(HAVE_GSSAPI,1,[Whether to enable GSSAPI support])
128                         AC_MSG_RESULT([yes])
129                         GSSAPI_LIBS="$LIBS $LDLAGS"
130   else
131                         AC_MSG_RESULT([no])
132                         AC_MSG_ERROR([GSSAPI installation not found])
133     GSSAPI_LIBS=""
134   fi
135
136   LIBS="$ac_save_LIBS"
137   CFLAGS="$ac_save_CFLAGS"
138   LDFLAGS="$ac_save_LDFLAGS"
139   CPPFLAGS="$ac_save_CPPFLAGS"
140         fi
141
142         AM_CONDITIONAL(USE_GSSAPI, test x"$ac_cv_lib_gssapi_gss_display_status" = x"yes")
143   AC_SUBST(GSSAPI_LIBS)
144   AC_SUBST(GSSAPI_CFLAGS)
145
146 ])