1 /* This program is free software; you can redistribute it and/or modify
2 it under the terms of the GNU General Public License as published by
3 the Free Software Foundation; either version 2, or (at your option)
6 This program is distributed in the hope that it will be useful,
7 but WITHOUT ANY WARRANTY; without even the implied warranty of
8 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 GNU General Public License for more details. */
11 AC_DEFUN(ACX_WITH_GSSAPI,[
13 # Use --with-gssapi[=DIR] to enable GSSAPI support.
15 # defaults to enabled with DIR in default list below
17 # Search for /SUNHEA/ and read the comments about this default below.
20 [ --with-gssapi=value GSSAPI directory],
21 [acx_gssapi_withgssapi=$withval], [acx_gssapi_withgssapi=yes])dnl
24 dnl FIXME - cache withval and obliterate later cache values when options change
27 # Try to locate a GSSAPI installation if no location was specified, assuming
28 # GSSAPI was enabled (the default).
30 if test -n "$acx_gssapi_cv_gssapi"; then
31 # Granted, this is a slightly ugly way to print this info, but the
32 # AC_CHECK_HEADER used in the search for a GSSAPI installation makes using
33 # AC_CACHE_CHECK worse
34 AC_MSG_CHECKING([for GSSAPI])
36 AC_CACHE_VAL([acx_gssapi_cv_gssapi], [
37 if test x$acx_gssapi_withgssapi = xyes; then
38 # --with but no location specified
39 # assume a gssapi.h or gssapi/gssapi.h locates our install.
41 # This isn't always strictly true. For instance Solaris 7's SUNHEA (header)
42 # package installs gssapi.h whether or not the necessary libraries are
43 # installed. I'm still not sure whether to consider this a bug. The long
44 # way around is to not consider GSSPAI installed unless gss_import_name is
45 # found, but that brings up a lot of other hassles, like continuing to let
46 # gcc & ld generate the error messages when the user uses --with-gssapi=dir
47 # as a debugging aid. The short way around is to disable GSSAPI by default,
48 # but I think Sun users have been faced with this for awhile and I haven't
49 # heard many complaints.
50 acx_gssapi_save_CPPFLAGS=$CPPFLAGS
51 for acx_gssapi_cv_gssapi in yes /usr/kerberos /usr/cygnus/kerbnet no; do
52 if test x$acx_gssapi_cv_gssapi = xno; then
55 if test x$acx_gssapi_cv_gssapi = xyes; then
56 AC_CHECKING([for GSSAPI])
58 CPPFLAGS="$acx_gssapi_save_CPPFLAGS -I$acx_gssapi_cv_gssapi/include"
59 AC_CHECKING([for GSSAPI in $acx_gssapi_cv_gssapi])
61 unset ac_cv_header_gssapi_h
62 unset ac_cv_header_gssapi_gssapi_h
63 AC_CHECK_HEADERS([gssapi.h gssapi/gssapi.h])
64 if test "$ac_cv_header_gssapi_h" = "yes" ||
65 test "$ac_cv_header_gssapi_gssapi_h" = "yes"; then
69 CPPFLAGS=$acx_gssapi_save_CPPFLAGS
71 acx_gssapi_cv_gssapi=$acx_gssapi_withgssapi
73 AC_MSG_CHECKING([for GSSAPI])
75 AC_MSG_RESULT([$acx_gssapi_cv_gssapi])
78 # Set up GSSAPI includes for later use. We don't bother to check for
79 # $acx_gssapi_cv_gssapi=no here since that will be caught later.
81 if test x$acx_gssapi_cv_gssapi = yes; then
82 # no special includes necessary
85 # GSSAPI at $acx_gssapi_cv_gssapi (could be 'no')
86 GSSAPI_INCLUDES=" -I$acx_gssapi_cv_gssapi/include"
90 # Get the rest of the information CVS needs to compile with GSSAPI support
92 if test x$acx_gssapi_cv_gssapi != xno; then
93 # define HAVE_GSSAPI and set up the includes
94 AC_DEFINE([HAVE_GSSAPI],, [Define if you have GSSAPI with Kerberos version 5 available.])
95 includeopt=$includeopt$GSSAPI_INCLUDES
97 # locate any other headers
98 acx_gssapi_save_CPPFLAGS=$CPPFLAGS
99 CPPFLAGS=$CPPFLAGS$GSSAPI_INCLUDES
100 dnl We don't use HAVE_KRB5_H anywhere, but including it here might make it
101 dnl easier to spot errors by reading configure output
102 AC_CHECK_HEADERS([gssapi.h gssapi/gssapi.h gssapi/gssapi_generic.h krb5.h])
103 # And look through them for GSS_C_NT_HOSTBASED_SERVICE or its alternatives
104 AC_CACHE_CHECK([for GSS_C_NT_HOSTBASED_SERVICE], [acx_gssapi_cv_gss_c_nt_hostbased_service],
105 [acx_gssapi_cv_gss_c_nt_hostbased_service=no
106 if test "$ac_cv_header_gssapi_h" = "yes"; then
107 AC_EGREP_HEADER([GSS_C_NT_HOSTBASED_SERVICE], [gssapi.h],
108 [acx_gssapi_cv_gss_c_nt_hostbased_service=yes],
109 AC_EGREP_HEADER([gss_nt_service_name], [gssapi.h],
110 [acx_gssapi_cv_gss_c_nt_hostbased_service=gss_nt_service_name]))
112 if test $acx_gssapi_cv_gss_c_nt_hostbased_service = no &&
113 test "$ac_cv_header_gssapi_gssapi_h" = "yes"; then
114 AC_EGREP_HEADER([GSS_C_NT_HOSTBASED_SERVICE], [gssapi/gssapi.h],
115 [acx_gssapi_cv_gss_c_nt_hostbased_service],
116 AC_EGREP_HEADER([gss_nt_service_name], [gssapi/gssapi.h],
117 [acx_gssapi_cv_gss_c_nt_hostbased_service=gss_nt_service_name]))
119 if test $acx_gssapi_cv_gss_c_nt_hostbased_service = no &&
120 test "$ac_cv_header_gssapi_gssapi_generic_h" = "yes"; then
121 AC_EGREP_HEADER([GSS_C_NT_HOSTBASED_SERVICE], [gssapi/gssapi_generic.h],
122 [acx_gssapi_cv_gss_c_nt_hostbased_service],
123 AC_EGREP_HEADER([gss_nt_service_name], [gssapi/gssapi_generic.h],
124 [acx_gssapi_cv_gss_c_nt_hostbased_service=gss_nt_service_name]))
126 if test $acx_gssapi_cv_gss_c_nt_hostbased_service != yes &&
127 test $acx_gssapi_cv_gss_c_nt_hostbased_service != no; then
128 # don't define for yes since that means it already means something and
129 # don't define for no since we'd rather the compiler catch the error
130 AC_DEFINE_UNQUOTED([GSS_C_NT_HOSTBASED_SERVICE], [$acx_gssapi_cv_gss_c_nt_hostbased_service],
131 [Define to an alternative value if GSS_C_NT_HOSTBASED_SERVICE isn't defined
132 in the gssapi.h header file. MIT Kerberos 1.2.1 requires this. Only relevant
135 CPPFLAGS=$acx_gssapi_save_CPPFLAGS
137 # Expect the libs to be installed parallel to the headers
139 # We could try once with and once without, but I'm not sure it's worth the
141 if test x$acx_gssapi_cv_gssapi != xyes; then
142 if test -z "$LIBS"; then
143 LIBS="-L$acx_gssapi_cv_gssapi/lib"
145 LIBS="-L$acx_gssapi_cv_gssapi/lib $LIBS"
149 dnl What happens if we want to enable, say, krb5 and some other GSSAPI
150 dnl authentication method at the same time?
152 # Some of the order below is particular due to library dependencies
156 # des Heimdal K 0.3d, but Heimdal seems to be set up such
157 # that it could have been installed from elsewhere.
159 AC_SEARCH_LIBS([des_set_odd_parity], [des])
162 # com_err Heimdal K 0.3d
164 # com_err MIT K5 v1.2.2-beta1
166 AC_SEARCH_LIBS([com_err], [com_err])
169 # asn1 Heimdal K 0.3d -lcom_err
171 AC_SEARCH_LIBS([initialize_asn1_error_table_r], [asn1])
174 # resolv required, but not installed by Heimdal K 0.3d
176 # resolv MIT K5 1.2.2-beta1
179 AC_SEARCH_LIBS([__dn_expand], [resolv])
182 # roken Heimdal K 0.3d -lresolv
184 AC_SEARCH_LIBS([roken_gethostbyaddr], [roken])
187 # k5crypto MIT K5 v1.2.2-beta1
189 AC_SEARCH_LIBS([valid_enctype], [k5crypto])
192 # gen ? ? ? Needed on Irix 5.3 with some
193 # Irix 5.3 version of Kerberos. I'm not
194 # sure which since Irix didn't
195 # get any testing this time
196 # around. Original comment:
198 # This is necessary on Irix 5.3, in order to link against libkrb5 --
199 # there, an_to_ln.o refers to things defined only in -lgen.
201 AC_SEARCH_LIBS([compile], [gen])
204 # krb5 ? ? ? -lgen -l???
209 # krb5 MIT K5 v1.2.2-beta1 -lcrypto -lcom_err
212 # krb5 MIT K5 v1.2.2-beta1 -lcrypto -lcom_err -lresolv
214 # krb5 Heimdal K 0.3d -lasn1 -lroken -ldes
216 AC_SEARCH_LIBS([krb5_free_context], [krb5])
219 # gssapi_krb5 Only lib needed with MIT K5 v1.2.1, so find it first in
220 # order to prefer MIT Kerberos. If both MIT & Heimdal
221 # Kerberos are installed and in the path, this will leave
222 # some of the libraries above in LIBS unnecessarily, but
223 # noone would ever do that, right?
225 # gssapi_krb5 MIT K5 v1.2.2-beta1 -lkrb5
227 # gssapi Heimdal K 0.3d -lkrb5
229 AC_SEARCH_LIBS([gss_import_name], [gssapi_krb5 gssapi])