]> git.sur5r.net Git - openldap/blob - configure.in
2ef1d8ba21adb1689aa4cf737930579efbd03137
[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(arguments)
22 AC_PREFIX_DEFAULT(/usr/local)
23
24 dnl General "enable" options
25 CF_ARG_OPTION(debug,[  --enable-debug   enable debugging (yes)],[
26         LDAP_DEBUG=no],[LDAP_DEBUG=yes],yes)dnl
27 CF_ARG_OPTION(libui,[  --enable-libui   enable library user interface (yes)],[
28         LDAP_LIBUI=no],[LDAP_LIBUI=yes],yes)dnl
29 CF_ARG_OPTION(cache,[  --enable-cache   enable caching (yes)],[
30         LDAP_CACHE=no],[LDAP_CACHE=yes],yes)dnl
31 CF_ARG_OPTION(referrals,[  --enable-referrals   enable referrals (yes)],[
32         LDAP_REFERRALS=no],[LDAP_REFERRALS=yes],yes)dnl
33
34 CF_ARG_OPTION(cldap,[  --enable-clapd   enable connectionless ldap (no)],[
35         LDAP_CLDAP=yes],[LDAP_CLDAP=no],no)dnl
36
37 dnl General "with" options
38 AC_ARG_WITH(kerberos,[  --with-kerberos use Kerberos (no)],[
39         opt_kerberos=yes],[opt_kerberos=no])
40 AC_ARG_WITH(kerberos-afs,[  --with-kerberos-afs use AFS Kerberos (no)],[
41         opt_kerberos_afs=yes],[opt_kerberos_afs=no])
42 AC_ARG_WITH(threads,[  --with-threads   use threads (yes)],[
43         opt_threads=yes],[opt_threads=no])
44
45 dnl Server options
46
47 dnl LDAPD OPTIONS
48 CF_ARG_OPTION(ldapd,[  --enable-ldapd   enable building ldapd (no)],[
49         BUILD_LDAPD=yes],[BUILD_LDAPD=no],no)dnl
50
51 dnl SLAPD OPTIONS
52 CF_ARG_OPTION(slapd,[  --enable-slapd   enable building slapd (yes)],[
53         BUILD_SLAPD=no],[BUILD_SLAPD=yes],yes)dnl
54 CF_ARG_OPTION(aclgroup,[    --enable-aclgroup   enable ACL group support (yes)],[
55         SLAPD_ACLGROUP=no],[SLAPD_ALCGROUP=yes],yes)dnl
56 CF_ARG_OPTION(crypt,[    --enable-crypt enable crypt(3) passwords (yes)],[
57         SLAPD_CRYPT=no],[SLAPD_CRYPT=yes],yes)dnl
58 CF_ARG_OPTION(md5,[    --enable-md5     enable MD5 passwords (yes)],[
59         SLAPD_MD5=no],[SLAPD_MD5=yes],yes)dnl
60 CF_ARG_OPTION(sha1,[    --enable-sha1   enable SHA1 passwords (yes)],[
61         SLAPD_SHA1=no],[SLAPD_SHA1=yes],yes)dnl
62 CF_ARG_OPTION(wrappers,[    --enable-wrappers   enable tcp wrapper support (no)],[
63         SLAPD_TCP_WRAPPERS=yes],[LDAP_TCP_WRAPPERS=no],no)dnl
64 CF_ARG_OPTION(phonetic,[    --enable-phonetic   enable phonetic/soundex  (no)],[
65         SLAPD_PHONETIC=yes],[SLAPD_PHONETIC=no],no)dnl
66 CF_ARG_OPTION(rlookups,[    --enable-rlookups   enable reverse lookups (yes)],[
67         SLAPD_RLOOKUP=no],[SLAPD_RLOOKUP=yes],yes)dnl
68
69 dnl SLAPD Backend options
70 CF_ARG_OPTION(ldbm,[    --enable-ldbm   enable ldbm backend (yes)],[
71         SLAPD_LDBM=no],[SLAPD_LDBM=yes],yes)dnl
72 CF_ARG_OPTION(passwd,[    --enable-passwd       enable passwd backend (yes)],[
73         SLAPD_PASSWD=no],[SLAPD_PASSWD=yes],yes)dnl
74 CF_ARG_OPTION(shell,[    --enable-shell enable shell backend (yes)],[
75         SLAPD_SHELL=no],[SLAPD_SHELL=yes],yes)dnl
76
77 AC_ARG_WITH(ndbm,[    --with-ndbm               use NDB for LDBM backend (any)],[
78         opt_ndbm=yes],[opt_ndbm=no])
79 AC_ARG_WITH(gdbm,[    --with-gdbm               use GDBM for LDBM backend (any)],[
80         opt_gdbm=yes],[opt_gdbm=no])
81 AC_ARG_WITH(dbhash,[    --with-dbhash   use Berkeley DB Hash for LDBM backend (any)],[
82         opt_dbhash=yes],[opt_dbhash=no])
83 AC_ARG_WITH(dbbtree,[    --with-dbbtree use Berkeley DB Btrees for LDBM backend (any)],[
84         opt_dbbtree=yes],[opt_dbbtree=no])
85 AC_ARG_WITH(db2,[    --with-db2         use Berkeley DB2 API (any)],[
86         opt_db2=yes],[opt_db2=no])
87
88 dnl SLURPD OPTIONS
89 CF_ARG_OPTION(slurpd,[  --enable-slurpd enable building slurpd (yes)],[
90         BUILD_SLURPD=no],[BUILD_SLURPD=yes],yes)dnl
91
92 AC_MSG_RESULT(done)
93
94 AC_MSG_CHECKING(LDBM preferences)
95 ldbm_prefer=any
96
97 if test "$opt_ndbm" = yes ; then
98         ldbm_prefer=ndbm
99 fi
100 if test "$opt_gdbm" = yes ; then
101         ldbm_prefer=gdbm
102 fi
103 if test "$opt_dbhash" = yes ; then
104         ldbm_prefer=dbhash
105 fi
106 if test "$opt_dbbtree" = yes ; then
107         ldbm_prefer=dbbtree
108 fi
109 AC_MSG_RESULT($ldbm_prefer)
110
111 if test "$BUILD_SLAPD" != "yes" ; then
112         BUILD_SLURPD="no"
113         SLAPD_LDBM="no"
114         SLAPD_PASSWD="no"
115         SLAPD_SHELL="no"
116         ldbm_prefer="none"
117 fi
118
119 ## general LDAP arguments
120 LDAP_DEFS=
121 LDAP_LIBS=
122
123 if test "$LDAP_DEBUG" = "yes" ; then
124         LDAP_DEFS="$LDAP_DEFS -DLDAP_DEBUG"
125 fi
126 if test "$LDAP_REFERRALS" = "yes" ; then
127         AC_DEFINE(LDAP_REFERRALS,1)
128         LDAP_DEFS="$LDAP_DEFS -DLDAP_REFERRALS"
129 fi
130 if test "$LDAP_CACHE" = "no" ; then
131         AC_DEFINE(LDAP_NOCACHE,1)
132         LDAP_DEFS="$LDAP_DEFS -DNO_CACHE"
133 fi
134 if test "$LDAP_CLDAP" = "yes" ; then
135         AC_DEFINE(LDAP_CONNECTIONLESS,1)
136         LDAP_DEFS="$LDAP_DEFS -DCLDAP"
137 fi
138
139 LTHREAD_LIBS=
140 if test "$opt_thread" = "no" ; then
141         LTHREAD_DEFS="-DNO_THREADS"
142         BUILD_SLURPD=no
143 else
144         LTHREAD_DEFS="-DNO_THREADS"
145 fi
146
147 ## ldapd arguments
148 LDAPD_DEFS=
149 LDAPD_LIBS=
150
151 ## slapd arguments
152 SLAPD_DEFS=
153 SLAPD_LIBS=
154 if test "$SLAPD_PHONETIC" = "yes" ; then
155         AC_DEFINE(SLAPD_PHONETIC,1)
156         SLAPD_DEFS="$SLAPD_DEFS -DSOUNDEX"
157 fi
158
159 if test "$SLAPD_LDBM" = "yes" ; then
160 dnl     AC_DEFINE(SLAPD_LDBM,1)
161         SLAPD_DEFS="$SLAPD_DEFS -DLDAP_LDBM"
162 fi
163 if test "$SLAPD_PASSWD" = "yes" ; then
164 dnl     AC_DEFINE(SLAPD_PASSWD,1)
165         SLAPD_DEFS="$SLAPD_DEFS -DLDAP_PASSWD"
166 fi
167 if test "$SLAPD_SHELL" = "yes" ; then
168 dnl     AC_DEFINE(SLAPD_SHELL,1)
169         SLAPD_DEFS="$SLAPD_DEFS -DLDAP_SHELL"
170 fi
171
172 dnl slurpd arguments
173 SLURPD_DEFS=
174 SLURPD_LIBS=
175
176 dnl End Args
177
178 dnl Checks for programs.
179 AC_PROG_CC
180 AC_PROG_GCC_TRADITIONAL
181
182 AC_PROG_LN_S
183 AC_PROG_INSTALL
184 AC_PROG_RANLIB
185 AC_PROG_MAKE_SET
186
187 AC_PATH_PROG(SENDMAIL, sendmail, /usr/lib/sendmail,
188         $PATH:/usr/libexec:/usr/lib:/usr/sbin:/usr/etc:/etc)
189 AC_PATH_PROG(EDITOR, vi, /usr/ucb/vi, $PATH:/usr/ucb)
190 AC_PATH_PROG(FINGER, finger, /usr/ucb/finger, $PATH:/usr/ucb)
191
192 ldbm_use="none"
193 LDBM_DEFS=
194 LDBM_LIBS=
195
196 if test "$SLAPD_LDBM" = "yes" ; then
197         if test $ldbm_prefer = any -o $ldbm_prefer = dbbtree \
198                         -o $ldbm_prefer = dbhash ; then
199                 AC_CHECK_FUNC(dbopen,[
200                         ldbm_use=$ldbm_prefer
201                         ldbm_prefer=found],[
202                         AC_CHECK_LIB(db,dbopen,[
203                                 ldbm_use=$ldbm_prefer
204                                 ldbm_prefer=found
205                                 LDBM_LIBS="$LDBM_LIBS -ldb"
206                         ]) 
207                 ])
208
209                 if test $ldbm_prefer = found ; then
210                         if test $ldbm_use = dbhash ; then
211 dnl                             AC_DEFINE(LDBM_USE_DBHASH,1)
212                                 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBHASH"
213                         else
214 dnl                             AC_DEFINE(LDBM_USE_DBBTREE,1)
215                                 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DBBTREE"
216                         fi
217                 fi
218
219                 AC_MSG_CHECKING(for db2)
220                 AC_CACHE_VAL(cf_cv_db2,[
221                         AC_EGREP_CPP(__db_version_2,[
222 #include <db.h>
223 /* this check could be improved */
224 #ifdef DB_VERSION_MAJOR
225 #if DB_VERSION_MAJOR == 2
226         __db_version_2
227 #endif
228 #endif
229                         ], cf_cv_db2=yes, cf_cv_db2=no)])
230                 AC_MSG_RESULT($cf_cv_db2)
231
232                 if test $cf_cv_db2 = yes ; then
233                         if test $opt_db2 = yes ; then
234                                 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2"
235                         else
236                                 AC_CHECK_HEADERS(db185.h)
237                                 if test $cf_cv_header_db185 = no ; then
238                                         AC_MSG_ERROR([select --with-db2 or install db2 with 1.85 compatibility])
239                                 fi
240
241                                 LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_DB2_COMPAT185"
242                         fi
243                 else
244                         if test $opt_db2 = yes ; then
245                                 AC_MSG_ERROR(could not local DB2)
246                         fi
247                 fi
248         fi
249
250         if test $ldbm_prefer = any -o $ldbm_prefer = gdbm ; then
251                 AC_CHECK_LIB(gdbm, gdbm_open,[
252                         ldbm_use=$ldbm_prefer
253                         ldbm_prefer=found
254                         LDBM_LIBS="$LDBM_LIBS -lgdbm"
255 dnl                     AC_DEFINE(LDBM_USE_GDBM,1)
256                         LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_GDBM"
257                 ]) 
258         fi
259         if test $ldbm_prefer = any -o $ldbm_prefer = ndbm ; then
260                 AC_CHECK_LIB(dbm,dbm_open,[
261                         ldbm_use=ndbm
262                         ldbm_prefer=found
263                         LDBM_LIBS="$LDBM_LIBS -ldbm"
264 dnl                     AC_DEFINE(LDBM_USE_NDBM,1)
265                         LDBM_DEFS="$LDBM_DEFS -DLDBM_USE_NDBM"
266                 ]) 
267         fi
268
269         if test $ldbm_prefer != found ; then
270                 AC_MSG_ERROR(could not find suitable db for $ldbm_prefer backend)
271         fi
272
273         if test $ldbm_use = ndbm ; then
274                 AC_MSG_WARN(LDBM using NDBM, functionality will be limited)
275         fi
276 fi
277
278 # ud needs termcap (should insert check here)
279 LIBTERMCAP="-ltermcap"
280 AC_SUBST(LIBTERMCAP)
281
282 # FreeBSD (and others) have crypt(3) in -lcrypt
283 LIBCRYPT=
284 AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT), [
285         AC_CHECK_LIB(crypt, crypt, [LIBCRYPT="-lcrypt"
286         AC_DEFINE(HAVE_CRYPT)])
287 ])
288 AC_SUBST(LIBCRYPT)
289
290 dnl Checks for header files.
291 AC_HEADER_DIRENT
292 AC_HEADER_STDC
293 AC_HEADER_SYS_WAIT
294 AC_CHECK_HEADERS( \
295         stddef.h        \
296         fcntl.h         \
297         limits.h        \
298         malloc.h        \
299         sgtty.h         \
300         sys/file.h      \
301         sys/ioctl.h     \
302         sys/time.h      \
303         syslog.h        \
304         termio.h        \
305         unistd.h        \
306 )
307
308 dnl Checks for typedefs, structures, and compiler characteristics.
309 AC_TYPE_GETGROUPS
310 AC_TYPE_MODE_T
311 AC_TYPE_OFF_T
312 AC_TYPE_PID_T
313 AC_TYPE_SIGNAL
314 AC_TYPE_SIZE_T
315 AC_TYPE_UID_T
316 AC_STRUCT_ST_BLKSIZE
317 AC_HEADER_TIME
318 AC_STRUCT_TM
319
320 dnl AC_C_BIGENDIAN
321 AC_C_CONST
322
323 dnl Checks for library functions.
324 AC_FUNC_MEMCMP
325 AC_TYPE_SIGNAL
326 AC_FUNC_STRFTIME
327 AC_FUNC_VPRINTF
328 AC_FUNC_WAIT3
329
330 AC_CHECK_FUNCS(         \
331         gethostname             \
332         gettimeofday    \
333         mktime                  \
334         select                  \
335         socket                  \
336         strdup                  \
337         strerror                \
338         strstr                  \
339         strrchr                 \
340         strtod                  \
341         strtol                  \
342         strtoul                 \
343         memcpy                  \
344 )
345
346 AC_REPLACE_FUNCS(strdup)
347
348 # Check Configuration
349 CF_SYS_ERRLIST
350
351 AC_SUBST(BUILD_LDAPD)
352
353 AC_SUBST(BUILD_SLAPD)
354   AC_SUBST(SLAPD_LDBM)
355   AC_SUBST(SLAPD_PASSWD)
356   AC_SUBST(SLAPD_SHELL)
357
358 AC_SUBST(BUILD_SLURPD)
359
360 AC_SUBST(LDAP_DEFS)
361 AC_SUBST(LDAP_LIBS)
362 AC_SUBST(LDAPD_DEFS)
363 AC_SUBST(LDAPD_LIBS)
364 AC_SUBST(SLAPD_DEFS)
365 AC_SUBST(SLAPD_LIBS)
366 AC_SUBST(SLURPD_DEFS)
367 AC_SUBST(SLURPD_LIBS)
368 AC_SUBST(LDBM_DEFS)
369 AC_SUBST(LDBM_LIBS)
370 AC_SUBST(LTHREAD_DEFS)
371 AC_SUBST(LTHREAD_LIBS)
372
373 dnl AC_OUTPUT( \
374 dnl contrib/Makefile:build/top.mk:contrib/Makefile.in:build/dir.mk \
375 dnl contrib/saucer/Makefile:build/top.mk:contrib/saucer/Makefile.in:build/rules.mk \
376 dnl contrib/whois++/Makefile:build/top.mk:contrib/whois++/Makefile.in:build/rules.mk \
377 dnl [date > stamp-h])
378
379 AC_OUTPUT( \
380 Makefile:build/top.mk:Makefile.in:build/dir.mk \
381 doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \
382 doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \
383 doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \
384 doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \
385 doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \
386 doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \
387 clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \
388 clients/finger/Makefile:build/top.mk:clients/finger/Makefile.in:build/rules.mk \
389 clients/fax500/Makefile:build/top.mk:clients/fax500/Makefile.in:build/rules.mk \
390 clients/gopher/Makefile:build/top.mk:clients/gopher/Makefile.in:build/rules.mk \
391 clients/mail500/Makefile:build/top.mk:clients/mail500/Makefile.in:build/rules.mk \
392 clients/rcpt500/Makefile:build/top.mk:clients/rcpt500/Makefile.in:build/rules.mk \
393 clients/ud/Makefile:build/top.mk:clients/ud/Makefile.in:build/rules.mk \
394 clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \
395 include/Makefile:build/top.mk:include/Makefile.in \
396 libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk      \
397 libraries/libavl/Makefile:build/top.mk:libraries/libavl/Makefile.in:build/lib.mk \
398 libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk \
399 libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk \
400 libraries/libldbm/Makefile:build/top.mk:libraries/libldbm/Makefile.in:build/lib.mk \
401 libraries/libldif/Makefile:build/top.mk:libraries/libldif/Makefile.in:build/lib.mk \
402 libraries/liblthread/Makefile:build/top.mk:libraries/liblthread/Makefile.in:build/lib.mk \
403 libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk \
404 servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
405 servers/ldapd/Makefile:build/top.mk:servers/ldapd/Makefile.in:build/srv.mk \
406 servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
407 servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/srv.mk \
408 servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/srv.mk \
409 servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/srv.mk \
410 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
411 servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
412 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
413 tests/Makefile:build/top.mk:tests/Makefile.in \
414 ,[date > stamp-h])