1 |
jmc |
1.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]) |