dnl $OpenLDAP$
dnl
-dnl Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+dnl Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
dnl All rights reserved.
dnl
dnl Redistribution and use in source and binary forms, with or without
dnl $3 = default value (auto)
dnl $4 = allowed values (auto yes no)
AC_DEFUN([OL_ARG_ENABLE], [# OpenLDAP --enable-$1
- AC_ARG_ENABLE($1,changequote(<,>)<$2 [>ifelse($3,,auto,$3)<]>changequote([,]),[
- ol_arg=invalid
- for ol_val in ifelse($4,,[auto yes no],[$4]) ; do
+ AC_ARG_ENABLE([$1], AC_HELP_STRING([--enable-$1],
+ [$2 <m4_ifval([$4],[$4],[auto yes no])> default=m4_ifval([$3],[$3],[auto])]),
+[ ol_arg=invalid
+ for ol_val in m4_ifval([$4],[$4],[auto yes no]) ; do
if test "$enableval" = "$ol_val" ; then
ol_arg="$ol_val"
fi
fi
ol_enable_$1="$ol_arg"
],
-[ ol_enable_$1=ifelse($3,,"auto","$3")])dnl
-dnl AC_VERBOSE(OpenLDAP -enable-$1 $ol_enable_$1)
+[ ol_enable_$1=m4_ifval([$3],["$3"],["auto"])])dnl
# end --enable-$1
])dnl
dnl
dnl $1 = option name
dnl $2 = help-string
dnl $3 = default value (no)
-dnl $4 = allowed values (yes or no)
+dnl $4 = allowed values (yes no)
AC_DEFUN([OL_ARG_WITH], [# OpenLDAP --with-$1
- AC_ARG_WITH($1,changequote(<,>)<$2 [>ifelse($3,,yes,$3)<]>changequote([,]),[
- ol_arg=invalid
- for ol_val in ifelse($4,,[yes no],[$4]) ; do
+ AC_ARG_WITH([$1], AC_HELP_STRING([--with-$1],
+ [$2 <m4_ifval([$4],[$4],[auto yes no])> default=m4_ifval([$3],[$3],[auto])]),
+[ ol_arg=invalid
+ for ol_val in m4_ifval([$4],[$4],[auto yes no]) ; do
if test "$withval" = "$ol_val" ; then
ol_arg="$ol_val"
fi
fi
ol_with_$1="$ol_arg"
],
-[ ol_with_$1=ifelse($3,,"no","$3")])dnl
-dnl AC_VERBOSE(OpenLDAP --with-$1 $ol_with_$1)
+[ ol_with_$1=m4_ifval([$3],["$3"],["auto"])])dnl
# end --with-$1
])dnl
dnl
dnl ====================================================================
-dnl
-AC_DEFUN(AC_COMPILE_CHECK_SIZEOF,
-[changequote(<<, >>)dnl
-dnl The name to #define.
-define(<<AC_TYPE_NAME>>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
-dnl The cache variable name.
-define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
-changequote([, ])dnl
-AC_MSG_CHECKING(size of $1)
-AC_CACHE_VAL(AC_CV_NAME,
-[for ac_size in 4 8 1 2 16 $2 ; do # List sizes in rough order of prevalence.
- AC_TRY_COMPILE([#include "confdefs.h"
-#include <sys/types.h>
-$2
-], [switch (0) case 0: case (sizeof ($1) == $ac_size):;], AC_CV_NAME=$ac_size)
- if test x$AC_CV_NAME != x ; then break; fi
-done
-])
-if test x$AC_CV_NAME = x ; then
- AC_MSG_ERROR([cannot determine a size for $1])
-fi
-AC_MSG_RESULT($AC_CV_NAME)
-AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [The number of bytes in type $1])
-undefine([AC_TYPE_NAME])dnl
-undefine([AC_CV_NAME])dnl
-])
-dnl ====================================================================
dnl check if hard links are supported.
dnl
AC_DEFUN([OL_PROG_LN_H], [# test for ln hardlink support
dnl ====================================================================
dnl Check if struct passwd has pw_gecos
AC_DEFUN([OL_STRUCT_PASSWD_PW_GECOS], [# test for pw_gecos in struct passwd
-AC_CACHE_CHECK([struct passwd for pw_gecos],ol_cv_struct_passwd_pw_gecos,[
- AC_TRY_COMPILE([#include <pwd.h>],[
- struct passwd pwd;
- pwd.pw_gecos = pwd.pw_name;
-],
- [ol_cv_struct_passwd_pw_gecos=yes],
- [ol_cv_struct_passwd_pw_gecos=no])])
-if test $ol_cv_struct_passwd_pw_gecos = yes ; then
- AC_DEFINE(HAVE_PW_GECOS,1, [define if struct passwd has pw_gecos])
-fi
-])
-dnl
+ AC_CHECK_MEMBER(struct passwd.pw_gecos,,,[#include <pwd.h>])
+ if test $ac_cv_member_struct_passwd_pw_gecos = "yes" ; then
+ AC_DEFINE(HAVE_PW_GECOS,1, [define if struct passwd has pw_gecos])
+ fi
+])dnl
dnl --------------------------------------------------------------------
dnl Check if struct passwd has pw_passwd
AC_DEFUN([OL_STRUCT_PASSWD_PW_PASSWD], [# test for pw_passwd in struct passwd
-AC_CACHE_CHECK([struct passwd for pw_passwd],ol_cv_struct_passwd_pw_passwd,[
- AC_TRY_COMPILE([#include <pwd.h>],[
- struct passwd pwd;
- pwd.pw_passwd = pwd.pw_name;
-],
- [ol_cv_struct_passwd_pw_passwd=yes],
- [ol_cv_struct_passwd_pw_passwd=no])])
-if test $ol_cv_struct_passwd_pw_passwd = yes ; then
- AC_DEFINE(HAVE_PW_PASSWD,1, [define if struct passwd has pw_passwd])
-fi
-])
-dnl
+ AC_CHECK_MEMBER(struct passwd.pw_passwd,,,[#include <pwd.h>])
+ if test $ac_cv_member_struct_passwd_pw_passwd = "yes" ; then
+ AC_DEFINE(HAVE_PW_PASSWD,1, [define if struct passwd has pw_passwd])
+ fi
+])dnl
dnl ====================================================================
dnl Berkeley DB macros
dnl
[
ol_DB_LIB=ifelse($2,,,$2)
ol_LIBS=$LIBS
- LIBS="$ol_DB_LIB $LIBS"
+ LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
AC_TRY_LINK([
#ifdef HAVE_DB_185_H
AC_DEFUN([OL_BERKELEY_DB_LINK],
[ol_cv_lib_db=no
OL_BERKELEY_DB_TRY(ol_cv_db_none)
-OL_BERKELEY_DB_TRY(ol_cv_db_db4,[-ldb4])
+OL_BERKELEY_DB_TRY(ol_cv_db_db41,[-ldb41])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_41,[-ldb-41])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_4_dot_1,[-ldb-4.1])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_4_1,[-ldb-4-1])
OL_BERKELEY_DB_TRY(ol_cv_db_db_4,[-ldb-4])
+OL_BERKELEY_DB_TRY(ol_cv_db_db4,[-ldb4])
OL_BERKELEY_DB_TRY(ol_cv_db_db,[-ldb])
OL_BERKELEY_DB_TRY(ol_cv_db_db3,[-ldb3])
OL_BERKELEY_DB_TRY(ol_cv_db_db_3,[-ldb-3])
AC_DEFUN([OL_BERKELEY_DB_THREAD],
[AC_CACHE_CHECK([for Berkeley DB thread support], [ol_cv_berkeley_db_thread], [
ol_LIBS="$LIBS"
+ LIBS="$LTHREAD_LIBS $LIBS"
if test $ol_cv_lib_db != yes ; then
- LIBS="$ol_cv_lib_db"
+ LIBS="$ol_cv_lib_db $LIBS"
fi
AC_TRY_RUN([
[ol_cv_berkeley_db_thread=cross])
LIBS="$ol_LIBS"
+])
if test $ol_cv_berkeley_db_thread != no ; then
AC_DEFINE(HAVE_BERKELEY_DB_THREAD, 1,
[define if Berkeley DB has DB_THREAD support])
fi
-])])dnl
+])dnl
dnl
dnl --------------------------------------------------------------------
dnl Find any DB
#ifndef DB_VERSION_MAJOR
# define DB_VERSION_MAJOR 1
#endif
+#ifndef DB_VERSION_MINOR
+# define DB_VERSION_MINOR 0
+#endif
-/* require 4.0 or later */
-#if DB_VERSION_MAJOR >= 4
+/* require 4.1 or later */
+#if (DB_VERSION_MAJOR >= 4) && (DB_VERSION_MINOR >= 1)
__db_version_compat
#endif
- ], [ol_cv_bdb_compat=yes], [ol_cv_bdb_compat=no])])
+ ], [ol_cv_bdb_compat=yes], [ol_cv_bdb_compat=no])])
])
dnl --------------------------------------------------------------------
dnl ====================================================================
dnl Check POSIX Thread version
dnl
-dnl defines ol_cv_pthread_version to 0, 4, 5, 6, 7, 10, depending on the
+dnl defines ol_cv_pthread_version to 4, 5, 6, 7, 8, 10, depending on the
dnl version of the POSIX.4a Draft that is implemented.
dnl 10 == POSIX.4a Final == POSIX.1c-1996 for our purposes.
-dnl 0 implies that the version could not be detected
-dnl or that pthreads.h does exist. Existence of pthreads.h
-dnl should be tested separately.
+dnl Existence of pthread.h should be tested separately.
dnl
dnl tests:
-dnl pthread_yield() was renamed to sched_yield() in Draft 10, so
-dnl only a Draft 10 library will define this
-dnl PTHREAD_INTR_ENABLE was introduced in Draft 6, and renamed to
-dnl PTHREAD_CANCEL_ENABLE in Draft 7. Draft 7-10 has _CANCEL_,
-dnl only Draft 6 has _INTR_
+dnl pthread_detach() was dropped in Draft 8, it is present
+dnl in every other version
+dnl PTHREAD_CREATE_UNDETACHED is only in Draft 7, it was called
+dnl PTHREAD_CREATE_JOINABLE after that
+dnl pthread_attr_create was renamed to pthread_attr_init in Draft 6.
+dnl Draft 6-10 has _init, Draft 4-5 has _create.
+dnl pthread_attr_default was dropped in Draft 6, only 4 and 5 have it
dnl PTHREAD_MUTEX_INITIALIZER was introduced in Draft 5. It's not
dnl interesting to us because we don't try to statically
dnl initialize mutexes. 5-10 has it.
-dnl pthread_attr_create was renamed to pthread_attr_init after Draft 4.
-dnl Draft 6-10 has _init, Draft 4 has _create. (dunno about 5)
dnl
-dnl Besides the use of sched_yield vs pthread_yield, differences from
-dnl Draft 7 thru Draft 10 don't appear significant for our purposes.
+dnl Draft 9 and 10 are equivalent for our purposes.
dnl
AC_DEFUN([OL_POSIX_THREAD_VERSION],
[AC_CACHE_CHECK([POSIX thread version],[ol_cv_pthread_version],[
- AC_EGREP_HEADER(sched_yield,pthread.h,
- ol_cv_pthread_version=10, [
-
+ AC_TRY_COMPILE([
+# include <pthread.h>
+ ],[
+ int i = PTHREAD_CREATE_JOINABLE;
+ ],[
+ AC_EGREP_HEADER(pthread_detach,pthread.h,
+ ol_cv_pthread_version=10, ol_cv_pthread_version=8)],[
AC_EGREP_CPP(draft7,[
# include <pthread.h>
-# ifdef PTHREAD_CANCEL_ENABLE
+# ifdef PTHREAD_CREATE_UNDETACHED
draft7
# endif
], ol_cv_pthread_version=7, [
-
- AC_EGREP_CPP(draft6,[
-# include <pthread.h>
-#ifdef PTHREAD_INTR_ENABLE
- draft6
-#endif
- ], ol_cv_pthread_version=6, [
-
+ AC_EGREP_HEADER(pthread_attr_init,pthread.h,
+ ol_cv_pthread_version=6, [
AC_EGREP_CPP(draft5,[
# include <pthread.h>
#ifdef PTHREAD_MUTEX_INITIALIZER
draft5
#endif
- ], ol_cv_pthread_version=5, [
-
- AC_EGREP_HEADER(pthread_attr_create,pthread.h,
- ol_cv_pthread_version=4, ol_cv_pthread_version=0) ]) ]) ]) ])
+ ], ol_cv_pthread_version=5, ol_cv_pthread_version=4) ]) ]) ])
])
])dnl
dnl
#endif
], [ol_cv_sasl_compat=yes], [ol_cv_sasl_compat=no])])
])
+dnl ====================================================================
+dnl check for msg_accrights in msghdr
+AC_DEFUN(OL_MSGHDR_MSG_ACCRIGHTS,
+ [AC_CHECK_MEMBER(struct msghdr.msg_accrights,,,[#include <sys/socket.h>])
+ if test $ac_cv_member_struct_msghdr_msg_accrights = "yes" ; then
+ AC_DEFINE(HAVE_MSGHDR_MSG_ACCRIGHTS,1,
+ [define if struct msghdr has msg_accrights])
+ fi
+])dnl