]> git.sur5r.net Git - openldap/blob - configure.in
91d9b746aabad1d3ebf34d643401efa80b6db74a
[openldap] / configure.in
1 dnl Copyright 1998 The OpenLDAP Foundation.  All Rights Reserved.
2 dnl 
3 dnl Redistribution and use in source and binary forms are permitted only
4 dnl as authorized by the OpenLDAP Public License.  A copy of this
5 dnl license is available at http://www.OpenLDAP.org/license.html or
6 dnl in file LICENSE in the top-level directory of the distribution.
7 dnl ----
8 dnl Configure.in for OpenLDAP
9 dnl
10 AC_INIT(include/ldap.h)
11 dnl
12 dnl
13 AC_PREREQ(2.10)dnl Required Autoconf version
14 dnl Do not use AutoConf 2.12; it produces a configuration script
15 dnl that causes an "internal 2K buffer" error on HPUX when run
16 dnl with /bin/sh.  Autoconf 2.10 seems to be okay.
17 AC_CONFIG_AUX_DIR(build)
18 AC_CONFIG_HEADER(include/portable.h)dnl
19 dnl
20 dnl Start Args
21 AC_MSG_CHECKING(configure arguments)
22 AC_PREFIX_DEFAULT(/usr/local)
23
24 dnl General "enable" options
25 OL_ARG_ENABLE(debug,[  --enable-debug   enable debugging], yes)dnl
26 dnl OL_ARG_ENABLE(syslog,[  --enable-syslog     enable syslog support], auto)dnl
27 OL_ARG_ENABLE(libui,[  --enable-libui   enable library user interface], yes)dnl
28 OL_ARG_ENABLE(cache,[  --enable-cache   enable caching], yes)dnl
29 OL_ARG_ENABLE(dns,[  --enable-dns       enable dns support], no)dnl
30 OL_ARG_ENABLE(referrals,[  --enable-referrals   enable referrals], yes)dnl
31 OL_ARG_ENABLE(cldap,[  --enable-clapd   enable connectionless ldap], no)dnl
32
33 dnl General "with" options
34 OL_ARG_WITH(kerberos,[  --with-kerberos use Kerberos],
35         auto, [auto k5 k4 afs yes no])
36 OL_ARG_WITH(threads,[  --with-threads   use threads],
37         auto, [auto posix mach lwp yes no manual] )
38
39 dnl Server options
40
41 dnl LDAPD OPTIONS
42 OL_ARG_ENABLE(ldapd,[  --enable-ldapd   enable building ldapd], no)dnl
43
44 dnl SLAPD OPTIONS
45 OL_ARG_ENABLE(slapd,[  --enable-slapd   enable building slapd], yes)dnl
46 OL_ARG_ENABLE(aclgroup,[    --enable-aclgroup   enable ACL group support], auto)dnl
47 OL_ARG_ENABLE(crypt,[    --enable-crypt enable crypt(3) passwords], auto)dnl
48 OL_ARG_ENABLE(md5,[    --enable-md5     enable MD5 passwords], auto)dnl
49 OL_ARG_ENABLE(sha1,[    --enable-sha1   enable SHA1 passwords], auto)dnl
50 OL_ARG_ENABLE(wrappers,[    --enable-wrappers   enable tcp wrapper support], no)dnl
51 OL_ARG_ENABLE(phonetic,[    --enable-phonetic   enable phonetic/soundex], no)dnl
52 OL_ARG_ENABLE(rlookups,[    --enable-rlookups   enable reverse lookups], auto)dnl
53
54 dnl SLAPD Backend options
55 OL_ARG_ENABLE(ldbm,[    --enable-ldbm   enable ldbm backend], yes)dnl
56 OL_ARG_WITH(ldbm_api,[      --with-ldbm-api     use LDBM API], auto,
57         [auto db2 db gdbm ndbm manual])
58 OL_ARG_WITH(ldbm_type,[      --with-ldbm-type   use LDBM type], auto,
59         [auto btree hash])
60
61 OL_ARG_ENABLE(passwd,[    --enable-passwd       enable passwd backend], no)dnl
62 OL_ARG_ENABLE(shell,[    --enable-shell enable shell backend], no)dnl
63
64 dnl SLURPD OPTIONS
65 OL_ARG_ENABLE(slurpd,[  --enable-slurpd enable building slurpd], auto)dnl
66
67 if test $ol_enable_slapd = no ; then
68         dnl SLAPD was specificallly disabled
69         if test $ol_enable_ldbm = yes ; then
70                 AC_MSG_WARN([slapd disabled, ignoring --enable_ldbm argument]);
71         fi
72         if test $ol_enable_passwd = yes ; then
73                 AC_MSG_WARN([slapd disabled, ignoring --enable_passwd argument]);
74         fi
75         if test $ol_enable_shell = yes ; then
76                 AC_MSG_WARN([slapd disabled, ignoring --enable_shell argument]);
77         fi
78         if test $ol_enable_aclgroup = yes ; then
79                 AC_MSG_WARN([slapd disabled, ignoring --enable_aclgroup argument]);
80         fi
81         if test $ol_enable_crypt = yes ; then
82                 AC_MSG_WARN([slapd disabled, ignoring --enable_crypt argument]);
83         fi
84         if test $ol_enable_md5 = yes ; then
85                 AC_MSG_WARN([slapd disabled, ignoring --enable_md5 argument]);
86         fi
87         if test $ol_enable_sha1 = yes ; then
88                 AC_MSG_WARN([slapd disabled, ignoring --enable_sha1 argument]);
89         fi
90         if test $ol_enable_wrappers = yes ; then
91                 AC_MSG_WARN([slapd disabled, ignoring --enable_wrappers argument]);
92         fi
93         if test $ol_enable_phonetic = yes ; then
94                 AC_MSG_WARN([slapd disabled, ignoring --enable_phonetic argument]);
95         fi
96         if test $ol_enable_rlookups = yes ; then
97                 AC_MSG_WARN([slapd disabled, ignoring --enable_rlookups argument]);
98         fi
99         if test $ol_with_ldbm_api != auto ; then
100                 AC_MSG_WARN([slapd disabled, ignoring --with_ldbm_api argument]);
101         fi
102         if test $ol_with_ldbm_type != auto ; then
103                 AC_MSG_WARN([slapd disabled, ignoring --with_ldbm_type argument]);
104         fi
105         if test $ol_enable_slurpd = yes ; then
106                 AC_MSG_ERROR([slurpd requires slapd]);
107         fi
108
109         # force settings to no
110         ol_enable_ldbm=no
111         ol_enable_shell=no
112         ol_enable_passwd=no
113         ol_enable_aclgroup=no
114         ol_enable_crypt=no
115         ol_enable_md5=no
116         ol_enable_sha1=no
117         ol_enable_wrappers=no
118         ol_enable_phonetic=no
119         ol_enable_rlookups=no
120         ol_with_ldbm_api=no
121         ol_with_ldbm_type=no
122         ol_enable_slurpd=no
123
124 elif test $ol_enable_ldbm = no ; then
125         dnl SLAPD without LDBM
126
127         if test $ol_with_ldbm_api != auto ; then
128                 AC_MSG_WARN([LDBM disabled, ignoring --with_ldbm_api argument]);
129         fi
130
131         if test $ol_with_ldbm_type != auto ; then
132                 AC_MSG_WARN([LDBM disabled, ignoring --with_ldbm_type argument]);
133         fi
134
135         if test $ol_enable_passwd = no -a $ol_enable_shell = no ; then
136                 AC_MSG_ERROR([slapd requires a backend]);
137         fi
138
139         ol_with_ldbm_api=no
140         ol_with_ldbm_type=no
141
142 else
143         dnl SLAPD with LDBM
144
145         if test $ol_with_ldbm_api = gdbm -a \
146                 $ol_with_ldbm_type = btree ; then
147                 AC_MSG_ERROR([GDBM only supports LDBM type hash]);
148         fi
149         if test $ol_with_ldbm_api = ndbm -a \
150                 $ol_with_ldbm_type = btree ; then
151                 AC_MSG_ERROR([NDBM only supports LDBM type hash]);
152         fi
153 fi
154
155 if test $ol_enable_slurpd = yes ; then
156         dnl SLURPD was specifically enabled
157         if test $ol_with_threads = no ; then
158                 AC_MSG_ERROR([slurpd requires threads]);
159         fi
160 fi
161
162 AC_MSG_RESULT(done)
163
164 ## Initialize vars
165 LDAP_DEFS=
166 LDAP_LIBS=
167 LDBM_DEFS=
168 LDBM_LIBS=
169 LTHREAD_DEFS=
170 LTHREAD_LIBS=
171 LUTIL_DEFS=
172 LUTIL_LIBS=
173
174 LDAPD_DEFS=
175 LDAPD_LIBS=
176 SLAPD_DEFS=
177 SLAPD_LIBS=
178 SLURPD_DEFS=
179 SLURPD_LIBS=
180
181 BUILD_LDAPD=no
182 BUILD_SLAPD=no
183 BUILD_SLURPD=no
184
185 BUILD_LDBM=no
186 BUILD_PASSWD=no
187 BUILD_SHELL=no
188
189 KRB_DEFS=
190 KRB_LIBS=
191 TERMCAP_DEFS=
192 TERMCAP_LIBS=
193
194 dnl ----------------------------------------------------------------
195 dnl Checks for programs
196
197 AC_PROG_CC
198 AC_PROG_GCC_TRADITIONAL
199
200 AC_PROG_LN_S
201 AC_PROG_INSTALL
202 AC_PROG_RANLIB
203 AC_PROG_MAKE_SET
204
205 AC_PATH_PROG(SENDMAIL, sendmail, /usr/lib/sendmail,
206         $PATH:/usr/libexec:/usr/lib:/usr/sbin:/usr/etc:/etc)
207 AC_PATH_PROG(EDITOR, vi, /usr/ucb/vi, $PATH:/usr/ucb)
208 AC_PATH_PROG(FINGER, finger, /usr/ucb/finger, $PATH:/usr/ucb)
209
210 dnl ----------------------------------------------------------------
211 dnl Checks for libraries
212
213 dnl Find socket()
214 dnl Likely combinations:
215 dnl             -lsocket [ -lnsl_s | -lnsl ]
216 dnl             -linet
217
218 AC_CHECK_FUNC(socket, :, [      
219 dnl
220 dnl hopefully we won't include too many libraries
221 dnl
222         AC_CHECK_LIB(socket, main)
223         AC_CHECK_LIB(net, main)
224         AC_CHECK_LIB(nsl_s, main)
225         AC_CHECK_LIB(nsl, main)
226         AC_CHECK_LIB(inet, socket)
227         AC_CHECK_LIB(gen, main)
228 ])
229
230 dnl HP-UX requires -lV3
231 AC_CHECK_LIB(V3, sigset)
232
233 if test $ol_with_kerberos = auto -o $ol_with_kerberos = k5 ; then
234         AC_CHECK_HEADERS(kerberosIV/krb.h kerberosIV/des.h)
235
236         if test $ac_cv_header_kerberosIV_krb_h = yes ; then
237                 AC_CHECK_LIB(krb4, main, [have_k5=yes], [have_k5=no],
238                         [-lkrb5 -ldes425])
239
240                 if test $have_k5 = yes ; then
241                         ol_with_kerberos=found
242                         ol_link_kerberos=yes
243
244                         KRB_DEFS="-DKERBEROS"
245                         KRB_LIBS="-lkrb4 -lkrb5 -ldes425"
246                 fi
247         fi
248 fi
249 if test $ol_with_kerberos = auto -o $ol_with_kerberos = k4 ; then
250         AC_CHECK_HEADERS(krb.h des.h)
251
252         if test $ac_cv_header_krb_h = yes ; then
253                 AC_CHECK_LIB(krb, main, [have_k4=yes], [have_k4=no], [-ldes])
254
255                 if test $have_k4 = yes ; then
256                         ol_with_kerberos=found
257                         ol_link_kerberos=yes
258
259                         KRB_DEFS="-DKERBEROS"
260                         KRB_LIBS="-lkrb -ldes"
261                 fi
262         fi
263 fi
264
265
266 ol_link_threads=no
267 if test $ol_with_threads = auto -o $ol_with_threads = posix ; then
268         AC_CHECK_HEADERS(pthread.h sched.h)
269
270         if test $ac_cv_header_pthread_h = yes ; then
271                 OL_POSIX_THREAD_VERSION
272
273                 if test $ol_cv_pthread_version = final ; then
274                         LTHREAD_DEFS="$LTHREAD_DEFS -DPOSIX_THREADS"
275                 elif test $ol_cv_pthread_version = draft4 ; then
276                         LTHREAD_DEFS="$LTHREAD_DEFS -DTHREAD_MIT_PTHREADS"
277                 else
278                         AC_MSG_ERROR([unknown pthread version])
279                 fi
280
281                 # consider threads found
282                 ol_with_threads=found
283
284                 OL_LINUX_THREADS
285
286                 if test $ol_cv_linux_threads = yes ; then
287 dnl                     AC_DEFINE(HAVE_LINUX_THREADS,1)
288                         LTHREAD_DEFS="$LTHREAD_DEFS -DHAVE_LINUX_THREADS"
289                 fi
290
291                 dnl Now the hard part, how to link
292
293                 dnl A few platforms have pthread support in standard libraries
294                 AC_CHECK_FUNC(pthread_create,[ol_link_threads=yes])
295
296                 if test $ol_link_threads = no ; then
297                         dnl try -pthread
298                         AC_CACHE_CHECK([for pthread_create with -pthread],
299                                 [ol_cv_pthread_flag], [
300                                 dnl save the CPPFLAGS
301                                 save_LIBS="$LIBS"
302                                 LIBS="-pthread $LIBS"
303                                 AC_TRY_LINK([#include <pthread.h>],[
304                                         pthread_create((pthread_t*) 0,
305                                                 (pthread_attr_t*) 0, 0, 0);
306                                         ], ol_cv_pthread_flag=yes, ol_cv_pthread_flag=no)
307                                 dnl restore the LIBS
308                                 LIBS="$save_LIBS"
309                         ])
310
311                         if test $ol_cv_pthread_flag = yes ; then
312                                 LTHREAD_LIBS="$LTHREAD_LIBS -pthread"
313                                 ol_link_threads=posix
314                         fi
315                 fi
316
317                 if test $ol_link_threads = no ; then
318                         dnl try -lpthread
319                         save_LIBS="$LIBS"
320                         AC_CHECK_LIB(pthread, pthread_create, [
321                                 ol_link_threads=posix
322                                 LTHREAD_LIBS="$LTHREAD_LIBS -lpthread"])
323                         LIBS="$save_LIBS"
324                 fi
325
326                 if test $ol_link_threads = no ; then
327                         dnl try -lc_r
328                         save_LIBS="$LIBS"
329                         AC_CHECK_LIB(c_r, pthread_create, [
330                                 ol_link_threads=posix
331                                 LTHREAD_LIBS="$LTHREAD_LIBS -lc_r"])
332                         LIBS="$save_LIBS"
333                 fi
334
335                 if test $ol_link_threads = no ; then
336                         dnl try DEC Threads
337                         save_LIBS="$LIBS"
338                         AC_CHECK_LIB(pthread, pthread_create, [
339                                 ol_link_threads=posix
340                                 LTHREAD_DEFS="$LTHREAD_DEFS -DDEC_THREADS"
341                                 LTHREAD_LIBS="$LTHREAD_LIBS -lpthread -lmach -lexc -lc"],,
342                                 [-lmach -lexc -lc])
343                         LIBS="$save_LIBS"
344                 fi
345
346                 if test $ol_link_threads != no ; then
347                         save_LIBS="$LIBS"
348                         LIBS="$LTHREAD_LIBS $LIBS"
349
350                         dnl All POSIX Thread (final) implementations should have
351                         dnl sched_yield instead of pthread yield.
352                         dnl check for both
353                         AC_CHECK_FUNCS(sched_yield pthread_yield)
354
355                         if test $ac_cv_func_sched_yield = no -a \
356                                 $ac_cv_func_pthread_yield = no ; then
357
358                                 AC_MSG_WARN([could not locate sched_yield() or pthread_yield()])
359                                 AC_MSG_ERROR([POSIX Threads are not usable])
360                         fi
361
362                         dnl Check functions for compatibility
363                         AC_CHECK_FUNCS(pthread_kill \
364                                 pthread_attr_init pthread_attr_create \
365                                 pthread_attr_destroy pthread_attr_delete \
366                                 pthread_attr_setdetachstate pthread_attr_setdetach_np \
367                         )
368
369                         LIBS="$save_LIBS"
370                 else
371                         AC_MSG_ERROR([could not link with POSIX Threads])
372                 fi
373         fi
374
375         if test $ol_with_threads = posix ; then
376                 AC_MSG_ERROR([could not locate POSIX Threads])
377         fi
378 fi
379
380 if test $ol_with_threads = auto -o $ol_with_threads = cthreads ; then
381         dnl check for Mach CThreads
382         AC_CHECK_HEADERS(mach/cthreads.h)
383         if test $ac_cv_header_lwp_lwp_h = yes ; then
384                 AC_CHECK_LIB(lwp, cthread_fork, [have_cthreads=yes], [have_cthreads=no])
385
386                 if test $have_cthreads = yes ; then
387                         LTHREAD_DEFS="$LTHREAD_DEFS -DTHREAD_NEXT_CTHREADS"
388                         LTHREAD_LIBS="$LTHREAD_LIBS -llwp"
389                 fi
390         fi
391 fi
392
393 if test $ol_with_threads = auto -o $ol_with_threads = lwp ; then
394         dnl check for SunOS5 LWP
395         AC_CHECK_HEADERS(lwp/lwp.h)
396         if test $ac_cv_header_lwp_lwp_h = yes ; then
397                 AC_CHECK_LIB(thread, thr_create, [have_lwp=yes], [have_lwp=no])
398
399                 if test $have_lwp = yes ; then
400                         LTHREAD_DEFS="$LTHREAD_DEFS -DTHREAD_SUNOS5_LWP"
401                         LTHREAD_LIBS="$LTHREAD_LIBS -llwp"
402                 fi
403         fi
404
405         dnl check for SunOS4 LWP
406         AC_CHECK_HEADERS(thread.h synch.h)
407         if test $ac_cv_header_thread_h = yes -a $ac_cv_header_synch_h = yes ; then
408                 AC_CHECK_LIB(lwp, lwp_create, [have_lwp=yes], [have_lwp=no])
409
410                 if test $have_lwp = yes ; then
411                         LTHREAD_DEFS="$LTHREAD_DEFS -DTHREAD_SUNOS4_LWP"
412                         LTHREAD_LIBS="$LTHREAD_LIBS -llwp"
413                 fi
414         fi
415 fi
416
417 if test $ol_with_threads = manual ; then
418         dnl User thinks he can manually configure threads.
419         $ol_link_threads=yes
420
421         AC_MSG_WARN([thread defines and link options must be set manually])
422
423         AC_CHECK_HEADERS(pthread.h sched.h)
424         AC_CHECK_FUNCS(sched_yield pthread_yield)
425         OL_LINUX_THREADS
426 fi
427
428 if test $ol_link_threads = no ; then
429         if test $ol_with_threads = yes ; then
430                 AC_MSG_ERROR([no suitable thread support])
431         fi
432
433         if test $ol_with_threads = auto ; then
434                 AC_MSG_WARN([no suitable thread support, disabling threads])
435                 $ol_with_threads = no
436         fi
437
438         LTHREAD_DEFS="-DNO_THREADS"
439         LTHREAD_LIBS=""
440 fi
441
442 ol_link_ldbm=no 
443 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db2 ; then
444         OL_BERKELEY_DB2
445
446         if test $ol_cv_berkeley_db2 = yes ; then
447                 ol_link_ldbm=db2
448                 ol_with_ldbm_api=db2
449
450                 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2"
451
452                 if test $ol_with_ldbm_type = hash ; then
453                         LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBHASH"
454                 else
455                         LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBBTREE"
456                 fi
457
458                 dnl $ol_cv_lib_db2 should be yes or -ldb
459                 dnl (it could be no, but that would be an error
460                 if test $ol_cv_lib_db2 != yes ; then
461                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db2"
462                 fi
463         fi
464 fi
465
466 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db ; then
467         OL_BERKELEY_DB
468
469         if test $ol_cv_berkeley_db = yes ; then
470                 ol_link_ldbm=db
471                 ol_with_ldbm_api=db
472
473                 if test $ac_cv_header_db_185_h = yes ; then
474                         LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2_COMPAT185"
475                 fi
476
477                 if test $ol_with_ldbm_type = hash ; then
478                         LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBHASH"
479                 else
480                         LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBBTREE"
481                 fi
482
483                 dnl $ol_cv_lib_db should be yes or -ldb
484                 dnl (it could be no, but that would be an error
485                 if test $ol_cv_lib_db != yes ; then
486                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db"
487                 fi
488         fi
489 fi
490
491 if test $ol_with_ldbm_api = manual ; then
492         dnl User thinks he can manually configure LDBM api.
493         $ol_link_ldbm=yes
494
495         AC_MSG_WARN([LDBM defines and link options must be set manually])
496
497         AC_CHECK_HEADERS(db.h db_185.h gdbm.h ndbm.h)
498 fi
499
500 if test $ol_link_ldbm = no -a $ol_with_ldbm_type = btree ; then
501         AC_MSG_WARN(Could not find LDBM with BTREE support);
502         $ol_with_ldbm_api=none
503 fi
504
505 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then
506         OL_GDBM
507
508         if test $ol_cv_gdbm = yes ; then
509                 ol_link_ldbm=gdbm
510                 ol_with_ldbm_api=gdbm
511
512                 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_GDBM"
513
514                 if test $ol_cv_lib_gdbm != yes ; then
515                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm"
516                 fi
517         fi
518 fi
519
520 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = ndbm ; then
521         OL_NDBM
522
523         if test $ol_cv_ndbm = yes ; then
524                 ol_link_ldbm=ndbm
525                 ol_with_ldbm_api=ndbm
526
527                 if test $ol_with_ldbm_api = ndbm ; then
528                         AC_WARN([Attempting to use NDBM.  Functionality will be limited.])
529                 fi
530
531                 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_NDBM"
532
533                 if test $ol_cv_lib_ndbm != yes ; then
534                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm"
535                 fi
536         fi
537 fi
538
539 if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then
540         AC_MSG_WARN(could not find suitable LDBM backend)
541         if test $ol_enable_ldbm = yes ; then
542                 AC_MSG_ERROR(select appropriate LDBM options or disable)
543         fi
544
545         AC_MSG_WARN(disabling LDBM)
546         $ol_enable_ldbm=no
547 fi
548
549 if test $ol_enable_wrappers = yes ; then
550         AC_CHECK_LIB(wrap, hosts_access,
551                 [have_wrappers=yes], [have_wrappers=no])
552
553         if test $have_wrappers = yes ; then
554 dnl             LIBTCPD="-lwrap"
555 dnl             AC_DEFINE(HAVE_TCPD)
556                 SLAPD_DEFS="$SLAPD_DEFS -DTCP_WRAPPERS"
557                 SLAPD_LIBS="$SLAPD_LIBS -lwrap"
558         else
559                 AC_MSG_WARN(could not find -lwrap)
560                 if test $ol_enable_wrappers = yes ; then
561                         AC_MSG_ERROR(could not find wrappers, select appropriate options or disable)
562                 fi
563
564                 AC_MSG_WARN(disabling wrappers support)
565                 ol_enable_wrappers=no
566         fi
567
568 fi
569
570 # ud needs termcap (should insert check here)
571 ol_link_termcap=no
572
573 AC_CHECK_HEADERS(termcap.h ncurses.h)
574
575 if test $ol_link_termcap = no ; then
576         AC_CHECK_LIB(termcap, tputs, [have_termcap=yes], [have_termcap=no])
577         if test $have_termcap = yes ; then
578                 ol_link_termcap=yes
579                 TERMCAP_LIBS=-ltermcap
580         fi
581 fi
582
583 if test $ol_link_termcap = no ; then
584         AC_CHECK_LIB(ncurses, initscr, [have_ncurses=yes], [have_ncurses=no])
585         if test $have_ncurses = yes ; then
586                 ol_link_termcap=yes
587                 TERMCAP_LIBS=-lncurses
588         fi
589 fi
590
591 if test $ol_link_termcap = no ; then
592         TERMCAP_DEFS="-DNOTERMCAP"
593         TERMCAP_LIBS=
594 fi
595
596 # FreeBSD (and others) have crypt(3) in -lcrypt
597 if test $ol_enable_crypt != no ; then
598         AC_CHECK_FUNC(crypt, [have_crypt=yes], [
599                 AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
600                         have_crypt=yes], [have_crypt=no])])
601
602         if test $have_crypt = yes ; then
603 dnl             AC_DEFINE(SLAPD_CRYPT,1)
604                 LUTIL_DEFS="$LUTIL_DEFS -DLDAP_CRYPT"
605         else
606                 AC_MSG_WARN(could not find crypt)
607                 if test $ol_enable_crypt = yes ; then
608                         AC_MSG_ERROR(could not find crypt, select appropriate options or disable)
609                 fi
610
611                 AC_MSG_WARN(disabling crypt support)
612                 ol_enable_crypt=no
613         fi
614 fi
615
616 dnl ----------------------------------------------------------------
617 dnl Checks for header files.
618 AC_HEADER_STDC
619 AC_HEADER_DIRENT
620 AC_HEADER_SYS_WAIT
621 AC_CHECK_HEADERS( \
622         stddef.h        \
623         fcntl.h         \
624         filio.h         \
625         limits.h        \
626         malloc.h        \
627         sgtty.h         \
628         sys/file.h      \
629         sys/ioctl.h     \
630         sys/time.h      \
631         syslog.h        \
632         termio.h        \
633         unistd.h        \
634 )
635
636 dnl ----------------------------------------------------------------
637 dnl Checks for typedefs, structures, and compiler characteristics.
638 AC_TYPE_GETGROUPS
639 AC_TYPE_MODE_T
640 AC_TYPE_OFF_T
641 AC_TYPE_PID_T
642 AC_TYPE_SIGNAL
643 AC_TYPE_SIZE_T
644 AC_TYPE_UID_T
645 AC_STRUCT_ST_BLKSIZE
646 AC_HEADER_TIME
647 AC_STRUCT_TM
648
649 dnl AC_C_BIGENDIAN
650 AC_C_CONST
651
652 dnl ----------------------------------------------------------------
653 dnl Checks for library functions.
654 AC_FUNC_MEMCMP
655 AC_FUNC_STRFTIME
656 AC_FUNC_VPRINTF
657 AC_FUNC_WAIT3
658
659 AC_CHECK_FUNCS(         \
660         flock                   \
661         gethostname             \
662         gettimeofday    \
663         getdtablesize   \
664         lockf                   \
665         memcpy                  \
666         mktime                  \
667         select                  \
668         setpwfile               \
669         setsid                  \
670         signal                  \
671         sigset                  \
672         socket                  \
673         strerror                \
674         strstr                  \
675         strrchr                 \
676         strsep                  \
677         strtod                  \
678         strtol                  \
679         strtoul                 \
680         sysconf                 \
681 )
682
683 AC_REPLACE_FUNCS(strdup)
684
685 dnl ----------------------------------------------------------------
686 # Check Configuration
687 OL_SYS_ERRLIST
688
689 dnl ----------------------------------------------------------------
690 dnl Sort out defines
691
692 if test $ol_enable_debug != no ; then
693         LDAP_DEFS="$LDAP_DEFS -DLDAP_DEBUG"
694 fi
695 dnl     if test $ol_enable_syslog != no ; then
696 dnl             LDAP_DEFS="$LDAP_DEFS -DLDAP_SYSLOG"
697 dnl     fi
698 if test $ol_enable_libui = no ; then
699         LDAP_DEFS="$LDAP_DEFS -DNO_USERINTERFACE"
700 fi
701 if test $ol_enable_cache = no ; then
702         LDAP_DEFS="$LDAP_DEFS -DNO_CACHE"
703 fi
704 if test $ol_enable_dns != no ; then
705         LDAP_DEFS="$LDAP_DEFS -DLDAP_DNS"
706 fi
707 if test $ol_enable_referrals != no ; then
708         LDAP_DEFS="$LDAP_DEFS -DLDAP_REFERRALS"
709 fi
710 if test $ol_enable_cldap != no ; then
711         LDAP_DEFS="$LDAP_DEFS -DCLDAP"
712 fi
713
714 if test $ol_enable_aclgroup != no ; then
715         AC_DEFINE(SLAPD_ACLGROUP,1)
716         SLAPD_DEFS="$SLAPD_DEFS -DACLGROUP"
717 fi
718
719 if test $ol_enable_md5 != no ; then
720 dnl     AC_DEFINE(SLAPD_MD5,1)
721         LUTIL_DEFS="$LUTIL_DEFS -DLDAP_MD5"
722 fi
723
724 if test $ol_enable_sha1 != no ; then
725 dnl     AC_DEFINE(SLAPD_SHA1,1)
726         LUTIL_DEFS="$LUTIL_DEFS -DLDAP_SHA1"
727 fi
728
729 if test $ol_enable_phonetic != no ; then
730         AC_DEFINE(SLAPD_PHONETIC,1)
731         SLAPD_DEFS="$SLAPD_DEFS -DSOUNDEX"
732 fi
733
734 if test $ol_enable_rlookups != no ; then
735         AC_DEFINE(SLAPD_RLOOKUPS,1)
736         SLAPD_DEFS="$SLAPD_DEFS -DREVERSE_LOOKUPS"
737 fi
738
739 if test $ol_link_ldbm != no ; then
740 dnl     AC_DEFINE(SLAPD_LDBM,1)
741         BUILD_SLAPD=yes
742         BUILD_LDBM=yes
743         LDBM_DEFS="-DLDAP_LDBM $LDBM_DEFS"
744 fi
745
746 if test $ol_enable_passwd != no ; then
747 dnl     AC_DEFINE(SLAPD_PASSWD,1)
748         BUILD_SLAPD=yes
749         BUILD_PASSWD=yes
750         SLAPD_DEFS="-DLDAP_PASSWD $SLAPD_DEFS"
751 fi
752
753 if test $ol_enable_shell != no ; then
754 dnl     AC_DEFINE(SLAPD_SHELL,1)
755         BUILD_SLAPD=yes
756         BUILD_SHELL=yes
757         SLAPD_DEFS="-DLDAP_SHELL $SLAPD_DEFS"
758 fi
759
760 if test $ol_enable_slurpd != no -a $ol_link_threads != no -a \
761         $BUILD_SLAPD = yes ; then
762         BUILD_SLURPD=yes
763 fi
764
765 dnl ----------------------------------------------------------------
766
767 AC_SUBST(BUILD_LDAPD)
768 AC_SUBST(BUILD_SLAPD)
769   AC_SUBST(BUILD_LDBM)
770   AC_SUBST(BUILD_PASSWD)
771   AC_SUBST(BUILD_SHELL)
772 AC_SUBST(BUILD_SLURPD)
773
774
775 AC_SUBST(LDAP_DEFS)
776 AC_SUBST(LDAP_LIBS)
777 AC_SUBST(LDAPD_DEFS)
778 AC_SUBST(LDAPD_LIBS)
779 AC_SUBST(SLAPD_DEFS)
780 AC_SUBST(SLAPD_LIBS)
781 AC_SUBST(SLURPD_DEFS)
782 AC_SUBST(SLURPD_LIBS)
783 AC_SUBST(LDBM_DEFS)
784 AC_SUBST(LDBM_LIBS)
785 AC_SUBST(LTHREAD_DEFS)
786 AC_SUBST(LTHREAD_LIBS)
787 AC_SUBST(LUTIL_DEFS)
788 AC_SUBST(LUTIL_LIBS)
789
790 AC_SUBST(KRB_DEFS)
791 AC_SUBST(KRB_LIBS)
792 AC_SUBST(TERMCAP_DEFS)
793 AC_SUBST(TERMCAP_LIBS)
794
795 dnl ----------------------------------------------------------------
796 dnl final output
797 dnl
798
799 dnl AC_OUTPUT( \
800 dnl contrib/Makefile:build/top.mk:contrib/Makefile.in:build/dir.mk \
801 dnl contrib/saucer/Makefile:build/top.mk:contrib/saucer/Makefile.in:build/rules.mk \
802 dnl contrib/whois++/Makefile:build/top.mk:contrib/whois++/Makefile.in:build/rules.mk \
803 dnl [date > stamp-h])
804
805 AC_OUTPUT( \
806 Makefile:build/top.mk:Makefile.in:build/dir.mk \
807 doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \
808 doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \
809 doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \
810 doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \
811 doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \
812 doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \
813 clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \
814 clients/finger/Makefile:build/top.mk:clients/finger/Makefile.in:build/rules.mk \
815 clients/fax500/Makefile:build/top.mk:clients/fax500/Makefile.in:build/rules.mk \
816 clients/gopher/Makefile:build/top.mk:clients/gopher/Makefile.in:build/rules.mk \
817 clients/mail500/Makefile:build/top.mk:clients/mail500/Makefile.in:build/rules.mk \
818 clients/rcpt500/Makefile:build/top.mk:clients/rcpt500/Makefile.in:build/rules.mk \
819 clients/ud/Makefile:build/top.mk:clients/ud/Makefile.in:build/rules.mk \
820 clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \
821 include/Makefile:build/top.mk:include/Makefile.in \
822 libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk      \
823 libraries/libavl/Makefile:build/top.mk:libraries/libavl/Makefile.in:build/lib.mk \
824 libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk \
825 libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk \
826 libraries/libldbm/Makefile:build/top.mk:libraries/libldbm/Makefile.in:build/lib.mk \
827 libraries/libldif/Makefile:build/top.mk:libraries/libldif/Makefile.in:build/lib.mk \
828 libraries/liblthread/Makefile:build/top.mk:libraries/liblthread/Makefile.in:build/lib.mk \
829 libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk \
830 servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
831 servers/ldapd/Makefile:build/top.mk:servers/ldapd/Makefile.in:build/srv.mk \
832 servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
833 servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/srv.mk \
834 servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/srv.mk \
835 servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/srv.mk \
836 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
837 servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
838 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
839 tests/Makefile:build/top.mk:tests/Makefile.in \
840 ,[date > stamp-h])