]>
Commit | Line | Data |
---|---|---|
ea0caf4a | 1 | AC_INIT(patchlevel.h) |
2 | ||
3 | dnl On Athena at least, many of the packages (krb, zephyr, hesiod, etc) | |
4 | dnl will all be in /usr/athena... this hack lets us not end up with 10 | |
5 | dnl copies of -I/usr/athena/include -L/usr/athena/lib in our command lines | |
6 | AC_DEFUN(MR_EXTEND, [ | |
7 | case $$1 in | |
8 | *$2*) ;; | |
9 | *) $1=$2\ $$1 ;; | |
10 | esac | |
11 | ]) | |
12 | ||
13 | dnl Define for both C and Pro*C | |
14 | AC_DEFUN(MR_DEFINE, [ | |
15 | AC_DEFINE($1) | |
16 | MR_EXTEND(PRO_C_DEFS, DEFINE=$1) | |
17 | ]) | |
18 | ||
19 | dnl Add to include path for both C and Pro*C | |
20 | AC_DEFUN(MR_INCLUDE, [ | |
21 | MR_EXTEND(CPPFLAGS, -I$1) | |
22 | MR_EXTEND(PRO_C_INCLUDES, INCLUDE=$1) | |
23 | ]) | |
24 | ||
25 | dnl Add to lib path | |
26 | AC_DEFUN(MR_LIBS, [MR_EXTEND(LIBPATH, -L$1)]) | |
27 | ||
28 | AC_PROG_CC | |
29 | AC_PROG_INSTALL | |
30 | AC_PROG_RANLIB | |
31 | AC_PROG_MAKE_SET | |
32 | ||
33 | if test "$athena" = true; then | |
34 | enable_athena=yes | |
1944209a | 35 | prefix=/afs/.athena.mit.edu/system/moira |
ea0caf4a | 36 | bindir=$prefix/arch/$ATHENA_SYS/bin |
37 | sbindir=$bindir | |
618b3834 | 38 | MR_INCLUDE(/usr/athena/include) |
39 | MR_INCLUDE(/usr/athena/include/kerberosIV) | |
40 | MR_LIBS(/usr/athena/lib) | |
ea0caf4a | 41 | fi |
42 | ||
43 | # We currently just don't support changing this | |
44 | mrbindir=/moira/bin | |
45 | AC_SUBST(mrbindir) | |
46 | ||
47 | # Athena-local policy decisions | |
48 | AC_MSG_CHECKING(for Athena) | |
49 | AC_ARG_ENABLE(athena, | |
50 | [ --enable-athena Enable Athena-specific policy decisions], | |
51 | , [if test "$athena" = true; then | |
52 | enableval=yes | |
53 | else | |
54 | enableval=no | |
55 | fi]) | |
56 | AC_MSG_RESULT($enableval) | |
57 | if test "$enableval" = yes; then | |
58 | MR_DEFINE(ATHENA) | |
59 | fi | |
60 | ||
61 | # Networking libraries | |
62 | AC_CHECKING(network libraries...) | |
63 | AC_CHECK_FUNC(gethostbyname, :, | |
64 | AC_CHECK_LIB(nsl, gethostbyname, , | |
65 | AC_CHECK_LIB(resolv, gethostbyname))) | |
66 | AC_CHECK_FUNC(socket, :, | |
67 | AC_CHECK_LIB(socket, socket, , | |
68 | AC_CHECK_LIB(socket, socket, | |
69 | LIBS="-lsocket -lnsl $LIBS", :, | |
70 | -lnsl))) | |
71 | ||
7f7f279f | 72 | # com_err (required, but can be built) |
73 | AC_MSG_CHECKING(for com_err) | |
74 | AC_ARG_WITH(com_err, | |
75 | [ --with-com_err=PREFIX Specify location of com_err], | |
76 | [AC_MSG_RESULT($withval) | |
77 | if test $withval = "no"; then | |
78 | AC_MSG_ERROR(com_err is required for Moira) | |
79 | fi | |
80 | if test $withval != "yes"; then | |
81 | MR_INCLUDE($withval/include) | |
82 | MR_LIBS($withval/lib) | |
83 | fi | |
84 | COMPILE_ET=compile_et], | |
85 | [AC_MSG_RESULT(util/et) | |
86 | COM_ERR_SUBDIR=util/et; | |
87 | MR_INCLUDE(`pwd`/util/et) | |
88 | MR_LIBS(`pwd`/util/et) | |
89 | COMPILE_ET=`pwd`/util/et/compile_et | |
90 | AC_CONFIG_SUBDIRS($COM_ERR_SUBDIR)]) | |
91 | AC_SUBST(COM_ERR_SUBDIR) | |
92 | AC_SUBST(COMPILE_ET) | |
93 | ||
94 | # Kerberos (Kerberos 4 required, Kerberos 5 optional for reg_svr) | |
ea0caf4a | 95 | AC_MSG_CHECKING(for Kerberos 4) |
96 | AC_ARG_WITH(krb4, | |
97 | [ --with-krb4=PREFIX Specify location of krb4], | |
98 | [krb4="$withval"], [krb4=no]) | |
99 | AC_MSG_RESULT($krb4) | |
100 | if test $krb4 = "no"; then | |
101 | AC_MSG_ERROR(Kerberos is required for Moira) | |
102 | fi | |
103 | if test "$krb4" != yes; then | |
104 | MR_INCLUDE($krb4/include) | |
105 | if test -d "$krb4/include/kerberosIV"; then | |
106 | MR_INCLUDE($krb4/include/kerberosIV) | |
107 | fi | |
108 | MR_LIBS($krb4/lib) | |
109 | elif test -d /usr/include/kerberosIV; then | |
110 | MR_INCLUDE(/usr/include/kerberosIV) | |
111 | fi | |
a96aec98 | 112 | AC_CHECK_LIB(crypto, main, crypto="crypto", |
113 | [AC_CHECK_LIB(k5crypto, main, crypto="k5crypto")]) | |
ea0caf4a | 114 | AC_CHECK_LIB(krb4, krb_rd_req, |
a96aec98 | 115 | [KRB4_LIBS="-lkrb4 -ldes425 -lkrb5 -l${crypto}"], |
ea0caf4a | 116 | [AC_CHECK_LIB(krb, krb_rd_req, |
117 | [KRB4_LIBS="-lkrb -ldes"], | |
118 | [AC_MSG_ERROR(Kerberos 4 libraries not found)], | |
119 | $LIBPATH -ldes)], | |
a96aec98 | 120 | $LIBPATH -ldes425 -lkrb5 -l${crypto} -lcom_err) |
ea0caf4a | 121 | |
7f7f279f | 122 | AC_MSG_CHECKING(for Kerberos 5) |
123 | AC_ARG_WITH(krb5, | |
124 | [ --with-krb5=PREFIX Specify location of krb5 (for reg_svr)], | |
125 | [krb5="$withval"], [krb5=no]) | |
126 | AC_MSG_RESULT($krb5) | |
127 | if test "$krb5" != no; then | |
128 | REG_SVR_DEFS=-DKRB5 | |
129 | if test "$krb5" != yes; then | |
130 | REG_SVR_INCLUDES=-I$krb5/include | |
131 | REG_SVR_LIBS=-L$krb5/lib | |
132 | fi | |
a96aec98 | 133 | REG_SVR_LIBS="$REG_SVR_LIBS -lkadm5clnt -lgssapi_krb5 -lgssrpc -ldyn -lkrb4 -ldes425 -lkrb5 -l${crypto}" |
7f7f279f | 134 | else |
135 | REG_SVR_DEFS=-DKRB4 | |
136 | REG_SVR_LIBS=-lkadm | |
137 | fi | |
138 | AC_SUBST(REG_SVR_DEFS) | |
139 | AC_SUBST(REG_SVR_INCLUDES) | |
140 | AC_SUBST(REG_SVR_LIBS) | |
33567bea | 141 | |
ea0caf4a | 142 | # Hesiod support |
143 | AC_MSG_CHECKING(for Hesiod) | |
144 | AC_ARG_WITH(hesiod, | |
145 | [ --with-hesiod=PREFIX Specify location of Hesiod], | |
146 | [hesiod="$withval"], [hesiod=no]) | |
147 | AC_MSG_RESULT($hesiod) | |
148 | if test "$hesiod" != no; then | |
149 | if test "$hesiod" != yes; then | |
150 | MR_INCLUDE($hesiod/include) | |
151 | MR_LIBS($hesiod/lib) | |
152 | fi | |
153 | AC_CHECK_FUNC(res_send, :, | |
154 | AC_CHECK_LIB(resolv, res_send)) | |
155 | AC_CHECK_LIB(hesiod, hes_resolve, :, | |
156 | [AC_MSG_ERROR(Hesiod library not found)], | |
157 | $LIBPATH $LIBS) | |
158 | MR_DEFINE(HAVE_HESIOD) | |
159 | fi | |
160 | ||
161 | # Zephyr support | |
162 | AC_MSG_CHECKING(for Zephyr) | |
163 | AC_ARG_WITH(zephyr, | |
164 | [ --with-zephyr=PREFIX Specify location of Zephyr], | |
165 | [zephyr="$withval"], [zephyr=no]) | |
166 | AC_MSG_RESULT($zephyr) | |
167 | if test "$zephyr" != no; then | |
168 | if test "$zephyr" != yes; then | |
169 | MR_INCLUDE($zephyr/include) | |
170 | MR_LIBS($zephyr/lib) | |
171 | fi | |
172 | AC_CHECK_LIB(zephyr, ZInitialize, :, | |
173 | [AC_MSG_ERROR(Zephyr library not found)], | |
174 | $LIBPATH $KRB4_LIBS -lcom_err) | |
175 | MR_DEFINE(HAVE_ZEPHYR) | |
176 | fi | |
177 | ||
33567bea | 178 | # RSAREF support (default: build util/rsaref if present) |
179 | AC_MSG_CHECKING(for RSAREF) | |
180 | AC_ARG_WITH(rsaref, | |
181 | [ --with-rsaref=PREFIX Specify location of RSAREF], | |
182 | [rsaref="$withval" | |
183 | RSAREF_CPPFLAGS="-I$rsaref/include" | |
184 | RSAREF_LIBS="$rsaref/lib/rsaref.a"], | |
185 | RSAREF_SUBDIRS=reg_svr | |
186 | [if test -d $srcdir/util/rsaref; then | |
187 | rsaref=$srcdir/util/rsaref | |
188 | RSAREF_SUBDIRS="util/rsaref reg_svr" | |
189 | RSAREF_OUTPUT_FILES="util/rsaref/Makefile" | |
190 | # autoconf can't deal with creating util/rsaref if util doesn't exist | |
191 | if test ! -d util; then | |
192 | mkdir util | |
193 | fi | |
46fa38eb | 194 | RSAREF_CPPFLAGS='-I$(SRCTOP)/util/rsaref' |
33567bea | 195 | RSAREF_LIBS='$(BUILDTOP)/util/rsaref/rsaref.a' |
3fb6166b | 196 | RSAREF_LIBDEP='$(BUILDTOP)/util/rsaref/rsaref.a' |
33567bea | 197 | else |
198 | rsaref=no | |
199 | fi]) | |
200 | AC_MSG_RESULT($rsaref) | |
201 | if test "$rsaref" != no; then | |
202 | MR_DEFINE(HAVE_RSAREF) | |
203 | fi | |
204 | AC_SUBST(RSAREF_CPPFLAGS) | |
205 | AC_SUBST(RSAREF_LIBS) | |
206 | AC_SUBST(RSAREF_SUBDIRS) | |
3fb6166b | 207 | AC_SUBST(RSAREF_LIBDEP) |
33567bea | 208 | |
ea0caf4a | 209 | # Oracle (default: yes, if $ORACLE_HOME is set) |
210 | AC_MSG_CHECKING(for Oracle) | |
211 | AC_ARG_WITH(oracle, | |
212 | [ --with-oracle=PREFIX Specify location of Oracle (for server)], | |
213 | [oracle="$withval"], | |
214 | [if test -n "$ORACLE_HOME" -a -d "$ORACLE_HOME"; then | |
215 | oracle=$ORACLE_HOME | |
216 | else | |
217 | oracle=no | |
218 | fi]) | |
219 | AC_MSG_RESULT($oracle) | |
220 | if test "$oracle" != no; then | |
cd357ef5 | 221 | AC_MSG_CHECKING(Pro*C version) |
222 | ORACLE_HOME=$oracle release=`$ORACLE_HOME/bin/proc | awk '/Release/ {print $3;}'` | |
223 | AC_MSG_RESULT($release) | |
224 | case $release in | |
225 | 2.0.6.0.0) | |
226 | SQL_LIBS="-L$oracle/lib -lsql $oracle/lib/osntab.o -lsqlnet -lora -lsqlnet -lnlsrtl -lcv6 -lcore -lnlsrtl -lcore -lm" | |
227 | ;; | |
228 | *) | |
229 | SQL_LIBS="-L$oracle/lib -lclntsh -lxa -lsql -lsqlnet -lncr -lsqlnet -lclient -lcommon -lgeneric -lsqlnet -lncr -lsqlnet -lclient -lcommon -lgeneric -lepc -lnlsrtl3 -lc3v6 -lcore3 -lnlsrtl3 -lcore3 -lnlsrtl3 `cat $oracle/rdbms/lib/sysliblist` -lm -lthread" | |
230 | ;; | |
231 | esac | |
ea0caf4a | 232 | SVRSUBDIRS='$(SVRDIRS)' |
9b1f5e48 | 233 | SERVER_OUTPUT_FILES="db/Makefile server/Makefile backup/Makefile dbck/Makefile dcm/Makefile gen/Makefile incremental/Makefile reg_svr/Makefile regtape/Makefile" |
ea0caf4a | 234 | PRO_C=$oracle/bin/proc |
235 | PRO_C_OPTS=CODE=ANSI_C | |
cd357ef5 | 236 | PRO_C_DEFS="DEFINE=_PROC_ $PRO_C_DEFS" |
ea0caf4a | 237 | fi |
238 | AC_SUBST(PRO_C) | |
239 | AC_SUBST(PRO_C_DEFS) | |
240 | AC_SUBST(PRO_C_INCLUDES) | |
241 | AC_SUBST(PRO_C_OPTS) | |
242 | AC_SUBST(SQL_LIBS) | |
243 | AC_SUBST(SVRSUBDIRS) | |
244 | ||
9b1f5e48 | 245 | # LDAP support |
246 | AC_MSG_CHECKING(for LDAP) | |
247 | AC_ARG_WITH(ldap, | |
248 | [ --with-ldap=PREFIX Specify location of LDAP libs (for server)], | |
249 | [ ldap="$withval"], | |
250 | [if test -n "$LDAP_HOME" -a -d "$LDAP_HOME"; then | |
251 | ldap=$LDAP_HOME | |
252 | else | |
253 | ldap=no | |
254 | fi]) | |
255 | AC_MSG_RESULT($ldap) | |
256 | if test "$ldap" != no -a "$oracle" != no; then | |
257 | if test "$ldap" != yes; then | |
258 | LDAP_CPPFLAGS="-I$ldap/include" | |
259 | LDAP_LIBS="-L$ldap/lib" | |
260 | fi | |
261 | MR_DEFINE(HAVE_LDAP) | |
262 | ||
263 | WINAD_SUBDIRS="winad" | |
264 | WINAD_OUTPUT_FILES="incremental/winad/Makefile" | |
265 | fi | |
266 | AC_SUBST(LDAP_CPPFLAGS) | |
267 | AC_SUBST(LDAP_LIBS) | |
268 | AC_SUBST(WINAD_SUBDIRS) | |
269 | ||
ea0caf4a | 270 | # AFS support |
271 | AC_MSG_CHECKING(for AFS) | |
272 | AC_ARG_WITH(afs, | |
273 | [ --with-afs=PREFIX Specify location of AFS libs (for server)], | |
274 | [afs="$withval"], [afs=no]) | |
275 | AC_MSG_RESULT($afs) | |
276 | if test "$afs" != no -a "$oracle" != no; then | |
277 | if test "$afs" != yes; then | |
278 | AFS_CPPFLAGS="-I$afs/include -I$afs/include/afs -I$afs/include/rx" | |
279 | AFS_PRO_C_INCLUDES="INCLUDE=$afs/include INCLUDE=$afs/include/afs INCLUDE=$afs/include/rx" | |
280 | AFS_LIBS="-L$afs/lib -L$afs/lib/afs" | |
281 | AFS_DIR=$afs | |
282 | fi | |
283 | AC_CHECK_FUNC(insque, :, AC_CHECK_LIB(compat, insque, | |
284 | AFS_EXTRA_LIBS="-lcompat", | |
285 | AC_MSG_ERROR(insque not found))) | |
286 | AC_CHECK_FUNC(sigvec, :, AC_CHECK_LIB(ucb, sigvec, | |
287 | AFS_EXTRA_LIBS="$AFS_EXTRA_LIBS -L/usr/ucblib -lc -lucb", | |
288 | :, -L/usr/ucblib)) | |
289 | AC_CHECK_LIB(sys, pioctl, :, | |
290 | [AC_MSG_ERROR(AFS libraries not found)], | |
291 | $AFS_LIBS -lrx -llwp -lsys $AFS_EXTRA_LIBS) | |
292 | MR_DEFINE(HAVE_AFS) | |
9ed720ef | 293 | |
9b1f5e48 | 294 | AFS_SUBDIRS="afs" |
295 | AFS_OUTPUT_FILES="incremental/afs/Makefile" | |
9ed720ef | 296 | if test -d $srcdir/afssync; then |
9b1f5e48 | 297 | AFS_SYNCDIR="afssync" |
9ed720ef | 298 | AFS_OUTPUT_FILES="$AFS_OUTPUT_FILES afssync/Makefile" |
299 | fi | |
ea0caf4a | 300 | fi |
301 | AC_SUBST(AFS_CPPFLAGS) | |
302 | AC_SUBST(AFS_PRO_C_INCLUDES) | |
303 | AC_SUBST(AFS_LIBS) | |
304 | AC_SUBST(AFS_EXTRA_LIBS) | |
305 | AC_SUBST(AFS_DIR) | |
9ed720ef | 306 | AC_SUBST(AFS_SUBDIRS) |
9b1f5e48 | 307 | AC_SUBST(AFS_SYNCDIR) |
ea0caf4a | 308 | |
309 | # GNU readline | |
310 | AC_CHECKING(for GNU readline...) | |
311 | AC_ARG_WITH(readline, | |
312 | [ --with-readline=PREFIX Specify location of GNU readline], | |
ee85084d | 313 | [readline="$withval"; AC_MSG_RESULT($withval)], |
314 | [AC_CHECK_LIB(readline, readline, [readline=yes], | |
315 | [if test "$athena" = true; then | |
316 | unset ac_cv_lib_readline_readline | |
317 | AC_CHECK_LIB(readline, readline, [readline=/mit/gnu], :, | |
318 | -L/mit/gnu/lib -ltermcap) | |
319 | fi], | |
320 | -ltermcap)]) | |
ea0caf4a | 321 | if test "$readline" != no; then |
322 | if test "$readline" != yes; then | |
c5c5a18d | 323 | READLINE_CPPFLAGS="-I$readline/include" |
ee85084d | 324 | READLINE_LIBS="-L$readline/lib" |
ea0caf4a | 325 | fi |
ee85084d | 326 | READLINE_CPPFLAGS="$READLINE_CPPFLAGS -DHAVE_READLINE" |
327 | READLINE_LIBS="$READLINE_LIBS -lreadline -ltermcap" | |
ea0caf4a | 328 | fi |
329 | AC_SUBST(READLINE_CPPFLAGS) | |
330 | AC_SUBST(READLINE_LIBS) | |
331 | ||
332 | # Curses | |
333 | curses=curses | |
334 | AC_CHECKING(for curses) | |
335 | AC_CHECK_LIB(curses, main, :, AC_CHECK_LIB(ncurses, main, curses=ncurses)) | |
336 | if test -n "$curses"; then | |
337 | OLDLIBS=$LIBS | |
338 | LIBS=-l$curses | |
339 | AC_CHECKING(if curses needs termcap) | |
340 | dnl we need to use AC_TRY_RUN because under NetBSD, the program will | |
341 | dnl link with just -lcurses, but then fail with a runtime linker error | |
342 | dnl because you didn't use -ltermcap | |
343 | AC_TRY_RUN([#include <curses.h> | |
344 | main(int argc, char **argv) | |
345 | { | |
346 | initscr(); | |
347 | endwin(); | |
348 | return 0; | |
349 | }], [CURSES_LIBS="-l$curses"], | |
350 | LIBS="-l$curses -ltermcap" | |
351 | AC_TRY_RUN([#include <curses.h> | |
352 | main(int argc, char **argv) | |
353 | { | |
354 | initscr(); | |
355 | endwin(); | |
356 | return 0; | |
357 | }], [CURSES_LIBS="-l$curses -ltermcap"], | |
358 | :, :), | |
359 | :) | |
360 | LIBS=$OLDLIBS | |
361 | fi | |
362 | if test -n "$CURSES_LIBS"; then | |
363 | OLDLIBS=$LIBS | |
364 | LIBS=$CURSES_LIBS | |
365 | AC_TRY_LINK([#include <curses.h>],[WINDOW *w; getmaxx(w);], | |
366 | :, | |
367 | AC_TRY_COMPILE([#include <curses.h>],[WINDOW *w; w->_maxx;], | |
368 | [CURSES_CPPFLAGS="-D'getmaxx(w)=w->_maxx'"], | |
369 | [CURSES_CPPFLAGS="-D'getmaxx(w)=w->maxx'"])) | |
4753fa79 | 370 | AC_TRY_LINK([#include <curses.h>],[newterm(NULL, NULL, NULL);], |
371 | [CURSES_CPPFLAGS="$CURSES_CPPFLAGS -DCURSES_HAS_NEWTERM"]) | |
ea0caf4a | 372 | LIBS=$OLDLIBS |
373 | CURSES_CPPFLAGS="-DHAVE_CURSES $CURSES_CPPFLAGS" | |
374 | CURSES_SUBDIRS='$(CURSES_SUBDIRS)' | |
375 | else | |
376 | AC_MSG_WARN(Couldn't find -lcurses) | |
377 | fi | |
378 | AC_SUBST(CURSES_CPPFLAGS) | |
379 | AC_SUBST(CURSES_LIBS) | |
380 | AC_SUBST(CURSES_SUBDIRS) | |
381 | ||
382 | ||
533bacb3 | 383 | AC_CHECK_FUNCS(getusershell strlcpy strlcat uname) |
384 | ||
385 | AC_CHECK_FUNC(sigaction, AC_DEFINE(HAVE_POSIX_SIGNALS)) | |
386 | ||
3c64a8a2 | 387 | AC_CHECK_HEADERS(unistd.h getopt.h netinet/in.h) |
ea0caf4a | 388 | |
25f58600 | 389 | MR_EXTEND(PRO_C_INCLUDES, INCLUDE='$(srcdir)') |
ea0caf4a | 390 | MR_INCLUDE('$(SRCTOP)/include') |
25f58600 | 391 | MR_INCLUDE('$(SRCTOP)/lib') |
ea0caf4a | 392 | MR_INCLUDE('$(BUILDTOP)/lib') |
393 | MR_INCLUDE('$(BUILDTOP)/db') | |
f4036eed | 394 | MR_INCLUDE('$(srcdir)') |
ea0caf4a | 395 | LDFLAGS="$LDFLAGS -L\$(BUILDTOP)/lib $LIBPATH" |
396 | KLIBS="-lzephyr $KRB4_LIBS -lcom_err -lhesiod $LIBS" | |
397 | LIBS="-lmoira $KLIBS" | |
398 | AC_SUBST(KLIBS) | |
399 | ||
3fb6166b | 400 | MR_LIBDEP='$(BUILDTOP)/lib/libmoira.a' |
401 | AC_SUBST(MR_LIBDEP) | |
402 | ||
ea0caf4a | 403 | AC_OUTPUT(Makefile lib/Makefile include/Makefile clients/Makefile \ |
ee85084d | 404 | clients/lib/Makefile clients/addusr/Makefile \ |
5e99c83e | 405 | clients/blanche/Makefile clients/chfn/Makefile \ |
406 | clients/chpobox/Makefile clients/chsh/Makefile \ | |
407 | clients/mailmaint/Makefile clients/moira/Makefile \ | |
408 | clients/mrcheck/Makefile clients/mrtest/Makefile \ | |
409 | clients/stella/Makefile update/Makefile man/Makefile \ | |
9b1f5e48 | 410 | $SERVER_OUTPUT_FILES $WINAD_OUTPUT_FILES $AFS_OUTPUT_FILES \ |
411 | $RSAREF_OUTPUT_FILES) |