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