1 dnl afs.m4--AFS libraries, includes, and dependencies
2 dnl $Id: afs.m4,v 1.29 2005/04/26 19:14:07 shadow Exp $
4 dnl based on kerberos_v4.m4
6 dnl from KTH krb and Arla
8 AC_DEFUN([CMU_AFS_INC_WHERE1], [
9 cmu_save_CPPFLAGS=$CPPFLAGS
10 CPPFLAGS="$cmu_save_CPPFLAGS -I$1"
11 AC_TRY_COMPILE([#include <afs/param.h>],
16 ac_cv_found_afs_inc=yes,
17 ac_cv_found_afs_inc=no)
18 CPPFLAGS=$cmu_save_CPPFLAGS
21 AC_DEFUN([CMU_AFS_LIB_WHERE1], [
23 save_LDFLAGS="$LDFLAGS"
25 LIBS="-lauth $1/afs/util.a $LIB_SOCKET $LIBS"
26 LDFLAGS="-L$1 -L$1/afs $LDFLAGS"
28 AC_TRY_LINK([],[afsconf_Open();], ac_cv_found_afs_lib=yes, ac_cv_found_afs_lib=no)
30 LDFLAGS="$save_LDFLAGS"
33 AC_DEFUN([CMU_AFS_WHERE], [
34 AC_REQUIRE([CMU_FIND_LIB_SUBDIR])
36 AC_MSG_CHECKING(for AFS in $i)
37 CMU_AFS_INC_WHERE1("$i/include")
38 ac_cv_found_lwp_inc=$ac_cv_found_afs_inc
39 CMU_TEST_INCPATH($i/include, lwp)
40 ac_cv_found_afs_inc=$ac_cv_found_lwp_inc
41 if test "$ac_cv_found_afs_inc" = "yes"; then
42 CMU_AFS_LIB_WHERE1("$i/$CMU_LIB_SUBDIR")
43 if test "$ac_cv_found_afs_lib" = "yes"; then
48 AC_MSG_RESULT(not found)
51 AC_MSG_RESULT(not found)
57 AC_REQUIRE([CMU_FIND_LIB_SUBDIR])
58 AC_REQUIRE([CMU_SOCKETS])
59 AC_REQUIRE([CMU_LIBSSL])
61 [ --with-afs=PREFIX Compile with AFS support],
62 [if test "X$with_AFS" = "X"; then
66 if test "X$with_AFS" != "X"; then
67 ac_cv_afs_where=$with_AFS
69 if test "X$ac_cv_afs_where" = "X"; then
70 CMU_AFS_WHERE(/usr/afsws /usr/local /usr/athena /Library/OpenAFS/Tools)
73 AC_MSG_CHECKING(whether to include AFS)
74 if test "X$ac_cv_afs_where" = "Xno" -o "X$ac_cv_afs_where" = "X"; then
80 AFS_INC_DIR="$ac_cv_afs_where/include"
81 AFS_LIB_DIR="$ac_cv_afs_where/$CMU_LIB_SUBDIR"
82 AFS_TOP_DIR="$ac_cv_afs_where"
83 AFS_INC_FLAGS="-I${AFS_INC_DIR}"
84 AFS_LIB_FLAGS="-L${AFS_LIB_DIR} -L${AFS_LIB_DIR}/afs"
86 cmu_save_CPPFLAGS="$CPPFLAGS"
87 CPPFLAGS="$CPPFLAGS ${AFS_INC_FLAGS}"
88 cmu_save_LDFLAGS="$LDFLAGS"
89 LDFLAGS="$cmu_save_LDFLAGS ${AFS_LIB_FLAGS}"
91 AC_CHECK_HEADERS(afs/stds.h)
93 AC_MSG_CHECKING([if libdes is needed])
94 AC_TRY_LINK([],[des_quad_cksum();],AFS_DES_LIB="",AFS_DES_LIB="maybe")
95 if test "X$AFS_DES_LIB" != "X"; then
96 LIBS="$cmu_save_LIBS -ldes"
97 AC_TRY_LINK([], [des_quad_cksum();],AFS_DES_LIB="yes")
98 if test "X$AFS_DES_LIB" = "Xyes"; then
101 AFS_LIBDESA="${AFS_LIB_DIR}/libdes.a"
103 LIBS="$cmu_save_LIBS $LIBSSL_LIB_FLAGS"
105 [des_quad_cksum();],AFS_DES_LIB="libcrypto")
106 if test "X$AFS_DES_LIB" = "Xlibcrypto"; then
107 AC_MSG_RESULT([libcrypto])
108 AFS_LIBDES="$LIBSSL_LIB_FLAGS"
109 AFS_LIBDESA="$LIBSSL_LIB_FLAGS"
111 LIBS="$cmu_save_LIBS -L$LIBSSL_LIB_DIR -ldescompat $LIBSSL_LIB_FLAGS"
113 [des_quad_cksum();],AFS_DES_LIB="libcrypto+descompat")
114 if test "X$AFS_DES_LIB" = "Xlibcrypto+descompat"; then
115 AC_MSG_RESULT([libcrypto+descompat])
116 AFS_LIBDES="-L$LIBSSL_LIB_DIR -ldescompat $LIBSSL_LIB_FLAGS"
117 AFS_LIBDESA="-L$LIBSSL_LIB_DIR -ldescompat $LIBSSL_LIB_FLAGS"
119 AC_MSG_RESULT([unknown])
120 AC_MSG_ERROR([Could not use -ldes])
129 AFS_CLIENT_LIBS_STATIC="${AFS_LIB_DIR}/afs/libvolser.a ${AFS_LIB_DIR}/afs/libvldb.a ${AFS_LIB_DIR}/afs/libkauth.a ${AFS_LIB_DIR}/afs/libprot.a ${AFS_LIB_DIR}/libubik.a ${AFS_LIB_DIR}/afs/libauth.a ${AFS_LIB_DIR}/librxkad.a ${AFS_LIB_DIR}/librx.a ${AFS_LIB_DIR}/afs/libsys.a ${AFS_LIB_DIR}/librx.a ${AFS_LIB_DIR}/liblwp.a ${AFS_LIBDESA} ${AFS_LIB_DIR}/afs/libcmd.a ${AFS_LIB_DIR}/afs/libcom_err.a ${AFS_LIB_DIR}/afs/util.a"
130 AFS_KTC_LIBS_STATIC="${AFS_LIB_DIR}/afs/libauth.a ${AFS_LIB_DIR}/afs/libsys.a ${AFS_LIB_DIR}/librx.a ${AFS_LIB_DIR}/liblwp.a ${AFS_LIBDESA} ${AFS_LIB_DIR}/afs/libcom_err.a ${AFS_LIB_DIR}/afs/util.a"
131 AFS_CLIENT_LIBS="-lvolser -lvldb -lkauth -lprot -lubik -lauth -lrxkad -lrx ${AFS_LIB_DIR}/afs/libsys.a -lrx -llwp ${AFS_LIBDES} -lcmd -lcom_err ${AFS_LIB_DIR}/afs/util.a"
132 AFS_RX_LIBS="-lauth -lrxkad -lrx ${AFS_LIB_DIR}/afs/libsys.a -lrx -llwp ${AFS_LIBDES} -lcmd -lcom_err ${AFS_LIB_DIR}/afs/util.a"
133 AFS_KTC_LIBS="-lauth ${AFS_LIB_DIR}/afs/libsys.a -lrx -llwp ${AFS_LIBDES} -lcom_err ${AFS_LIB_DIR}/afs/util.a"
135 LIBS="$cmu_save_LIBS $AFS_CLIENT_LIBS ${LIB_SOCKET}"
136 AC_CHECK_FUNC(des_pcbc_init)
137 if test "X$ac_cv_func_des_pcbc_init" != "Xyes"; then
138 AC_CHECK_LIB(descompat, des_pcbc_init, AFS_DESCOMPAT_LIB="-ldescompat")
139 if test "X$AFS_DESCOMPAT_LIB" != "X" ; then
140 AFS_CLIENT_LIBS_STATIC="$AFS_CLIENT_LIBS_STATIC $AFS_DESCOMPAT_LIB"
141 AFS_KTC_LIBS_STATIC="$AFS_KTC_LIBS_STATIC $AFS_DESCOMPAT_LIB"
142 AFS_CLIENT_LIBS="$AFS_CLIENT_LIBS $AFS_DESCOMPAT_LIB"
143 AFS_KTC_LIBS="$AFS_KTC_LIBS $AFS_DESCOMPAT_LIB"
146 AC_MSG_CHECKING([if rxkad needs des_pcbc_init])
147 AC_TRY_LINK(,[tkt_DecodeTicket();],RXKAD_PROBLEM=no,RXKAD_PROBLEM=maybe)
148 if test "$RXKAD_PROBLEM" = "maybe"; then
149 AC_TRY_LINK([int des_pcbc_init() { return 0;}],
150 [tkt_DecodeTicket();],RXKAD_PROBLEM=yes,RXKAD_PROBLEM=error)
151 if test "$RXKAD_PROBLEM" = "yes"; then
153 AC_MSG_ERROR([cannot use rxkad])
155 AC_MSG_RESULT([unknown])
156 AC_MSG_ERROR([Unknown error testing rxkad])
164 LIBS="$cmu_save_LIBS"
166 LIBS="$cmu_save_LIBS ${AFS_CLIENT_LIBS} ${LIB_SOCKET}"
167 if test "X$ac_cv_func_flock" != "Xyes"; then
168 AC_MSG_CHECKING([if AFS needs flock])
169 AC_TRY_LINK([#include <afs/param.h>
170 #ifdef HAVE_AFS_STDS_H
171 #include <afs/stds.h>
174 #include <afs/cellconfig.h>
175 #include <afs/auth.h>
176 #include <afs/volser.h>
177 struct ubik_client * cstruct;
178 int sigvec() {return 0;}
179 extern int UV_SetSecurity();],
180 [vsu_ClientInit(1,"","",0,
181 &cstruct,UV_SetSecurity)],
182 AFS_FLOCK=no,AFS_FLOCK=yes)
183 if test $AFS_FLOCK = "no"; then
187 LDFLAGS="$LDFLAGS -L/usr/ucblib"
188 AC_CHECK_LIB(ucb, flock,:, [AC_CHECK_LIB(BSD, flock)])
191 LIBS="$cmu_save_LIBS"
192 AC_CHECK_FUNC(sigvec)
193 LIBS="$cmu_save_LIBS ${AFS_CLIENT_LIBS} ${LIB_SOCKET}"
194 if test "X$ac_cv_func_sigvec" != "Xyes"; then
195 AC_MSG_CHECKING([if AFS needs sigvec])
196 AC_TRY_LINK([#include <afs/param.h>
197 #ifdef HAVE_AFS_STDS_H
198 #include <afs/stds.h>
201 #include <afs/cellconfig.h>
202 #include <afs/auth.h>
203 #include <afs/volser.h>
204 struct ubik_client * cstruct;
205 int flock() {return 0;}
206 extern int UV_SetSecurity();],
207 [vsu_ClientInit(1,"","",0,
208 &cstruct,UV_SetSecurity)],
209 AFS_SIGVEC=no,AFS_SIGVEC=yes)
210 if test $AFS_SIGVEC = "no"; then
214 LDFLAGS="$LDFLAGS -L/usr/ucblib"
215 AC_CHECK_LIB(ucb, sigvec,:,[AC_CHECK_LIB(BSD, sigvec)])
218 if test "$ac_cv_lib_ucb_flock" = "yes" -o "$ac_cv_lib_ucb_sigvec" = "yes"; then
219 AFS_LIB_FLAGS="${AFS_LIB_FLAGS} -L/usr/ucblib -R/usr/ucblib"
221 if test "$ac_cv_lib_ucb_flock" = "yes" -o "$ac_cv_lib_ucb_sigvec" = "yes"; then
223 elif test "$ac_cv_lib_BSD_flock" = "yes" -o "$ac_cv_lib_BSD_sigvec" = "yes"; then
226 if test "X$AFS_BSD_LIB" != "X" ; then
227 AFS_CLIENT_LIBS_STATIC="$AFS_CLIENT_LIBS_STATIC $AFS_BSD_LIB"
228 AFS_KTC_LIBS_STATIC="$AFS_KTC_LIBS_STATIC $AFS_BSD_LIB"
229 AFS_CLIENT_LIBS="$AFS_CLIENT_LIBS $AFS_BSD_LIB"
230 AFS_RX_LIBS="$AFS_CLIENT_LIBS $AFS_BSD_LIB"
231 AFS_KTC_LIBS="$AFS_KTC_LIBS $AFS_BSD_LIB"
234 AC_MSG_CHECKING([if libaudit is needed])
236 LIBS="$cmu_save_LIBS $AFS_CLIENT_LIBS ${LIB_SOCKET}"
237 AC_TRY_LINK([#include <afs/param.h>
238 #ifdef HAVE_AFS_STDS_H
239 #include <afs/stds.h>
241 #include <afs/cellconfig.h>
242 #include <afs/auth.h>],
243 [afsconf_SuperUser();],AFS_AUDIT_LIB="",AFS_AUDIT_LIB="maybe")
244 if test "X$AFS_AUDIT_LIB" != "X"; then
245 LIBS="$cmu_save_LIBS -lvolser -lvldb -lkauth -lprot -lubik -lauth -laudit -lrxkad -lrx ${AFS_LIB_DIR}/afs/libsys.a -lrx -llwp ${AFS_LIBDES} -lcmd -lcom_err ${AFS_LIB_DIR}/afs/util.a $AFS_BSD_LIB $AFS_DESCOMPAT_LIB $LIB_SOCKET"
246 AC_TRY_LINK([#include <afs/param.h>
247 #ifdef HAVE_AFS_STDS_H
248 #include <afs/stds.h>
250 #include <afs/cellconfig.h>
251 #include <afs/auth.h>],
252 [afsconf_SuperUser();],AFS_AUDIT_LIB="yes")
253 if test "X$AFS_AUDIT_LIB" = "Xyes"; then
255 AFS_LIBAUDIT="-laudit"
256 AFS_CLIENT_LIBS_STATIC="${AFS_LIB_DIR}/afs/libvolser.a ${AFS_LIB_DIR}/afs/libvldb.a ${AFS_LIB_DIR}/afs/libkauth.a ${AFS_LIB_DIR}/afs/libprot.a ${AFS_LIB_DIR}/libubik.a ${AFS_LIB_DIR}/afs/libauth.a ${AFS_LIB_DIR}/afs/libaudit.a ${AFS_LIB_DIR}/librxkad.a ${AFS_LIB_DIR}/librx.a ${AFS_LIB_DIR}/afs/libsys.a ${AFS_LIB_DIR}/librx.a ${AFS_LIB_DIR}/liblwp.a ${AFS_LIBDESA} ${AFS_LIB_DIR}/afs/libcmd.a ${AFS_LIB_DIR}/afs/libcom_err.a ${AFS_LIB_DIR}/afs/util.a"
257 AFS_CLIENT_LIBS="-lvolser -lvldb -lkauth -lprot -lubik -lauth -laudit -lrxkad -lrx ${AFS_LIB_DIR}/afs/libsys.a -lrx -llwp ${AFS_LIBDES} -lcmd -lcom_err ${AFS_LIB_DIR}/afs/util.a $AFS_BSD_LIB $AFS_DESCOMPAT_LIB"
258 AFS_RX_LIBS="-lauth -laudit -lrxkad -lrx ${AFS_LIB_DIR}/afs/libsys.a -lrx -llwp ${AFS_LIBDES} -lcmd -lcom_err ${AFS_LIB_DIR}/afs/util.a $AFS_BSD_LIB $AFS_DESCOMPAT_LIB"
260 AC_MSG_RESULT([unknown])
261 AC_MSG_ERROR([Could not use -lauth while testing for -laudit])
267 AC_CHECK_FUNCS(VL_ProbeServer)
268 AC_MSG_CHECKING([if new-style afs_ integer types are defined])
269 AC_CACHE_VAL(ac_cv_afs_int32,
270 dnl The next few lines contain a quoted argument to egrep
271 dnl It is critical that there be no leading or trailing whitespace
274 changequote(<<,>>)dnl
275 <<(^|[^a-zA-Z_0-9])afs_int32[^a-zA-Z_0-9]>>dnl
276 changequote([,]), [#include <afs/param.h>
277 #ifdef HAVE_AFS_STDS_H
278 #include <afs/stds.h>
280 ac_cv_afs_int32=yes, ac_cv_afs_int32=no)])
281 AC_MSG_RESULT($ac_cv_afs_int32)
282 if test $ac_cv_afs_int32 = yes ; then
283 AC_DEFINE(HAVE_AFS_INT32,, [AFS provides new "unambiguous" type names])
285 AC_DEFINE(afs_int16, int16, [it's a type definition])
286 AC_DEFINE(afs_int32, int32, [it's a type definition])
287 AC_DEFINE(afs_uint16, u_int16, [it's a type definition])
288 AC_DEFINE(afs_uint32, u_int32, [it's a type definition])
291 CPPFLAGS="${cmu_save_CPPFLAGS}"
292 LDFLAGS="${cmu_save_LDFLAGS}"
293 LIBS="${cmu_save_LIBS}"
294 AC_DEFINE(AFS_ENV,, [Use AFS. (find what needs this and nuke it)])
295 AC_DEFINE(AFS,, [Use AFS. (find what needs this and nuke it)])
296 AC_SUBST(AFS_CLIENT_LIBS_STATIC)
297 AC_SUBST(AFS_KTC_LIBS_STATIC)
298 AC_SUBST(AFS_CLIENT_LIBS)
299 AC_SUBST(AFS_RX_LIBS)
300 AC_SUBST(AFS_KTC_LIBS)
301 AC_SUBST(AFS_INC_FLAGS)
302 AC_SUBST(AFS_LIB_FLAGS)
303 AC_SUBST(AFS_TOP_DIR)
304 AC_SUBST(AFS_LIBAUDIT)
306 AC_SUBST(AFS_LIBDESA)
310 AC_DEFUN([CMU_NEEDS_AFS],
311 [AC_REQUIRE([CMU_AFS])
312 if test "$ac_cv_found_afs" != "yes"; then
313 AC_ERROR([Cannot continue without AFS])