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