xref: /netbsd/external/bsd/openldap/dist/configure.ac (revision 92cfeba6)
1dnl $OpenLDAP$
2dnl This work is part of OpenLDAP Software <http://www.openldap.org/>.
3dnl
4dnl Copyright 1998-2021 The OpenLDAP Foundation.
5dnl All rights reserved.
6dnl
7dnl Redistribution and use in source and binary forms, with or without
8dnl modification, are permitted only as authorized by the OpenLDAP
9dnl Public License.
10dnl
11dnl A copy of this license is available in the file LICENSE in the
12dnl top-level directory of the distribution or, alternatively, at
13dnl <http://www.OpenLDAP.org/license.html>.
14dnl
15dnl ----------------------------------------------------------------
16dnl Disable config.cache!
17define([AC_CACHE_LOAD], )dnl
18define([AC_CACHE_SAVE], )dnl
19dnl ----------------------------------------------------------------
20dnl Disable libtool 1.5 support for languages we don't use
21define([AC_LIBTOOL_LANG_CXX_CONFIG], [:])dnl
22define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl
23define([AC_LIBTOOL_LANG_GCJ_CONFIG], [:])dnl
24dnl ================================================================
25dnl Configure.in for OpenLDAP
26AC_COPYRIGHT([[Copyright 1998-2021 The OpenLDAP Foundation. All rights reserved.
27Restrictions apply, see COPYRIGHT and LICENSE files.]])
28AC_REVISION([Id: c8892a2009b69f5948d96e4a90b672eeb1ded5e1 ])
29AC_INIT([OpenLDAP],,[https://bugs.openldap.org],,[https://www.openldap.org])
30AC_CONFIG_SRCDIR(build/version.sh)dnl
31dnl ----------------------------------------------------------------
32dnl OpenLDAP Autoconf Macros
33builtin(include, build/openldap.m4)dnl
34dnl ================================================================
35
36m4_ifndef([PKG_PREREQ],
37	[m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
38
39AC_CONFIG_AUX_DIR(build)dnl
40AC_CONFIG_MACRO_DIRS([build])
41
42eval `$ac_aux_dir/version.sh`
43if test -z "$OL_STRING"; then
44	AC_MSG_ERROR([could not determine version])
45fi
46
47if test -f "$ac_aux_dir/shtool" && test ! -d $ac_aux_dir/shtool; then
48	ac_cv_shtool="$ac_aux_dir/shtool"
49else
50	AC_MSG_ERROR([no shtool found in $ac_aux_dir])
51fi
52
53SHTOOL="$ac_cv_shtool"
54dnl AC_SUBST(SHTOOL)dnl
55
56TB="" TN=""
57if test -t 1; then
58	TB="`$SHTOOL echo -e '%B' 2>/dev/null`"
59	TN="`$SHTOOL echo -e '%b' 2>/dev/null`"
60fi
61
62OPENLDAP_REPO=""
63if test -d $ac_aux_dir/../.git; then
64	OPENLDAP_REPO="(from Git clone) "
65elif test -d $ac_aux_dir/CVS; then
66	OPENLDAP_REPO="(from CVS checkout) "
67fi
68
69echo "Configuring ${TB}${OL_STRING}${TN} ${OPENLDAP_REPO}..."
70
71dnl Determine host platform
72dnl		we try not to use this for much
73AC_CANONICAL_TARGET([])
74
75AC_SUBST(PACKAGE,$OL_PACKAGE)dnl
76AC_SUBST(VERSION,$OL_VERSION)dnl
77AC_DEFINE_UNQUOTED(OPENLDAP_PACKAGE,"$PACKAGE",Package)
78AC_DEFINE_UNQUOTED(OPENLDAP_VERSION,"$VERSION",Version)
79
80AC_DEFINE_UNQUOTED(LDAP_VENDOR_VERSION,$OL_API_INC,Version)
81AC_DEFINE_UNQUOTED(LDAP_VENDOR_VERSION_MAJOR,$OL_MAJOR,Major)
82AC_DEFINE_UNQUOTED(LDAP_VENDOR_VERSION_MINOR,$OL_MINOR,Minor)
83AC_DEFINE_UNQUOTED(LDAP_VENDOR_VERSION_PATCH,$OL_PATCH,Patch)
84
85OPENLDAP_LIBRELEASE=$OL_API_LIB_RELEASE
86AC_SUBST(OPENLDAP_LIBRELEASE)dnl
87
88OPENLDAP_LIBVERSION=$OL_API_LIB_VERSION
89AC_SUBST(OPENLDAP_LIBVERSION)dnl
90
91OPENLDAP_RELEASE_DATE="$OL_RELEASE_DATE"
92AC_SUBST(OPENLDAP_RELEASE_DATE)dnl
93
94AC_PREREQ(2.69)dnl Required Autoconf version
95
96AH_TOP([
97/* begin of portable.h.pre */
98/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
99 *
100 * Copyright 1998-2021 The OpenLDAP Foundation
101 * All rights reserved.
102 *
103 * Redistribution and use in source and binary forms, with or without
104 * modification, are permitted only as authorized by the OpenLDAP
105 * Public License.
106 *
107 * A copy of this license is available in the file LICENSE in the
108 * top-level directory of the distribution or, alternatively, at
109 * <http://www.OpenLDAP.org/license.html>.
110 */
111
112#ifndef _LDAP_PORTABLE_H
113#define _LDAP_PORTABLE_H
114
115/* define this if needed to get reentrant functions */
116#ifndef REENTRANT
117#undef REENTRANT
118#endif
119#ifndef _REENTRANT
120#undef _REENTRANT
121#endif
122
123/* define this if needed to get threadsafe functions */
124#ifndef THREADSAFE
125#undef THREADSAFE
126#endif
127#ifndef _THREADSAFE
128#undef _THREADSAFE
129#endif
130#ifndef THREAD_SAFE
131#undef THREAD_SAFE
132#endif
133#ifndef _THREAD_SAFE
134#undef _THREAD_SAFE
135#endif
136
137#ifndef _SGI_MP_SOURCE
138#undef _SGI_MP_SOURCE
139#endif
140
141/* end of portable.h.pre */
142])
143AH_BOTTOM([
144/* begin of portable.h.post */
145
146#ifdef _WIN32
147	/* don't suck in all of the win32 api */
148#	define WIN32_LEAN_AND_MEAN 1
149#endif
150
151#ifndef LDAP_NEEDS_PROTOTYPES
152/* force LDAP_P to always include prototypes */
153#define LDAP_NEEDS_PROTOTYPES 1
154#endif
155
156#ifndef LDAP_REL_ENG
157#if (LDAP_VENDOR_VERSION == 000000) && !defined(LDAP_DEVEL)
158#define LDAP_DEVEL
159#endif
160#if defined(LDAP_DEVEL) && !defined(LDAP_TEST)
161#define LDAP_TEST
162#endif
163#endif
164
165#ifdef HAVE_STDDEF_H
166#	include <stddef.h>
167#endif
168
169#ifdef HAVE_EBCDIC
170/* ASCII/EBCDIC converting replacements for stdio funcs
171 * vsnprintf and snprintf are used too, but they are already
172 * checked by the configure script
173 */
174#define fputs ber_pvt_fputs
175#define fgets ber_pvt_fgets
176#define printf ber_pvt_printf
177#define fprintf ber_pvt_fprintf
178#define vfprintf ber_pvt_vfprintf
179#define vsprintf ber_pvt_vsprintf
180#endif
181
182#include "ac/fdset.h"
183
184#include "ldap_cdefs.h"
185#include "ldap_features.h"
186
187#include "ac/assert.h"
188#include "ac/localize.h"
189
190#endif /* _LDAP_PORTABLE_H */
191/* end of portable.h.post */
192])
193
194AC_CONFIG_HEADERS([include/portable.h:include/portable.hin])
195AC_CONFIG_HEADERS([include/ldap_features.h:include/ldap_features.hin])
196AC_CONFIG_HEADERS([include/lber_types.h:include/lber_types.hin])
197
198dnl ================================================================
199dnl Start Args
200AC_MSG_CHECKING(configure arguments)
201AC_PREFIX_DEFAULT(/usr/local)
202
203top_builddir=`pwd`
204AC_SUBST(top_builddir)dnl
205
206dnl ----------------------------------------------------------------
207dnl --with-subdir
208ldap_subdir="/openldap"
209
210AC_ARG_WITH(subdir,
211[  --with-subdir=DIR       change default subdirectory used for installs],
212[case "$withval" in
213	no) ldap_subdir=""
214		;;
215	yes)
216		;;
217	/*|\\*)
218		ldap_subdir="$withval"
219		;;
220	*)
221		ldap_subdir="/$withval"
222		;;
223esac
224])dnl
225
226AC_SUBST(ldap_subdir)dnl
227
228dnl ----------------------------------------------------------------
229dnl General "enable" options
230dnl set default to traditional to enable the original debug style
231OL_ARG_ENABLE(debug, [AS_HELP_STRING([--enable-debug], [enable debugging])], yes, [no yes traditional])dnl
232OL_ARG_ENABLE(dynamic, [AS_HELP_STRING([--enable-dynamic], [enable linking built binaries with dynamic libs])], auto)dnl
233OL_ARG_ENABLE(syslog, [AS_HELP_STRING([--enable-syslog], [enable syslog support])], auto)dnl
234dnl OL_ARG_ENABLE(referrals,[AS_HELP_STRING([--enable-referrals], [enable LDAPv2+ Referrals (experimental)])], no)dnl
235ol_enable_referrals=${ol_enable_referrals-no}
236OL_ARG_ENABLE(ipv6, [AS_HELP_STRING([--enable-ipv6], [enable IPv6 support])], auto)dnl
237OL_ARG_ENABLE(local, [AS_HELP_STRING([--enable-local], [enable AF_LOCAL (AF_UNIX) socket support])], auto)dnl
238
239dnl ----------------------------------------------------------------
240dnl General "with" options
241OL_ARG_WITH(cyrus_sasl, [AS_HELP_STRING([--with-cyrus-sasl], [with Cyrus SASL support])],
242	auto, [auto yes no] )
243OL_ARG_WITH(systemd, [AS_HELP_STRING([--with-systemd],	[with systemd service notification support])],
244	auto, [auto yes no] )
245OL_ARG_WITH(fetch, [AS_HELP_STRING([--with-fetch], [with fetch(3) URL support])],
246	auto, [auto yes no] )
247OL_ARG_WITH(threads,
248	[AS_HELP_STRING([--with-threads], [with threads library auto|nt|posix|pth|lwp|manual])],
249	auto, [auto nt posix pth lwp yes no manual] )
250OL_ARG_WITH(tls,
251	[AS_HELP_STRING([--with-tls], [with TLS/SSL support auto|openssl|gnutls])],
252	auto, [auto openssl gnutls yes no] )
253OL_ARG_WITH(yielding_select,
254	[AS_HELP_STRING([--with-yielding-select], [with implicitly yielding select])],
255	auto, [auto yes no manual] )
256OL_ARG_WITH(mp,
257	[AS_HELP_STRING([--with-mp], [with multiple precision statistics auto|longlong|long|bignum|gmp])],
258	auto, [auto longlong long bignum gmp yes no])
259OL_ARG_WITH(odbc,
260	[AS_HELP_STRING([--with-odbc], [with specific ODBC support iodbc|unixodbc|odbc32|auto])],
261	auto, [auto iodbc unixodbc odbc32] )
262
263dnl ----------------------------------------------------------------
264dnl Server options
265dnl ----------------------------------------------------------------
266
267dnl ----------------------------------------------------------------
268dnl SLAPD OPTIONS
269SlapdOptions="dynacl \
270	aci \
271	cleartext \
272	crypt \
273	spasswd \
274	modules \
275	rlookups \
276	slapi \
277	slp \
278	wrappers"
279
280AC_ARG_ENABLE(xxslapdoptions,[
281SLAPD (Standalone LDAP Daemon) Options:])
282
283OL_ARG_ENABLE(slapd, [AS_HELP_STRING([--enable-slapd], [enable building slapd])], yes)dnl
284OL_ARG_ENABLE(dynacl, [AS_HELP_STRING([--enable-dynacl], [enable run-time loadable ACL support (experimental)])], no)dnl
285OL_ARG_ENABLE(aci, [AS_HELP_STRING([--enable-aci], [enable per-object ACIs (experimental)])], no, [no yes mod])dnl
286OL_ARG_ENABLE(cleartext, [AS_HELP_STRING([--enable-cleartext], [enable cleartext passwords])], yes)dnl
287OL_ARG_ENABLE(crypt, [AS_HELP_STRING([--enable-crypt], [enable crypt(3) passwords])], no)dnl
288OL_ARG_ENABLE(spasswd, [AS_HELP_STRING([--enable-spasswd], [enable (Cyrus) SASL password verification])], no)dnl
289OL_ARG_ENABLE(modules, [AS_HELP_STRING([--enable-modules], [enable dynamic module support])], no)dnl
290OL_ARG_ENABLE(rlookups, [AS_HELP_STRING([--enable-rlookups], [enable reverse lookups of client hostnames])], no)dnl
291OL_ARG_ENABLE(slapi, [AS_HELP_STRING([--enable-slapi], [enable SLAPI support (experimental)])], no)dnl
292OL_ARG_ENABLE(slp, [AS_HELP_STRING([--enable-slp], [enable SLPv2 support])], no)dnl
293OL_ARG_ENABLE(wrappers, [AS_HELP_STRING([--enable-wrappers], [enable tcp wrapper support])], no)dnl
294
295dnl ----------------------------------------------------------------
296dnl SLAPD Backend Options
297Backends="dnssrv \
298	ldap \
299	mdb \
300	meta \
301	asyncmeta \
302	ndb \
303	null \
304	passwd \
305	perl \
306	relay \
307	sock \
308	sql \
309	wt"
310
311AC_ARG_ENABLE(xxslapbackends,[
312SLAPD Backend Options:])
313
314OL_ARG_ENABLE(backends, [AS_HELP_STRING([--enable-backends], [enable all available backends])],
315	--, [no yes mod])dnl
316OL_ARG_ENABLE(dnssrv, [AS_HELP_STRING([--enable-dnssrv], [enable dnssrv backend])],
317	no, [no yes mod], ol_enable_backends)dnl
318OL_ARG_ENABLE(ldap, [AS_HELP_STRING([--enable-ldap], [enable ldap backend])],
319	no, [no yes mod], ol_enable_backends)dnl
320OL_ARG_ENABLE(mdb, [AS_HELP_STRING([--enable-mdb], [enable mdb database backend])],
321	yes, [no yes mod], ol_enable_backends)dnl
322OL_ARG_ENABLE(meta, [AS_HELP_STRING([--enable-meta], [enable metadirectory backend])],
323	no, [no yes mod], ol_enable_backends)dnl
324OL_ARG_ENABLE(asyncmeta, [AS_HELP_STRING([--enable-asyncmeta], [enable asynchronous metadirectory backend])],
325	no, [no yes mod], ol_enable_backends)dnl
326OL_ARG_ENABLE(ndb, [AS_HELP_STRING([--enable-ndb], [enable MySQL NDB Cluster backend])],
327	no, [no yes mod])dnl
328OL_ARG_ENABLE(null, [AS_HELP_STRING([--enable-null], [enable null backend])],
329	no, [no yes mod], ol_enable_backends)dnl
330OL_ARG_ENABLE(passwd, [AS_HELP_STRING([--enable-passwd], [enable passwd backend])],
331	no, [no yes mod], ol_enable_backends)dnl
332OL_ARG_ENABLE(perl, [AS_HELP_STRING([--enable-perl], [enable perl backend])],
333	no, [no yes mod])dnl
334OL_ARG_ENABLE(relay, [AS_HELP_STRING([--enable-relay], [enable relay backend])],
335	yes, [no yes mod], ol_enable_backends)dnl
336OL_ARG_ENABLE(sock, [AS_HELP_STRING([--enable-sock], [enable sock backend])],
337	no, [no yes mod], ol_enable_backends)dnl
338OL_ARG_ENABLE(sql, [AS_HELP_STRING([--enable-sql], [enable sql backend])],
339	no, [no yes mod])dnl
340OL_ARG_ENABLE(wt, [AS_HELP_STRING([--enable-wt], [enable WiredTiger backend])],
341	no, [no yes mod], ol_enable_backends)dnl
342
343dnl ----------------------------------------------------------------
344dnl SLAPD Overlay Options
345Overlays="accesslog \
346	auditlog \
347	autoca \
348	collect \
349	constraint \
350	dds \
351	deref \
352	dyngroup \
353	dynlist \
354	homedir \
355	memberof \
356	otp \
357	ppolicy \
358	proxycache \
359	refint \
360	remoteauth \
361	retcode \
362	rwm \
363	seqmod \
364	sssvlv \
365	syncprov \
366	translucent \
367	unique \
368	valsort"
369
370Pwmods="argon2"
371
372AC_ARG_ENABLE(xxslapoverlays,[
373SLAPD Overlay Options:])
374
375OL_ARG_ENABLE(overlays, [AS_HELP_STRING([--enable-overlays], [enable all available overlays])],
376	--, [no yes mod])dnl
377OL_ARG_ENABLE(accesslog, [AS_HELP_STRING([--enable-accesslog], [In-Directory Access Logging overlay])],
378	no, [no yes mod], ol_enable_overlays)
379OL_ARG_ENABLE(auditlog, [AS_HELP_STRING([--enable-auditlog], [Audit Logging overlay])],
380	no, [no yes mod], ol_enable_overlays)
381OL_ARG_ENABLE(autoca, [AS_HELP_STRING([--enable-autoca], [Automatic Certificate Authority overlay])],
382	no, [no yes mod], ol_enable_overlays)
383OL_ARG_ENABLE(collect, [AS_HELP_STRING([--enable-collect], [Collect overlay])],
384	no, [no yes mod], ol_enable_overlays)
385OL_ARG_ENABLE(constraint, [AS_HELP_STRING([--enable-constraint], [Attribute Constraint overlay])],
386	no, [no yes mod], ol_enable_overlays)
387OL_ARG_ENABLE(dds, [AS_HELP_STRING([--enable-dds], [Dynamic Directory Services overlay])],
388	no, [no yes mod], ol_enable_overlays)
389OL_ARG_ENABLE(deref, [AS_HELP_STRING([--enable-deref], [Dereference overlay])],
390	no, [no yes mod], ol_enable_overlays)
391OL_ARG_ENABLE(dyngroup, [AS_HELP_STRING([--enable-dyngroup], [Dynamic Group overlay])],
392	no, [no yes mod], ol_enable_overlays)
393OL_ARG_ENABLE(dynlist, [AS_HELP_STRING([--enable-dynlist], [Dynamic List overlay])],
394	no, [no yes mod], ol_enable_overlays)
395OL_ARG_ENABLE(homedir, [AS_HELP_STRING([--enable-homedir], [Home Directory Management overlay])],
396	no, [no yes mod], ol_enable_overlays)
397OL_ARG_ENABLE(memberof, [AS_HELP_STRING([--enable-memberof], [Reverse Group Membership overlay])],
398	no, [no yes mod], ol_enable_overlays)
399OL_ARG_ENABLE(otp, [AS_HELP_STRING([--enable-otp], [OTP 2-factor authentication overlay])],
400	no, [no yes mod], ol_enable_overlays)
401OL_ARG_ENABLE(ppolicy, [AS_HELP_STRING([--enable-ppolicy], [Password Policy overlay])],
402	no, [no yes mod], ol_enable_overlays)
403OL_ARG_ENABLE(proxycache, [AS_HELP_STRING([--enable-proxycache], [Proxy Cache overlay])],
404	no, [no yes mod], ol_enable_overlays)
405OL_ARG_ENABLE(refint, [AS_HELP_STRING([--enable-refint], [Referential Integrity overlay])],
406	no, [no yes mod], ol_enable_overlays)
407OL_ARG_ENABLE(remoteauth, [AS_HELP_STRING([--enable-remoteauth], [Deferred Authentication overlay])],
408	no, [no yes mod], ol_enable_overlays)
409OL_ARG_ENABLE(retcode, [AS_HELP_STRING([--enable-retcode], [Return Code testing overlay])],
410	no, [no yes mod], ol_enable_overlays)
411OL_ARG_ENABLE(rwm, [AS_HELP_STRING([--enable-rwm], [Rewrite/Remap overlay])],
412	no, [no yes mod], ol_enable_overlays)
413OL_ARG_ENABLE(seqmod, [AS_HELP_STRING([--enable-seqmod], [Sequential Modify overlay])],
414	no, [no yes mod], ol_enable_overlays)
415OL_ARG_ENABLE(sssvlv, [AS_HELP_STRING([--enable-sssvlv], [ServerSideSort/VLV overlay])],
416	no, [no yes mod], ol_enable_overlays)
417OL_ARG_ENABLE(syncprov, [AS_HELP_STRING([--enable-syncprov], [Syncrepl Provider overlay])],
418	yes, [no yes mod], ol_enable_overlays)
419OL_ARG_ENABLE(translucent, [AS_HELP_STRING([--enable-translucent], [Translucent Proxy overlay])],
420	no, [no yes mod], ol_enable_overlays)
421OL_ARG_ENABLE(unique, [AS_HELP_STRING([--enable-unique], [Attribute Uniqueness overlay])],
422	no, [no yes mod], ol_enable_overlays)
423OL_ARG_ENABLE(valsort, [AS_HELP_STRING([--enable-valsort], [Value Sorting overlay])],
424	no, [no yes mod], ol_enable_overlays)
425
426dnl ----------------------------------------------------------------
427dnl PASSWORD MODULE OPTIONS
428AC_ARG_ENABLE(pwmodoptions,[
429SLAPD Password Module Options:])
430OL_ARG_ENABLE(argon2, [AS_HELP_STRING([--enable-argon2], [Argon2 password hashing module])],
431	no, [no yes], ol_enable_pwmodules)
432OL_ARG_WITH(argon2,
433	[AS_HELP_STRING([--with-argon2], [with argon2 support library auto|libsodium|libargon2])],
434	auto, [auto libsodium libargon2 yes no] )
435
436dnl ----------------------------------------------------------------
437dnl BALANCER OPTIONS
438AC_ARG_ENABLE(balanceroptions,[
439LLOADD (Load Balancer Daemon) Options:])
440OL_ARG_ENABLE(balancer, [AS_HELP_STRING([--enable-balancer], [enable load balancer])],
441	no, [no yes mod])
442
443dnl ----------------------------------------------------------------
444AC_ARG_ENABLE(xxliboptions,[
445Library Generation & Linking Options])
446AC_ENABLE_STATIC
447AC_ENABLE_SHARED
448OL_ARG_ENABLE(versioning, [AS_HELP_STRING([--enable-versioning], [Enable versioned symbols in shared library])],
449	auto, [no yes auto])
450dnl ----------------------------------------------------------------
451dnl Validate options
452dnl ----------------------------------------------------------------
453
454if test $ol_enable_slapd = no ; then
455	dnl SLAPD was specifically disabled
456	dnl Disable all of its options
457
458	for i in $SlapdOptions; do
459		eval "ol_tmp=\$ol_enable_$i"
460		if test $ol_tmp = yes ; then
461			AC_MSG_WARN([slapd disabled, ignoring --enable-$i argument])
462			eval "ol_enable_$i=no"
463		fi
464	done
465
466	for i in $Backends $Overlays $Pwmods; do
467		eval "ol_tmp=\$ol_enable_$i"
468		if test $ol_tmp != no ; then
469			AC_MSG_WARN([slapd disabled, ignoring --enable-$i argument])
470			eval "ol_enable_$i=no"
471		fi
472	done
473
474	if test $ol_enable_balancer = mod ; then
475		AC_MSG_WARN([slapd disabled, ignoring --enable-balancer=mod argument])
476		ol_enable_balancer=no
477	fi
478else
479	dnl If slapd enabled and loadable module support disabled
480	dnl then require at least one built-in backend
481
482	if test $ol_enable_modules = no; then
483
484		for i in backends overlays balancer $Backends $Overlays; do
485			eval "ol_tmp=\$ol_enable_$i"
486			if test -n "$ol_tmp" && test "$ol_tmp" = mod ; then
487				AC_MSG_ERROR([--enable-$i=mod requires --enable-modules])
488			fi
489		done
490
491		for i in $Pwmods; do
492			eval "ol_tmp=\$ol_enable_$i"
493			if test -n "$ol_tmp" && test "$ol_tmp" = yes ; then
494				AC_MSG_ERROR([--enable-$i=yes requires --enable-modules])
495			fi
496		done
497
498		ol_any_backend=no
499		for i in $Backends; do
500			eval "ol_tmp=\$ol_enable_$i"
501			if test $ol_tmp = yes; then
502				ol_any_backend=yes
503			fi
504		done
505
506		if test $ol_any_backend = no; then
507			AC_MSG_ERROR([slapd requires a backend])
508		fi
509	fi
510fi
511
512if test $ol_enable_aci = yes ; then
513	if test $ol_enable_dynacl = no ; then
514		AC_MSG_ERROR([--enable-aci requires --enable-dynacl])
515	fi
516elif test $ol_enable_aci = mod ; then
517	AC_MSG_ERROR([ACI build as dynamic module not supported (yet)])
518fi
519
520if test $ol_enable_modules = yes ; then
521	if test $ol_enable_dynamic = no ; then
522		AC_MSG_ERROR([--enable-modules requires --enable-dynamic])
523	fi
524	ol_enable_dynamic=yes
525fi
526
527if test $ol_enable_balancer != no ; then
528	dnl Load Balancer was specifically enabled
529	if test $ol_with_threads = no ; then
530		AC_MSG_ERROR([Load balancer requires threads])
531	fi
532fi
533
534if test $ol_enable_spasswd = yes ; then
535	if test $ol_with_cyrus_sasl = no ; then
536		AC_MSG_ERROR([--enable-spasswd requires --with-cyrus-sasl])
537	fi
538	ol_with_cyrus_sasl=yes
539fi
540
541if test $ol_enable_meta/$ol_enable_ldap = yes/no ; then
542	AC_MSG_ERROR([--enable-meta requires --enable-ldap])
543fi
544
545if test $ol_enable_asyncmeta/$ol_enable_ldap = yes/no ; then
546	AC_MSG_ERROR([--enable-asyncmeta requires --enable-ldap])
547fi
548
549AC_MSG_RESULT(done)
550
551dnl ----------------------------------------------------------------
552dnl Initialize vars
553LDAP_LIBS=
554SLAPD_NDB_LIBS=
555SLAPD_NDB_INCS=
556LTHREAD_LIBS=
557LEVENT_LIBS=
558LUTIL_LIBS=
559
560CLIENT_LIBS=
561
562SLAPD_LIBS=
563BALANCER_LIBS=
564BALANCER_INCLUDE=
565
566BUILD_SLAPD=no
567BUILD_BALANCER=no
568
569BUILD_THREAD=no
570
571BUILD_SLAPI=no
572SLAPD_SLAPI_DEPEND=
573
574BUILD_DNSSRV=no
575BUILD_LDAP=no
576BUILD_MDB=no
577BUILD_META=no
578BUILD_ASYNCMETA=no
579BUILD_NDB=no
580BUILD_NULL=no
581BUILD_PASSWD=no
582BUILD_PERL=no
583BUILD_RELAY=no
584BUILD_SHELL=no
585BUILD_SOCK=no
586BUILD_SQL=no
587BUILD_WT=no
588
589BUILD_ACCESSLOG=no
590BUILD_AUDITLOG=no
591BUILD_AUTOCA=no
592BUILD_CONSTRAINT=no
593BUILD_DDS=no
594BUILD_DENYOP=no
595BUILD_DEREF=no
596BUILD_DYNGROUP=no
597BUILD_DYNLIST=no
598BUILD_LASTMOD=no
599BUILD_HOMEDIR=no
600BUILD_MEMBEROF=no
601BUILD_OTP=no
602BUILD_PPOLICY=no
603BUILD_PROXYCACHE=no
604BUILD_REFINT=no
605BUILD_REMOTEAUTH=no
606BUILD_RETCODE=no
607BUILD_RWM=no
608BUILD_SEQMOD=no
609BUILD_SSSVLV=no
610BUILD_SYNCPROV=no
611BUILD_TRANSLUCENT=no
612BUILD_UNIQUE=no
613BUILD_VALSORT=no
614
615BUILD_PW_ARGON2=no
616
617SLAPD_STATIC_OVERLAYS=
618SLAPD_DYNAMIC_OVERLAYS=
619
620SLAPD_DYNAMIC_PWMODS=
621
622SLAPD_MODULES_LDFLAGS=
623SLAPD_MODULES_CPPFLAGS=
624
625SLAPD_STATIC_BACKENDS="back-ldif back-monitor"
626SLAPD_DYNAMIC_BACKENDS=
627
628SLAPD_PERL_LDFLAGS=
629MOD_PERL_LDFLAGS=
630PERL_CPPFLAGS=
631
632SLAPD_SQL_LDFLAGS=
633SLAPD_SQL_LIBS=
634SLAPD_SQL_INCLUDES=
635
636SASL_LIBS=
637TLS_LIBS=
638WITH_TLS_TYPE=no
639MODULES_LIBS=
640SLAPI_LIBS=
641LIBSLAPI=
642AUTH_LIBS=
643SYSTEMD_LIBS=
644
645SLAPD_SLP_LIBS=
646SLAPD_GMP_LIBS=
647
648dnl ================================================================
649dnl Checks for programs
650
651AC_DEFINE(HAVE_MKVERSION, 1, [define this if you have mkversion])
652
653dnl ----------------------------------------------------------------
654dnl
655dnl Determine which C translator to use
656dnl
657
658dnl AIX Thread requires we use cc_r or xlc_r.
659dnl But only do this IF AIX and CC is not set
660dnl and threads are auto|yes|posix.
661dnl
662dnl If we find cc_r|xlc_r, force pthreads and assume
663dnl		pthread_create is in $LIBS (ie: don't bring in
664dnl		any additional thread libraries)
665dnl If we do not find cc_r|xlc_r, disable threads
666
667ol_aix_threads=no
668case "$target" in
669*-*-aix*) dnl all AIX is not a good idea.
670	if test -z "$CC" ; then
671		case "$ol_with_threads" in
672		auto | yes |  posix) ol_aix_threads=yes ;;
673		esac
674	fi
675;;
676esac
677
678if test $ol_aix_threads = yes ; then
679	if test -z "${CC}" ; then
680		AC_CHECK_PROGS(CC,cc_r xlc_r cc)
681
682		if test "$CC" = cc ; then
683			dnl no CC! don't allow --with-threads
684			if test $ol_with_threads != auto ; then
685				AC_MSG_ERROR([--with-threads requires cc_r (or other suitable compiler) on AIX])
686			else
687				AC_MSG_WARN([disabling threads, no cc_r on AIX])
688			fi
689			ol_with_threads=no
690  		fi
691	fi
692
693	case ${CC} in cc_r | xlc_r)
694		ol_with_threads=posix
695		ol_cv_pthread_create=yes
696		;;
697	esac
698fi
699
700if test -z "${CC}"; then
701	AC_CHECK_PROGS(CC,cc gcc,missing)
702
703	if test "${CC}" = "missing" ; then
704		AC_MSG_ERROR([Unable to locate cc(1) or suitable replacement.  Check PATH or set CC.])
705	fi
706fi
707
708if test -z "${AR}"; then
709	AC_CHECK_PROGS(AR,ar gar,missing)
710
711	if test "${AR}" = "missing" ; then
712		AC_MSG_ERROR([Unable to locate ar(1) or suitable replacement.  Check PATH or set AR.])
713	fi
714fi
715
716if test -z "${STRIP}"; then
717	AC_CHECK_PROGS(STRIP,strip,missing)
718
719	if test "${STRIP}" = "missing" ; then
720		AC_MSG_ERROR([Unable to locate strip(1) or suitable replacement.  Check PATH or set STRIP.])
721	fi
722fi
723
724
725AC_LIBTOOL_WIN32_DLL
726AC_LIBTOOL_DLOPEN
727AC_PROG_MAKE_SET
728AC_PROG_LIBTOOL
729
730dnl ----------------------------------------------------------------
731dnl Perl
732ol_link_perl=no
733if test $ol_enable_perl != no ; then
734	AC_PATH_PROG(PERLBIN, perl, /usr/bin/perl)
735
736	if test "no$PERLBIN" = "no" ; then
737		if test $ol_enable_perl = yes ; then
738			AC_MSG_ERROR([could not locate perl])
739		fi
740
741	else
742		PERL_CPPFLAGS="`$PERLBIN -MExtUtils::Embed -e ccopts`"
743		PERL_LDFLAGS="`$PERLBIN -MExtUtils::Embed -e ldopts|sed -e 's/ -lc / /' -e 's/ -lc$//'`"
744
745		if test x"$ol_enable_perl" = "xyes" ; then
746			SLAPD_PERL_LDFLAGS="$PERL_LDFLAGS"
747		else
748			MOD_PERL_LDFLAGS="$PERL_LDFLAGS"
749		fi
750		dnl should check perl version
751		ol_link_perl=yes
752	fi
753fi
754
755AC_PROG_CPP
756OL_MSVC
757
758dnl ----------------------------------------------------------------
759dnl Checks for Windows NT
760case $host_os in
761  *mingw32* ) ac_cv_mingw32=yes ;;
762  *cygwin* ) ac_cv_cygwin=yes ;;
763  *interix* ) ac_cv_interix=yes ;;
764esac
765
766AC_CHECK_TOOL(RC, windres, )
767
768dnl ----------------------------------------------------------------
769dnl Checks for file extensions
770AC_EXEEXT
771AC_OBJEXT
772AC_DEFINE_UNQUOTED(EXEEXT, "${EXEEXT}", [defined to be the EXE extension])
773
774dnl ----------------------------------------------------------------
775dnl BeOS requires -lbe -lroot -lnet
776AC_CHECK_LIB(be, be_app, [LIBS="$LIBS -lbe -lroot -lnet"], :, [-lroot -lnet])
777
778dnl ----------------------------------------------------------------
779dnl OpenLDAP requires STDC features
780AC_PROG_CC
781if test "X${ac_cv_prog_cc_stdc}" = "Xno" ; then
782	AC_MSG_ERROR([OpenLDAP requires compiler to support STDC constructs.])
783fi
784
785dnl ----------------------------------------------------------------
786dnl Check cc depend flags
787OL_MKDEPEND
788if test "${ol_cv_mkdep}" = no ; then
789	# this will soon become an error
790	AC_MSG_WARN([do not know how to generate dependencies])
791fi
792
793dnl ----------------------------------------------------------------
794dnl Check for AIX security library
795AC_CHECK_LIB(s, afopen, [
796	AUTH_LIBS=-ls
797	AC_DEFINE(HAVE_AIX_SECURITY,1,[define if you have AIX security lib])
798])
799
800dnl ----------------------------------------------------------------
801dnl Check for IBM OS/390
802case "$target" in
803*-ibm-openedition)
804	ac_cv_func_getopt=no
805	AC_DEFINE(BOTH_STRINGS_H,1,[define to use both <string.h> and <strings.h>])
806	;;
807esac
808
809dnl ----------------------------------------------------------------
810dnl Check for module support
811ol_link_modules=no
812WITH_MODULES_ENABLED=no
813if test $ol_enable_modules != no ; then
814	AC_CHECK_HEADERS(ltdl.h)
815
816	if test $ac_cv_header_ltdl_h = no ; then
817		AC_MSG_ERROR([could not locate libtool ltdl.h])
818	fi
819
820	AC_CHECK_LIB(ltdl, lt_dlinit, [
821		MODULES_LIBS=-lltdl
822		AC_DEFINE(HAVE_LIBLTDL,1,[define if you have libtool -ltdl])
823	])
824
825	if test "$ac_cv_lib_ltdl_lt_dlinit" = no ; then
826		AC_MSG_ERROR([could not locate libtool -lltdl])
827	fi
828	ol_link_modules=yes
829	WITH_MODULES_ENABLED=yes
830fi
831
832dnl ----------------------------------------------------------------
833dnl Checks for header files.
834OL_HEADER_STDC
835
836if test $ol_cv_header_stdc != yes; then
837	AC_MSG_WARN([could not locate Standard C compliant headers])
838fi
839
840AC_HEADER_DIRENT
841AC_HEADER_SYS_WAIT
842AC_HEADER_TIOCGWINSZ
843
844AC_CHECK_HEADERS(	\
845	arpa/inet.h		\
846	arpa/nameser.h	\
847	assert.h		\
848	bits/types.h	\
849	conio.h			\
850	crypt.h			\
851	direct.h		\
852	errno.h			\
853	fcntl.h			\
854	filio.h			\
855	getopt.h		\
856	grp.h			\
857	io.h			\
858	libutil.h		\
859	limits.h		\
860	locale.h		\
861	malloc.h		\
862	memory.h		\
863	psap.h			\
864	pwd.h			\
865	process.h		\
866	sgtty.h			\
867	shadow.h		\
868	stddef.h		\
869	string.h		\
870	strings.h		\
871	sysexits.h		\
872	sys/file.h		\
873	sys/filio.h		\
874	sys/fstyp.h		\
875	sys/errno.h		\
876	sys/ioctl.h		\
877	sys/param.h		\
878	sys/privgrp.h	\
879	sys/resource.h	\
880	sys/select.h	\
881	sys/socket.h	\
882	sys/stat.h		\
883	sys/syslog.h	\
884	sys/time.h		\
885	sys/types.h		\
886	sys/uio.h		\
887	sys/vmount.h	\
888	syslog.h		\
889	termios.h		\
890	unistd.h		\
891	utime.h			\
892)
893
894dnl Only check Winsock on MinGW
895if test "$ac_cv_mingw32" = yes \
896	-o "$ac_cv_interix" = yes \
897	-o "$ol_cv_msvc" = yes
898then
899	AC_CHECK_HEADERS( winsock.h winsock2.h )
900fi
901
902AC_CHECK_HEADERS( resolv.h, [], [],
903[$ac_includes_default
904#include <netinet/in.h>
905])
906
907AC_CHECK_HEADERS( netinet/tcp.h, [], [],
908[$ac_includes_default
909#include <netinet/in.h>
910])
911
912AC_CHECK_HEADERS( sys/ucred.h, [], [],
913[$ac_includes_default
914#ifdef HAVE_SYS_PARAM_H
915#include <sys/param.h>
916#endif
917])
918
919dnl ----------------------------------------------------------------
920dnl Checks for libraries
921
922AC_CHECK_FUNCS( sigaction sigset )
923AC_CHECK_FUNCS( fmemopen )
924
925dnl HP-UX requires -lV3
926dnl this is not needed on newer versions of HP-UX
927if test $ac_cv_func_sigaction = no && test $ac_cv_func_sigaction = no ; then
928	AC_CHECK_LIB(V3, sigset)
929fi
930
931if test $ol_cv_msvc = yes ; then
932   ol_cv_winsock=yes
933fi
934
935dnl The following is INTENTIONALLY scripted out because shell does not
936dnl support variable names with the '@' character, which is what
937dnl autoconf would try to generate if one merely used AC_SEARCH_LIBS
938if test "$ac_cv_header_winsock_h" = yes; then
939	AC_CACHE_CHECK([for winsock], [ol_cv_winsock],[
940	save_LIBS="$LIBS"
941	for curlib in none ws2_32 wsock32; do
942		if test $curlib != none ; then
943	    	LIBS="$save_LIBS -l$curlib"
944		fi
945		AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <winsock.h>
946			]], [[
947			socket(0,0,0);
948			select(0,NULL,NULL,NULL,NULL);
949			closesocket(0);
950			gethostname(NULL,0);
951			]])],[ol_cv_winsock=$curlib],[ol_cv_winsock=no])
952
953		test "$ol_cv_winsock" != no && break
954	done
955	LIBS="$save_LIBS"
956	])
957
958	if test $ol_cv_winsock != no ; then
959    	AC_DEFINE(HAVE_WINSOCK, 1, [define if you have winsock])
960    	ac_cv_func_socket=yes
961    	ac_cv_func_select=yes
962    	ac_cv_func_closesocket=yes
963    	ac_cv_func_gethostname=yes
964
965		if test $ol_cv_winsock != none -a $ol_cv_winsock != yes ; then
966        	LIBS="$LIBS -l$ol_cv_winsock"
967		fi
968
969    	if test $ol_cv_winsock = ws2_32 -o $ol_cv_winsock = yes ; then
970			AC_DEFINE(HAVE_WINSOCK2, 1, [define if you have winsock2])
971    	fi
972	fi
973fi
974
975dnl Find socket()
976dnl Likely combinations:
977dnl		-lsocket [ -lnsl_s | -lnsl ]
978dnl		-linet
979
980AC_CHECK_FUNC(socket, :, [
981dnl hopefully we won't include too many libraries
982	AC_CHECK_LIB(socket, main)
983	AC_CHECK_LIB(net, socket)
984	AC_CHECK_LIB(nsl_s, main)
985	AC_CHECK_LIB(nsl, main)
986	AC_CHECK_LIB(inet, socket)
987	AC_CHECK_LIB(gen, main)
988])
989
990dnl require select
991AC_CHECK_FUNC(select, :, AC_MSG_ERROR([select() required.]))
992
993if test "${ac_cv_header_winsock_h}" != yes; then
994	dnl Select arg types
995	dnl (if this detection becomes permanent, it and the select() detection
996	dnl should be done before the yielding select test)
997	AC_FUNC_SELECT_ARGTYPES
998fi
999
1000dnl check to see if system call automatically restart
1001dnl AC_SYS_RESTARTABLE_SYSCALLS
1002
1003dnl ----------------------------------------------------------------
1004AC_CHECK_FUNCS( poll )
1005if test $ac_cv_func_poll = yes; then
1006AC_CHECK_HEADERS( poll.h sys/poll.h )
1007fi
1008
1009dnl ----------------------------------------------------------------
1010AC_CHECK_HEADERS( sys/epoll.h )
1011if test "${ac_cv_header_sys_epoll_h}" = yes; then
1012	AC_MSG_CHECKING(for epoll system call)
1013	AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(int argc, char **argv)
1014{
1015	int epfd = epoll_create(256);
1016	exit (epfd == -1 ? 1 : 0);
1017}]])],[AC_MSG_RESULT(yes)
1018	AC_DEFINE(HAVE_EPOLL,1, [define if your system supports epoll])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
1019fi
1020
1021dnl ----------------------------------------------------------------
1022AC_CHECK_HEADERS( sys/event.h )
1023if test "${ac_cv_header_sys_event_h}" = yes; then
1024AC_MSG_CHECKING(for kqueue system call)
1025AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(int argc, char **argv)
1026{
1027	int kqfd = kqueue();
1028	exit (kqfd == -1 ? 1 : 0);
1029}]])],[AC_MSG_RESULT(yes)
1030AC_DEFINE(HAVE_KQUEUE,1, [define if your system supports kqueue])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
1031fi
1032
1033dnl ----------------------------------------------------------------
1034AC_CHECK_HEADERS( sys/devpoll.h )
1035dnl "/dev/poll" needs <sys/poll.h> as well...
1036if test "${ac_cv_header_sys_devpoll_h}" = yes \
1037		-a "${ac_cv_header_poll_h}" = yes ; \
1038then
1039	AC_MSG_CHECKING(for /dev/poll)
1040	AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(int argc, char **argv)
1041{
1042	int devpollfd = open("/dev/poll", /* O_RDWR */ 2);
1043	exit (devpollfd == -1 ? 1 : 0);
1044}]])],[AC_MSG_RESULT(yes)
1045	AC_DEFINE(HAVE_DEVPOLL,1, [define if your system supports /dev/poll])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
1046fi
1047
1048dnl ----------------------------------------------------------------
1049OL_STRERROR
1050
1051dnl ----------------------------------------------------------------
1052dnl require POSIX regex
1053AC_CHECK_HEADERS( regex.h, [], [],
1054[$ac_includes_default
1055#ifdef HAVE_SYS_TYPES_H
1056#include <sys/types.h>
1057#endif
1058])
1059
1060if test "$ac_cv_header_regex_h" != yes ; then
1061	AC_MSG_ERROR([POSIX regex.h required.])
1062fi
1063AC_SEARCH_LIBS(regfree, [regex gnuregex],
1064	:, AC_MSG_ERROR([POSIX regex required.]))
1065
1066OL_POSIX_REGEX
1067if test "$ol_cv_c_posix_regex" = no ; then
1068	AC_MSG_ERROR([broken POSIX regex!])
1069fi
1070
1071dnl ----------------------------------------------------------------
1072dnl UUID Support
1073
1074have_uuid=no
1075AC_CHECK_HEADERS(sys/uuid.h)
1076dnl The HAVE_UUID_TO_STR code path also needs uuid_create
1077if test $ac_cv_header_sys_uuid_h = yes ; then
1078	save_LIBS="$LIBS"
1079	AC_SEARCH_LIBS([uuid_to_str], [uuid], [have_uuid=yes], :)
1080	AC_SEARCH_LIBS([uuid_create], [uuid], :, [have_uuid=no])
1081	LIBS="$save_LIBS"
1082
1083	if test $have_uuid = yes ; then
1084		AC_DEFINE(HAVE_UUID_TO_STR,1,
1085			[define if you have uuid_to_str()])
1086
1087		test "$ac_cv_search_uuid_to_str" = "none required" || \
1088			LUTIL_LIBS="$LUTIL_LIBS $ac_cv_search_uuid_to_str"
1089	fi
1090fi
1091
1092dnl Look for uuid_generate
1093dnl The HAVE_UUID_GENERATE code path also needs uuid_unparse_lower
1094if test $have_uuid = no ; then
1095	AC_CHECK_HEADERS(uuid/uuid.h)
1096	if test $ac_cv_header_uuid_uuid_h = yes ; then
1097		save_LIBS="$LIBS"
1098		AC_SEARCH_LIBS([uuid_generate], [uuid], [have_uuid=yes], :)
1099		AC_SEARCH_LIBS([uuid_unparse_lower], [uuid], :, [have_uuid=no])
1100		LIBS="$save_LIBS"
1101
1102		if test $have_uuid = yes ; then
1103			AC_DEFINE(HAVE_UUID_GENERATE,1,
1104				[define if you have uuid_generate()])
1105
1106			test "$ac_cv_search_uuid_generate" = "none required" || \
1107				LUTIL_LIBS="$LUTIL_LIBS $ac_cv_search_uuid_generate"
1108		fi
1109	fi
1110fi
1111
1112dnl For windows, check for the need of RPCRT for UUID function support
1113if test $have_uuid = no ; then
1114	AC_MSG_CHECKING(to see if -lrpcrt4 is needed for win32 UUID support)
1115	save_LIBS="$LIBS"
1116	LIBS="$LIBS -lrpcrt4"
1117	AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1118		int __stdcall UuidCreate(void *);
1119		int __stdcall UuidToStringA(void *,void **);
1120		]], [[
1121		UuidCreate(0);
1122		UuidToStringA(0,0);
1123		]])],[need_rpcrt=yes],[need_rpcrt=no])
1124	if test $need_rpcrt = yes; then
1125		SLAPD_LIBS="$SLAPD_LIBS -lrpcrt4"
1126		CLIENT_LIBS="$CLIENT_LIBS -lrpcrt4"
1127	fi
1128	LIBS="$save_LIBS"
1129	AC_MSG_RESULT($need_rpcrt)
1130fi
1131
1132dnl ----------------------------------------------------------------
1133dnl Check for resolver routines
1134OL_RESOLVER_LINK
1135
1136ol_link_dnssrv=no
1137if test "$ol_cv_lib_resolver" != no ; then
1138	AC_DEFINE(HAVE_RES_QUERY,1,
1139		[define if you have res_query()])
1140
1141	if test "$ol_enable_dnssrv" != no ; then
1142		ol_link_dnssrv=yes
1143	fi
1144
1145	if test "$ol_cv_lib_resolver" != yes ; then
1146		LIBS="$ol_cv_lib_resolver $LIBS"
1147	fi
1148fi
1149
1150if test "$ol_enable_dnssrv" = yes || test "$ol_enable_dnssrv" = mod ; then
1151	if test "$ol_link_dnssrv" = no ; then
1152		AC_MSG_ERROR([DNSSRV requires res_query()])
1153	fi
1154else
1155	ol_enable_dnssrv=no
1156fi
1157
1158AC_CHECK_FUNCS( hstrerror )
1159
1160dnl ----------------------------------------------------------------
1161dnl PF_INET6 support requires getaddrinfo and INET6_ADDRSTRLEN
1162dnl PF_LOCAL may use getaddrinfo in available
1163AC_CHECK_FUNCS( getaddrinfo getnameinfo gai_strerror inet_ntop )
1164
1165ol_link_ipv6=no
1166if test $ac_cv_func_getaddrinfo = no || test $ac_cv_func_inet_ntop = no ; then
1167	if test $ol_enable_ipv6 = yes ; then
1168		AC_MSG_ERROR([IPv6 support requires getaddrinfo() and inet_ntop()])
1169	fi
1170elif test $ol_enable_ipv6 != no ; then
1171	AC_CACHE_CHECK([INET6_ADDRSTRLEN],[ol_cv_inet6_addrstrlen],[
1172		AC_EGREP_CPP(__has_inet6_addrstrlen__,[
1173#			include <netinet/in.h>
1174#			ifdef INET6_ADDRSTRLEN
1175				__has_inet6_addrstrlen__;
1176#			endif
1177		], [ol_cv_inet6_addrstrlen=yes], [ol_cv_inet6_addrstrlen=no])])
1178
1179
1180	AC_CACHE_CHECK([struct sockaddr_storage],ol_cv_struct_sockaddr_storage,[
1181		AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1182#include <sys/types.h>
1183#include <sys/socket.h>
1184]], [[
1185			struct sockaddr_storage ss;
1186]])],[ol_cv_struct_sockaddr_storage=yes],[ol_cv_struct_sockaddr_storage=no])])
1187
1188	if test $ol_cv_inet6_addrstrlen = yes &&
1189	   test $ol_cv_struct_sockaddr_storage = yes ; then
1190		ol_link_ipv6=yes
1191	elif test $ol_enable_ipv6 = yes &&
1192	     test $ol_cv_inet6_addrstrlen = no ; then
1193		AC_MSG_ERROR([IPv6 support requires INET6_ADDRSTRLEN])
1194	elif test $ol_enable_ipv6 = yes &&
1195	     test $ol_cv_struct_sockaddr_storage = no ; then
1196		AC_MSG_ERROR([IPv6 support requires struct sockaddr_storage])
1197	fi
1198fi
1199
1200if test $ol_enable_local != no ; then
1201	AC_CHECK_HEADERS( sys/un.h )
1202
1203	if test $ol_enable_local = auto ; then
1204		ol_enable_local=$ac_cv_header_sys_un_h
1205	elif test $ac_cv_header_sys_un_h = no ; then
1206		AC_MSG_ERROR([AF_LOCAL domain support requires sys/un.h])
1207	fi
1208fi
1209
1210dnl ----------------------------------------------------------------
1211dnl TLS/SSL
1212
1213if test $ol_with_tls = yes ; then
1214	ol_with_tls=auto
1215fi
1216
1217ol_link_tls=no
1218if test $ol_with_tls = openssl || test $ol_with_tls = auto ; then
1219	AC_CHECK_HEADERS(openssl/ssl.h)
1220
1221	if test $ac_cv_header_openssl_ssl_h = yes ; then
1222			AC_PREPROC_IFELSE([AC_LANG_SOURCE(
1223				[[#include <openssl/opensslv.h>]
1224[#if OPENSSL_VERSION_NUMBER < 0x1010100fL]
1225[#error "OpenSSL is too old"]
1226[#endif]])],
1227					, [AC_MSG_FAILURE([OpenSSL 1.1.1 or newer required])])
1228
1229		AC_CHECK_LIB(ssl, SSL_export_keying_material_early,
1230			[have_openssl=yes], [have_openssl=no],
1231			[-lcrypto])
1232
1233		if test $have_openssl = yes ; then
1234			ol_with_tls=openssl
1235			ol_link_tls=yes
1236			WITH_TLS_TYPE=openssl
1237
1238			AC_DEFINE(HAVE_OPENSSL, 1,
1239				[define if you have OpenSSL])
1240
1241			TLS_LIBS="-lssl -lcrypto"
1242		fi
1243	fi
1244fi
1245
1246if test $ol_link_tls = no ; then
1247	if test $ol_with_tls = gnutls || test $ol_with_tls = auto ; then
1248		AC_CHECK_HEADERS(gnutls/gnutls.h)
1249
1250		if test $ac_cv_header_gnutls_gnutls_h = yes ; then
1251			AC_PREPROC_IFELSE([AC_LANG_SOURCE(
1252				[[#include <gnutls/gnutls.h>]
1253[#if GNUTLS_VERSION_NUMBER < 0x030306]
1254[#error "GnuTLS is too old"]
1255[#endif]])],
1256					, [AC_MSG_FAILURE([GnuTLS 3.3.6 or newer required])])
1257
1258			AC_CHECK_LIB(gnutls, gnutls_init,
1259				[have_gnutls=yes], [have_gnutls=no])
1260
1261			if test $have_gnutls = yes ; then
1262				ol_with_tls=gnutls
1263				ol_link_tls=yes
1264				WITH_TLS_TYPE=gnutls
1265
1266				TLS_LIBS="-lgnutls"
1267
1268				AC_DEFINE(HAVE_GNUTLS, 1,
1269					[define if you have GNUtls])
1270			fi
1271		fi
1272	fi
1273fi
1274
1275WITH_TLS=no
1276if test $ol_link_tls = yes ; then
1277	AC_DEFINE(HAVE_TLS, 1, [define if you have TLS])
1278	WITH_TLS=yes
1279elif test $ol_with_tls = auto ; then
1280	AC_MSG_WARN([Could not locate TLS/SSL package])
1281	AC_MSG_WARN([TLS data protection not supported!])
1282elif test $ol_with_tls != no ; then
1283	AC_MSG_ERROR([Could not locate TLS/SSL package])
1284else
1285	AC_MSG_WARN([TLS data protection not supported!])
1286fi
1287
1288
1289dnl ----------------------------------------------------------------
1290dnl Threads?
1291ol_link_threads=no
1292
1293case $ol_with_threads in auto | yes | nt)
1294
1295	OL_NT_THREADS
1296
1297	if test "$ol_cv_nt_threads" = yes ; then
1298		ol_link_threads=nt
1299		ol_with_threads=found
1300		ol_with_yielding_select=yes
1301
1302		AC_DEFINE(HAVE_NT_SERVICE_MANAGER,1,[if you have NT Service Manager])
1303		AC_DEFINE(HAVE_NT_EVENT_LOG,1,[if you have NT Event Log])
1304	fi
1305
1306	if test $ol_with_threads = nt ; then
1307		AC_MSG_ERROR([could not locate NT Threads])
1308	fi
1309	;;
1310esac
1311
1312case $ol_with_threads in auto | yes | posix)
1313
1314	AC_CHECK_HEADERS(pthread.h)
1315
1316	if test $ac_cv_header_pthread_h = yes ; then
1317		OL_POSIX_THREAD_VERSION
1318
1319		if test $ol_cv_pthread_version != 0 ; then
1320			AC_DEFINE_UNQUOTED(HAVE_PTHREADS,$ol_cv_pthread_version,
1321				[define to pthreads API spec revision])
1322		else
1323			AC_MSG_ERROR([unknown pthread version])
1324		fi
1325
1326		# consider threads found
1327		ol_with_threads=found
1328
1329		OL_HEADER_LINUX_THREADS
1330		OL_HEADER_GNU_PTH_PTHREAD_H
1331
1332		if test $ol_cv_header_gnu_pth_pthread_h = no ; then
1333			AC_CHECK_HEADERS(sched.h)
1334		fi
1335
1336		dnl Now the hard part, how to link?
1337		dnl
1338		dnl currently supported checks:
1339		dnl
1340		dnl Check for no flags
1341		dnl 	pthread_create() in $LIBS
1342		dnl
1343		dnl Check special pthread (final) flags
1344		dnl 	[skipped] pthread_create() with -mt (Solaris) [disabled]
1345		dnl 	pthread_create() with -kthread (FreeBSD)
1346		dnl 	pthread_create() with -pthread (FreeBSD/Digital Unix)
1347		dnl 	pthread_create() with -pthreads (?)
1348		dnl 	pthread_create() with -mthreads (AIX)
1349		dnl 	pthread_create() with -thread (?)
1350		dnl
1351		dnl Check pthread (final) libraries
1352		dnl 	pthread_mutex_unlock() in -lpthread -lmach -lexc -lc_r (OSF/1)
1353		dnl 	pthread_mutex_lock() in -lpthread -lmach -lexc (OSF/1)
1354		dnl 	[skipped] pthread_mutex_trylock() in -lpthread -lexc (OSF/1)
1355		dnl 	pthread_join() -Wl,-woff,85 -lpthread (IRIX)
1356		dnl 	pthread_create() in -lpthread (many)
1357		dnl 	pthread_create() in -lc_r (FreeBSD)
1358		dnl
1359		dnl Check pthread (draft4) flags (depreciated)
1360		dnl 	pthread_create() with -threads (OSF/1)
1361		dnl
1362		dnl Check pthread (draft4) libraries (depreciated)
1363		dnl 	pthread_mutex_unlock() in -lpthreads -lmach -lexc -lc_r (OSF/1)
1364		dnl 	pthread_mutex_lock() in -lpthreads -lmach -lexc (OSF/1)
1365		dnl 	pthread_mutex_trylock() in -lpthreads -lexc (OSF/1)
1366		dnl 	pthread_create() in -lpthreads (many)
1367		dnl
1368
1369		dnl pthread_create in $LIBS
1370		AC_CACHE_CHECK([for pthread_create in default libraries],
1371			ol_cv_pthread_create,[
1372			AC_RUN_IFELSE([OL_PTHREAD_TEST_PROGRAM],
1373				[ol_cv_pthread_create=yes],
1374				[ol_cv_pthread_create=no],
1375				[AC_TRY_LINK(OL_PTHREAD_TEST_INCLUDES,OL_PTHREAD_TEST_FUNCTION,
1376					[ol_cv_pthread_create=yes],
1377					[ol_cv_pthread_create=no])])])
1378
1379		if test $ol_cv_pthread_create != no ; then
1380			ol_link_threads=posix
1381			ol_link_pthreads=""
1382		fi
1383
1384dnl		OL_PTHREAD_TRY([-mt],		[ol_cv_pthread_mt])
1385		OL_PTHREAD_TRY([-kthread],	[ol_cv_pthread_kthread])
1386		OL_PTHREAD_TRY([-pthread],	[ol_cv_pthread_pthread])
1387		OL_PTHREAD_TRY([-pthreads],	[ol_cv_pthread_pthreads])
1388		OL_PTHREAD_TRY([-mthreads],	[ol_cv_pthread_mthreads])
1389		OL_PTHREAD_TRY([-thread],	[ol_cv_pthread_thread])
1390
1391		OL_PTHREAD_TRY([-lpthread -lmach -lexc -lc_r],
1392			[ol_cv_pthread_lpthread_lmach_lexc_lc_r])
1393		OL_PTHREAD_TRY([-lpthread -lmach -lexc],
1394			[ol_cv_pthread_lpthread_lmach_lexc])
1395dnl		OL_PTHREAD_TRY([-lpthread -lexc],
1396dnl			[ol_cv_pthread_lpthread_lexc])
1397
1398		OL_PTHREAD_TRY([-lpthread -Wl,-woff,85],
1399			[ol_cv_pthread_lib_lpthread_woff])
1400
1401		OL_PTHREAD_TRY([-lpthread],	[ol_cv_pthread_lpthread])
1402		OL_PTHREAD_TRY([-lc_r],		[ol_cv_pthread_lc_r])
1403
1404		OL_PTHREAD_TRY([-threads],	[ol_cv_pthread_threads])
1405
1406		OL_PTHREAD_TRY([-lpthreads -lmach -lexc -lc_r],
1407			[ol_cv_pthread_lpthreads_lmach_lexc_lc_r])
1408		OL_PTHREAD_TRY([-lpthreads -lmach -lexc],
1409			[ol_cv_pthread_lpthreads_lmach_lexc])
1410		OL_PTHREAD_TRY([-lpthreads -lexc],
1411			[ol_cv_pthread_lpthreads_lexc])
1412
1413		OL_PTHREAD_TRY([-lpthreads],[ol_cv_pthread_lib_lpthreads])
1414
1415		if test $ol_link_threads != no ; then
1416			LTHREAD_LIBS="$LTHREAD_LIBS $ol_link_pthreads"
1417
1418			dnl save flags
1419			save_CPPFLAGS="$CPPFLAGS"
1420			save_LIBS="$LIBS"
1421			LIBS="$LTHREAD_LIBS $LIBS"
1422
1423			dnl All POSIX Thread (final) implementations should have
1424			dnl sched_yield instead of pthread yield.
1425			dnl check for both, and thr_yield for Solaris
1426			AC_CHECK_FUNCS(sched_yield pthread_yield thr_yield)
1427
1428			if test $ac_cv_func_sched_yield = no &&
1429			   test $ac_cv_func_pthread_yield = no &&
1430			   test $ac_cv_func_thr_yield = no ; then
1431				dnl Digital UNIX has sched_yield() in -lrt
1432				AC_CHECK_LIB(rt, sched_yield,
1433					[LTHREAD_LIBS="$LTHREAD_LIBS -lrt"
1434					AC_DEFINE(HAVE_SCHED_YIELD,1,
1435						[Define if you have the sched_yield function.])
1436					ac_cv_func_sched_yield=yes],
1437					[ac_cv_func_sched_yield=no])
1438			fi
1439			if test $ac_cv_func_sched_yield = no &&
1440			   test $ac_cv_func_pthread_yield = no &&
1441			   test "$ac_cv_func_thr_yield" = no ; then
1442				AC_MSG_WARN([could not locate sched_yield() or pthread_yield()])
1443			fi
1444
1445			dnl Check functions for compatibility
1446			AC_CHECK_FUNCS(pthread_kill)
1447
1448			dnl Check for pthread_rwlock_destroy with <pthread.h>
1449			dnl as pthread_rwlock_t may not be defined.
1450			AC_CACHE_CHECK([for pthread_rwlock_destroy with <pthread.h>],
1451				[ol_cv_func_pthread_rwlock_destroy], [
1452				dnl save the flags
1453				AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1454#include <pthread.h>
1455pthread_rwlock_t rwlock;
1456]], [[pthread_rwlock_destroy(&rwlock);]])],[ol_cv_func_pthread_rwlock_destroy=yes],[ol_cv_func_pthread_rwlock_destroy=no])
1457			])
1458			if test $ol_cv_func_pthread_rwlock_destroy = yes ; then
1459				AC_DEFINE(HAVE_PTHREAD_RWLOCK_DESTROY,1,
1460					[define if you have pthread_rwlock_destroy function])
1461			fi
1462
1463			dnl Check for pthread_detach with <pthread.h> inclusion
1464			dnl as it's symbol may have been mangled.
1465			AC_CACHE_CHECK([for pthread_detach with <pthread.h>],
1466				[ol_cv_func_pthread_detach], [
1467				dnl save the flags
1468				AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1469#include <pthread.h>
1470#ifndef NULL
1471#define NULL (void*)0
1472#endif
1473]], [[pthread_detach(NULL);]])],[ol_cv_func_pthread_detach=yes],[ol_cv_func_pthread_detach=no])
1474			])
1475
1476			if test $ol_cv_func_pthread_detach = no ; then
1477				AC_MSG_ERROR([could not locate pthread_detach()])
1478			fi
1479
1480			AC_DEFINE(HAVE_PTHREAD_DETACH,1,
1481				[define if you have pthread_detach function])
1482
1483			dnl Check for setconcurrency functions
1484			AC_CHECK_FUNCS(	\
1485				pthread_setconcurrency \
1486				pthread_getconcurrency \
1487				thr_setconcurrency \
1488				thr_getconcurrency \
1489			)
1490
1491			OL_SYS_LINUX_THREADS
1492			OL_LINUX_THREADS
1493
1494			if test $ol_cv_linux_threads = error; then
1495				AC_MSG_ERROR([LinuxThreads header/library mismatch]);
1496			fi
1497
1498			AC_CACHE_CHECK([AC_LANG_SOURCE([if pthread_create() works])],
1499				ol_cv_pthread_create_works,[
1500			AC_RUN_IFELSE([OL_PTHREAD_TEST_PROGRAM],
1501				[ol_cv_pthread_create_works=yes],
1502				[ol_cv_pthread_create_works=no],
1503				[dnl assume yes
1504				ol_cv_pthread_create_works=yes])])
1505
1506			if test $ol_cv_pthread_create_works = no ; then
1507				AC_MSG_ERROR([pthread_create is not usable, check environment settings])
1508			fi
1509
1510			ol_replace_broken_yield=no
1511dnl			case "$target" in
1512dnl			*-*-linux*)
1513dnl				AC_CHECK_FUNCS(nanosleep)
1514dnl				ol_replace_broken_yield=yes
1515dnl			;;
1516dnl			esac
1517
1518			if test $ol_replace_broken_yield = yes ; then
1519				AC_DEFINE([REPLACE_BROKEN_YIELD],1,
1520					[define if sched_yield yields the entire process])
1521			fi
1522
1523			dnl Check if select causes an yield
1524			if test $ol_with_yielding_select = auto ; then
1525				AC_CACHE_CHECK([if select yields when using pthreads],
1526					ol_cv_pthread_select_yields,[
1527				AC_RUN_IFELSE([AC_LANG_SOURCE([[
1528#include <sys/types.h>
1529#include <sys/time.h>
1530#include <unistd.h>
1531#include <pthread.h>
1532#ifndef NULL
1533#define NULL (void*) 0
1534#endif
1535
1536static int fildes[2];
1537
1538static void *task(p)
1539	void *p;
1540{
1541	int i;
1542	struct timeval tv;
1543
1544	fd_set rfds;
1545
1546	tv.tv_sec=10;
1547	tv.tv_usec=0;
1548
1549	FD_ZERO(&rfds);
1550	FD_SET(fildes[0], &rfds);
1551
1552	/* we're not interested in any fds */
1553	i = select(FD_SETSIZE, &rfds, NULL, NULL, &tv);
1554
1555	if(i < 0) {
1556		perror("select");
1557		exit(10);
1558	}
1559
1560	exit(0); /* if we exit here, the select blocked the whole process */
1561}
1562
1563int main(argc, argv)
1564	int argc;
1565	char **argv;
1566{
1567	pthread_t t;
1568
1569	/* create a pipe to select */
1570	if(pipe(&fildes[0])) {
1571		perror("select");
1572		exit(1);
1573	}
1574
1575#ifdef HAVE_PTHREAD_SETCONCURRENCY
1576	(void) pthread_setconcurrency(2);
1577#else
1578#ifdef HAVE_THR_SETCONCURRENCY
1579	/* Set Solaris LWP concurrency to 2 */
1580	thr_setconcurrency(2);
1581#endif
1582#endif
1583
1584#if HAVE_PTHREADS < 6
1585	pthread_create(&t, pthread_attr_default, task, NULL);
1586#else
1587	pthread_create(&t, NULL, task, NULL);
1588#endif
1589
1590	/* make sure task runs first */
1591#ifdef HAVE_THR_YIELD
1592	thr_yield();
1593#elif defined( HAVE_SCHED_YIELD )
1594	sched_yield();
1595#elif defined( HAVE_PTHREAD_YIELD )
1596	pthread_yield();
1597#endif
1598
1599	exit(2);
1600}]])],[ol_cv_pthread_select_yields=no],[ol_cv_pthread_select_yields=yes],[ol_cv_pthread_select_yields=cross])])
1601
1602				if test $ol_cv_pthread_select_yields = cross ; then
1603					AC_MSG_ERROR([crossing compiling: use --with-yielding_select=yes|no|manual])
1604				fi
1605
1606				if test $ol_cv_pthread_select_yields = yes ; then
1607					ol_with_yielding_select=yes
1608				fi
1609			fi
1610
1611			dnl restore flags
1612			CPPFLAGS="$save_CPPFLAGS"
1613			LIBS="$save_LIBS"
1614		else
1615			AC_MSG_ERROR([could not locate usable POSIX Threads])
1616		fi
1617	fi
1618
1619	if test $ol_with_threads = posix ; then
1620		AC_MSG_ERROR([could not locate POSIX Threads])
1621	fi
1622	;;
1623esac
1624
1625case $ol_with_threads in auto | yes | pth)
1626
1627	AC_CHECK_HEADERS(pth.h)
1628
1629	if test $ac_cv_header_pth_h = yes ; then
1630		AC_CHECK_LIB(pth, pth_version, [have_pth=yes], [have_pth=no])
1631
1632		if test $have_pth = yes ; then
1633			AC_DEFINE(HAVE_GNU_PTH,1,[if you have GNU Pth])
1634			LTHREAD_LIBS="$LTHREAD_LIBS -lpth"
1635			ol_link_threads=pth
1636			ol_with_threads=found
1637
1638			if test $ol_with_yielding_select = auto ; then
1639				ol_with_yielding_select=yes
1640			fi
1641		fi
1642	fi
1643	;;
1644esac
1645
1646case $ol_with_threads in auto | yes | lwp)
1647
1648	dnl check for SunOS5 LWP
1649	AC_CHECK_HEADERS(thread.h synch.h)
1650	if test $ac_cv_header_thread_h = yes &&
1651	   test $ac_cv_header_synch_h = yes ; then
1652		AC_CHECK_LIB(thread, thr_create, [have_thr=yes], [have_thr=no])
1653
1654		if test $have_thr = yes ; then
1655			AC_DEFINE(HAVE_THR,1,
1656				[if you have Solaris LWP (thr) package])
1657			LTHREAD_LIBS="$LTHREAD_LIBS -lthread"
1658			ol_link_threads=thr
1659
1660			if test $ol_with_yielding_select = auto ; then
1661				ol_with_yielding_select=yes
1662			fi
1663
1664			dnl Check for setconcurrency functions
1665			AC_CHECK_FUNCS(	\
1666				thr_setconcurrency \
1667				thr_getconcurrency \
1668			)
1669		fi
1670	fi
1671	;;
1672esac
1673
1674if test $ol_with_yielding_select = yes ; then
1675	AC_DEFINE(HAVE_YIELDING_SELECT,1,
1676		[define if select implicitly yields])
1677fi
1678
1679if test $ol_with_threads = manual ; then
1680	dnl User thinks he can manually configure threads.
1681	ol_link_threads=yes
1682
1683	AC_MSG_WARN([thread defines and link options must be set manually])
1684
1685	AC_CHECK_HEADERS(pthread.h sched.h)
1686	AC_CHECK_FUNCS(sched_yield pthread_yield)
1687	OL_HEADER_LINUX_THREADS
1688
1689	AC_CHECK_HEADERS(thread.h synch.h)
1690fi
1691
1692if test $ol_link_threads != no && test $ol_link_threads != nt ; then
1693	dnl needed to get reentrant/threadsafe versions
1694	dnl
1695	AC_DEFINE(REENTRANT,1)
1696	AC_DEFINE(_REENTRANT,1)
1697	AC_DEFINE(THREAD_SAFE,1)
1698	AC_DEFINE(_THREAD_SAFE,1)
1699	AC_DEFINE(THREADSAFE,1)
1700	AC_DEFINE(_THREADSAFE,1)
1701	AC_DEFINE(_SGI_MP_SOURCE,1)
1702
1703	dnl The errno declaration may dependent upon _REENTRANT.
1704	dnl If it does, we must link with thread support.
1705	AC_CACHE_CHECK([for thread specific errno],
1706		[ol_cv_errno_thread_specific], [
1707		AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <errno.h>]], [[errno = 0;]])],[ol_cv_errno_thread_specific=yes],[ol_cv_errno_thread_specific=no])
1708	])
1709
1710	dnl The h_errno declaration may dependent upon _REENTRANT.
1711	dnl If it does, we must link with thread support.
1712	AC_CACHE_CHECK([for thread specific h_errno],
1713		[ol_cv_h_errno_thread_specific], [
1714		AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[h_errno = 0;]])],[ol_cv_h_errno_thread_specific=yes],[ol_cv_h_errno_thread_specific=no])
1715	])
1716
1717	if test $ol_cv_errno_thread_specific != yes ||
1718	   test $ol_cv_h_errno_thread_specific != yes ; then
1719		LIBS="$LTHREAD_LIBS $LIBS"
1720		LTHREAD_LIBS=""
1721	fi
1722
1723dnl When in thread environment, use
1724dnl		#if defined( HAVE_REENTRANT_FUNCTIONS ) || defined( HAVE_FUNC_R )
1725dnl			func_r(...);
1726dnl		#else
1727dnl			/* lock */
1728dnl			func(...);
1729dnl			/* unlock */
1730dnl		#endif
1731dnl
1732dnl HAVE_REENTRANT_FUNCTIONS is derived from:
1733dnl		_POSIX_REENTRANT_FUNCTIONS
1734dnl		_POSIX_THREAD_SAFE_FUNCTIONS
1735dnl		_POSIX_THREADSAFE_FUNCTIONS
1736dnl
1737dnl		and is currently defined in <ldap_pvt_thread.h>
1738dnl
1739dnl libldap/*.c should only include <ldap_pvt_thread.h> iff
1740dnl LDAP_R_COMPILE is defined.  ie:
1741dnl		#ifdef LDAP_R_COMPILE
1742dnl		#	include <ldap_pvt_thread.h>
1743dnl		#endif
1744dnl
1745dnl LDAP_R_COMPILE is defined by libldap/ldap-int.h
1746dnl specifically for compiling the threadsafe version of
1747dnl the ldap library.
1748dnl
1749dnl	dnl check for reentrant/threadsafe functions
1750dnl	dnl
1751dnl	dnl note: these should only be used when linking
1752dnl	dnl		with $LTHREAD_LIBS
1753dnl	dnl
1754dnl	save_CPPFLAGS="$CPPFLAGS"
1755dnl	save_LIBS="$LIBS"
1756dnl	LIBS="$LTHREAD_LIBS $LIBS"
1757dnl	AC_CHECK_FUNCS(	\
1758dnl		gmtime_r \
1759dnl		gethostbyaddr_r gethostbyname_r \
1760dnl		feof_unlocked unlocked_feof \
1761dnl		putc_unlocked unlocked_putc \
1762dnl		flockfile ftrylockfile \
1763dnl	)
1764dnl	CPPFLAGS="$save_CPPFLAGS"
1765dnl	LIBS="$save_LIBS"
1766fi
1767
1768if test $ol_link_threads = no ; then
1769	if test $ol_enable_slapd != no; then
1770		AC_MSG_ERROR([slapd requires thread support])
1771	fi
1772
1773	if test $ol_with_threads = yes ; then
1774		AC_MSG_ERROR([no suitable thread support])
1775	fi
1776
1777	if test $ol_with_threads = auto ; then
1778		AC_MSG_WARN([no suitable thread support, disabling threads])
1779		ol_with_threads=no
1780	fi
1781
1782	AC_DEFINE(NO_THREADS,1,
1783		[define if you have (or want) no threads])
1784	LTHREAD_LIBS=""
1785	BUILD_THREAD=no
1786else
1787	BUILD_THREAD=yes
1788fi
1789
1790if test $ol_link_threads != no ; then
1791	AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE,1,
1792		[define to 1 if library is thread safe])
1793
1794	dnl This could be enabled without threads if all of the
1795	dnl reentrant functions are available. Needs testing.
1796	AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_REENTRANT,1,
1797		[define to 1 if library is reentrant])
1798fi
1799
1800dnl ----------------------------------------------------------------
1801dnl Tests for reentrant functions necessary for reentrant build
1802AC_CHECK_FUNCS(		\
1803	ctime_r			\
1804	gmtime_r localtime_r \
1805	gethostbyname_r	gethostbyaddr_r \
1806)
1807
1808if test "$ac_cv_func_ctime_r" = no ; then
1809	ol_cv_func_ctime_r_nargs=0
1810else
1811	OL_FUNC_CTIME_R_NARGS
1812dnl	OL_FUNC_CTIME_R_TYPE
1813fi
1814
1815if test "$ac_cv_func_gethostbyname_r" = yes ; then
1816 	OL_FUNC_GETHOSTBYNAME_R_NARGS
1817else
1818 	ol_cv_func_gethostbyname_r_nargs=0
1819fi
1820
1821if test "$ac_cv_func_gethostbyaddr_r" = yes ; then
1822 	OL_FUNC_GETHOSTBYADDR_R_NARGS
1823else
1824 	ol_cv_func_gethostbyaddr_r_nargs=0
1825fi
1826
1827dnl ----------------------------------------------------------------
1828
1829if test $ol_enable_dynamic = yes && test $enable_shared = yes ; then
1830	BUILD_LIBS_DYNAMIC=shared
1831	AC_DEFINE(LDAP_LIBS_DYNAMIC, 1, [define if LDAP libs are dynamic])
1832	LTSTATIC=""
1833else
1834	BUILD_LIBS_DYNAMIC=static
1835	LTSTATIC="-static"
1836fi
1837AC_SUBST(LTSTATIC)dnl
1838
1839dnl ----------------------------------------------------------------
1840if test $ol_enable_wrappers != no ; then
1841	AC_CHECK_HEADERS(tcpd.h,[
1842		AC_MSG_CHECKING([for TCP wrappers library])
1843		save_LIBS="$LIBS"
1844		LIBS="$LIBS -lwrap"
1845		AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1846#include <tcpd.h>
1847int allow_severity = 0;
1848int deny_severity  = 0;
1849
1850struct request_info *req;
1851		]], [[
1852hosts_access(req)
1853		]])],[AC_MSG_RESULT([-lwrap])
1854		have_wrappers=yes
1855		LIBS="$save_LIBS"],[
1856		dnl try with -lnsl
1857		LIBS="$LIBS -lnsl"
1858		AC_TRY_LINK([
1859#include <tcpd.h>
1860int allow_severity = 0;
1861int deny_severity  = 0;
1862
1863struct request_info *req;
1864		],[
1865hosts_access(req)
1866		],[AC_MSG_RESULT([-lwrap -lnsl])
1867		have_wrappers=yes
1868		LIBS="$save_LIBS -lnsl"],[
1869		AC_MSG_RESULT(no)
1870		have_wrappers=no
1871		LIBS=$save_LIBS])])],[have_wrappers=no])
1872
1873	if test $have_wrappers = yes ; then
1874		AC_DEFINE(HAVE_TCPD,1, [define if you have -lwrap])
1875		WRAP_LIBS="-lwrap"
1876	elif test $ol_enable_wrappers = yes ; then
1877		AC_MSG_ERROR([could not find TCP wrappers, select appropriate options or disable])
1878	else
1879		AC_MSG_WARN([could not find TCP wrappers, support disabled])
1880		WRAP_LIBS=""
1881	fi
1882fi
1883
1884dnl ----------------------------------------------------------------
1885if test $ol_enable_syslog != no ; then
1886	AC_CHECK_FUNC(openlog)
1887	if test $ac_cv_func_openlog = no && test $ol_enable_syslog = yes; then
1888		AC_MSG_ERROR(could not find syslog, select appropriate options or disable)
1889	fi
1890	ol_enable_syslog=$ac_cv_func_openlog
1891fi
1892
1893dnl ----------------------------------------------------------------
1894dnl SQL
1895ol_link_sql=no
1896if test $ol_enable_sql != no ; then
1897	AC_CHECK_HEADERS(sql.h sqlext.h,[],[
1898		AC_MSG_ERROR([could not locate SQL headers])
1899	])
1900
1901	sql_LIBS="$LIBS"
1902	LIBS="$LTHREAD_LIBS $LIBS"
1903
1904	if test $ol_with_odbc = auto ; then
1905		ol_with_odbc="iodbc unixodbc odbc32"
1906	fi
1907
1908	for odbc in $ol_with_odbc ; do
1909		if test $ol_link_sql = no ; then
1910			case $odbc in
1911			iodbc)
1912				AC_CHECK_LIB(iodbc, SQLDriverConnect, [have_iodbc=yes], [have_iodbc=no])
1913				if test $have_iodbc = yes ; then
1914					ol_link_sql="-liodbc"
1915				fi
1916				;;
1917
1918			unixodbc)
1919				AC_CHECK_LIB(odbc, SQLDriverConnect, [have_odbc=yes], [have_odbc=no])
1920				if test $have_odbc = yes ; then
1921					ol_link_sql="-lodbc"
1922				fi
1923				;;
1924
1925			odbc32)
1926				AC_CHECK_LIB(odbc32, SQLDriverConnect, [have_odbc32=yes], [have_odbc32=no])
1927
1928				dnl The windows API uses __stdcall which cannot be detected by AC_CHECK_LIB
1929				if test $have_odbc32 = no ; then
1930					AC_MSG_CHECKING([for SQLDriverConnect in -lodbc32 with windows.h])
1931					save_LIBS="$LIBS"
1932					LIBS="$LIBS -lodbc32"
1933					AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <windows.h>
1934					#include <sqlext.h>
1935						]], [[
1936						SQLDriverConnect(NULL,NULL,NULL,0,NULL,0,NULL,0);
1937						]])],[have_odbc32=yes], [have_odbc32=no])
1938					LIBS="$save_LIBS"
1939					AC_MSG_RESULT($have_odbc32)
1940				fi
1941
1942				if test $have_odbc32 = yes ; then
1943					ol_link_sql="-lodbc32"
1944				fi
1945				;;
1946
1947			*)
1948				AC_MSG_ERROR([unknown ODBC library])
1949				;;
1950			esac
1951		fi
1952	done
1953
1954	LIBS="$sql_LIBS"
1955
1956	if test $ol_link_sql != no ; then
1957		SLAPD_SQL_LIBS="$ol_link_sql"
1958
1959	elif test $ol_enable_sql != auto ; then
1960		AC_MSG_ERROR([could not locate suitable ODBC library])
1961	fi
1962fi
1963
1964dnl ----------------------------------------------------------------
1965dnl MySQL NDBapi
1966dnl Note: uses C++, but we don't want to add C++ test overhead to
1967dnl the rest of the libtool machinery.
1968ol_link_ndb=no
1969if test $ol_enable_ndb != no ; then
1970	AC_CHECK_PROG(MYSQL,mysql_config,yes)
1971	if test "$MYSQL" != yes ; then
1972		AC_MSG_ERROR([could not locate mysql_config])
1973	fi
1974
1975	SQL_INC=`mysql_config --include`
1976	SLAPD_NDB_INCS="$SQL_INC $SQL_INC/storage/ndb $SQL_INC/storage/ndb/ndbapi"
1977
1978	save_CPPFLAGS="$CPPFLAGS"
1979	CPPFLAGS="$SLAPD_NDB_INCS"
1980	AC_MSG_CHECKING(for NdbApi.hpp)
1981	AC_PREPROC_IFELSE(
1982		[AC_LANG_SOURCE([[#include <NdbApi.hpp>]])],
1983			AC_MSG_RESULT(yes),
1984			AC_MSG_ERROR([could not locate NdbApi headers])
1985	)
1986	CPPFLAGS="$save_CPPFLAGS"
1987
1988	SQL_LIB=`mysql_config --libs_r`
1989	SLAPD_NDB_LIBS="$SQL_LIB -lndbclient -lstdc++"
1990
1991	save_LDFLAGS="$LDFLAGS"
1992	save_LIBS="$LIBS"
1993	LDFLAGS="$SQL_LIB"
1994	AC_CHECK_LIB(ndbclient,ndb_init,[: ok],[
1995		AC_MSG_ERROR([could not locate ndbclient library])
1996	],[-lstdc++])
1997	LIBS="$save_LIBS"
1998	LDFLAGS="$save_LDFLAGS"
1999
2000	if test "$ol_enable_ndb" = yes ; then
2001		SLAPD_LIBS="$SLAPD_LIBS \$(SLAPD_NDB_LIBS)"
2002	fi
2003fi
2004
2005dnl ----------------------------------------------------------------
2006dnl WiredTiger
2007ol_link_wt=no
2008if test $ol_enable_wt != no ; then
2009	PKG_CHECK_MODULES(WT, wiredtiger)
2010	if test $ol_enable_wt = yes ; then
2011		SLAPD_LIBS="$SLAPD_LIBS \$(WT_LIBS)"
2012	fi
2013	ol_link_wt=yes
2014fi
2015
2016dnl ----------------------------------------------------------------
2017dnl
2018dnl Check for Cyrus SASL
2019dnl
2020WITH_SASL=no
2021ol_link_sasl=no
2022ol_link_spasswd=no
2023if test $ol_with_cyrus_sasl != no ; then
2024	AC_CHECK_HEADERS(sasl/sasl.h sasl.h)
2025
2026	if test $ac_cv_header_sasl_sasl_h = yes ||
2027	   test $ac_cv_header_sasl_h = yes; then
2028		AC_CHECK_LIB(sasl2, sasl_client_init,
2029			[ol_link_sasl="-lsasl2"],
2030			[AC_CHECK_LIB(sasl, sasl_client_init,
2031				[ol_link_sasl="-lsasl"])])
2032	fi
2033
2034	if test $ol_link_sasl = no ; then
2035		if test $ol_with_cyrus_sasl != auto ; then
2036			AC_MSG_ERROR([Could not locate Cyrus SASL])
2037		else
2038			AC_MSG_WARN([Could not locate Cyrus SASL])
2039			AC_MSG_WARN([SASL authentication not supported!])
2040			if test $ol_link_tls = no ; then
2041				AC_MSG_WARN([Strong authentication not supported!])
2042			fi
2043		fi
2044	else
2045		OL_SASL_COMPAT
2046		if test $ol_cv_sasl_compat = no ; then
2047			ol_link_sasl=no
2048			AC_MSG_ERROR([Cyrus SASL library located but is incompatible])
2049		fi
2050
2051		AC_DEFINE(HAVE_CYRUS_SASL,1,[define if you have Cyrus SASL])
2052		SASL_LIBS="$ol_link_sasl"
2053		if test $ol_enable_spasswd != no ; then
2054			ol_link_spasswd=yes
2055		fi
2056
2057		ac_save_LIBS="$LIBS"
2058		LIBS="$LIBS $ol_link_sasl"
2059		AC_CHECK_FUNC(sasl_version, [AC_DEFINE(HAVE_SASL_VERSION,1,
2060			[define if your SASL library has sasl_version()])])
2061		LIBS="$ac_save_LIBS"
2062
2063		WITH_SASL=yes
2064	fi
2065
2066else
2067	AC_MSG_WARN([SASL authentication not supported!])
2068	if test $ol_link_tls = no ; then
2069		AC_MSG_WARN([Strong authentication not supported!])
2070	fi
2071fi
2072
2073dnl ----------------------------------------------------------------
2074dnl
2075dnl Check for systemd (only if we have a server)
2076dnl
2077WITH_SYSTEMD=no
2078systemdsystemunitdir=
2079ol_link_systemd=no
2080if test $ol_enable_slapd == no && test $ol_enable_balancer != yes ; then
2081	if test $ol_with_systemd != no ; then
2082		AC_MSG_WARN([servers disabled, ignoring --with-systemd=$ol_with_systemd argument])
2083		ol_with_systemd=no
2084	fi
2085fi
2086if test $ol_with_systemd != no ; then
2087	AC_CHECK_HEADERS(systemd/sd-daemon.h)
2088
2089	if test $ac_cv_header_systemd_sd_daemon_h = yes; then
2090		AC_CHECK_LIB(systemd, sd_notify,
2091			[ol_link_systemd="-lsystemd"])
2092	fi
2093
2094	if test $ol_link_systemd = no ; then
2095		if test $ol_with_systemd != auto ; then
2096			AC_MSG_ERROR([Could not locate systemd])
2097		else
2098			AC_MSG_WARN([Could not locate systemd])
2099			AC_MSG_WARN([systemd service notification not supported!])
2100		fi
2101	else
2102		AC_DEFINE(HAVE_SYSTEMD,1,[define if you have systemd])
2103		SYSTEMD_LIBS="$ol_link_systemd"
2104		WITH_SYSTEMD=yes
2105
2106		PKG_CHECK_VAR(systemdsystemunitdir, systemd, systemdsystemunitdir)
2107		if test -z "$systemdsystemunitdir"; then
2108			if test -d /usr/lib/systemd/system; then
2109				systemdsystemunitdir=/usr/lib/systemd/system
2110			else
2111				systemdsystemunitdir=/lib/systemd/system
2112			fi
2113		fi
2114	fi
2115fi
2116AC_SUBST(systemdsystemunitdir)
2117
2118dnl ----------------------------------------------------------------
2119dnl Check for entropy sources
2120if test $cross_compiling != yes && test "$ac_cv_mingw32" != yes ; then
2121	dev=no
2122	if test -r /dev/urandom ; then
2123		dev="/dev/urandom";
2124	elif test -r /idev/urandom ; then
2125		dev="/idev/urandom";
2126	elif test -r /dev/srandom ; then
2127		dev="/dev/srandom";
2128	elif test -r /dev/random ; then
2129		dev="/dev/random";
2130	elif test -r /idev/random ; then
2131		dev="/idev/random";
2132	fi
2133
2134	if test $dev != no ; then
2135		AC_DEFINE_UNQUOTED(URANDOM_DEVICE,"$dev",[set to urandom device])
2136	fi
2137fi
2138
2139dnl ----------------------------------------------------------------
2140dnl
2141dnl Check for fetch URL support
2142dnl		should be extended to support other fetch URL APIs
2143dnl
2144ol_link_fetch=no
2145if test $ol_with_fetch != no ; then
2146	OL_LIB_FETCH
2147
2148	if test $ol_cv_lib_fetch != no ; then
2149		LIBS="$LIBS $ol_link_fetch"
2150		ol_link_fetch=freebsd
2151
2152	elif test $ol_with_fetch != auto ; then
2153		AC_MSG_ERROR(no suitable API for --with-fetch=$ol_with_fetch)
2154	fi
2155fi
2156
2157dnl ----------------------------------------------------------------
2158dnl FreeBSD (and others) have crypt(3) in -lcrypt
2159if test $ol_enable_crypt != no ; then
2160	save_LIBS="$LIBS"
2161	LIBS="$TLS_LIBS $LIBS"
2162
2163	AC_CHECK_FUNC(crypt, [have_crypt=yes], [
2164		LIBS="$save_LIBS"
2165		AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
2166			have_crypt=yes], [have_crypt=no])])
2167
2168	LIBS="$TLS_LIBS $LIBS"
2169	AC_CHECK_LIB(crypt, crypt_r, [have_crypt_r=yes], [have_crypt_r=no])
2170
2171	LIBS="$save_LIBS"
2172
2173	if test $have_crypt = yes ; then
2174		AC_DEFINE(HAVE_CRYPT,1, [define if crypt(3) is available])
2175		if test $have_crypt_r = yes ; then
2176			AC_DEFINE(HAVE_CRYPT_R, 1, [define if crypt_r() is also available])
2177		fi
2178	else
2179		AC_MSG_WARN([could not find crypt])
2180		if test $ol_enable_crypt = yes ; then
2181			AC_MSG_ERROR([could not find crypt, select appropriate options or disable])
2182		fi
2183
2184		AC_MSG_WARN([disabling crypt support])
2185		ol_enable_crypt=no
2186	fi
2187fi
2188
2189dnl ----------------------------------------------------------------
2190if test $ol_enable_slp != no ; then
2191	AC_CHECK_HEADERS( slp.h )
2192
2193	if test $ac_cv_header_slp_h = yes ; then
2194		AC_CHECK_LIB(slp, SLPOpen, [have_slp=yes], [have_slp=no])
2195		if test $have_slp = yes ; then
2196			AC_DEFINE(HAVE_SLP, 1, [define if you have -lslp])
2197			SLAPD_SLP_LIBS=-lslp
2198		fi
2199
2200	elif test $ol_enable_slp = yes ; then
2201		AC_MSG_ERROR([SLP not found])
2202	fi
2203fi
2204
2205dnl ----------------------------------------------------------------
2206dnl Libevent
2207if test $ol_enable_balancer != no ; then
2208	AC_CHECK_LIB(event_extra, evdns_base_new,
2209		[have_libevent=yes
2210		LEVENT_LIBS="$LEVENT_LIBS -levent_core -levent_extra"],
2211		[AC_CHECK_LIB(event, evdns_base_new,
2212			[have_libevent=yes
2213			LEVENT_LIBS="$LEVENT_LIBS -levent"],
2214			[have_libevent=no])])
2215	AC_CHECK_LIB(event, libevent_global_shutdown, [], [have_libevent=no])
2216
2217	if test $have_libevent = yes ; then
2218		AC_DEFINE(HAVE_LIBEVENT, 1, [define if you have -levent])
2219	else
2220		AC_MSG_ERROR([You need libevent 2.1 or later with DNS support to build the load balancer])
2221	fi
2222fi
2223
2224dnl ----------------------------------------------------------------
2225dnl Checks for typedefs, structures, and compiler characteristics.
2226
2227AC_CHECK_TYPE(mode_t, int)
2228AC_CHECK_TYPE(off_t, long)
2229AC_CHECK_TYPE(pid_t, int)
2230AC_CHECK_TYPE(ssize_t, [signed int])
2231AC_CHECK_TYPE(caddr_t,	[char *])
2232AC_CHECK_TYPE(size_t, unsigned)
2233
2234AC_CHECK_TYPES([long long])
2235AC_CHECK_TYPES([ptrdiff_t])
2236
2237
2238AC_CHECK_TYPE([socklen_t],,, [$ac_includes_default
2239#ifdef HAVE_SYS_SOCKET_H
2240#include <sys/socket.h>
2241#endif
2242#ifdef HAVE_WINSOCK2
2243#include <ws2tcpip.h>
2244#endif])
2245
2246dnl socklen_t-like type in accept(), default socklen_t or int:
2247dnl - The OS might define socklen_t without using it.  POSIX moved from
2248dnl   int to size_t to socklen_t, hoping to stay at a 32-bit type, and
2249dnl   HP-UX now has selectors for what to use.
2250dnl - On Solaris 2.8 the prototype has void *len, but the default is OK.
2251AC_MSG_CHECKING([the type of arg 3 to accept()])
2252AC_CACHE_VAL(ol_cv_type_ber_socklen_t, [
2253	set socklen_t int unsigned "unsigned long" long size_t
2254	test "$ac_cv_type_socklen_t" = yes || shift
2255	ol_cv_type_ber_socklen_t=$1 guessing="guessing "
2256	for lentype in "$@" ; do for addrtype in "struct sockaddr" void ; do
2257		AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$ac_includes_default
2258#ifdef HAVE_SYS_SOCKET_H
2259#include <sys/socket.h>
2260#endif
2261extern int accept(int s, $addrtype *ap, $lentype *lp);
2262], [
2263accept(0, (struct sockaddr *) 0, ($lentype *) 0);
2264])], [ol_cv_type_ber_socklen_t=$lentype guessing= ; break 2])
2265	done ; done])
2266AC_MSG_RESULT([$guessing$ol_cv_type_ber_socklen_t *])
2267AC_DEFINE_UNQUOTED(ber_socklen_t, $ol_cv_type_ber_socklen_t,
2268	[Define to the type of arg 3 for `accept'.])
2269
2270dnl Modules should use ber_socklen_t, not socklen_t.  Define socklen_t
2271dnl for the time being anyway, for backwards compatibility.
2272if test "$ac_cv_type_socklen_t" != yes; then
2273	AC_DEFINE_UNQUOTED([socklen_t], [$ol_cv_type_ber_socklen_t],
2274		[Define like ber_socklen_t if <sys/socket.h> does not define.])
2275fi
2276
2277
2278AC_TYPE_SIGNAL
2279
2280AC_CHECK_TYPE([sig_atomic_t],,
2281	[AC_DEFINE_UNQUOTED([sig_atomic_t], [int],
2282		[Define to `int' if <signal.h> does not define.])],
2283	[$ac_includes_default
2284#include <signal.h>
2285	])
2286
2287AC_TYPE_UID_T
2288
2289AC_HEADER_TIME
2290AC_STRUCT_TM
2291AC_CHECK_MEMBERS([struct stat.st_blksize])
2292AC_CHECK_MEMBERS([struct passwd.pw_gecos],,,[$ac_includes_default
2293#include <pwd.h>])
2294AC_CHECK_MEMBERS([struct passwd.pw_passwd],,,[$ac_includes_default
2295#include <pwd.h>])
2296
2297OL_C_UPPER_LOWER
2298AC_C_CONST
2299OL_C_VOLATILE
2300
2301if test $cross_compiling = yes ; then
2302	AC_MSG_WARN([Crossing compiling... all bets are off!])
2303	AC_DEFINE(CROSS_COMPILING, 1, [define if cross compiling])
2304else
2305	AC_C_BIGENDIAN
2306fi
2307
2308AC_CHECK_SIZEOF(short)
2309AC_CHECK_SIZEOF(int)
2310AC_CHECK_SIZEOF(long)
2311AC_CHECK_SIZEOF(long long)
2312AC_CHECK_SIZEOF(wchar_t)
2313
2314if test "$ac_cv_sizeof_int" -lt 4 ; then
2315	AC_MSG_WARN([OpenLDAP requires 'int' to be 32 bits or greater.])
2316
2317	AC_DEFINE(LBER_INT_T,long,[define to 32-bit or greater integer type])
2318else
2319	AC_DEFINE(LBER_INT_T,int,[define to 32-bit or greater integer type])
2320fi
2321
2322AC_DEFINE(LBER_LEN_T,long,[define to large integer type])
2323AC_DEFINE(LBER_SOCKET_T,int,[define to socket descriptor type])
2324AC_DEFINE(LBER_TAG_T,long,[define to large integer type])
2325
2326dnl ----------------------------------------------------------------
2327dnl Check for multiple precision support
2328if test $ol_with_mp = longlong || test $ol_with_mp = auto ; then
2329	if test $ac_cv_sizeof_long_long -gt 4 ; then
2330		ol_with_mp=longlong
2331		AC_DEFINE(USE_MP_LONG_LONG,1,[define to use 'long long' for MP])
2332	elif test $ol_with_mp = longlong ; then
2333		AC_MSG_ERROR([long long unusable for multiple precision])
2334	fi
2335fi
2336if test $ol_with_mp = long || test $ol_with_mp = auto ; then
2337	if test $ac_cv_sizeof_long -gt 4 ; then
2338		ol_with_mp=long
2339		AC_DEFINE(USE_MP_LONG,1,[define to use 'long' for MP])
2340	elif test $ol_with_mp = long ; then
2341		AC_MSG_ERROR([long unusable for multiple precision])
2342	fi
2343fi
2344if test $ol_with_mp = bignum || test $ol_with_mp = auto ; then
2345	AC_CHECK_HEADERS(openssl/bn.h)
2346	AC_CHECK_HEADERS(openssl/crypto.h)
2347	if test "$ac_cv_header_openssl_bn_h" = "yes" &&
2348		test "$ac_cv_header_openssl_crypto_h" = "yes" &&
2349		test "$ol_with_tls" = "found" ; then
2350		ol_with_mp=bignum
2351		AC_DEFINE(USE_MP_BIGNUM,1,[define to use OpenSSL BIGNUM for MP])
2352	elif test $ol_with_mp = bignum ; then
2353		AC_MSG_ERROR([bignum not available])
2354	fi
2355fi
2356if test $ol_with_mp = gmp || test $ol_with_mp = auto ; then
2357	AC_CHECK_HEADERS(gmp.h)
2358	AC_CHECK_LIB(gmp, __gmpz_add_ui)
2359	if test $ac_cv_header_gmp_h = yes && test $ac_cv_lib_gmp___gmpz_add_ui = yes ; then
2360		AC_DEFINE(USE_MP_GMP,1,[define to use GMP for MP])
2361		ol_with_mp=gmp
2362	elif test $ol_with_mp = gmp ; then
2363		AC_MSG_ERROR([gmp not available])
2364	fi
2365fi
2366if test $ol_with_mp = auto ; then
2367	ol_with_mp=no
2368fi
2369
2370dnl ----------------------------------------------------------------
2371dnl Checks for library functions.
2372AC_FUNC_MEMCMP
2373
2374if test $ac_cv_func_memcmp_working = no ; then
2375	AC_DEFINE(NEED_MEMCMP_REPLACEMENT,1,
2376		[define if memcmp is not 8-bit clean or is otherwise broken])
2377fi
2378
2379AC_FUNC_STRFTIME
2380
2381OL_FUNC_INET_ATON
2382
2383dnl Check for NT specific routines
2384AC_CHECK_FUNC(_spawnlp, AC_DEFINE(HAVE_SPAWNLP,1,[if you have spawnlp()]))
2385
2386AC_CHECK_FUNC(_snprintf, [ac_cv_func_snprintf=yes
2387	AC_DEFINE(snprintf, _snprintf, [define to snprintf routine])
2388])
2389
2390AC_CHECK_FUNCS(vsnprintf _vsnprintf)
2391
2392if test $ac_cv_func_vsnprintf = no -a $ac_cv_func__vsnprintf = yes ; then
2393	ac_cv_func_vsnprintf=yes
2394	AC_DEFINE(vsnprintf, _vsnprintf, [define to vsnprintf routine])
2395fi
2396
2397AC_FUNC_VPRINTF
2398
2399if test $ac_cv_func_vprintf = yes ; then
2400	dnl check for vsnprintf
2401	AC_CHECK_FUNCS(snprintf vsnprintf)
2402fi
2403
2404AC_CHECK_FUNCS(			\
2405	bcopy			\
2406	clock_gettime	\
2407	closesocket		\
2408	chroot			\
2409	endgrent		\
2410	endpwent		\
2411	fcntl			\
2412	flock			\
2413	fstat			\
2414	getdtablesize		\
2415	geteuid			\
2416	getgrgid		\
2417	gethostname		\
2418	getpassphrase		\
2419	getpwuid		\
2420	getpwnam		\
2421	getspnam		\
2422	gettimeofday		\
2423	initgroups		\
2424	inet_ntoa_b		\
2425	ioctl			\
2426	lockf			\
2427	memcpy			\
2428	memmove			\
2429	memrchr			\
2430	mkstemp			\
2431	mktemp			\
2432	pipe			\
2433	read			\
2434	recv			\
2435	recvfrom		\
2436	setpwfile		\
2437	setgid			\
2438	setegid			\
2439	setsid			\
2440	setuid			\
2441	seteuid			\
2442	signal			\
2443	strdup			\
2444	strpbrk			\
2445	strrchr			\
2446	strsep			\
2447	strstr			\
2448	strtol			\
2449	strtoul			\
2450	strtoq			\
2451	strtouq			\
2452	strtoll			\
2453	strtoull		\
2454	strspn			\
2455	sysconf			\
2456	waitpid			\
2457	wait4			\
2458	write			\
2459	send			\
2460	sendmsg			\
2461	sendto			\
2462)
2463
2464dnl We actually may need to replace more than this.
2465AC_REPLACE_FUNCS(getopt getpeereid)
2466
2467if test "$ac_cv_func_getopt" != yes; then
2468	LIBSRCS="$LIBSRCS getopt.c"
2469fi
2470
2471if test "$ac_cv_func_getpeereid" != yes; then
2472	AC_CHECK_FUNCS( getpeerucred )
2473	if test "$ac_cv_func_getpeerucred" != yes ; then
2474		AC_CHECK_MEMBERS([struct msghdr.msg_accrightslen],,,
2475			[$ac_includes_default
2476#ifdef HAVE_SYS_SOCKET_H
2477#include <sys/socket.h>
2478#endif])
2479		if test "$ac_cv_member_struct_msghdr_msg_accrightslen" != yes; then
2480			AC_CHECK_MEMBERS([struct msghdr.msg_control],,,
2481				[$ac_includes_default
2482#ifdef HAVE_SYS_SOCKET_H
2483#include <sys/socket.h>
2484#endif])
2485		fi
2486		AC_CHECK_MEMBERS([struct stat.st_fstype, struct stat.st_vfstype])
2487		if test "$ac_cv_member_struct_stat_st_fstype" = yes; then
2488			AC_COMPILE_IFELSE([AC_LANG_SOURCE([struct stat st; char *ptr=st.st_fstype;])],
2489				AC_DEFINE([HAVE_STRUCT_STAT_ST_FSTYPE_CHAR],1,[define to 1 if st_fstype is char *]),
2490				AC_DEFINE([HAVE_STRUCT_STAT_ST_FSTYPE_INT],1,[define to 1 if st_fstype is int]))
2491		fi
2492	fi
2493	LIBSRCS="$LIBSRCS getpeereid.c"
2494fi
2495
2496if test "$ac_cv_func_snprintf" != yes ||
2497   test "$ac_cv_func_vsnprintf" != yes; then
2498	if test "$ac_cv_func_snprintf" != yes; then
2499		AC_DEFINE(snprintf, ber_pvt_snprintf, [define to snprintf routine])
2500	fi
2501	if test "$ac_cv_func_vsnprintf" != yes; then
2502		AC_DEFINE(vsnprintf, ber_pvt_vsnprintf, [define to snprintf routine])
2503	fi
2504fi
2505
2506dnl ----------------------------------------------------------------
2507dnl Sort out defines
2508
2509if test "$ol_enable_slapi" != no ; then
2510	dnl This check is done also if --enable-modules is used;
2511	dnl it is duplicated here, 'cause it'd be cached anyway
2512	AC_CHECK_HEADERS(ltdl.h)
2513
2514	if test $ac_cv_header_ltdl_h != yes ; then
2515		AC_MSG_ERROR([could not locate <ltdl.h>])
2516	fi
2517	AC_CHECK_LIB(ltdl, lt_dlinit, [
2518		SLAPI_LIBS=-lltdl
2519		LIBSLAPI=slapi/libslapi.la
2520		AC_DEFINE(HAVE_LIBLTDL,1,[define if you have libtool -ltdl])
2521	],[AC_MSG_ERROR([could not locate libtool -lltdl])])
2522
2523	AC_DEFINE(LDAP_SLAPI,1, [define this to add SLAPI code])
2524fi
2525
2526if test "$ol_enable_debug" != no ; then
2527	if test "$ol_enable_debug" = traditional; then
2528		AC_DEFINE(OLD_DEBUG,1,
2529			[define to use the original debug style])
2530	fi
2531	AC_DEFINE(LDAP_DEBUG,1,
2532		[define this to add debugging code])
2533fi
2534if test "$ol_enable_syslog" != no ; then
2535	AC_DEFINE(LDAP_SYSLOG,1,
2536		[define this to add syslog code])
2537fi
2538if test "$ol_enable_referrals" != no ; then
2539	AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS,LDAP_VENDOR_VERSION,
2540		[define to LDAP VENDOR VERSION])
2541fi
2542if test "$ol_enable_local" != no; then
2543	AC_DEFINE(LDAP_PF_LOCAL,1,[define to support PF_LOCAL])
2544fi
2545if test "$ol_link_ipv6" != no; then
2546	AC_DEFINE(LDAP_PF_INET6,1,[define to support PF_INET6])
2547fi
2548if test "$ol_enable_cleartext" != no ; then
2549	AC_DEFINE(SLAPD_CLEARTEXT,1,[define to support cleartext passwords])
2550fi
2551if test "$ol_enable_crypt" != no ; then
2552	AC_DEFINE(SLAPD_CRYPT,1,[define to support crypt(3) passwords])
2553fi
2554if test "$ol_link_spasswd" != no ; then
2555	AC_DEFINE(SLAPD_SPASSWD,1,[define to support SASL passwords])
2556fi
2557if test "$ol_enable_rlookups" != no ; then
2558	AC_DEFINE(SLAPD_RLOOKUPS,1,[define to support reverse lookups])
2559fi
2560if test "$ol_enable_aci" != no ; then
2561	if test "$ol_enable_aci" = mod ; then
2562		MFLAG=SLAPD_MOD_DYNAMIC
2563		dnl remove this after moving servers/slapd/aci.c in contrib/slapd-modules/acl
2564		AC_MSG_ERROR([ACI build as dynamic module not supported (yet)])
2565	else
2566		MFLAG=SLAPD_MOD_STATIC
2567	fi
2568	WITH_ACI_ENABLED=$ol_enable_aci
2569	AC_DEFINE_UNQUOTED(SLAPD_ACI_ENABLED,$MFLAG,[define to support per-object ACIs])
2570else
2571	WITH_ACI_ENABLED=no
2572fi
2573if test "$ol_enable_dynacl" != no ; then
2574	AC_DEFINE(SLAP_DYNACL,1,[define to support run-time loadable ACL])
2575fi
2576
2577if test "$ol_link_modules" != no ; then
2578	AC_DEFINE(SLAPD_MODULES,1,[define to support modules])
2579	BUILD_SLAPD=yes
2580	SLAPD_MODULES_LDFLAGS="-dlopen self"
2581fi
2582
2583AC_DEFINE(SLAPD_MOD_STATIC,1,[statically linked module])
2584AC_DEFINE(SLAPD_MOD_DYNAMIC,2,[dynamically linked module])
2585
2586if test "$ol_enable_dnssrv" != no ; then
2587	BUILD_SLAPD=yes
2588	BUILD_DNSSRV=$ol_enable_dnssrv
2589	if test "$ol_enable_dnssrv" = mod ; then
2590		SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-dnssrv"
2591		MFLAG=SLAPD_MOD_DYNAMIC
2592	else
2593		SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-dnssrv"
2594		MFLAG=SLAPD_MOD_STATIC
2595	fi
2596	AC_DEFINE_UNQUOTED(SLAPD_DNSSRV,$MFLAG,[define to support DNS SRV backend])
2597fi
2598
2599if test "$ol_enable_ldap" != no ; then
2600	BUILD_SLAPD=yes
2601	BUILD_LDAP=$ol_enable_ldap
2602	if test "$ol_enable_ldap" = mod ; then
2603		SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-ldap"
2604		MFLAG=SLAPD_MOD_DYNAMIC
2605	else
2606		SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-ldap"
2607		MFLAG=SLAPD_MOD_STATIC
2608	fi
2609	AC_DEFINE_UNQUOTED(SLAPD_LDAP,$MFLAG,[define to support LDAP backend])
2610fi
2611
2612if test "$ol_enable_mdb" != no ; then
2613	BUILD_SLAPD=yes
2614	BUILD_MDB=$ol_enable_mdb
2615	if test "$ol_enable_mdb" = mod ; then
2616		SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-mdb"
2617		MFLAG=SLAPD_MOD_DYNAMIC
2618	else
2619		SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-mdb"
2620		MFLAG=SLAPD_MOD_STATIC
2621	fi
2622	AC_DEFINE_UNQUOTED(SLAPD_MDB,$MFLAG,[define to support MDB backend])
2623fi
2624
2625if test "$ol_enable_meta" != no ; then
2626	BUILD_SLAPD=yes
2627	BUILD_META=$ol_enable_meta
2628	if test "$ol_enable_meta" = mod ; then
2629		SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-meta"
2630		MFLAG=SLAPD_MOD_DYNAMIC
2631	else
2632		SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-meta"
2633		MFLAG=SLAPD_MOD_STATIC
2634	fi
2635	AC_DEFINE_UNQUOTED(SLAPD_META,$MFLAG,[define to support LDAP Metadirectory backend])
2636fi
2637
2638if test "$ol_enable_asyncmeta" != no ; then
2639	BUILD_SLAPD=yes
2640	BUILD_ASYNCMETA=$ol_enable_asyncmeta
2641	if test "$ol_enable_asyncmeta" = mod ; then
2642		SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-asyncmeta"
2643		MFLAG=SLAPD_MOD_DYNAMIC
2644	else
2645		SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-asyncmeta"
2646		MFLAG=SLAPD_MOD_STATIC
2647	fi
2648	AC_DEFINE_UNQUOTED(SLAPD_ASYNCMETA,$MFLAG,[define to support LDAP Async Metadirectory backend])
2649fi
2650
2651if test "$ol_enable_ndb" != no ; then
2652	BUILD_SLAPD=yes
2653	BUILD_NDB=$ol_enable_ndb
2654	if test "$ol_enable_ndb" = mod ; then
2655		SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-ndb"
2656		MFLAG=SLAPD_MOD_DYNAMIC
2657	else
2658		SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-ndb"
2659		MFLAG=SLAPD_MOD_STATIC
2660	fi
2661	AC_DEFINE_UNQUOTED(SLAPD_NDB,$MFLAG,[define to support NDB backend])
2662fi
2663
2664if test "$ol_enable_null" != no ; then
2665	BUILD_SLAPD=yes
2666	BUILD_NULL=$ol_enable_null
2667	if test "$ol_enable_null" = mod ; then
2668		SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-null"
2669		MFLAG=SLAPD_MOD_DYNAMIC
2670	else
2671		SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-null"
2672		MFLAG=SLAPD_MOD_STATIC
2673	fi
2674	AC_DEFINE_UNQUOTED(SLAPD_NULL,$MFLAG,[define to support NULL backend])
2675fi
2676
2677if test "$ol_enable_passwd" != no ; then
2678	BUILD_SLAPD=yes
2679	BUILD_PASSWD=$ol_enable_passwd
2680	if test "$ol_enable_passwd" = mod ; then
2681		SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-passwd"
2682		MFLAG=SLAPD_MOD_DYNAMIC
2683	else
2684		SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-passwd"
2685		MFLAG=SLAPD_MOD_STATIC
2686	fi
2687	AC_DEFINE_UNQUOTED(SLAPD_PASSWD,$MFLAG,[define to support PASSWD backend])
2688fi
2689
2690if test "$ol_link_perl" != no ; then
2691	BUILD_SLAPD=yes
2692	BUILD_PERL=$ol_enable_perl
2693	if test "$ol_enable_perl" = mod ; then
2694		SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-perl"
2695		MFLAG=SLAPD_MOD_DYNAMIC
2696	else
2697		SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-perl"
2698		MFLAG=SLAPD_MOD_STATIC
2699	fi
2700	AC_DEFINE_UNQUOTED(SLAPD_PERL,$MFLAG,[define to support PERL backend])
2701fi
2702
2703if test "$ol_enable_relay" != no ; then
2704	BUILD_SLAPD=yes
2705	BUILD_RELAY=$ol_enable_relay
2706	if test "$ol_enable_relay" = mod ; then
2707		SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-relay"
2708		MFLAG=SLAPD_MOD_DYNAMIC
2709	else
2710		SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-relay"
2711		MFLAG=SLAPD_MOD_STATIC
2712	fi
2713	AC_DEFINE_UNQUOTED(SLAPD_RELAY,$MFLAG,[define to support relay backend])
2714fi
2715
2716if test "$ol_enable_sock" != no ; then
2717	BUILD_SLAPD=yes
2718	BUILD_SOCK=$ol_enable_sock
2719	if test "$ol_enable_sock" = mod ; then
2720		SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-sock"
2721		MFLAG=SLAPD_MOD_DYNAMIC
2722	else
2723		SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-sock"
2724		MFLAG=SLAPD_MOD_STATIC
2725	fi
2726	AC_DEFINE_UNQUOTED(SLAPD_SOCK,$MFLAG,[define to support SOCK backend])
2727fi
2728
2729if test "$ol_link_sql" != no ; then
2730	BUILD_SLAPD=yes
2731	BUILD_SQL=$ol_enable_sql
2732	if test "$ol_enable_sql" = mod; then
2733		SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-sql"
2734		MFLAG=SLAPD_MOD_DYNAMIC
2735	else
2736		SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-sql"
2737		MFLAG=SLAPD_MOD_STATIC
2738	fi
2739	AC_DEFINE_UNQUOTED(SLAPD_SQL,$MFLAG,[define to support SQL backend])
2740fi
2741
2742if test "$ol_link_wt" != no ; then
2743	BUILD_SLAPD=yes
2744	BUILD_WT=$ol_enable_wt
2745	if test "$ol_enable_wt" = mod; then
2746		SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-wt"
2747		MFLAG=SLAPD_MOD_DYNAMIC
2748	else
2749		SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-wt"
2750		MFLAG=SLAPD_MOD_STATIC
2751	fi
2752	AC_DEFINE_UNQUOTED(SLAPD_WT,$MFLAG,[define to support WiredTiger backend])
2753fi
2754
2755if test "$ol_enable_accesslog" != no ; then
2756	BUILD_ACCESSLOG=$ol_enable_accesslog
2757	if test "$ol_enable_accesslog" = mod ; then
2758		MFLAG=SLAPD_MOD_DYNAMIC
2759		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS accesslog.la"
2760	else
2761		MFLAG=SLAPD_MOD_STATIC
2762		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS accesslog.o"
2763	fi
2764	AC_DEFINE_UNQUOTED(SLAPD_OVER_ACCESSLOG,$MFLAG,[define for In-Directory Access Logging overlay])
2765fi
2766
2767if test "$ol_enable_auditlog" != no ; then
2768	BUILD_AUDITLOG=$ol_enable_auditlog
2769	if test "$ol_enable_auditlog" = mod ; then
2770		MFLAG=SLAPD_MOD_DYNAMIC
2771		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS auditlog.la"
2772	else
2773		MFLAG=SLAPD_MOD_STATIC
2774		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS auditlog.o"
2775	fi
2776	AC_DEFINE_UNQUOTED(SLAPD_OVER_AUDITLOG,$MFLAG,[define for Audit Logging overlay])
2777fi
2778
2779if test "$ol_enable_autoca" != no ; then
2780	if test $ol_with_tls != openssl ; then
2781		AC_MSG_ERROR([--enable-autoca=$ol_enable_autoca requires --with-tls=openssl])
2782	fi
2783
2784	BUILD_AUTOCA=$ol_enable_autoca
2785	if test "$ol_enable_autoca" = mod ; then
2786		MFLAG=SLAPD_MOD_DYNAMIC
2787		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS autoca.la"
2788	else
2789		MFLAG=SLAPD_MOD_STATIC
2790		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS autoca.o"
2791	fi
2792	AC_DEFINE_UNQUOTED(SLAPD_OVER_AUTOCA,$MFLAG,[define for Automatic Certificate Authority overlay])
2793fi
2794
2795if test "$ol_enable_collect" != no ; then
2796        BUILD_COLLECT=$ol_enable_collect
2797        if test "$ol_enable_collect" = mod ; then
2798                MFLAG=SLAPD_MOD_DYNAMIC
2799                SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS collect.la"
2800        else
2801                MFLAG=SLAPD_MOD_STATIC
2802                SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS collect.o"
2803        fi
2804        AC_DEFINE_UNQUOTED(SLAPD_OVER_COLLECT,$MFLAG,[define for Collect overlay])
2805fi
2806
2807if test "$ol_enable_constraint" != no ; then
2808	BUILD_CONSTRAINT=$ol_enable_constraint
2809	if test "$ol_enable_constraint" = mod ; then
2810		MFLAG=SLAPD_MOD_DYNAMIC
2811		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS constraint.la"
2812	else
2813		MFLAG=SLAPD_MOD_STATIC
2814		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS constraint.o"
2815	fi
2816	AC_DEFINE_UNQUOTED(SLAPD_OVER_CONSTRAINT,$MFLAG,[define for Attribute Constraint overlay])
2817fi
2818
2819if test "$ol_enable_dds" != no ; then
2820	BUILD_DDS=$ol_enable_dds
2821	if test "$ol_enable_dds" = mod ; then
2822		MFLAG=SLAPD_MOD_DYNAMIC
2823		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS dds.la"
2824	else
2825		MFLAG=SLAPD_MOD_STATIC
2826		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS dds.o"
2827	fi
2828	AC_DEFINE_UNQUOTED(SLAPD_OVER_DDS,$MFLAG,[define for Dynamic Directory Services overlay])
2829fi
2830
2831if test "$ol_enable_deref" != no ; then
2832	BUILD_DEREF=$ol_enable_deref
2833	if test "$ol_enable_deref" = mod ; then
2834		MFLAG=SLAPD_MOD_DYNAMIC
2835		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS deref.la"
2836	else
2837		MFLAG=SLAPD_MOD_STATIC
2838		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS deref.o"
2839	fi
2840	AC_DEFINE_UNQUOTED(SLAPD_OVER_DEREF,$MFLAG,[define for Dynamic Directory Services overlay])
2841fi
2842
2843if test "$ol_enable_dyngroup" != no ; then
2844	BUILD_DYNGROUP=$ol_enable_dyngroup
2845	if test "$ol_enable_dyngroup" = mod ; then
2846		MFLAG=SLAPD_MOD_DYNAMIC
2847		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS dyngroup.la"
2848	else
2849		MFLAG=SLAPD_MOD_STATIC
2850		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS dyngroup.o"
2851	fi
2852	AC_DEFINE_UNQUOTED(SLAPD_OVER_DYNGROUP,$MFLAG,[define for Dynamic Group overlay])
2853fi
2854
2855if test "$ol_enable_dynlist" != no ; then
2856	BUILD_DYNLIST=$ol_enable_dynlist
2857	if test "$ol_enable_dynlist" = mod ; then
2858		MFLAG=SLAPD_MOD_DYNAMIC
2859		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS dynlist.la"
2860	else
2861		MFLAG=SLAPD_MOD_STATIC
2862		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS dynlist.o"
2863	fi
2864	AC_DEFINE_UNQUOTED(SLAPD_OVER_DYNLIST,$MFLAG,[define for Dynamic List overlay])
2865fi
2866
2867if test "$ol_enable_homedir" != no ; then
2868	BUILD_HOMEDIR=$ol_enable_homedir
2869	if test "$ol_enable_homedir" = mod ; then
2870		MFLAG=SLAPD_MOD_DYNAMIC
2871		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS homedir.la"
2872	else
2873		MFLAG=SLAPD_MOD_STATIC
2874		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS homedir.o"
2875	fi
2876	AC_DEFINE_UNQUOTED(SLAPD_OVER_HOMEDIR,$MFLAG,[define for Home Directory Management overlay])
2877fi
2878
2879if test "$ol_enable_memberof" != no ; then
2880	BUILD_MEMBEROF=$ol_enable_memberof
2881	if test "$ol_enable_memberof" = mod ; then
2882		MFLAG=SLAPD_MOD_DYNAMIC
2883		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS memberof.la"
2884	else
2885		MFLAG=SLAPD_MOD_STATIC
2886		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS memberof.o"
2887	fi
2888	AC_DEFINE_UNQUOTED(SLAPD_OVER_MEMBEROF,$MFLAG,[define for Reverse Group Membership overlay])
2889fi
2890
2891if test "$ol_enable_otp" != no ; then
2892	if test $ol_with_tls = no ; then
2893		AC_MSG_ERROR([--enable-otp=$ol_enable_otp requires --with-tls])
2894	fi
2895
2896	BUILD_OTP=$ol_enable_otp
2897	if test "$ol_enable_otp" = mod ; then
2898		MFLAG=SLAPD_MOD_DYNAMIC
2899		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS otp.la"
2900	else
2901		MFLAG=SLAPD_MOD_STATIC
2902		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS otp.o"
2903	fi
2904	AC_DEFINE_UNQUOTED(SLAPD_OVER_OTP,$MFLAG,[define for OTP 2-factor Authentication overlay])
2905fi
2906
2907if test "$ol_enable_ppolicy" != no ; then
2908	BUILD_PPOLICY=$ol_enable_ppolicy
2909	if test "$ol_enable_ppolicy" = mod ; then
2910		MFLAG=SLAPD_MOD_DYNAMIC
2911		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS ppolicy.la"
2912	else
2913		MFLAG=SLAPD_MOD_STATIC
2914		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS ppolicy.o"
2915	fi
2916	AC_DEFINE_UNQUOTED(SLAPD_OVER_PPOLICY,$MFLAG,[define for Password Policy overlay])
2917fi
2918
2919if test "$ol_enable_proxycache" != no ; then
2920	BUILD_PROXYCACHE=$ol_enable_proxycache
2921	if test "$ol_enable_proxycache" = mod ; then
2922		MFLAG=SLAPD_MOD_DYNAMIC
2923		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS pcache.la"
2924	else
2925		MFLAG=SLAPD_MOD_STATIC
2926		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS pcache.o"
2927	fi
2928	AC_DEFINE_UNQUOTED(SLAPD_OVER_PROXYCACHE,$MFLAG,[define for Proxy Cache overlay])
2929fi
2930
2931if test "$ol_enable_refint" != no ; then
2932	BUILD_REFINT=$ol_enable_refint
2933	if test "$ol_enable_refint" = mod ; then
2934		MFLAG=SLAPD_MOD_DYNAMIC
2935		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS refint.la"
2936	else
2937		MFLAG=SLAPD_MOD_STATIC
2938		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS refint.o"
2939	fi
2940	AC_DEFINE_UNQUOTED(SLAPD_OVER_REFINT,$MFLAG,[define for Referential Integrity overlay])
2941fi
2942
2943if test "$ol_enable_remoteauth" != no ; then
2944	BUILD_REMOTEAUTH=$ol_enable_remoteauth
2945	if test "$ol_enable_remoteauth" = mod ; then
2946		MFLAG=SLAPD_MOD_DYNAMIC
2947		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS remoteauth.la"
2948	else
2949		MFLAG=SLAPD_MOD_STATIC
2950		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS remoteauth.o"
2951	fi
2952	AC_DEFINE_UNQUOTED(SLAPD_OVER_REMOTEAUTH,$MFLAG,[define for Deferred Authentication overlay])
2953fi
2954
2955if test "$ol_enable_retcode" != no ; then
2956	BUILD_RETCODE=$ol_enable_retcode
2957	if test "$ol_enable_retcode" = mod ; then
2958		MFLAG=SLAPD_MOD_DYNAMIC
2959		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS retcode.la"
2960	else
2961		MFLAG=SLAPD_MOD_STATIC
2962		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS retcode.o"
2963	fi
2964	AC_DEFINE_UNQUOTED(SLAPD_OVER_RETCODE,$MFLAG,[define for Return Code overlay])
2965fi
2966
2967if test "$ol_enable_rwm" != no ; then
2968	BUILD_RWM=$ol_enable_rwm
2969	if test "$ol_enable_rwm" = mod ; then
2970		MFLAG=SLAPD_MOD_DYNAMIC
2971		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS rwm.la"
2972	else
2973		MFLAG=SLAPD_MOD_STATIC
2974		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS rwm_x.o"
2975	fi
2976	AC_DEFINE_UNQUOTED(SLAPD_OVER_RWM,$MFLAG,[define for Rewrite/Remap overlay])
2977fi
2978
2979if test "$ol_enable_seqmod" != no ; then
2980	BUILD_SEQMOD=$ol_enable_seqmod
2981	if test "$ol_enable_seqmod" = mod ; then
2982		MFLAG=SLAPD_MOD_DYNAMIC
2983		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS seqmod.la"
2984	else
2985		MFLAG=SLAPD_MOD_STATIC
2986		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS seqmod.o"
2987	fi
2988	AC_DEFINE_UNQUOTED(SLAPD_OVER_SEQMOD,$MFLAG,[define for Sequential Modify overlay])
2989fi
2990
2991if test "$ol_enable_sssvlv" != no ; then
2992	BUILD_SSSVLV=$ol_enable_sssvlv
2993	if test "$ol_enable_sssvlv" = mod ; then
2994		MFLAG=SLAPD_MOD_DYNAMIC
2995		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS sssvlv.la"
2996	else
2997		MFLAG=SLAPD_MOD_STATIC
2998		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS sssvlv.o"
2999	fi
3000	AC_DEFINE_UNQUOTED(SLAPD_OVER_SSSVLV,$MFLAG,[define for ServerSideSort/VLV overlay])
3001fi
3002
3003if test "$ol_enable_syncprov" != no ; then
3004	BUILD_SYNCPROV=$ol_enable_syncprov
3005	if test "$ol_enable_syncprov" = mod ; then
3006		MFLAG=SLAPD_MOD_DYNAMIC
3007		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS syncprov.la"
3008	else
3009		MFLAG=SLAPD_MOD_STATIC
3010		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS syncprov.o"
3011	fi
3012	AC_DEFINE_UNQUOTED(SLAPD_OVER_SYNCPROV,$MFLAG,[define for Syncrepl Provider overlay])
3013fi
3014
3015if test "$ol_enable_translucent" != no ; then
3016	BUILD_TRANSLUCENT=$ol_enable_translucent
3017	if test "$ol_enable_translucent" = mod ; then
3018		MFLAG=SLAPD_MOD_DYNAMIC
3019		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS translucent.la"
3020	else
3021		MFLAG=SLAPD_MOD_STATIC
3022		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS translucent.o"
3023	fi
3024	AC_DEFINE_UNQUOTED(SLAPD_OVER_TRANSLUCENT,$MFLAG,[define for Translucent Proxy overlay])
3025fi
3026
3027if test "$ol_enable_unique" != no ; then
3028	BUILD_UNIQUE=$ol_enable_unique
3029	if test "$ol_enable_unique" = mod ; then
3030		MFLAG=SLAPD_MOD_DYNAMIC
3031		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS unique.la"
3032	else
3033		MFLAG=SLAPD_MOD_STATIC
3034		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS unique.o"
3035	fi
3036	AC_DEFINE_UNQUOTED(SLAPD_OVER_UNIQUE,$MFLAG,[define for Attribute Uniqueness overlay])
3037fi
3038
3039if test "$ol_enable_valsort" != no ; then
3040	BUILD_VALSORT=$ol_enable_valsort
3041	if test "$ol_enable_valsort" = mod ; then
3042		MFLAG=SLAPD_MOD_DYNAMIC
3043		SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS valsort.la"
3044	else
3045		MFLAG=SLAPD_MOD_STATIC
3046		SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS valsort.o"
3047	fi
3048	AC_DEFINE_UNQUOTED(SLAPD_OVER_VALSORT,$MFLAG,[define for Value Sorting overlay])
3049fi
3050
3051ol_link_argon2=no
3052if test "$ol_enable_argon2" = "yes" ; then
3053	if test $ol_with_argon2 = libargon2 || test $ol_with_argon2 = auto; then
3054		AC_CHECK_HEADERS(argon2.h)
3055		if test $ac_cv_header_argon2_h = yes ; then
3056			AC_CHECK_LIB(argon2, argon2i_hash_encoded,
3057				[have_argon2=yes], [have_argon2=no],
3058				[-largon2])
3059		fi
3060		if test "$have_argon2" = "yes" ; then
3061			ol_with_argon2=libargon2
3062			ol_link_argon2=yes
3063			AC_DEFINE(HAVE_LIBARGON2, 1,
3064				[define if you have libargon2])
3065			ARGON2_LIBS="-largon2"
3066		fi
3067	fi
3068	if test $ol_with_argon2 = libsodium || test $ol_with_argon2 = auto; then
3069		AC_CHECK_HEADERS(sodium.h)
3070		if test $ac_cv_header_sodium_h = yes ; then
3071			AC_CHECK_LIB(sodium, crypto_pwhash_str_alg,
3072				[have_argon2=yes], [have_argon2=no],
3073				[-lsodium])
3074		fi
3075		if test "$have_argon2" = "yes" ; then
3076			ol_with_argon2=libsodium
3077			ol_link_argon2=yes
3078			AC_DEFINE(HAVE_LIBSODIUM, 1,
3079				[define if you have libsodium])
3080			ARGON2_LIBS="-lsodium"
3081		fi
3082	fi
3083
3084	if test "$ol_link_argon2" = no ; then
3085		AC_MSG_ERROR([--enable_argon2=$ol_enable_argon2 requires --with-argon2])
3086	fi
3087
3088	BUILD_PW_ARGON2=$ol_enable_argon2
3089	if test "$ol_enable_argon2" = "yes" ; then
3090		SLAPD_DYNAMIC_PWMODS="$SLAPD_DYNAMIC_PWDMODS argon2.la"
3091	fi
3092	AC_DEFINE_UNQUOTED(SLAPD_PWMOD_PW_ARGON2,$SLAPD_MOD_DYNAMIC,[define for Argon2 Password hashing module])
3093fi
3094
3095if test "$ol_enable_balancer" != no \
3096		-a "$ol_with_threads" != no \
3097		-a "$have_libevent" = yes ; then
3098	if test "$ol_enable_balancer" = mod; then
3099		BALANCER_INCLUDE=Makefile.module
3100		BUILD_BALANCER=mod
3101	else
3102		BALANCER_INCLUDE=Makefile.server
3103		BUILD_BALANCER=yes
3104	fi
3105fi
3106
3107if test "$ol_enable_slapi" != no ; then
3108	AC_DEFINE(ENABLE_SLAPI,1,[define to enable slapi library])
3109	BUILD_SLAPI=yes
3110	SLAPD_SLAPI_DEPEND=libslapi.a
3111fi
3112
3113OL_VERSIONED_SYMBOLS=""
3114if test $ol_enable_versioning != no; then
3115	LDVS=`$LD --help < /dev/null 2>/dev/null | grep gnu-version-script`
3116	if test -z "$LDVS"; then
3117		LDVS=`$LD --help < /dev/null 2>/dev/null | grep version-script`
3118		if test -z "$LDVS"; then
3119			if test $ol_enable_versioning = "yes" ; then
3120				AC_MSG_ERROR([Library symbol versioning requested but not supported])
3121			fi
3122		else
3123			OL_VERSIONED_SYMBOLS="-Wl,--version-script="
3124		fi
3125	else
3126		OL_VERSIONED_SYMBOLS="-z gnu-version-script="
3127	fi
3128fi
3129
3130dnl ----------------------------------------------------------------
3131
3132dnl
3133dnl For Windows build, we don't want to include -dlopen flags.
3134dnl They hurt more than they help.
3135dnl
3136
3137if test "$ac_cv_mingw32" = yes -o $ol_cv_msvc = yes ; then
3138	PLAT=NT
3139	SLAPD_MODULES_LDFLAGS=
3140else
3141	PLAT=UNIX
3142fi
3143
3144AC_SUBST(LIBSRCS)
3145AC_SUBST(PLAT)
3146AC_SUBST(WITH_SASL)
3147AC_SUBST(WITH_TLS)
3148AC_SUBST(WITH_MODULES_ENABLED)
3149AC_SUBST(WITH_ACI_ENABLED)
3150AC_SUBST(WITH_SYSTEMD)
3151AC_SUBST(BUILD_THREAD)
3152AC_SUBST(BUILD_LIBS_DYNAMIC)
3153AC_SUBST(OL_VERSIONED_SYMBOLS)
3154
3155AC_SUBST(BUILD_SLAPD)
3156dnl slapi
3157  AC_SUBST(BUILD_SLAPI)
3158  AC_SUBST(SLAPD_SLAPI_DEPEND)
3159dnl backends
3160  AC_SUBST(BUILD_DNSSRV)
3161  AC_SUBST(BUILD_LDAP)
3162  AC_SUBST(BUILD_MDB)
3163  AC_SUBST(BUILD_META)
3164  AC_SUBST(BUILD_ASYNCMETA)
3165  AC_SUBST(BUILD_NDB)
3166  AC_SUBST(BUILD_NULL)
3167  AC_SUBST(BUILD_PASSWD)
3168  AC_SUBST(BUILD_RELAY)
3169  AC_SUBST(BUILD_PERL)
3170  AC_SUBST(BUILD_SHELL)
3171  AC_SUBST(BUILD_SOCK)
3172  AC_SUBST(BUILD_SQL)
3173  AC_SUBST(BUILD_WT)
3174dnl overlays
3175  AC_SUBST(BUILD_ACCESSLOG)
3176  AC_SUBST(BUILD_AUDITLOG)
3177  AC_SUBST(BUILD_AUTOCA)
3178  AC_SUBST(BUILD_COLLECT)
3179  AC_SUBST(BUILD_CONSTRAINT)
3180  AC_SUBST(BUILD_DDS)
3181  AC_SUBST(BUILD_DENYOP)
3182  AC_SUBST(BUILD_DEREF)
3183  AC_SUBST(BUILD_DYNGROUP)
3184  AC_SUBST(BUILD_DYNLIST)
3185  AC_SUBST(BUILD_LASTMOD)
3186  AC_SUBST(BUILD_HOMEDIR)
3187  AC_SUBST(BUILD_MEMBEROF)
3188  AC_SUBST(BUILD_OTP)
3189  AC_SUBST(BUILD_PPOLICY)
3190  AC_SUBST(BUILD_PROXYCACHE)
3191  AC_SUBST(BUILD_REFINT)
3192  AC_SUBST(BUILD_REMOTEAUTH)
3193  AC_SUBST(BUILD_RETCODE)
3194  AC_SUBST(BUILD_RWM)
3195  AC_SUBST(BUILD_SEQMOD)
3196  AC_SUBST(BUILD_SSSVLV)
3197  AC_SUBST(BUILD_SYNCPROV)
3198  AC_SUBST(BUILD_TRANSLUCENT)
3199  AC_SUBST(BUILD_UNIQUE)
3200  AC_SUBST(BUILD_VALSORT)
3201  AC_SUBST(BUILD_BALANCER)
3202dnl pwmods
3203  AC_SUBST(BUILD_PW_ARGON2)
3204
3205AC_SUBST(LDAP_LIBS)
3206AC_SUBST(CLIENT_LIBS)
3207AC_SUBST(SLAPD_LIBS)
3208AC_SUBST(BALANCER_LIBS)
3209AC_SUBST(SLAPD_NDB_LIBS)
3210AC_SUBST(SLAPD_NDB_INCS)
3211AC_SUBST(LTHREAD_LIBS)
3212AC_SUBST(LUTIL_LIBS)
3213AC_SUBST(LEVENT_LIBS)
3214AC_SUBST(WRAP_LIBS)
3215
3216AC_SUBST(SLAPD_MODULES_CPPFLAGS)
3217AC_SUBST(SLAPD_MODULES_LDFLAGS)
3218
3219AC_SUBST(SLAPD_NO_STATIC)
3220AC_SUBST(SLAPD_STATIC_BACKENDS)
3221AC_SUBST(SLAPD_DYNAMIC_BACKENDS)
3222AC_SUBST(SLAPD_STATIC_OVERLAYS)
3223AC_SUBST(SLAPD_DYNAMIC_OVERLAYS)
3224AC_SUBST(SLAPD_DYNAMIC_PWMODS)
3225
3226AC_SUBST(PERL_CPPFLAGS)
3227AC_SUBST(SLAPD_PERL_LDFLAGS)
3228AC_SUBST(MOD_PERL_LDFLAGS)
3229
3230AC_SUBST(SASL_LIBS)
3231AC_SUBST(TLS_LIBS)
3232AC_SUBST(WITH_TLS_TYPE)
3233AC_SUBST(MODULES_LIBS)
3234AC_SUBST(SLAPI_LIBS)
3235AC_SUBST(LIBSLAPI)
3236AC_SUBST(AUTH_LIBS)
3237AC_SUBST(ARGON2_LIBS)
3238AC_SUBST(SYSTEMD_LIBS)
3239
3240AC_SUBST(SLAPD_SLP_LIBS)
3241AC_SUBST(SLAPD_GMP_LIBS)
3242
3243AC_SUBST(SLAPD_SQL_LDFLAGS)
3244AC_SUBST(SLAPD_SQL_LIBS)
3245AC_SUBST(SLAPD_SQL_INCLUDES)
3246
3247AC_SUBST(WT_CFLAGS)
3248AC_SUBST(WT_LIBS)
3249
3250AC_SUBST(BALANCER_INCLUDE)
3251
3252dnl ----------------------------------------------------------------
3253dnl final help output
3254AC_ARG_WITH(xxinstall,[
3255See INSTALL file for further details.])
3256
3257dnl ----------------------------------------------------------------
3258dnl final output
3259dnl
3260
3261AC_CONFIG_FILES([Makefile:build/top.mk:Makefile.in:build/dir.mk]
3262[doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk]
3263[doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk]
3264[doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk]
3265[doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk]
3266[doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk]
3267[doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk]
3268[clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk]
3269[clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk]
3270[include/Makefile:build/top.mk:include/Makefile.in]
3271[libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk]
3272[libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk:build/lib-shared.mk]
3273[libraries/liblber/lber.pc]
3274[libraries/liblber/liblber.vers]
3275[libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk:build/lib-shared.mk]
3276[libraries/libldap/ldap.pc]
3277[libraries/libldap/libldap.vers]
3278[libraries/liblunicode/Makefile:build/top.mk:libraries/liblunicode/Makefile.in:build/lib.mk:build/lib-static.mk]
3279[libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk:build/lib-static.mk]
3280[libraries/librewrite/Makefile:build/top.mk:libraries/librewrite/Makefile.in:build/lib.mk:build/lib-static.mk]
3281[servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk]
3282[servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk]
3283[servers/slapd/back-dnssrv/Makefile:build/top.mk:servers/slapd/back-dnssrv/Makefile.in:build/mod.mk]
3284[servers/slapd/back-ldap/Makefile:build/top.mk:servers/slapd/back-ldap/Makefile.in:build/mod.mk]
3285[servers/slapd/back-ldif/Makefile:build/top.mk:servers/slapd/back-ldif/Makefile.in:build/mod.mk]
3286[servers/slapd/back-mdb/Makefile:build/top.mk:servers/slapd/back-mdb/Makefile.in:build/mod.mk]
3287[servers/slapd/back-meta/Makefile:build/top.mk:servers/slapd/back-meta/Makefile.in:build/mod.mk]
3288[servers/slapd/back-asyncmeta/Makefile:build/top.mk:servers/slapd/back-asyncmeta/Makefile.in:build/mod.mk]
3289[servers/slapd/back-monitor/Makefile:build/top.mk:servers/slapd/back-monitor/Makefile.in:build/mod.mk]
3290[servers/slapd/back-ndb/Makefile:build/top.mk:servers/slapd/back-ndb/Makefile.in:build/mod.mk]
3291[servers/slapd/back-null/Makefile:build/top.mk:servers/slapd/back-null/Makefile.in:build/mod.mk]
3292[servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/mod.mk]
3293[servers/slapd/back-perl/Makefile:build/top.mk:servers/slapd/back-perl/Makefile.in:build/mod.mk]
3294[servers/slapd/back-relay/Makefile:build/top.mk:servers/slapd/back-relay/Makefile.in:build/mod.mk]
3295[servers/slapd/back-sock/Makefile:build/top.mk:servers/slapd/back-sock/Makefile.in:build/mod.mk]
3296[servers/slapd/back-sql/Makefile:build/top.mk:servers/slapd/back-sql/Makefile.in:build/mod.mk]
3297[servers/slapd/back-wt/Makefile:build/top.mk:servers/slapd/back-wt/Makefile.in:build/mod.mk]
3298[servers/slapd/slapi/Makefile:build/top.mk:servers/slapd/slapi/Makefile.in:build/lib.mk:build/lib-shared.mk]
3299[servers/slapd/overlays/Makefile:build/top.mk:servers/slapd/overlays/Makefile.in:build/lib.mk]
3300[servers/slapd/pwmods/Makefile:build/top.mk:servers/slapd/pwmods/Makefile.in:build/lib.mk]
3301[servers/lloadd/Makefile:build/top.mk:servers/lloadd/Makefile.in]
3302[servers/lloadd/Makefile.server:servers/lloadd/Makefile_server.in:build/srv.mk]
3303[servers/lloadd/Makefile.module:servers/lloadd/Makefile_module.in:build/mod.mk]
3304[tests/Makefile:build/top.mk:tests/Makefile.in:build/dir.mk]
3305[tests/run]
3306[tests/progs/Makefile:build/top.mk:tests/progs/Makefile.in:build/rules.mk])
3307
3308AC_CONFIG_COMMANDS([default],[[
3309chmod +x tests/run
3310date > stamp-h
3311BACKENDSC="servers/slapd/backends.c"
3312echo "Making $BACKENDSC"
3313rm -f $BACKENDSC
3314cat > $BACKENDSC << ENDX
3315/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
3316 *
3317 * Copyright 1998-2021 The OpenLDAP Foundation.
3318 * All rights reserved.
3319 *
3320 * Redistribution and use in source and binary forms, with or without
3321 * modification, are permitted only as authorized by the OpenLDAP
3322 * Public License.
3323 *
3324 * A copy of this license is available in the file LICENSE in the
3325 * top-level directory of the distribution or, alternatively, at
3326 * <http://www.OpenLDAP.org/license.html>.
3327 */
3328/* This file is automatically generated by configure; please do not edit. */
3329
3330#include "portable.h"
3331#include "slap.h"
3332
3333ENDX
3334if test "${STATIC_BACKENDS}"; then
3335	for b in config ${STATIC_BACKENDS}; do
3336		bb=`echo "${b}" | sed -e 's/back-//'`
3337		cat >> $BACKENDSC << ENDX
3338extern BI_init ${bb}_back_initialize;
3339ENDX
3340	done
3341
3342	cat >> $BACKENDSC << ENDX
3343
3344BackendInfo slap_binfo[] = {
3345ENDX
3346
3347	for b in config ${STATIC_BACKENDS}; do
3348		bb=`echo "${b}" | sed -e 's/back-//'`
3349		echo "    Add ${bb} ..."
3350		cat >> $BACKENDSC << ENDX
3351	{ "${bb}", ${bb}_back_initialize },
3352ENDX
3353	done
3354
3355	cat >> $BACKENDSC << ENDX
3356	{ NULL, NULL },
3357};
3358
3359/* end of generated file */
3360ENDX
3361fi
3362OVERLAYSC="servers/slapd/overlays/statover.c"
3363echo "Making $OVERLAYSC"
3364rm -f $OVERLAYSC
3365cat > $OVERLAYSC << ENDX
3366/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
3367 *
3368 * Copyright 1998-2021 The OpenLDAP Foundation.
3369 * All rights reserved.
3370 *
3371 * Redistribution and use in source and binary forms, with or without
3372 * modification, are permitted only as authorized by the OpenLDAP
3373 * Public License.
3374 *
3375 * A copy of this license is available in the file LICENSE in the
3376 * top-level directory of the distribution or, alternatively, at
3377 * <http://www.OpenLDAP.org/license.html>.
3378 */
3379/* This file is automatically generated by configure; please do not edit. */
3380
3381#include "portable.h"
3382#include "slap.h"
3383
3384ENDX
3385if test "${STATIC_OVERLAYS}"; then
3386	for o in ${STATIC_OVERLAYS}; do
3387		oo=`echo "${o}" | sed -e 's/.o$//' -e 's/_x$//'`
3388		cat >> $OVERLAYSC << ENDX
3389extern OV_init ${oo}_initialize;
3390ENDX
3391	done
3392fi
3393
3394cat >> $OVERLAYSC << ENDX
3395
3396OverlayInit slap_oinfo[] = {
3397ENDX
3398
3399if test "${STATIC_OVERLAYS}"; then
3400	for o in ${STATIC_OVERLAYS}; do
3401		oo=`echo "${o}" | sed -e 's/.o$//' -e 's/_x$//'`
3402		echo "    Add ${oo} ..."
3403		cat >> $OVERLAYSC << ENDX
3404	{ "${oo}", ${oo}_initialize },
3405ENDX
3406	done
3407fi
3408
3409	cat >> $OVERLAYSC << ENDX
3410	{ NULL, NULL },
3411};
3412
3413/* end of generated file */
3414ENDX
3415
3416if test "${ol_cv_mkdep}" = no; then
3417	echo '(Do not "make depend"; we do not know how to build dependencies)'
3418else
3419	echo 'Please run "make depend" to build dependencies'
3420fi
3421]],[[
3422STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS"
3423STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS"
3424]])
3425AC_OUTPUT
3426