1 dnl kerberos_v4.m4--Kerberos 4 libraries and includes
3 dnl from KTH krb and Arla
4 dnl $Id: kerberos_v4.m4,v 1.28 2005/04/26 19:14:08 shadow Exp $
6 AC_DEFUN([CMU_KRB_SENDAUTH_PROTO], [
7 AC_MSG_CHECKING(for krb_sendauth prototype)
10 int krb_sendauth (long options, int fd, KTEXT ktext, char *service,
11 char *inst, char *realm, u_long checksum,
12 MSG_DAT *msg_data, CREDENTIALS *cred,
13 Key_schedule schedule, struct sockaddr_in *laddr,
14 struct sockaddr_in *faddr, char *version);],
15 [int foo = krb_sendauth(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); ],
16 ac_cv_krb_sendauth_proto=no,
17 ac_cv_krb_sendauth_proto=yes)
18 AC_MSG_RESULT($ac_cv_krb_sendauth_proto)
19 if test "$ac_cv_krb_sendauth_proto" = yes; then
20 AC_DEFINE(HAVE_KRB_SENDAUTH_PROTO)dnl
22 AC_MSG_RESULT($ac_cv_krb_sendauth_proto)
25 AC_DEFUN([CMU_KRB_SET_KEY_PROTO], [
26 AC_MSG_CHECKING(for krb_set_key prototype)
27 AC_CACHE_VAL(ac_cv_krb_set_key_proto, [
28 cmu_save_CPPFLAGS="$CPPFLAGS"
29 CPPFLAGS="${CPPFLAGS} ${KRB_INC_FLAGS}"
32 int krb_set_key(char *key, int cvt);],
33 [int foo = krb_set_key(0, 0);],
34 ac_cv_krb_set_key_proto=no,
35 ac_cv_krb_set_key_proto=yes)
37 CPPFLAGS="${cmu_save_CPPFLAGS}"
38 if test "$ac_cv_krb_set_key_proto" = yes; then
39 AC_DEFINE(HAVE_KRB_SET_KEY_PROTO)dnl
41 AC_MSG_RESULT($ac_cv_krb_set_key_proto)
44 AC_DEFUN([CMU_KRB4_32_DEFN], [
45 AC_MSG_CHECKING(for KRB4_32 definition)
46 AC_CACHE_VAL(ac_cv_krb4_32_defn, [
47 cmu_save_CPPFLAGS="$CPPFLAGS"
48 CPPFLAGS="${CPPFLAGS} ${KRB_INC_FLAGS}"
53 ac_cv_krb4_32_defn=yes,
54 ac_cv_krb4_32_defn=no)
56 CPPFLAGS="${cmu_save_CPPFLAGS}"
57 if test "$ac_cv_krb4_32_defn" = yes; then
58 AC_DEFINE(HAVE_KRB4_32_DEFINE)dnl
60 AC_MSG_RESULT($ac_cv_krb4_32_defn)
63 AC_DEFUN([CMU_KRB_RD_REQ_PROTO], [
64 AC_MSG_CHECKING(for krb_rd_req prototype)
65 AC_CACHE_VAL(ac_cv_krb_rd_req_proto, [
66 cmu_save_CPPFLAGS="$CPPFLAGS"
67 CPPFLAGS="${CPPFLAGS} ${KRB_INC_FLAGS}"
70 int krb_rd_req(KTEXT authent, char *service, char *instance,
71 unsigned KRB_INT32 from_addr, AUTH_DAT *ad, char *fn);],
72 [int foo = krb_rd_req(0,0,0,0,0,0);],
73 ac_cv_krb_rd_req_proto=no,
74 ac_cv_krb_rd_req_proto=yes)
76 CPPFLAGS="${cmu_save_CPPFLAGS}"
77 if test "$ac_cv_krb_rd_req_proto" = yes; then
78 AC_DEFINE(HAVE_KRB_RD_REQ_PROTO)dnl
80 AC_MSG_RESULT($ac_cv_krb_rd_req_proto)
83 AC_DEFUN([CMU_KRB_INC_WHERE1], [
84 saved_CPPFLAGS=$CPPFLAGS
85 CPPFLAGS="$saved_CPPFLAGS -I$1"
86 AC_TRY_COMPILE([#include <krb.h>],
88 ac_cv_found_krb_inc=yes,
89 ac_cv_found_krb_inc=no)
90 if test "$ac_cv_found_krb_inc" = "no"; then
91 CPPFLAGS="$saved_CPPFLAGS -I$1 -I$1/kerberosIV"
92 AC_TRY_COMPILE([#include <krb.h>],
94 [ac_cv_found_krb_inc=yes],
95 ac_cv_found_krb_inc=no)
97 CPPFLAGS=$saved_CPPFLAGS
100 AC_DEFUN([CMU_KRB_INC_WHERE], [
102 AC_MSG_CHECKING(for kerberos headers in $i)
103 CMU_KRB_INC_WHERE1($i)
104 CMU_TEST_INCPATH($i, krb)
105 if test "$ac_cv_found_krb_inc" = "yes"; then
106 ac_cv_krb_where_inc=$i
110 AC_MSG_RESULT(not found)
116 # Test for kerberos lib files
119 AC_DEFUN([CMU_KRB_LIB_WHERE1], [
121 LIBS="$saved_LIBS -L$1 -lkrb ${KRB_LIBDES}"
124 [ac_cv_found_krb_lib=yes],
125 ac_cv_found_krb_lib=no)
129 AC_DEFUN([CMU_KRB_LIB_WHERE], [
131 AC_MSG_CHECKING(for kerberos libraries in $i)
132 CMU_KRB_LIB_WHERE1($i)
133 dnl deal with false positives from implicit link paths
134 CMU_TEST_LIBPATH($i, krb)
135 if test "$ac_cv_found_krb_lib" = "yes" ; then
136 ac_cv_krb_where_lib=$i
140 AC_MSG_RESULT(not found)
145 AC_DEFUN([CMU_KRB4], [
146 AC_REQUIRE([CMU_FIND_LIB_SUBDIR])
147 AC_REQUIRE([CMU_SOCKETS])
148 AC_REQUIRE([CMU_LIBSSL])
150 [ --with-krb4=PREFIX Compile with Kerberos 4 support],
151 [if test "X$with_krb4" = "X"; then
154 AC_ARG_WITH(krb4-lib,
155 [ --with-krb4-lib=dir use kerberos 4 libraries in dir],
156 [if test "$withval" = "yes" -o "$withval" = "no"; then
157 AC_MSG_ERROR([No argument for --with-krb4-lib])
159 AC_ARG_WITH(krb4-include,
160 [ --with-krb4-include=dir use kerberos 4 headers in dir],
161 [if test "$withval" = "yes" -o "$withval" = "no"; then
162 AC_MSG_ERROR([No argument for --with-krb4-include])
165 if test "X$with_krb4" != "X"; then
166 if test "$with_krb4" != "yes" -a "$with_krb4" != "no"; then
167 ac_cv_krb_where_lib=$with_krb4/$CMU_LIB_SUBDIR
168 ac_cv_krb_where_inc=$with_krb4/include
172 if test "$with_krb4" != "no"; then
173 if test "X$with_krb4_lib" != "X"; then
174 ac_cv_krb_where_lib=$with_krb4_lib
176 if test "X$with_krb4_include" != "X"; then
177 ac_cv_krb_where_inc=$with_krb4_include
179 if test "X$ac_cv_krb_where_inc" = "X"; then
180 CMU_KRB_INC_WHERE(/usr/athena/include /usr/include/kerberosIV /usr/local/include /usr/include/kerberos)
183 AC_MSG_CHECKING([if libdes is needed])
184 AC_TRY_LINK([],[des_quad_cksum();],KRB_DES_LIB="",KRB_DES_LIB="maybe")
185 if test "X$KRB_DES_LIB" != "X"; then
186 LIBS="$cmu_save_LIBS -ldes"
187 AC_TRY_LINK([], [des_quad_cksum();],KRB_DES_LIB="yes")
188 if test "X$KRB_DES_LIB" = "Xyes"; then
191 KRB_LIBDESA='$(KRB_LIB_DIR)/libdes.a'
193 LIBS="$cmu_save_LIBS $LIBSSL_LIB_FLAGS"
195 [des_quad_cksum();],KRB_DES_LIB="libcrypto")
196 if test "X$KRB_DES_LIB" = "Xlibcrypto"; then
197 AC_MSG_RESULT([libcrypto])
198 KRB_LIBDES="$LIBSSL_LIB_FLAGS"
199 KRB_LIBDESA="$LIBSSL_LIB_FLAGS"
201 LIBS="$cmu_save_LIBS -L$LIBSSL_LIB_DIR -ldescompat $LIBSSL_LIB_FLAGS"
203 [des_quad_cksum();],KRB_DES_LIB="libcrypto+descompat")
204 if test "X$KRB_DES_LIB" = "Xlibcrypto+descompat"; then
205 AC_MSG_RESULT([libcrypto+descompat])
206 KRB_LIBDES="-L$LIBSSL_LIB_DIR -ldescompat $LIBSSL_LIB_FLAGS"
207 KRB_LIBDESA="-L$LIBSSL_LIB_DIR -ldescompat $LIBSSL_LIB_FLAGS"
209 AC_MSG_RESULT([unknown])
210 AC_MSG_ERROR([Could not use -ldes])
217 if test "X$ac_cv_krb_where_lib" = "X"; then
218 CMU_KRB_LIB_WHERE(/usr/athena/$CMU_LIB_SUBDIR /usr/local/$CMU_LIB_SUBDIR /usr/$CMU_LIB_SUBDIR)
221 LIBS="${cmu_save_LIBS}"
224 AC_MSG_CHECKING([whether to include kerberos 4])
225 if test "X$ac_cv_krb_where_lib" = "X" -o "X$ac_cv_krb_where_inc" = "X"; then
231 KRB_INC_DIR=$ac_cv_krb_where_inc
232 KRB_LIB_DIR=$ac_cv_krb_where_lib
233 KRB_INC_FLAGS="-I${KRB_INC_DIR}"
234 KRB_LIB_FLAGS="-L${KRB_LIB_DIR} -lkrb ${KRB_LIBDES}"
235 LIBS="${cmu_save_LIBS} ${KRB_LIB_FLAGS}"
236 AC_CHECK_LIB(resolv, dns_lookup, KRB_LIB_FLAGS="${KRB_LIB_FLAGS} -lresolv",,"${KRB_LIB_FLAGS}")
237 AC_CHECK_LIB(crypt, crypt, KRB_LIB_FLAGS="${KRB_LIB_FLAGS} -lcrypt",,"${KRB_LIB_FLAGS}")
238 LIBS="${LIBS} ${KRB_LIB_FLAGS}"
239 AC_CHECK_FUNCS(krb_get_int krb_life_to_time)
240 AC_SUBST(KRB_INC_FLAGS)
241 AC_SUBST(KRB_LIB_FLAGS)
242 LIBS="${cmu_save_LIBS}"
243 AC_DEFINE(HAVE_KRB4,,[Kerberos V4 is present])dnl zephyr uses this
244 AC_DEFINE(KERBEROS,,[Use kerberos 4. find out what needs this symbol])
245 if test "X$RPATH" = "X"; then
250 if test "X$RPATH" = "X"; then
251 RPATH="-Wl,-rpath,${KRB_LIB_DIR}"
253 RPATH="${RPATH}:${KRB_LIB_DIR}"
257 if test "X$RPATH" = "X"; then
258 RPATH="-Wl,+b${KRB_LIB_DIR}"
260 RPATH="${RPATH}:${KRB_LIB_DIR}"
264 if test "X$RPATH" = "X"; then
265 RPATH="-Wl,-rpath,${KRB_LIB_DIR}"
267 RPATH="${RPATH}:${KRB_LIB_DIR}"
271 if test "$ac_cv_prog_gcc" = yes; then
272 if test "X$RPATH" = "X"; then
273 RPATH="-Wl,-R${KRB_LIB_DIR}"
275 RPATH="${RPATH}:${KRB_LIB_DIR}"
278 RPATH="${RPATH} -R${KRB_LIB_DIR}"