1 dnl Copyright 1998 The OpenLDAP Foundation. All Rights Reserved.
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.
8 dnl Configure.in for OpenLDAP
10 AC_INIT(include/ldap.h)
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
21 AC_MSG_CHECKING(configure arguments)
22 AC_PREFIX_DEFAULT(/usr/local)
24 dnl General "enable" options
25 OL_ARG_ENABLE(debug,[ --enable-debug enable debugging], yes)dnl
26 #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], auto)dnl
30 OL_ARG_ENABLE(referrals,[ --enable-referrals enable referrals], yes)dnl
31 OL_ARG_ENABLE(cldap,[ --enable-clapd enable connectionless ldap], no)dnl
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 dce mach yes no] )
42 OL_ARG_ENABLE(ldapd,[ --enable-ldapd enable building ldapd], no)dnl
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
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])
58 OL_ARG_WITH(ldbm_type,[ --with-ldbm-type use LDBM type], auto,
61 OL_ARG_ENABLE(passwd,[ --enable-passwd enable passwd backend], no)dnl
62 OL_ARG_ENABLE(shell,[ --enable-shell enable shell backend], no)dnl
65 OL_ARG_ENABLE(slurpd,[ --enable-slurpd enable building slurpd], auto)dnl
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]);
72 if test $ol_enable_passwd = yes ; then
73 AC_MSG_WARN([slapd disabled, ignoring --enable_passwd argument]);
75 if test $ol_enable_shell = yes ; then
76 AC_MSG_WARN([slapd disabled, ignoring --enable_shell argument]);
78 if test $ol_enable_aclgroup = yes ; then
79 AC_MSG_WARN([slapd disabled, ignoring --enable_aclgroup argument]);
81 if test $ol_enable_crypt = yes ; then
82 AC_MSG_WARN([slapd disabled, ignoring --enable_crypt argument]);
84 if test $ol_enable_md5 = yes ; then
85 AC_MSG_WARN([slapd disabled, ignoring --enable_md5 argument]);
87 if test $ol_enable_sha1 = yes ; then
88 AC_MSG_WARN([slapd disabled, ignoring --enable_sha1 argument]);
90 if test $ol_enable_wrappers = yes ; then
91 AC_MSG_WARN([slapd disabled, ignoring --enable_wrappers argument]);
93 if test $ol_enable_phonetic = yes ; then
94 AC_MSG_WARN([slapd disabled, ignoring --enable_phonetic argument]);
96 if test $ol_enable_rlookups = yes ; then
97 AC_MSG_WARN([slapd disabled, ignoring --enable_rlookups argument]);
99 if test $ol_with_ldbm_api != auto ; then
100 AC_MSG_WARN([slapd disabled, ignoring --with_ldbm_api argument]);
102 if test $ol_with_ldbm_type != auto ; then
103 AC_MSG_WARN([slapd disabled, ignoring --with_ldbm_type argument]);
105 if test $ol_enable_slurpd = yes ; then
106 AC_MSG_ERROR([slurpd requires slapd]);
109 # force settings to no
113 ol_enable_aclgroup=no
117 ol_enable_wrappers=no
118 ol_enable_phonetic=no
119 ol_enable_rlookups=no
124 elif test $ol_enable_ldbm = no ; then
125 dnl SLAPD without LDBM
127 if test $ol_with_ldbm_api != auto ; then
128 AC_MSG_WARN([LDBM disabled, ignoring --with_ldbm_api argument]);
131 if test $ol_with_ldbm_type != auto ; then
132 AC_MSG_WARN([LDBM disabled, ignoring --with_ldbm_type argument]);
135 if test $ol_enable_passwd = no -a $ol_enable_shell = no ; then
136 AC_MSG_ERROR([slapd requires a backend]);
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]);
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]);
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]);
189 dnl ----------------------------------------------------------------
190 dnl Checks for programs
193 AC_PROG_GCC_TRADITIONAL
200 AC_PATH_PROG(SENDMAIL, sendmail, /usr/lib/sendmail,
201 $PATH:/usr/libexec:/usr/lib:/usr/sbin:/usr/etc:/etc)
202 AC_PATH_PROG(EDITOR, vi, /usr/ucb/vi, $PATH:/usr/ucb)
203 AC_PATH_PROG(FINGER, finger, /usr/ucb/finger, $PATH:/usr/ucb)
205 dnl ----------------------------------------------------------------
206 dnl Checks for libraries
209 if test $ol_with_threads = auto -o $ol_with_threads = posix ; then
210 AC_CHECK_HEADERS(pthread.h sched.h)
212 if test "$ac_cv_header_pthread_h" = yes ; then
213 OL_POSIX_THREAD_VERSION
215 if test $ol_cv_pthread_version = final ; then
216 LTHREAD_DEFS="$LTHREAD_DEFS -DPOSIX_THREADS"
217 elif test $ol_cv_pthread_version = draft4 ; then
218 LTHREAD_DEFS="$LTHREAD_DEFS -DTHREAD_MIT_PTHREADS"
220 AC_MSG_ERROR([unknown pthread version])
223 # consider threads found
224 ol_with_threads="posix"
228 if test $ol_cv_linux_threads = yes ; then
229 dnl AC_DEFINE(HAVE_LINUX_THREADS,1)
230 LTHREAD_DEFS="$LTHREAD_DEFS -DHAVE_LINUX_THREADS"
233 dnl Now the hard part, how to link
235 dnl A few platforms have pthread support in standard libraries
236 AC_CHECK_FUNC(pthread_create,ol_link_threads=yes)
238 if test $ol_link_threads = no ; then
240 AC_CACHE_CHECK([for pthread_create with -pthread],
241 [ol_cv_pthread_flag], [
242 dnl save the CPPFLAGS
244 LIBS="-pthread $LIBS"
245 AC_TRY_LINK([#include <pthread.h>],[
246 pthread_create((pthread_t*) 0,
247 (pthread_attr_t*) 0, 0, 0);
248 ], ol_cv_pthread_flag=yes, ol_cv_pthread_flag=no)
253 if test $ol_cv_pthread_flag = yes ; then
254 LTHREAD_LIBS="$LTHREAD_LIBS -pthread"
259 if test $ol_link_threads = no ; then
262 AC_CHECK_LIB(pthread, pthread_create, [
264 LTHREAD_LIBS="$LTHREAD_LIBS -lpthread"])
268 if test $ol_link_threads = no ; then
271 AC_CHECK_LIB(c_r, pthread_create, [
273 LTHREAD_LIBS="$LTHREAD_LIBS -lc_r"])
277 if test $ol_link_threads = no ; then
280 AC_CHECK_LIB(pthread, pthread_create, [
282 LTHREAD_DEFS="$LTHREAD_DEFS -DDEC_THREADS"
283 LTHREAD_LIBS="$LTHREAD_LIBS -lpthread -lmach -lexc -lc"],,
288 if test $ol_link_threads = no ; then
289 AC_MSG_ERROR([could not link with POSIX Threads])
291 elif test $ol_with_threads = posix ; then
292 AC_MSG_ERROR([could not locate POSIX Threads])
296 if test $ol_link_threads = no ; then
297 if test $ol_with_threads = yes ; then
298 AC_MSG_ERROR([no suitable thread support])
301 if test $ol_with_threads = auto ; then
302 AC_MSG_WARN([no suitable thread support, disabling threads])
303 $ol_with_threads = no
306 LTHREAD_DEFS="-DNO_THREADS"
310 dnl # check for strtok_r (and presumely other reentrant functions)
311 dnl save_LIBS="$LIBS"
312 dnl LIBS="$save_LIBS $LTHREAD_LIBS"
313 dnl AC_CHECK_LIB(pthread,strtok_r)
315 dnl if test $ac_cv_lib_pthread_strtok_r = no ; then
316 dnl LIBS="$save_LIBS $LTHREAD_LIBS"
317 dnl AC_CHECK_LIB(c_r,strtok_r)
318 dnl AC_CHECK_FUNCS(strtok_r sched_yield)
319 dnl if test $ac_cv_lib_c_r_strtok_r = yes ; then
320 dnl LTHREAD_LIBS="$LTHREAD_LIBS -lc_r"
323 dnl AC_CHECK_FUNCS(strtok_r sched_yield)
326 dnl LIBS="$save_LIBS"
330 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db2 ; then
333 if test $ol_cv_berkeley_db2 = yes ; then
337 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2"
339 if test $ol_with_ldbm_type = hash ; then
340 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBHASH"
342 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBBTREE"
345 if test $ol_cv_lib_db2 != yes ; then
346 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db2"
351 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db ; then
354 if test $ol_cv_berkeley_db = yes ; then
358 if test $ac_cv_header_db_185_h = yes ; then
359 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2_COMPAT185"
362 if test $ol_with_ldbm_type = hash ; then
363 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBHASH"
365 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBBTREE"
368 if test $ol_cv_lib_db != yes ; then
369 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db"
374 if test $ol_link_ldbm = no -a $ol_with_ldbm_type = btree ; then
375 AC_MSG_WARN(Could not find LDBM with BTREE support);
376 $ol_with_ldbm_api=none
379 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then
382 if test $ol_cv_gdbm = yes ; then
384 ol_with_ldbm_api=gdbm
386 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_GDBM"
388 if test $ol_cv_lib_db != yes ; then
389 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm"
394 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = ndbm ; then
397 if test $ol_cv_ndbm = yes ; then
399 ol_with_ldbm_api=ndbm
401 if test $ol_with_ldbm_api = ndbm ; then
402 AC_WARN([Attempting to use NDBM. Functionality will be limited.])
405 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_NDBM"
407 if test $ol_cv_lib_db != yes ; then
408 LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm"
413 if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then
414 AC_MSG_WARN(could not find suitable LDBM backend)
415 if test $ol_enable_ldbm = yes ; then
416 AC_MSG_ERROR(select appropriate LDBM options or disable)
419 AC_MSG_WARN(disabling LDBM)
423 if test $ol_enable_wrappers = yes ; then
424 AC_CHECK_LIB(wrap, hosts_access,
425 [have_wrappers=yes], [have_wrappers=no])
427 if test $have_wrappers = yes ; then
429 dnl AC_DEFINE(HAVE_TCPD)
430 SLAPD_DEFS="$SLAPD_DEFS -DTCP_WRAPPERS"
431 SLAPD_LIBS="$SLAPD_LIBS -lwrap"
433 AC_MSG_WARN(could not find -lwrap)
434 if test $ol_enable_wrappers = yes ; then
435 AC_MSG_ERROR(could not find wrappers, select appropriate options or disable)
438 AC_MSG_WARN(disabling wrappers support)
439 ol_enable_wrappers=no
444 # ud needs termcap (should insert check here)
445 LIBTERMCAP="-ltermcap"
448 # FreeBSD (and others) have crypt(3) in -lcrypt
449 if test $ol_enable_crypt != no ; then
450 AC_CHECK_FUNC(crypt, have_crypt=yes, [
451 AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
452 have_crypt=yes], [have_crypt=no])])
454 if test $have_crypt = yes ; then
455 dnl AC_DEFINE(SLAPD_CRYPT,1)
456 LUTIL_DEFS="$LUTIL_DEFS -DLDAP_CRYPT"
458 AC_MSG_WARN(could not find crypt)
459 if test $ol_enable_crypt = yes ; then
460 AC_MSG_ERROR(could not find crypt, select appropriate options or disable)
463 AC_MSG_WARN(disabling crypt support)
468 dnl ----------------------------------------------------------------
469 dnl Checks for header files.
487 dnl ----------------------------------------------------------------
488 dnl Checks for typedefs, structures, and compiler characteristics.
503 dnl ----------------------------------------------------------------
504 dnl Checks for library functions.
528 AC_REPLACE_FUNCS(strdup)
530 dnl ----------------------------------------------------------------
531 # Check Configuration
534 dnl ----------------------------------------------------------------
537 if test $ol_enable_debug != no ; then
538 LDAP_DEFS="$LDAP_DEFS -DLDAP_DEBUG"
540 #if test $ol_enable_syslog != no ; then
541 # LDAP_DEFS="$LDAP_DEFS -DLDAP_SYSLOG"
543 if test $ol_enable_libui = no ; then
544 LDAP_DEFS="$LDAP_DEFS -DNO_USERINTERFACE"
546 if test $ol_enable_cache = no ; then
547 LDAP_DEFS="$LDAP_DEFS -DNO_CACHE"
549 if test $ol_enable_dns != no ; then
550 LDAP_DEFS="$LDAP_DEFS -DLDAP_DNS"
552 if test $ol_enable_referrals != no ; then
553 LDAP_DEFS="$LDAP_DEFS -DLDAP_REFERRALS"
555 if test $ol_enable_cldap != no ; then
556 LDAP_DEFS="$LDAP_DEFS -DCLDAP"
559 if test $ol_enable_aclgroup != no ; then
560 AC_DEFINE(SLAPD_ACLGROUP,1)
561 SLAPD_DEFS="$SLAPD_DEFS -DACLGROUP"
564 if test $ol_enable_md5 != no ; then
565 dnl AC_DEFINE(SLAPD_MD5,1)
566 LUTIL_DEFS="$LUTIL_DEFS -DLDAP_MD5"
569 if test $ol_enable_sha1 != no ; then
570 dnl AC_DEFINE(SLAPD_SHA1,1)
571 LUTIL_DEFS="$LUTIL_DEFS -DLDAP_SHA1"
574 if test $ol_enable_phonetic != no ; then
575 AC_DEFINE(SLAPD_PHONETIC,1)
576 SLAPD_DEFS="$SLAPD_DEFS -DSOUNDEX"
579 if test $ol_enable_rlookups != no ; then
580 AC_DEFINE(SLAPD_RLOOKUPS,1)
581 SLAPD_DEFS="$SLAPD_DEFS -DREVERSE_LOOKUPS"
584 if test $ol_link_ldbm != no ; then
585 dnl AC_DEFINE(SLAPD_LDBM,1)
588 LDBM_DEFS="-DLDAP_LDBM $LDBM_DEFS"
591 if test $ol_enable_passwd != no ; then
592 dnl AC_DEFINE(SLAPD_PASSWD,1)
595 SLAPD_DEFS="-DLDAP_PASSWD $SLAPD_DEFS"
598 if test $ol_enable_shell != no ; then
599 dnl AC_DEFINE(SLAPD_SHELL,1)
602 SLAPD_DEFS="-DLDAP_SHELL $SLAPD_DEFS"
605 if test $ol_enable_slurpd != no -a $ol_link_threads != no -a \
606 $BUILD_SLAPD = yes ; then
610 dnl ----------------------------------------------------------------
612 AC_SUBST(BUILD_LDAPD)
613 AC_SUBST(BUILD_SLAPD)
615 AC_SUBST(BUILD_PASSWD)
616 AC_SUBST(BUILD_SHELL)
617 AC_SUBST(BUILD_SLURPD)
626 AC_SUBST(SLURPD_DEFS)
627 AC_SUBST(SLURPD_LIBS)
630 AC_SUBST(LTHREAD_DEFS)
631 AC_SUBST(LTHREAD_LIBS)
635 dnl ----------------------------------------------------------------
640 dnl contrib/Makefile:build/top.mk:contrib/Makefile.in:build/dir.mk \
641 dnl contrib/saucer/Makefile:build/top.mk:contrib/saucer/Makefile.in:build/rules.mk \
642 dnl contrib/whois++/Makefile:build/top.mk:contrib/whois++/Makefile.in:build/rules.mk \
643 dnl [date > stamp-h])
646 Makefile:build/top.mk:Makefile.in:build/dir.mk \
647 doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \
648 doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \
649 doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \
650 doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \
651 doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \
652 doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \
653 clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \
654 clients/finger/Makefile:build/top.mk:clients/finger/Makefile.in:build/rules.mk \
655 clients/fax500/Makefile:build/top.mk:clients/fax500/Makefile.in:build/rules.mk \
656 clients/gopher/Makefile:build/top.mk:clients/gopher/Makefile.in:build/rules.mk \
657 clients/mail500/Makefile:build/top.mk:clients/mail500/Makefile.in:build/rules.mk \
658 clients/rcpt500/Makefile:build/top.mk:clients/rcpt500/Makefile.in:build/rules.mk \
659 clients/ud/Makefile:build/top.mk:clients/ud/Makefile.in:build/rules.mk \
660 clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \
661 include/Makefile:build/top.mk:include/Makefile.in \
662 libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk \
663 libraries/libavl/Makefile:build/top.mk:libraries/libavl/Makefile.in:build/lib.mk \
664 libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk \
665 libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk \
666 libraries/libldbm/Makefile:build/top.mk:libraries/libldbm/Makefile.in:build/lib.mk \
667 libraries/libldif/Makefile:build/top.mk:libraries/libldif/Makefile.in:build/lib.mk \
668 libraries/liblthread/Makefile:build/top.mk:libraries/liblthread/Makefile.in:build/lib.mk \
669 libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk \
670 servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
671 servers/ldapd/Makefile:build/top.mk:servers/ldapd/Makefile.in:build/srv.mk \
672 servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
673 servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/srv.mk \
674 servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/srv.mk \
675 servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/srv.mk \
676 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
677 servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
678 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
679 tests/Makefile:build/top.mk:tests/Makefile.in \