Newer
Older
AC_DEFINE(HAVE_YIELDING_SELECT,1)
fi
if test $ol_with_threads = manual ; then
dnl User thinks he can manually configure threads.
AC_MSG_WARN([thread defines and link options must be set manually])
AC_CHECK_HEADERS(pthread.h sched.h)
AC_CHECK_FUNCS(sched_yield pthread_yield)
OL_LINUX_THREADS
AC_CHECK_HEADERS(mach/cthreads.h)
AC_CHECK_HEADERS(lwp/lwp.h)
AC_CHECK_HEADERS(thread.h synch.h)
fi
Kurt Zeilenga
committed
dnl needed to get reentrant/threadsafe versions
dnl
Kurt Zeilenga
committed
AC_DEFINE(_REENTRANT,1)
Kurt Zeilenga
committed
AC_DEFINE(_THREAD_SAFE,1)
AC_DEFINE(_THREADSAFE,1)
dnl this might cause the errno symbol to be
dnl replaced with a function to get a thread specific errno.
dnl check to see if everything needs to be compiled
dnl with the thread libraries
AC_CACHE_CHECK([for thread specific errno],
[ol_cv_errno_thread_specific], [
AC_TRY_LINK([
#include <errno.h>
], [
int x = errno;
],
[ol_cv_errno_thread_specific=yes],
[ol_cv_errno_thread_specific=no])
])
if test $ol_cv_errno_thread_specific != yes ; then
LIBS="$LTHREAD_LIBS $LIBS"
LTHREAD_LIBS=""
fi
Kurt Zeilenga
committed
dnl When in thread environment, use
dnl #if defined( HAVE_REENTRANT_FUNCTIONS ) \
dnl || defined( HAVE_FUNC_R )
dnl func_r(...);
dnl #else
dnl # if defined( HAVE_THREADS )
dnl /* lock */
dnl # endif
dnl func(...);
dnl # if defined( HAVE_THREADS )
dnl /* unlock */
dnl # endif
Kurt Zeilenga
committed
dnl #endif
dnl
dnl HAVE_REENTRANT_FUNCTIONS is derived from:
dnl _POSIX_REENTRANT_FUNCTIONS
dnl _POSIX_THREAD_SAFE_FUNCTIONS
dnl _POSIX_THREADSAFE_FUNCTIONS
dnl
dnl and is currently defined in lthread.h
dnl
dnl HAVE_THREADS is defined by lthread.h iff -UNO_THREADS
dnl
dnl libldap/*.c should only include <lthread.h> iff
dnl LDAP_R_COMPILE is defined. ie:
dnl #ifdef LDAP_R_COMPILE
dnl # include LDAP_R_COMPILE
dnl #endif
dnl
dnl LDAP_R_COMIPLE is defined by libldap_r/Makefile.in
dnl specifically for compiling the threadsafe version of
dnl the ldap library (-lldap_r).
Kurt Zeilenga
committed
dnl
dnl dnl check for reentrant/threadsafe functions
dnl dnl
dnl dnl note: these should only be used when linking
dnl dnl with $LTHREAD_LIBS
dnl dnl
dnl save_CPPFLAGS="$CPPFLAGS"
dnl save_LIBS="$LIBS"
dnl LIBS="$LTHREAD_LIBS $LIBS"
dnl AC_CHECK_FUNCS( \
dnl strtok_r \
dnl gmtime_r \
dnl gethostbyaddr_r gethostbyname_r \
dnl feof_unlocked unlocked_feof \
dnl putc_unlocked unlocked_putc \
dnl flockfile ftrylockfile \
dnl )
dnl CPPFLAGS="$save_CPPFLAGS"
dnl LIBS="$save_LIBS"
Kurt Zeilenga
committed
dnl ----------------------------------------------------------------
if test $ol_link_threads = no ; then
if test $ol_with_threads = yes ; then
AC_MSG_ERROR([no suitable thread support])
fi
if test $ol_with_threads = auto ; then
AC_MSG_WARN([no suitable thread support, disabling threads])
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
fi
AC_DEFINE(NO_THREADS,1)
LTHREAD_LIBS=""
fi
ol_link_ldbm=no
if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db2 ; then
OL_BERKELEY_DB2
if test $ol_cv_berkeley_db2 = yes ; then
ol_link_ldbm=db2
ol_with_ldbm_api=db2
if test $ol_with_ldbm_type = hash ; then
AC_DEFINE(LDBM_USE_DBHASH,1)
else
AC_DEFINE(LDBM_USE_DBBTREE,1)
fi
dnl $ol_cv_lib_db2 should be yes or -ldb
dnl (it could be no, but that would be an error
if test $ol_cv_lib_db2 != yes ; then
LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db2"
fi
fi
fi
ol_link_bdb2=no
if test $ol_link_ldbm = db2 -a $ol_enable_bdb2 != no ; then
ol_link_bdb2=yes
fi
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = db ; then
OL_BERKELEY_DB
if test $ol_cv_berkeley_db = yes ; then
ol_link_ldbm=db
ol_with_ldbm_api=db
if test $ol_with_ldbm_type = hash ; then
AC_DEFINE(LDBM_USE_DBHASH,1)
else
AC_DEFINE(LDBM_USE_DBBTREE,1)
fi
dnl $ol_cv_lib_db should be yes or -ldb
dnl (it could be no, but that would be an error
if test $ol_cv_lib_db != yes ; then
LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db"
fi
fi
fi
if test $ol_with_ldbm_api = manual ; then
dnl User thinks he can manually configure LDBM api.
AC_MSG_WARN([LDBM defines and link options must be set manually])
AC_CHECK_HEADERS(db.h db_185.h gdbm.h ndbm.h)
fi
if test $ol_link_ldbm = no -a $ol_with_ldbm_type = btree ; then
AC_MSG_WARN(Could not find LDBM with BTREE support)
fi
if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then
OL_GDBM
if test $ol_cv_gdbm = yes ; then
ol_link_ldbm=gdbm
ol_with_ldbm_api=gdbm
if test $ol_cv_lib_gdbm != yes ; then
LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm"
fi
fi
fi
if test $ol_with_ldbm_api = auto ; then
AC_MSG_WARN([skipping automatic checking for NDBM, must be manually enabled.])
elif test $ol_with_ldbm_api = ndbm ; then
OL_NDBM
if test $ol_cv_ndbm = yes ; then
ol_link_ldbm=ndbm
ol_with_ldbm_api=ndbm
if test $ol_cv_lib_ndbm != yes ; then
LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm"
fi
fi
fi
if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then
AC_MSG_WARN(could not find suitable LDBM backend)
if test $ol_enable_ldbm = yes ; then
AC_MSG_ERROR(select appropriate LDBM options or disable)
fi
AC_MSG_WARN(disabling LDBM)
if test $ol_enable_wrappers != no ; then
AC_CHECK_HEADERS(tcpd.h)
if test $ac_cv_header_tcpd_h != yes ; then
have_wrappers=no
else
AC_CHECK_LIB(wrap, main,
[have_wrappers=yes], [have_wrappers=no])
fi
if test $have_wrappers = yes ; then
AC_DEFINE(HAVE_TCPD)
SLAPD_LIBS="$SLAPD_LIBS -lwrap"
else
AC_MSG_WARN(could not find -lwrap)
if test $ol_enable_wrappers = yes ; then
AC_MSG_ERROR(could not find wrappers, select appropriate options or disable)
fi
AC_MSG_WARN(disabling wrappers support)
ol_enable_wrappers=no
fi
fi
if test $ol_enable_syslog != no ; then
AC_CHECK_FUNC(openlog)
if test $ac_cv_func_openlog = no -a $ol_enable_syslog = yes; then
AC_MSG_ERROR(could not find syslog, select appropriate options or disable)
fi
ol_enable_syslog=$ac_cv_func_openlog
fi
if test $ol_enable_dmalloc != no ; then
AC_CHECK_HEADERS(dmalloc.h)
AC_CHECK_LIB(dmalloc, dmalloc_shutdown)
fi
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
# ud needs termcap (should insert check here)
ol_link_termcap=no
AC_CHECK_HEADERS(termcap.h ncurses.h)
if test $ol_link_termcap = no ; then
AC_CHECK_LIB(termcap, tputs, [have_termcap=yes], [have_termcap=no])
if test $have_termcap = yes ; then
AC_DEFINE(HAVE_TERMCAP)
ol_link_termcap=yes
TERMCAP_LIBS=-ltermcap
fi
fi
if test $ol_link_termcap = no ; then
AC_CHECK_LIB(ncurses, initscr, [have_ncurses=yes], [have_ncurses=no])
if test $have_ncurses = yes ; then
AC_DEFINE(HAVE_NCURSES)
ol_link_termcap=yes
TERMCAP_LIBS=-lncurses
fi
fi
if test $ol_link_termcap = no ; then
AC_DEFINE(NO_TERMCAP,1)
TERMCAP_LIBS=
fi
# FreeBSD (and others) have crypt(3) in -lcrypt
if test $ol_enable_crypt != no ; then
AC_CHECK_FUNC(crypt, [have_crypt=yes], [
AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
have_crypt=yes], [have_crypt=no])])
if test $have_crypt = yes ; then
else
AC_MSG_WARN(could not find crypt)
if test $ol_enable_crypt = yes ; then
AC_MSG_ERROR(could not find crypt, select appropriate options or disable)
fi
AC_MSG_WARN(disabling crypt support)
ol_enable_crypt=no
fi
fi
# FreeBSD (and others) have setproctitle(3) in -lutil
if test $ol_enable_proctitle != no ; then
AC_CHECK_FUNC(setproctitle, [have_setproctitle=yes], [
AC_CHECK_LIB(util, setproctitle,
[have_setproctitle=yes
LUTIL_LIBS="$LUTIL_LIBS -lutil"],
[have_setproctitle=no
LIBOBJS="$LIBOBJS setproctitle.o"])])
if test $have_setproctitle = yes ; then
AC_DEFINE(HAVE_SETPROCTITLE,1)
fi
fi
dnl ----------------------------------------------------------------
dnl Checks for header files.
AC_HEADER_STDC
if test $ac_cv_header_stdc != yes; then
AC_MSG_WARN([could not Standard C compliant headers])
fi
AC_HEADER_DIRENT
AC_HEADER_SYS_WAIT
Kurt Zeilenga
committed
AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
if test $am_cv_sys_posix_termios = yes ; then
AC_DEFINE(HAVE_POSIX_TERMIOS,1)
fi
errno.h \
fcntl.h \
filio.h \
getopt.h \
stdarg.h \
stddef.h \
string.h \
strings.h \
sys/errno.h \
sys/ioctl.h \
sys/param.h \
sys/time.h \
sys/types.h \
syslog.h \
termios.h \
)
dnl ----------------------------------------------------------------
dnl Checks for typedefs, structures, and compiler characteristics.
Kurt Zeilenga
committed
AC_TYPE_GETGROUPS dnl requires AC_TYPE_UID_T
AC_TYPE_MODE_T
AC_TYPE_OFF_T
AC_TYPE_PID_T
Kurt Zeilenga
committed
AM_TYPE_PTRDIFF_T
OL_TYPE_SIG_ATOMIC_T
AC_TYPE_SIZE_T
AC_STRUCT_ST_BLKSIZE
AC_HEADER_TIME
AC_STRUCT_TM
OL_C_UPPER_LOWER
AC_C_CONST
OL_C_VOLATILE
if test $cross_compiling = yes ; then
else
AC_C_BIGENDIAN
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
fi
dnl ----------------------------------------------------------------
dnl Checks for library functions.
AC_FUNC_MEMCMP
dnl AM_FUNC_MKTIME dnl checks for sys/time.h and unistd.h
dnl AM_FUNC_STRTOD
if test $ac_cv_func_vprintf = yes ; then
dnl check for vsnprintf
AC_CHECK_FUNCS(vsnprintf vsprintf)
AC_CHECK_FUNCS( \
bcopy \
flock \
getdtablesize \
lockf \
memcpy \
memmove \
mkstemp \
select \
setpwfile \
setsid \
signal \
sigset \
# these functions are required to build a thread_safe -lldap
AC_CHECK_FUNCS( \
strtok_r \
ctime_r \
gethostbyaddr_r \
gethostbyname_r \
)
if test "$ac_cv_func_ctime_r" = yes ; then
OL_FUNC_CTIME_R_NARGS
else
ol_cv_func_ctime_r=0
fi
if test "$ac_cv_func_strtok_r" = yes \
-a "$ac_cv_func_ctime_r" = yes \
-a "$ol_cv_func_ctime_r_nargs" -ge 2 -a "$ol_cv_func_ctime_r_nargs" -le 3 \
-a "$ac_cv_func_gethostbyaddr_r" = yes \
-a "$ac_cv_func_gethostbyname_r" = yes \
; then
AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_REENTRANT, 1)
fi
if test $ol_link_threads != no ; then
AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE, 1)
fi
dnl We actually may need to replace more than this.
dnl ----------------------------------------------------------------
# Check Configuration
OL_SYS_ERRLIST
dnl ----------------------------------------------------------------
dnl Sort out defines
if test "$ol_enable_debug" != no ; then
if test "$ol_enable_syslog" = yes ; then
AC_DEFINE(LDAP_SYSLOG,1)
fi
if test "$ol_enable_libui" = yes ; then
if test "$ol_enable_cache" = no ; then
if test "$ol_enable_dns" != no ; then
AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_DNS,LDAP_VENDOR_VERSION,1)
if test "$ol_enable_proctitle" != no ; then
if test "$ol_enable_referrals" != no ; then
AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS,LDAP_VENDOR_VERSION,1)
if test "$ol_enable_cldap" != no ; then
AC_DEFINE(LDAP_CONNECTIONLESS,1)
fi
if test "$ol_enable_aclgroups" != no ; then
if test "$ol_enable_crypt" != no ; then
if test "$ol_enable_cleartext" != no ; then
AC_DEFINE(SLAPD_CLEARTEXT,1)
if test "$ol_enable_phonetic" != no ; then
if test "$ol_enable_rlookups" != no ; then
if test "$ol_link_bdb2" != no ; then
AC_DEFINE(SLAPD_BDB2,1)
BUILD_SLAPD=yes
BUILD_BDB2=yes
fi
if test "$ol_link_ldbm" != no ; then
AC_DEFINE(SLAPD_LDBM,1)
BUILD_SLAPD=yes
BUILD_LDBM=yes
fi
if test "$ol_enable_passwd" != no ; then
AC_DEFINE(SLAPD_PASSWD,1)
BUILD_SLAPD=yes
BUILD_PASSWD=yes
fi
if test "$ol_enable_perl" != no ; then
AC_DEFINE(SLAPD_PERL,1)
BUILD_SLAPD=yes
BUILD_PERL=yes
fi
if test "$ol_enable_shell" != no ; then
AC_DEFINE(SLAPD_SHELL,1)
BUILD_SLAPD=yes
BUILD_SHELL=yes
fi
if test "$ol_enable_slurpd" != no -a "$ol_link_threads" != no -a \
$BUILD_SLAPD = yes ; then
BUILD_SLURPD=yes
fi
if test "$ol_link_isode" != no ; then
dnl ----------------------------------------------------------------
AC_SUBST(BUILD_LDAPD)
AC_SUBST(BUILD_SLAPD)
AC_SUBST(BUILD_BDB2)
AC_SUBST(BUILD_LDBM)
AC_SUBST(BUILD_PASSWD)
AC_SUBST(BUILD_SHELL)
AC_SUBST(BUILD_SLURPD)
AC_SUBST(LDAP_LIBS)
AC_SUBST(LDAPD_LIBS)
AC_SUBST(SLAPD_LIBS)
AC_SUBST(SLURPD_LIBS)
AC_SUBST(LDBM_LIBS)
AC_SUBST(LTHREAD_LIBS)
AC_SUBST(LUTIL_LIBS)
AC_SUBST(SLAPD_PERL_CPPFLAGS)
AC_SUBST(SLAPD_PERL_LDFLAGS)
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
AC_SUBST(KRB_LIBS)
AC_SUBST(TERMCAP_LIBS)
dnl ----------------------------------------------------------------
dnl final output
dnl
AC_OUTPUT( \
Makefile:build/top.mk:Makefile.in:build/dir.mk \
doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \
doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \
doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \
doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \
doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \
doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \
clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \
clients/finger/Makefile:build/top.mk:clients/finger/Makefile.in:build/rules.mk \
clients/fax500/Makefile:build/top.mk:clients/fax500/Makefile.in:build/rules.mk \
clients/gopher/Makefile:build/top.mk:clients/gopher/Makefile.in:build/rules.mk \
clients/mail500/Makefile:build/top.mk:clients/mail500/Makefile.in:build/rules.mk \
clients/rcpt500/Makefile:build/top.mk:clients/rcpt500/Makefile.in:build/rules.mk \
clients/ud/Makefile:build/top.mk:clients/ud/Makefile.in:build/rules.mk \
clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \
include/Makefile:build/top.mk:include/Makefile.in \
libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk \
Kurt Zeilenga
committed
libraries/libavl/Makefile:build/top.mk:libraries/libavl/Makefile.in:build/lib.mk:build/lib-static.mk \
libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk:build/lib-shared.mk \
libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk:build/lib-shared.mk \
libraries/libldap_r/Makefile:build/top.mk:libraries/libldap_r/Makefile.in:build/lib.mk:build/lib-shared.mk \
Kurt Zeilenga
committed
libraries/libldbm/Makefile:build/top.mk:libraries/libldbm/Makefile.in:build/lib.mk:build/lib-static.mk \
libraries/libldif/Makefile:build/top.mk:libraries/libldif/Makefile.in:build/lib.mk:build/lib-static.mk \
libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk:build/lib-static.mk \
servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
servers/ldapd/Makefile:build/top.mk:servers/ldapd/Makefile.in:build/srv.mk \
servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/srv.mk \
servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/srv.mk \
servers/slapd/back-perl/Makefile:build/top.mk:servers/slapd/back-perl/Makefile.in:build/srv.mk \
servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/srv.mk \
servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
tests/Makefile:build/top.mk:tests/Makefile.in \
,[
date > stamp-h
echo Please \"make depend\" to build dependencies
])