]> git.sur5r.net Git - openldap/blobdiff - build/openldap.m4
Allow slapi_sdn_get_parent() to work if only normalized DN is available
[openldap] / build / openldap.m4
index e22dd29d62195d70ad8b4c96fdc6d581a7666942..411c6420d7e4e719de584ea39c08a42e5b55dcf2 100644 (file)
@@ -2,7 +2,7 @@ dnl OpenLDAP Autoconf Macros
 dnl $OpenLDAP$
 dnl This work is part of OpenLDAP Software <http://www.openldap.org/>.
 dnl
-dnl Copyright 1998-2004 The OpenLDAP Foundation.
+dnl Copyright 1998-2005 The OpenLDAP Foundation.
 dnl All rights reserved.
 dnl
 dnl Redistribution and use in source and binary forms, with or without
@@ -18,10 +18,11 @@ dnl Restricted form of AC_ARG_ENABLE that limits user options
 dnl
 dnl $1 = option name
 dnl $2 = help-string
-dnl $3 = default value (auto)
+dnl $3 = default value (auto).  "--" means do not set it by default
 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([,]),[
+       AC_ARG_ENABLE($1,ifelse($3,--,[$2],
+               [changequote(<,>)<$2 [>ifelse($3,,auto,$3)<]>changequote([,])]),[
        ol_arg=invalid
        for ol_val in ifelse($4,,[auto yes no],[$4]) ; do
                if test "$enableval" = "$ol_val" ; then
@@ -32,8 +33,8 @@ AC_DEFUN([OL_ARG_ENABLE], [# OpenLDAP --enable-$1
                AC_MSG_ERROR(bad value $enableval for --enable-$1)
        fi
        ol_enable_$1="$ol_arg"
-],
-[      ol_enable_$1=ifelse($3,,"auto","$3")])dnl
+]ifelse($3,--,,[,
+[      ol_enable_$1=ifelse($3,,"auto","$3")]]))dnl
 dnl AC_VERBOSE(OpenLDAP -enable-$1 $ol_enable_$1)
 # end --enable-$1
 ])dnl
@@ -65,7 +66,7 @@ dnl AC_VERBOSE(OpenLDAP --with-$1 $ol_with_$1)
 dnl
 dnl ====================================================================
 dnl
-AC_DEFUN(AC_COMPILE_CHECK_SIZEOF,
+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 
@@ -173,7 +174,7 @@ fi
 dnl
 dnl --------------------------------------------------------------------
 dnl OpenLDAP version of STDC header check w/ EBCDIC support
-AC_DEFUN(OL_HEADER_STDC,
+AC_DEFUN([OL_HEADER_STDC],
 [AC_REQUIRE_CPP()dnl
 AC_REQUIRE([OL_CPP_EBCDIC])dnl
 AC_CACHE_CHECK([for ANSI C header files], ol_cv_header_stdc,
@@ -247,6 +248,75 @@ fi
 ])
 dnl
 dnl ====================================================================
+dnl DNS resolver macros
+AC_DEFUN([OL_RESOLVER_TRY],
+[if test $ol_cv_lib_resolver = no ; then
+       AC_CACHE_CHECK([for resolver link (]ifelse($2,,default,$2)[)],[$1],
+[
+       ol_RESOLVER_LIB=ifelse($2,,,$2)
+       ol_LIBS=$LIBS
+       LIBS="$ol_RESOLVER_LIB $LIBS"
+
+       AC_TRY_LINK([
+#ifdef HAVE_SYS_TYPES_H
+#      include <sys/types.h>
+#endif
+#include <netinet/in.h>
+#ifdef HAVE_ARPA_NAMESER_H
+#      include <arpa/nameser.h>
+#endif
+#ifdef HAVE_RESOLV_H
+#      include <resolv.h>
+#endif
+],[{
+       int len, status;
+       char *request = NULL;
+       unsigned char reply[64*1024];
+       unsigned char host[64*1024];
+       unsigned char *p;
+
+#ifdef NS_HFIXEDSZ
+       /* Bind 8/9 interface */
+       len = res_query(request, ns_c_in, ns_t_srv, reply, sizeof(reply));
+#else
+       /* Bind 4 interface */
+# ifndef T_SRV
+#  define T_SRV 33
+# endif
+       len = res_query(request, C_IN, T_SRV, reply, sizeof(reply));
+#endif
+       p = reply;
+#ifdef NS_HFIXEDSZ
+       /* Bind 8/9 interface */
+       p += NS_HFIXEDSZ;
+#elif defined(HFIXEDSZ)
+       /* Bind 4 interface w/ HFIXEDSZ */
+       p += HFIXEDSZ;
+#else
+       /* Bind 4 interface w/o HFIXEDSZ */
+       p += sizeof(HEADER);
+#endif
+       status = dn_expand( reply, reply+len, p, host, sizeof(host));
+}],[$1=yes],[$1=no])
+
+       LIBS="$ol_LIBS"
+])
+
+       if test $$1 = yes ; then
+               ol_cv_lib_resolver=ifelse($2,,yes,$2)
+       fi
+fi
+])
+dnl --------------------------------------------------------------------
+dnl Try to locate appropriate library
+AC_DEFUN([OL_RESOLVER_LINK],
+[ol_cv_lib_resolver=no
+OL_RESOLVER_TRY(ol_cv_resolver_none)
+OL_RESOLVER_TRY(ol_cv_resolver_resolv,[-lresolv])
+OL_RESOLVER_TRY(ol_cv_resolver_bind,[-lbind])
+])
+dnl
+dnl ====================================================================
 dnl Berkeley DB macros
 dnl
 dnl --------------------------------------------------------------------
@@ -368,7 +438,10 @@ main()
 
        version = db_version( &major, &minor, &patch );
 
-       if( major != DB_VERSION_MAJOR || minor < DB_VERSION_MINOR ) {
+       if( major != DB_VERSION_MAJOR ||
+               minor != DB_VERSION_MINOR ||
+               patch != DB_VERSION_PATCH )
+       {
                printf("Berkeley DB version mismatch\n"
                        "\theader: %s\n\tlibrary: %s\n",
                        DB_VERSION_STRING, version);
@@ -1053,7 +1126,7 @@ dnl ====================================================================
 dnl Early MIPS compilers (used in Ultrix 4.2) don't like
 dnl "int x; int *volatile a = &x; *a = 0;"
 dnl    -- borrowed from PDKSH
-AC_DEFUN(OL_C_VOLATILE,
+AC_DEFUN([OL_C_VOLATILE],
  [AC_CACHE_CHECK(if compiler understands volatile, ol_cv_c_volatile,
     [AC_TRY_COMPILE([int x, y, z;],
       [volatile int a; int * volatile b = x ? &y : &z;
@@ -1089,7 +1162,7 @@ fi
 dnl
 dnl ====================================================================
 dnl Define sig_atomic_t if not defined in signal.h
-AC_DEFUN(OL_TYPE_SIG_ATOMIC_T,
+AC_DEFUN([OL_TYPE_SIG_ATOMIC_T],
  [AC_CACHE_CHECK(for sig_atomic_t, ol_cv_type_sig_atomic_t,
     [AC_TRY_COMPILE([#include <signal.h>], [sig_atomic_t atomic;],
                ol_cv_type_sig_atomic_t=yes, ol_cv_type_sig_atomic_t=no)])
@@ -1101,7 +1174,7 @@ AC_DEFUN(OL_TYPE_SIG_ATOMIC_T,
 dnl
 dnl ====================================================================
 dnl Define socklen_t if not defined in sys/types.h or sys/socket.h
-AC_DEFUN(OL_TYPE_SOCKLEN_T,
+AC_DEFUN([OL_TYPE_SOCKLEN_T],
  [AC_CACHE_CHECK(for socklen_t, ol_cv_type_socklen_t,
     [AC_TRY_COMPILE([
 #ifdef HAVE_SYS_TYPES_H
@@ -1120,7 +1193,7 @@ AC_DEFUN(OL_TYPE_SOCKLEN_T,
 dnl
 dnl ====================================================================
 dnl Define inet_aton is available
-AC_DEFUN(OL_FUNC_INET_ATON,
+AC_DEFUN([OL_FUNC_INET_ATON],
  [AC_CACHE_CHECK([for inet_aton()], ol_cv_func_inet_aton,
     [AC_TRY_LINK([
 #ifdef HAVE_SYS_TYPES_H
@@ -1147,7 +1220,7 @@ int rc = inet_aton( "255.255.255.255", &in );],
 dnl
 dnl ====================================================================
 dnl check no of arguments for ctime_r
-AC_DEFUN(OL_FUNC_CTIME_R_NARGS,
+AC_DEFUN([OL_FUNC_CTIME_R_NARGS],
  [AC_CACHE_CHECK(number of arguments of ctime_r, ol_cv_func_ctime_r_nargs,
    [AC_TRY_COMPILE([#include <time.h>],
                [time_t ti; char *buffer; ctime_r(&ti,buffer,32);],
@@ -1182,7 +1255,7 @@ AC_DEFUN(OL_FUNC_CTIME_R_NARGS,
 dnl
 dnl --------------------------------------------------------------------
 dnl check return type of ctime_r()
-AC_DEFUN(OL_FUNC_CTIME_R_TYPE,
+AC_DEFUN([OL_FUNC_CTIME_R_TYPE],
  [AC_CACHE_CHECK(return type of ctime_r, ol_cv_func_ctime_r_type,
    [AC_TRY_COMPILE([#include <time.h>],
                [extern int (ctime_r)();],
@@ -1194,7 +1267,7 @@ AC_DEFUN(OL_FUNC_CTIME_R_TYPE,
 ])dnl
 dnl ====================================================================
 dnl check no of arguments for gethostbyname_r
-AC_DEFUN(OL_FUNC_GETHOSTBYNAME_R_NARGS,
+AC_DEFUN([OL_FUNC_GETHOSTBYNAME_R_NARGS],
  [AC_CACHE_CHECK(number of arguments of gethostbyname_r,
        ol_cv_func_gethostbyname_r_nargs,
        [AC_TRY_COMPILE([#include <sys/types.h>
@@ -1244,7 +1317,7 @@ AC_DEFUN(OL_FUNC_GETHOSTBYNAME_R_NARGS,
 ])dnl
 dnl
 dnl check no of arguments for gethostbyaddr_r
-AC_DEFUN(OL_FUNC_GETHOSTBYADDR_R_NARGS,
+AC_DEFUN([OL_FUNC_GETHOSTBYADDR_R_NARGS],
  [AC_CACHE_CHECK(number of arguments of gethostbyaddr_r,
        [ol_cv_func_gethostbyaddr_r_nargs],
        [AC_TRY_COMPILE([#include <sys/types.h>
@@ -1320,7 +1393,7 @@ AC_DEFUN([OL_SASL_COMPAT],
 ])
 dnl ====================================================================
 dnl check for msg_accrights in msghdr
-AC_DEFUN(OL_MSGHDR_MSG_ACCRIGHTS,
+AC_DEFUN([OL_MSGHDR_MSG_ACCRIGHTS],
  [AC_CACHE_CHECK(for msg_accrights in msghdr, ol_cv_msghdr_msg_accrights,
    [AC_TRY_COMPILE([#include <sys/socket.h>],
                [struct msghdr m; m.msg_accrightslen=0],
@@ -1331,6 +1404,19 @@ AC_DEFUN(OL_MSGHDR_MSG_ACCRIGHTS,
                [define if struct msghdr has msg_accrights])
   fi
 ])dnl
+dnl ====================================================================
+dnl check for cmsghdr
+AC_DEFUN([OL_MSGHDR_MSG_CONTROL],
+ [AC_CACHE_CHECK(for msg_control in msghdr, ol_cv_msghdr_msg_control,
+   [AC_TRY_COMPILE([#include <sys/socket.h>],
+               [struct msghdr m; m.msg_control=(struct cmsghdr *)0],
+               ol_cv_msghdr_msg_control=yes, ol_cv_msghdr_msg_control=no)
+       ])
+  if test $ol_cv_msghdr_msg_control = "yes" ; then
+       AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
+               [define if struct msghdr has msg_control])
+  fi
+])dnl
 AC_DEFUN([OL_SSL_COMPAT],
 [AC_CACHE_CHECK([OpenSSL library version (CRL checking capability)], [ol_cv_ssl_crl_compat],[
        AC_EGREP_CPP(__ssl_compat,[