]> arthur.barton.de Git - netatalk.git/blob - macros/gssapi-check.m4
- merge branch-netatalk-afp-3x-dev, HEAD was tagged before
[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                 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_func_gss_acquire_cred" = x"yes"; then
127                 AC_DEFINE(HAVE_GSSAPI,1,[Whether to enable GSSAPI support])
128                 AC_MSG_RESULT([yes])
129                 GSSAPI_LIBS="$LDFLAGS $LIBS"
130         else
131                 AC_MSG_RESULT([no])
132                 if test x"$compilegssapi" = x"yes"; then
133                         AC_MSG_ERROR([GSSAPI installation not found])
134                 fi
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         if test x"$ac_cv_func_gss_acquire_cred" = x"yes"; then
145                 ifelse([$1], , :, [$1])
146         else
147                 ifelse([$2], , :, [$2])
148         fi
149
150
151         AC_SUBST(GSSAPI_LIBS)
152         AC_SUBST(GSSAPI_CFLAGS)
153
154 ])