]> arthur.barton.de Git - netatalk.git/blob - macros/gssapi-check.m4
Dont clobber env FLAGS
[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             save_CFLAGS=$CFLAGS
43             CFLAGS="";export CFLAGS
44             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=$save_CFLAGS;export CFLAGS
50             LDFLAGS=$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         AC_CHECK_LIB(gss, gss_display_status) 
113
114         # check for functions
115
116         AC_CHECK_FUNC(gss_acquire_cred,[],[AC_MSG_ERROR([GSSAPI: required function gss_acquire_cred missing])])
117
118         # Heimdal/MIT compatibility fix
119         if test "$ac_cv_header_gssapi_h" = "yes"; then
120             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]))
121         else
122             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]))
123         fi
124
125
126         AC_MSG_CHECKING(whether GSSAPI support is used)
127         if test x"$ac_cv_func_gss_acquire_cred" = x"yes"; then
128                 AC_DEFINE(HAVE_GSSAPI,1,[Whether to enable GSSAPI support])
129                 AC_MSG_RESULT([yes])
130                 GSSAPI_LIBS="$LDFLAGS $LIBS"
131         else
132                 AC_MSG_RESULT([no])
133                 if test x"$compilegssapi" = x"yes"; then
134                         AC_MSG_ERROR([GSSAPI installation not found])
135                 fi
136                 GSSAPI_LIBS=""
137         fi
138
139         LIBS="$save_LIBS"
140         CFLAGS="$save_CFLAGS"
141         LDFLAGS="$save_LDFLAGS"
142         CPPFLAGS="$save_CPPFLAGS"
143         fi
144
145         if test x"$ac_cv_func_gss_acquire_cred" = x"yes"; then
146                 ifelse([$1], , :, [$1])
147         else
148                 ifelse([$2], , :, [$2])
149         fi
150
151
152         AC_SUBST(GSSAPI_LIBS)
153         AC_SUBST(GSSAPI_CFLAGS)
154         AC_SUBST(GSSAPI_LDFLAGS)
155
156 ])