]> arthur.barton.de Git - netatalk.git/blob - macros/gssapi-check.m4
Merge branch 'release-3-0-alpha2'
[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         if test "x$compilegssapi" != "xyes" -a "x$compilegssapi" != "xauto"; then
18             GSSAPI_CFLAGS="-I$withval/include"
19             GSSAPI_CPPFLAGS="-I$withval/include"
20             GSSAPI_LDFLAGS="-L$withval/${atalk_libname}"
21             FOUND_GSSAPI=yes
22                         AC_MSG_CHECKING([checking for GSSAPI support in])
23                         AC_MSG_RESULT([$compilegssapi])
24         fi
25
26
27           # Do no harm to the values of CFLAGS and LIBS while testing for
28           # Kerberos support.
29
30                 save_CFLAGS=$CFLAGS
31                 save_CPPFLAGS=$CPPFLAGS
32                 save_LDFLAGS=$LDFLAGS
33                 save_LIBS=$LIBS
34
35         if test x$FOUND_GSSAPI = x"no"; then
36           #################################################
37           # check for krb5-config from recent MIT and Heimdal kerberos 5
38           AC_PATH_PROG(KRB5_CONFIG, krb5-config)
39           AC_MSG_CHECKING(for working krb5-config)
40           if test -x "$KRB5_CONFIG"; then
41         CFLAGS=""; export CFLAGS
42             LDFLAGS=""; export LDFLAGS
43             TEMP="`$KRB5_CONFIG --libs gssapi`"
44         if test $? -eq 0 ; then
45                 GSSAPI_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
46                 GSSAPI_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
47             GSSAPI_LIBS="$TEMP"
48                 FOUND_GSSAPI=yes
49                 AC_MSG_RESULT(yes)
50         else
51                 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
52         fi
53             CFLAGS=$save_CFLAGS; export CFLAGS
54             LDFLAGS=$save_LDFLAGS; export LDFLAGS
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="$GSSAPI_CFLAGS"
97         CPPFLAGS="$GSSAPI_CPPFLAGS"
98         LDFLAGS="$GSSAPI_LDFLAGS"
99         LIBS="$GSSAPI_LIBS"
100
101         # check for gssapi headers
102
103         gss_headers_found=no
104         AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h gssapi/gssapi_krb5.h,[gss_headers_found=yes],[],[])
105         if test x"$gss_headers_found" = x"no"; then
106                 AC_MSG_ERROR([GSSAPI installation not found, headers missing])
107         fi
108
109         # check for libs
110
111         AC_CHECK_LIB(gssapi, gss_display_status) 
112         AC_CHECK_LIB(gssapi_krb5, gss_display_status) 
113         AC_CHECK_LIB(gss, 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_func_gss_acquire_cred" = x"yes"; then
129                 AC_DEFINE(HAVE_GSSAPI,1,[Whether to enable GSSAPI support])
130                 AC_MSG_RESULT([yes])
131 #               GSSAPI_LIBS="$LDFLAGS $LIBS"
132         else
133                 AC_MSG_RESULT([no])
134                 if test x"$compilegssapi" = x"yes"; then
135                         AC_MSG_ERROR([GSSAPI installation not found])
136                 fi
137                 GSSAPI_LIBS=""
138         fi
139
140         LIBS="$save_LIBS"
141         CFLAGS="$save_CFLAGS"
142         LDFLAGS="$save_LDFLAGS"
143         CPPFLAGS="$save_CPPFLAGS"
144         fi
145
146         if test x"$ac_cv_func_gss_acquire_cred" = x"yes"; then
147                 ifelse([$1], , :, [$1])
148         else
149                 ifelse([$2], , :, [$2])
150         fi
151
152
153         AC_SUBST(GSSAPI_LIBS)
154         AC_SUBST(GSSAPI_CFLAGS)
155         AC_SUBST(GSSAPI_LDFLAGS)
156
157 ])