1 |
dnl afs.m4--AFS libraries, includes, and dependencies |
2 |
dnl $Id: afs.m4,v 1.25 2003/05/09 03:51:17 cg2v Exp $ |
3 |
dnl Chaskiel Grundman |
4 |
dnl based on kerberos_v4.m4 |
5 |
dnl Derrick Brashear |
6 |
dnl from KTH krb and Arla |
7 |
|
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>], |
12 |
[#ifndef SYS_NAME |
13 |
choke me |
14 |
#endif |
15 |
int foo;], |
16 |
ac_cv_found_afs_inc=yes, |
17 |
ac_cv_found_afs_inc=no) |
18 |
CPPFLAGS=$cmu_save_CPPFLAGS |
19 |
]) |
20 |
|
21 |
AC_DEFUN(CMU_AFS_LIB_WHERE1, [ |
22 |
save_LIBS="$LIBS" |
23 |
save_LDFLAGS="$LDFLAGS" |
24 |
|
25 |
LIBS="-lauth $1/afs/util.a $LIB_SOCKET $LIBS" |
26 |
LDFLAGS="-L$1 -L$1/afs $LDFLAGS" |
27 |
dnl suppress caching |
28 |
AC_TRY_LINK([],[afsconf_Open();], ac_cv_found_afs_lib=yes, ac_cv_found_afs_lib=no) |
29 |
LIBS="$save_LIBS" |
30 |
LDFLAGS="$save_LDFLAGS" |
31 |
]) |
32 |
|
33 |
AC_DEFUN(CMU_AFS_WHERE, [ |
34 |
for i in $1; do |
35 |
AC_MSG_CHECKING(for AFS in $i) |
36 |
CMU_AFS_INC_WHERE1("$i/include") |
37 |
ac_cv_found_lwp_inc=$ac_cv_found_afs_inc |
38 |
CMU_TEST_INCPATH($i/include, lwp) |
39 |
ac_cv_found_afs_inc=$ac_cv_found_lwp_inc |
40 |
if test "$ac_cv_found_afs_inc" = "yes"; then |
41 |
CMU_AFS_LIB_WHERE1("$i/lib") |
42 |
if test "$ac_cv_found_afs_lib" = "yes"; then |
43 |
ac_cv_afs_where=$i |
44 |
AC_MSG_RESULT(found) |
45 |
break |
46 |
else |
47 |
AC_MSG_RESULT(not found) |
48 |
fi |
49 |
else |
50 |
AC_MSG_RESULT(not found) |
51 |
fi |
52 |
done |
53 |
]) |
54 |
|
55 |
AC_DEFUN(CMU_AFS, [ |
56 |
AC_REQUIRE([CMU_SOCKETS]) |
57 |
AC_REQUIRE([CMU_LIBSSL]) |
58 |
AC_ARG_WITH(AFS, |
59 |
[ --with-afs=PREFIX Compile with AFS support], |
60 |
[if test "X$with_AFS" = "X"; then |
61 |
with_AFS=yes |
62 |
fi]) |
63 |
|
64 |
if test "X$with_AFS" != "X"; then |
65 |
ac_cv_afs_where=$with_AFS |
66 |
fi |
67 |
if test "X$ac_cv_afs_where" = "X"; then |
68 |
CMU_AFS_WHERE(/usr/afsws /usr/local /usr/athena) |
69 |
fi |
70 |
|
71 |
AC_MSG_CHECKING(whether to include AFS) |
72 |
if test "X$ac_cv_afs_where" = "Xno" -o "X$ac_cv_afs_where" = "X"; then |
73 |
ac_cv_found_afs=no |
74 |
AC_MSG_RESULT(no) |
75 |
else |
76 |
ac_cv_found_afs=yes |
77 |
AC_MSG_RESULT(yes) |
78 |
AFS_INC_DIR="$ac_cv_afs_where/include" |
79 |
AFS_LIB_DIR="$ac_cv_afs_where/lib" |
80 |
AFS_TOP_DIR="$ac_cv_afs_where" |
81 |
AFS_INC_FLAGS="-I${AFS_INC_DIR}" |
82 |
AFS_LIB_FLAGS="-L${AFS_LIB_DIR} -L${AFS_LIB_DIR}/afs" |
83 |
cmu_save_LIBS="$LIBS" |
84 |
cmu_save_CPPFLAGS="$CPPFLAGS" |
85 |
CPPFLAGS="$CPPFLAGS ${AFS_INC_FLAGS}" |
86 |
cmu_save_LDFLAGS="$LDFLAGS" |
87 |
LDFLAGS="$cmu_save_LDFLAGS ${AFS_LIB_FLAGS}" |
88 |
|
89 |
AC_CHECK_HEADERS(afs/stds.h) |
90 |
|
91 |
AC_MSG_CHECKING([if libdes is needed]) |
92 |
AC_TRY_LINK([],[des_quad_cksum();],AFS_DES_LIB="",AFS_DES_LIB="maybe") |
93 |
if test "X$AFS_DES_LIB" != "X"; then |
94 |
LIBS="$cmu_save_LIBS -ldes" |
95 |
AC_TRY_LINK([], [des_quad_cksum();],AFS_DES_LIB="yes") |
96 |
if test "X$AFS_DES_LIB" = "Xyes"; then |
97 |
AC_MSG_RESULT([yes]) |
98 |
AFS_LIBDES="-ldes" |
99 |
AFS_LIBDESA="${AFS_LIB_DIR}/libdes.a" |
100 |
else |
101 |
LIBS="$cmu_save_LIBS $LIBSSL_LIB_FLAGS" |
102 |
AC_TRY_LINK([], |
103 |
[des_quad_cksum();],AFS_DES_LIB="libcrypto") |
104 |
if test "X$AFS_DES_LIB" = "Xlibcrypto"; then |
105 |
AC_MSG_RESULT([libcrypto]) |
106 |
AFS_LIBDES="$LIBSSL_LIB_FLAGS" |
107 |
AFS_LIBDESA="$LIBSSL_LIB_FLAGS" |
108 |
else |
109 |
AC_MSG_RESULT([unknown]) |
110 |
AC_MSG_ERROR([Could not use -ldes]) |
111 |
fi |
112 |
fi |
113 |
else |
114 |
AC_MSG_RESULT([no]) |
115 |
fi |
116 |
|
117 |
|
118 |
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" |
119 |
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" |
120 |
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" |
121 |
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" |
122 |
AFS_KTC_LIBS="-lauth ${AFS_LIB_DIR}/afs/libsys.a -lrx -llwp ${AFS_LIBDES} -lcom_err ${AFS_LIB_DIR}/afs/util.a" |
123 |
LIBS="$cmu_save_LIBS" |
124 |
AC_CHECK_FUNC(flock) |
125 |
LIBS="$cmu_save_LIBS ${AFS_CLIENT_LIBS} ${LIB_SOCKET}" |
126 |
if test "X$ac_cv_func_flock" != "Xyes"; then |
127 |
AC_MSG_CHECKING([if AFS needs flock]) |
128 |
AC_TRY_LINK([#include <afs/param.h> |
129 |
#ifdef HAVE_AFS_STDS_H |
130 |
#include <afs/stds.h> |
131 |
#endif |
132 |
#include <ubik.h> |
133 |
#include <afs/cellconfig.h> |
134 |
#include <afs/auth.h> |
135 |
#include <afs/volser.h> |
136 |
struct ubik_client * cstruct; |
137 |
int sigvec() {return 0;} |
138 |
extern int UV_SetSecurity();], |
139 |
[vsu_ClientInit(1,"","",0, |
140 |
&cstruct,UV_SetSecurity)], |
141 |
AFS_FLOCK=no,AFS_FLOCK=yes) |
142 |
if test $AFS_FLOCK = "no"; then |
143 |
AC_MSG_RESULT([no]) |
144 |
else |
145 |
AC_MSG_RESULT([yes]) |
146 |
LDFLAGS="$LDFLAGS -L/usr/ucblib" |
147 |
AC_CHECK_LIB(ucb, flock,:, [AC_CHECK_LIB(BSD, flock)]) |
148 |
fi |
149 |
fi |
150 |
LIBS="$cmu_save_LIBS" |
151 |
AC_CHECK_FUNC(sigvec) |
152 |
LIBS="$cmu_save_LIBS ${AFS_CLIENT_LIBS} ${LIB_SOCKET}" |
153 |
if test "X$ac_cv_func_sigvec" != "Xyes"; then |
154 |
AC_MSG_CHECKING([if AFS needs sigvec]) |
155 |
AC_TRY_LINK([#include <afs/param.h> |
156 |
#ifdef HAVE_AFS_STDS_H |
157 |
#include <afs/stds.h> |
158 |
#endif |
159 |
#include <ubik.h> |
160 |
#include <afs/cellconfig.h> |
161 |
#include <afs/auth.h> |
162 |
#include <afs/volser.h> |
163 |
struct ubik_client * cstruct; |
164 |
int flock() {return 0;} |
165 |
extern int UV_SetSecurity();], |
166 |
[vsu_ClientInit(1,"","",0, |
167 |
&cstruct,UV_SetSecurity)], |
168 |
AFS_SIGVEC=no,AFS_SIGVEC=yes) |
169 |
if test $AFS_SIGVEC = "no"; then |
170 |
AC_MSG_RESULT([no]) |
171 |
else |
172 |
AC_MSG_RESULT([yes]) |
173 |
LDFLAGS="$LDFLAGS -L/usr/ucblib" |
174 |
AC_CHECK_LIB(ucb, sigvec,:,[AC_CHECK_LIB(BSD, sigvec)]) |
175 |
fi |
176 |
fi |
177 |
if test "$ac_cv_lib_ucb_flock" = "yes" -o "$ac_cv_lib_ucb_sigvec" = "yes"; then |
178 |
AFS_LIB_FLAGS="${AFS_LIB_FLAGS} -L/usr/ucblib -R/usr/ucblib" |
179 |
fi |
180 |
if test "$ac_cv_lib_ucb_flock" = "yes" -o "$ac_cv_lib_ucb_sigvec" = "yes"; then |
181 |
AFS_BSD_LIB="-lucb" |
182 |
elif test "$ac_cv_lib_BSD_flock" = "yes" -o "$ac_cv_lib_BSD_sigvec" = "yes"; then |
183 |
AFS_BSD_LIB="-lBSD" |
184 |
fi |
185 |
if test "X$AFS_BSD_LIB" != "X" ; then |
186 |
AFS_CLIENT_LIBS_STATIC="$AFS_CLIENT_LIBS_STATIC $AFS_BSD_LIB" |
187 |
AFS_KTC_LIBS_STATIC="$AFS_KTC_LIBS_STATIC $AFS_BSD_LIB" |
188 |
AFS_CLIENT_LIBS="$AFS_CLIENT_LIBS $AFS_BSD_LIB" |
189 |
AFS_RX_LIBS="$AFS_CLIENT_LIBS $AFS_BSD_LIB" |
190 |
AFS_KTC_LIBS="$AFS_KTC_LIBS $AFS_BSD_LIB" |
191 |
fi |
192 |
LIBS="$cmu_save_LIBS $AFS_CLIENT_LIBS ${LIB_SOCKET}" |
193 |
AC_CHECK_FUNC(des_pcbc_init) |
194 |
if test "X$ac_cv_func_des_pcbc_init" != "Xyes"; then |
195 |
AC_CHECK_LIB(descompat, des_pcbc_init, AFS_DESCOMPAT_LIB="-ldescompat") |
196 |
if test "X$AFS_DESCOMPAT_LIB" != "X" ; then |
197 |
AFS_CLIENT_LIBS_STATIC="$AFS_CLIENT_LIBS_STATIC $AFS_DESCOMPAT_LIB" |
198 |
AFS_KTC_LIBS_STATIC="$AFS_KTC_LIBS_STATIC $AFS_DESCOMPAT_LIB" |
199 |
AFS_CLIENT_LIBS="$AFS_CLIENT_LIBS $AFS_DESCOMPAT_LIB" |
200 |
AFS_KTC_LIBS="$AFS_KTC_LIBS $AFS_DESCOMPAT_LIB" |
201 |
else |
202 |
|
203 |
AC_MSG_CHECKING([if rxkad needs des_pcbc_init]) |
204 |
AC_TRY_LINK(,[tkt_DecodeTicket();],RXKAD_PROBLEM=no,RXKAD_PROBLEM=maybe) |
205 |
if test "$RXKAD_PROBLEM" = "maybe"; then |
206 |
AC_TRY_LINK([int des_pcbc_init() { return 0;}], |
207 |
[tkt_DecodeTicket();],RXKAD_PROBLEM=yes,RXKAD_PROBLEM=error) |
208 |
if test "$RXKAD_PROBLEM" = "yes"; then |
209 |
AC_MSG_RESULT([yes]) |
210 |
AC_MSG_ERROR([cannot use rxkad]) |
211 |
else |
212 |
AC_MSG_RESULT([unknown]) |
213 |
AC_MSG_ERROR([Unknown error testing rxkad]) |
214 |
fi |
215 |
else |
216 |
AC_MSG_RESULT([no]) |
217 |
fi |
218 |
fi |
219 |
fi |
220 |
|
221 |
AC_MSG_CHECKING([if libaudit is needed]) |
222 |
AFS_LIBAUDIT="" |
223 |
LIBS="$cmu_save_LIBS $AFS_CLIENT_LIBS ${LIB_SOCKET}" |
224 |
AC_TRY_LINK([#include <afs/param.h> |
225 |
#ifdef HAVE_AFS_STDS_H |
226 |
#include <afs/stds.h> |
227 |
#endif |
228 |
#include <afs/cellconfig.h> |
229 |
#include <afs/auth.h>], |
230 |
[afsconf_SuperUser();],AFS_AUDIT_LIB="",AFS_AUDIT_LIB="maybe") |
231 |
if test "X$AFS_AUDIT_LIB" != "X"; then |
232 |
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" |
233 |
AC_TRY_LINK([#include <afs/param.h> |
234 |
#ifdef HAVE_AFS_STDS_H |
235 |
#include <afs/stds.h> |
236 |
#endif |
237 |
#include <afs/cellconfig.h> |
238 |
#include <afs/auth.h>], |
239 |
[afsconf_SuperUser();],AFS_AUDIT_LIB="yes") |
240 |
if test "X$AFS_AUDIT_LIB" = "Xyes"; then |
241 |
AC_MSG_RESULT([yes]) |
242 |
AFS_LIBAUDIT="-laudit" |
243 |
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" |
244 |
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" |
245 |
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" |
246 |
else |
247 |
AC_MSG_RESULT([unknown]) |
248 |
AC_MSG_ERROR([Could not use -lauth while testing for -laudit]) |
249 |
fi |
250 |
else |
251 |
AC_MSG_RESULT([no]) |
252 |
fi |
253 |
|
254 |
AC_CHECK_FUNCS(VL_ProbeServer) |
255 |
AC_MSG_CHECKING([if new-style afs_ integer types are defined]) |
256 |
AC_CACHE_VAL(ac_cv_afs_int32, |
257 |
dnl The next few lines contain a quoted argument to egrep |
258 |
dnl It is critical that there be no leading or trailing whitespace |
259 |
dnl or newlines |
260 |
[AC_EGREP_CPP(dnl |
261 |
changequote(<<,>>)dnl |
262 |
<<(^|[^a-zA-Z_0-9])afs_int32[^a-zA-Z_0-9]>>dnl |
263 |
changequote([,]), [#include <afs/param.h> |
264 |
#ifdef HAVE_AFS_STDS_H |
265 |
#include <afs/stds.h> |
266 |
#endif], |
267 |
ac_cv_afs_int32=yes, ac_cv_afs_int32=no)]) |
268 |
AC_MSG_RESULT($ac_cv_afs_int32) |
269 |
if test $ac_cv_afs_int32 = yes ; then |
270 |
AC_DEFINE(HAVE_AFS_INT32,, [AFS provides new "unambiguous" type names]) |
271 |
else |
272 |
AC_DEFINE(afs_int16, int16, [it's a type definition]) |
273 |
AC_DEFINE(afs_int32, int32, [it's a type definition]) |
274 |
AC_DEFINE(afs_uint16, u_int16, [it's a type definition]) |
275 |
AC_DEFINE(afs_uint32, u_int32, [it's a type definition]) |
276 |
fi |
277 |
|
278 |
CPPFLAGS="${cmu_save_CPPFLAGS}" |
279 |
LDFLAGS="${cmu_save_LDFLAGS}" |
280 |
LIBS="${cmu_save_LIBS}" |
281 |
AC_DEFINE(AFS_ENV,, [Use AFS. (find what needs this and nuke it)]) |
282 |
AC_DEFINE(AFS,, [Use AFS. (find what needs this and nuke it)]) |
283 |
AC_SUBST(AFS_CLIENT_LIBS_STATIC) |
284 |
AC_SUBST(AFS_KTC_LIBS_STATIC) |
285 |
AC_SUBST(AFS_CLIENT_LIBS) |
286 |
AC_SUBST(AFS_RX_LIBS) |
287 |
AC_SUBST(AFS_KTC_LIBS) |
288 |
AC_SUBST(AFS_INC_FLAGS) |
289 |
AC_SUBST(AFS_LIB_FLAGS) |
290 |
AC_SUBST(AFS_TOP_DIR) |
291 |
AC_SUBST(AFS_LIBAUDIT) |
292 |
AC_SUBST(AFS_LIBDES) |
293 |
AC_SUBST(AFS_LIBDESA) |
294 |
fi |
295 |
]) |
296 |
|
297 |
AC_DEFUN(CMU_NEEDS_AFS, |
298 |
[AC_REQUIRE([CMU_AFS]) |
299 |
if test "$ac_cv_found_afs" != "yes"; then |
300 |
AC_ERROR([Cannot continue without AFS]) |
301 |
fi]) |