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