]> git.sur5r.net Git - openldap/blobdiff - build/openldap.m4
More autoconf 2.57 changes (this is getting ugly)
[openldap] / build / openldap.m4
index d4feffecc86861a426c96cfb9ce8384293182f26..127b0559bd076a6e11033009fb05b1396feefeea 100644 (file)
@@ -1,7 +1,13 @@
 dnl $OpenLDAP$
 dnl
-dnl Copyright 1998-2000 The OpenLDAP Foundation,  All Rights Reserved.
-dnl COPYING RESTRICTIONS APPLY, See COPYRIGHT file
+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 modification, are permitted only as authorized by the OpenLDAP
+dnl Public License.  A copy of this license is available at
+dnl http://www.OpenLDAP.org/license.html or in file LICENSE in the
+dnl top-level directory of the distribution.
 dnl
 dnl OpenLDAP Autoconf Macros
 dnl
@@ -13,9 +19,10 @@ dnl $2 = help-string
 dnl $3 = default value (auto)
 dnl $4 = allowed values (auto yes no)
 AC_DEFUN([OL_ARG_ENABLE], [# OpenLDAP --enable-$1
-       AC_ARG_ENABLE($1,[$2 (]ifelse($3,,auto,$3)[)],[
-       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
@@ -25,8 +32,7 @@ AC_DEFUN([OL_ARG_ENABLE], [# OpenLDAP --enable-$1
        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
@@ -36,11 +42,12 @@ 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,[$2 (]ifelse($3,,yes,$3)[)],[
-       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
@@ -50,39 +57,11 @@ AC_DEFUN([OL_ARG_WITH], [# OpenLDAP --with-$1
        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
@@ -210,33 +189,19 @@ dnl
 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
@@ -248,7 +213,7 @@ AC_DEFUN([OL_BERKELEY_DB_TRY],
 [
        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
@@ -265,6 +230,24 @@ AC_DEFUN([OL_BERKELEY_DB_TRY],
 #define NULL ((void*)0)
 #endif
 ],[
+#if DB_VERSION_MAJOR > 1
+       {
+               char *version;
+               int major, minor, patch;
+
+               version = db_version( &major, &minor, &patch );
+
+               if( major != DB_VERSION_MAJOR ||
+                       minor < DB_VERSION_MINOR )
+               {
+                       printf("Berkeley DB version mismatch\n"
+                               "\texpected: %s\n\tgot: %s\n",
+                               DB_VERSION_STRING, version);
+                       return 1;
+               }
+       }
+#endif
+
 #if DB_VERSION_MAJOR > 2
        db_env_create( NULL, 0 );
 #elif DB_VERSION_MAJOR > 1
@@ -288,10 +271,19 @@ dnl Try to locate appropriate library
 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_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])
 OL_BERKELEY_DB_TRY(ol_cv_db_db2,[-ldb2])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_2,[-ldb-2])
 OL_BERKELEY_DB_TRY(ol_cv_db_db1,[-ldb1])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_1,[-ldb-1])
 ])
 dnl
 dnl --------------------------------------------------------------------
@@ -299,8 +291,9 @@ dnl Check if Berkeley DB supports DB_THREAD
 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([
@@ -315,9 +308,44 @@ AC_DEFUN([OL_BERKELEY_DB_THREAD],
 main()
 {
        int rc;
-       DB_ENV env;
-       u_int32_t flags = DB_CREATE | DB_THREAD;
+       u_int32_t flags = DB_CREATE |
+#ifdef DB_PRIVATE
+               DB_PRIVATE |
+#endif
+               DB_THREAD;
 
+#if DB_VERSION_MAJOR > 2
+       DB_ENV *env = NULL;
+
+       rc = db_env_create( &env, 0 );
+
+       flags |= DB_INIT_MPOOL;
+#ifdef DB_MPOOL_PRIVATE
+       flags |= DB_MPOOL_PRIVATE;
+#endif
+
+       if( rc ) {
+               printf("BerkeleyDB: %s\n", db_strerror(rc) );
+               return rc;
+       }
+
+#if (DB_VERSION_MAJOR > 3) || (DB_VERSION_MINOR >= 1)
+       rc = env->open( env, NULL, flags, 0 );
+#else
+       rc = env->open( env, NULL, NULL, flags, 0 );
+#endif
+
+       if ( rc == 0 ) {
+               rc = env->close( env, 0 );
+       }
+
+       if( rc ) {
+               printf("BerkeleyDB: %s\n", db_strerror(rc) );
+               return rc;
+       }
+
+#else
+       DB_ENV env;
        memset( &env, '\0', sizeof(env) );
 
        rc = db_appinit( NULL, NULL, &env, flags );
@@ -326,6 +354,10 @@ main()
                db_appexit( &env );
        }
 
+       unlink("__db_mpool.share");
+       unlink("__db_lock.share");
+#endif
+
        return rc;
 }],
        [ol_cv_berkeley_db_thread=yes],
@@ -333,12 +365,13 @@ main()
        [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
@@ -353,12 +386,32 @@ if test $ac_cv_header_db_h = yes; then
        fi
 fi
 ])
-dnl
+dnl --------------------------------------------------------------------
+dnl Check for version compatility with back-bdb
+AC_DEFUN([OL_BDB_COMPAT],
+[AC_CACHE_CHECK([Berkeley DB version for BDB backend], [ol_cv_bdb_compat],[
+       AC_EGREP_CPP(__db_version_compat,[
+#include <db.h>
+
+ /* this check could be improved */
+#ifndef DB_VERSION_MAJOR
+#      define DB_VERSION_MAJOR 1
+#endif
+#ifndef DB_VERSION_MINOR
+#      define DB_VERSION_MINOR 0
+#endif
+
+/* 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])])
+])
+
 dnl --------------------------------------------------------------------
 dnl Find old Berkeley DB 1.85/1.86
 AC_DEFUN([OL_BERKELEY_COMPAT_DB],
-[ol_cv_berkeley_db=no
-AC_CHECK_HEADERS(db_185.h db.h)
+[AC_CHECK_HEADERS(db_185.h db.h)
 if test $ac_cv_header_db_185_h = yes -o $ac_cv_header_db_h = yes; then
        AC_CACHE_CHECK([if Berkeley DB header compatibility], [ol_cv_header_db1],[
                AC_EGREP_CPP(__db_version_1,[
@@ -378,7 +431,7 @@ if test $ac_cv_header_db_185_h = yes -o $ac_cv_header_db_h = yes; then
 #endif
 ],     [ol_cv_header_db1=yes], [ol_cv_header_db1=no])])
 
-       if test ol_cv_header_db1=yes ; then
+       if test $ol_cv_header_db1 = yes ; then
                OL_BERKELEY_DB_LINK
                if test "$ol_cv_lib_db" != no ; then
                        ol_cv_berkeley_db=yes
@@ -536,36 +589,48 @@ dnl
 dnl ====================================================================
 dnl Check POSIX Thread version 
 dnl
-dnl defines ol_cv_posix_version to 'final' or 'draft' or 'unknown'
-dnl    'unknown' implies that the version could not be detected
-dnl            or that pthreads.h does exist.  Existance of pthreads.h
-dnl            should be tested separately.
+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    Existence of pthread.h should be tested separately.
+dnl
+dnl tests:
+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
+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_CPP(pthread_version_final,[
+       AC_TRY_COMPILE([
 #              include <pthread.h>
-               /* this check could be improved */
-#              ifdef PTHREAD_ONCE_INIT
-                       pthread_version_final;
-#              endif
-       ], ol_pthread_final=yes, ol_pthread_final=no)
-
-       AC_EGREP_CPP(pthread_version_draft4,[
+       ],[
+               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>
-               /* this check could be improved */
-#              ifdef pthread_once_init
-                       pthread_version_draft4;
+#              ifdef PTHREAD_CREATE_UNDETACHED
+               draft7
 #              endif
-       ], ol_pthread_draft4=yes, ol_pthread_draft4=no)
-
-       if test $ol_pthread_final = yes -a $ol_pthread_draft4 = no; then
-               ol_cv_pthread_version=final
-       elif test $ol_pthread_final = no -a $ol_pthread_draft4 = yes; then
-               ol_cv_pthread_version=draft4
-       else
-               ol_cv_pthread_version=unknown
-       fi
+       ], ol_cv_pthread_version=7, [
+       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, ol_cv_pthread_version=4) ]) ]) ])
 ])
 ])dnl
 dnl
@@ -573,6 +638,9 @@ dnl --------------------------------------------------------------------
 AC_DEFUN([OL_PTHREAD_TEST_INCLUDES],
 [/* pthread test headers */
 #include <pthread.h>
+#if HAVE_PTHREADS < 7
+#include <errno.h>
+#endif
 #ifndef NULL
 #define NULL (void*)0
 #endif
@@ -585,42 +653,50 @@ static void *task(p)
 ])
 AC_DEFUN([OL_PTHREAD_TEST_FUNCTION],[
        /* pthread test function */
+#ifndef PTHREAD_CREATE_DETACHED
+#define        PTHREAD_CREATE_DETACHED 1
+#endif
        pthread_t t;
        int status;
-#if HAVE_PTHREADS_FINAL && defined(PTHREAD_CREATE_UNDETACHED)
-       /* This system (e.g. AIX) defaults detached; must override */
+       int detach = PTHREAD_CREATE_DETACHED;
+
+#if HAVE_PTHREADS > 4
+       /* Final pthreads */
        pthread_attr_t attr;
 
        status = pthread_attr_init(&attr);
-       if( status ) exit( status );
-
-       status = pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_UNDETACHED);
-       if( status ) exit( status );
+       if( status ) return status;
 
-#define        ATTR    &attr
-#else
-#if HAVE_PTHREADS_D4
-#define        ATTR    pthread_attr_default
+#if HAVE_PTHREADS < 7
+       status = pthread_attr_setdetachstate(&attr, &detach);
+       if( status < 0 ) status = errno;
 #else
-#define        ATTR    NULL
+       status = pthread_attr_setdetachstate(&attr, detach);
 #endif
+       if( status ) return status;
+       status = pthread_create( &t, &attr, task, NULL );
+#if HAVE_PTHREADS < 7
+       if( status < 0 ) status = errno;
 #endif
-       /* make sure pthread_create() isn't just a stub */
-       status = pthread_create(&t, ATTR, task, NULL);
-       if( status ) exit( status );
+       if( status ) return status;
+#else
+       /* Draft 4 pthreads */
+       status = pthread_create( &t, pthread_attr_default, task, NULL );
+       if( status ) return errno;
+
+       /* give thread a chance to complete */
+       /* it should remain joinable and hence detachable */
+       sleep( 1 );
 
-       /* make sure pthread_detach() isn't just a stub */
-#if HAVE_PTHREADS_D4
        status = pthread_detach( &t );
-#else
-       status = pthread_detach( t );
+       if( status ) return errno;
 #endif
 
 #ifdef HAVE_LINUX_THREADS
        pthread_kill_other_threads_np();
 #endif
 
-       exit( status );
+       return 0;
 ])
 
 AC_DEFUN([OL_PTHREAD_TEST_PROGRAM],
@@ -682,14 +758,11 @@ AC_DEFUN([OL_HEADER_GNU_PTH_PTHREAD_H], [
 dnl ====================================================================
 dnl Check for NT Threads
 AC_DEFUN([OL_NT_THREADS], [
-       AC_CACHE_CHECK([for NT Threads], [ol_cv_nt_threads], [
-               AC_CHECK_FUNC(_beginthread,
-                       [ol_cv_nt_threads=yes],
-                       [ol_cv_nt_threads=no])
-       ])
+       AC_CHECK_FUNC(_beginthread)
 
-       if test $ol_cv_nt_threads = yes ; then
+       if test $ac_cv_func__beginthread = yes ; then
                AC_DEFINE(HAVE_NT_THREADS,1,[if you have NT Threads])
+               ol_cv_nt_threads=yes
        fi
 ])
 dnl ====================================================================
@@ -719,7 +792,7 @@ dnl defines ol_cv_sys_linux_threads to 'yes' or 'no'
 dnl    'no' implies pthreads implementation is not LinuxThreads.
 dnl 
 AC_DEFUN([OL_SYS_LINUX_THREADS], [
-       AC_CHECK_FUNC(pthread_kill_other_threads_np)
+       AC_CHECK_FUNCS(pthread_kill_other_threads_np)
        AC_CACHE_CHECK([for LinuxThreads implementation],
                [ol_cv_sys_linux_threads],
                [ol_cv_sys_linux_threads=$ac_cv_func_pthread_kill_other_threads_np])
@@ -1080,3 +1153,34 @@ AC_DEFUN(OL_FUNC_GETHOSTBYADDR_R_NARGS,
   fi
 ])dnl
 dnl
+dnl --------------------------------------------------------------------
+dnl Check for Cyrus SASL version compatility, need 2.1.3 or newer
+AC_DEFUN([OL_SASL_COMPAT],
+[AC_CACHE_CHECK([Cyrus SASL library version], [ol_cv_sasl_compat],[
+       AC_EGREP_CPP(__sasl_compat,[
+#ifdef HAVE_SASL_SASL_H
+#include <sasl/sasl.h>
+#else
+#include <sasl.h>
+#endif
+
+/* require 2.1.3 or later */
+#if SASL_VERSION_MAJOR == 1  && SASL_VERSION_MINOR >= 5
+       char *__sasl_compat = "1.5.x okay";
+#elif SASL_VERSION_MAJOR == 2  && SASL_VERSION_MINOR > 1
+       __sasl_compat "2.2+ or better okay (we guess)";
+#elif SASL_VERSION_MAJOR == 2  && SASL_VERSION_MINOR == 1 \
+       && SASL_VERSION_STEP >=3
+       __sasl_compat = "2.1.3+ or better okay";
+#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