]> arthur.barton.de Git - netatalk.git/blob - macros/gssapi-check.m4
Not all krb5-config support gssapi libs output
[netatalk.git] / macros / gssapi-check.m4
1 dnl $Id: gssapi-check.m4,v 1.3 2005-04-28 20:50:05 bfernhomberg 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_WITH(gssapi,
11                 [  --with-gssapi[[=PATH]]    path to GSSAPI for Kerberos V UAM [[auto]]],
12                 [compilegssapi=$withval],
13                 [compilegssapi=auto]
14         )
15
16         if test x"$compilegssapi" != x"no"; then
17
18                 if test "x$compilegssapi" != "xyes" -a "x$compilegssapi" != "xauto"; then
19                         GSSAPI_CFLAGS="-I$withval/include"
20                         GSSAPI_CPPFLAGS="-I$withval/include"
21                         GSSAPI_LDFLAGS="-L$withval/${atalk_libname}"
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                 save_CFLAGS=$CFLAGS
32                 save_CPPFLAGS=$CPPFLAGS
33                 save_LDFLAGS=$LDFLAGS
34                 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             TEMP="`$KRB5_CONFIG --libs gssapi`"
43         if test $? -eq 0 ; then
44                 save_CFLAGS=$CFLAGS
45                 CFLAGS="";export CFLAGS
46                 save_LDFLAGS=$LDFLAGS
47                 LDFLAGS="";export LDFLAGS
48                 GSSAPI_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
49                 GSSAPI_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
50             GSSAPI_LIBS="$TEMP"
51                 CFLAGS=$save_CFLAGS;export CFLAGS
52                 LDFLAGS=$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           else
59             AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
60           fi
61         fi
62
63         if test x$FOUND_GSSAPI = x"no"; then
64         #################################################
65         # see if this box has the SuSE location for the heimdal krb implementation
66           AC_MSG_CHECKING(for /usr/include/heimdal)
67           if test -d /usr/include/heimdal; then
68             if test -f /usr/lib/heimdal/lib/libkrb5.a; then
69                 GSSAPI_CFLAGS="-I/usr/include/heimdal"
70                 GSSAPI_CPPFLAGS="-I/usr/include/heimdal"
71                 GSSAPI_LDFLAGS="-L/usr/lib/heimdal/lib"
72                 AC_MSG_RESULT(yes)
73                 FOUND_GSSAPI=yes
74             else
75                 GSSAPI_CFLAGS="-I/usr/include/heimdal"
76                 GSSAPI_CPPFLAGS="-I/usr/include/heimdal"
77                 AC_MSG_RESULT(yes)
78                 FOUND_GSSAPI=yes
79             fi
80           else
81             AC_MSG_RESULT(no)
82           fi
83         fi
84
85         if test x$FOUND_GSSAPI = x"no"; then
86         #################################################
87         # see if this box has the RedHat location for kerberos
88           AC_MSG_CHECKING(for /usr/kerberos)
89           if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
90                 GSSAPI_LDFLAGS="-L/usr/kerberos/lib"
91                 GSSAPI_CFLAGS="-I/usr/kerberos/include"
92                 GSSAPI_CPPFLAGS="-I/usr/kerberos/include"
93                 AC_MSG_RESULT(yes)
94           else
95                 AC_MSG_RESULT(no)
96           fi
97         fi
98
99         CFLAGS="$CFLAGS $GSSAPI_CFLAGS"
100         CPPFLAGS="$CPPFLAGS $GSSAPI_CPPFLAGS"
101         LDFLAGS="$LDFLAGS $GSSAPI_LDFLAGS"
102         LIBS="$LIBS $GSSAPI_LIBS"
103
104
105         # check for gssapi headers
106
107         gss_headers_found=no
108         AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h gssapi/gssapi_krb5.h,[gss_headers_found=yes],[],[])
109         if test x"$gss_headers_found" = x"no"; then
110                 AC_MSG_ERROR([GSSAPI installation not found, headers missing])
111         fi
112
113         # check for libs
114
115         AC_CHECK_LIB(gssapi, gss_display_status) 
116         AC_CHECK_LIB(gssapi_krb5, gss_display_status) 
117         AC_CHECK_LIB(gss, gss_display_status) 
118
119         # check for functions
120
121         AC_CHECK_FUNC(gss_acquire_cred,[],[AC_MSG_ERROR([GSSAPI: required function gss_acquire_cred missing])])
122
123         # Heimdal/MIT compatibility fix
124         if test "$ac_cv_header_gssapi_h" = "yes"; then
125             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]))
126         else
127             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]))
128         fi
129
130
131         AC_MSG_CHECKING(whether GSSAPI support is used)
132         if test x"$ac_cv_func_gss_acquire_cred" = x"yes"; then
133                 AC_DEFINE(HAVE_GSSAPI,1,[Whether to enable GSSAPI support])
134                 AC_MSG_RESULT([yes])
135                 GSSAPI_LIBS="$LDFLAGS $LIBS"
136         else
137                 AC_MSG_RESULT([no])
138                 if test x"$compilegssapi" = x"yes"; then
139                         AC_MSG_ERROR([GSSAPI installation not found])
140                 fi
141                 GSSAPI_LIBS=""
142         fi
143
144         LIBS="$save_LIBS"
145         CFLAGS="$save_CFLAGS"
146         LDFLAGS="$save_LDFLAGS"
147         CPPFLAGS="$save_CPPFLAGS"
148         fi
149
150         if test x"$ac_cv_func_gss_acquire_cred" = x"yes"; then
151                 ifelse([$1], , :, [$1])
152         else
153                 ifelse([$2], , :, [$2])
154         fi
155
156
157         AC_SUBST(GSSAPI_LIBS)
158         AC_SUBST(GSSAPI_CFLAGS)
159         AC_SUBST(GSSAPI_LDFLAGS)
160
161 ])