1dnl OpenLDAP Autoconf Macros 2dnl $OpenLDAP: pkg/ldap/build/openldap.m4,v 1.157.2.10 2010/04/13 20:22:21 kurt Exp $ 3dnl This work is part of OpenLDAP Software <http://www.openldap.org/>. 4dnl 5dnl Copyright 1998-2010 The OpenLDAP Foundation. 6dnl All rights reserved. 7dnl 8dnl Redistribution and use in source and binary forms, with or without 9dnl modification, are permitted only as authorized by the OpenLDAP 10dnl Public License. 11dnl 12dnl A copy of this license is available in the file LICENSE-OPENLDAP in 13dnl this directory of the distribution or, alternatively, at 14dnl <http://www.OpenLDAP.org/license.html>. 15dnl 16dnl -------------------------------------------------------------------- 17dnl Restricted form of AC_ARG_ENABLE that limits user options 18dnl 19dnl $1 = option name 20dnl $2 = help-string 21dnl $3 = default value (auto). "--" means do not set it by default 22dnl $4 = allowed values (auto yes no) 23dnl $5 = overridden default 24AC_DEFUN([OL_ARG_ENABLE], [# OpenLDAP --enable-$1 25 pushdef([ol_DefVal],ifelse($3,,auto,$3)) 26 AC_ARG_ENABLE($1,ifelse($4,,[$2],[$2] translit([$4],[ ],[|])) ifelse($3,--,,@<:@ol_DefVal@:>@),[ 27 ol_arg=invalid 28 for ol_val in ifelse($4,,[auto yes no],[$4]) ; do 29 if test "$enableval" = "$ol_val" ; then 30 ol_arg="$ol_val" 31 fi 32 done 33 if test "$ol_arg" = "invalid" ; then 34 AC_MSG_ERROR(bad value $enableval for --enable-$1) 35 fi 36 ol_enable_$1="$ol_arg" 37]ifelse($3,--,,[, 38[ ol_enable_$1=ifelse($5,,ol_DefVal,[${]$5[:-]ol_DefVal[}])]]))dnl 39dnl AC_MSG_RESULT([OpenLDAP -enable-$1 $ol_enable_$1]) 40 popdef([ol_DefVal]) 41# end --enable-$1 42])dnl 43dnl 44dnl -------------------------------------------------------------------- 45dnl Restricted form of AC_ARG_WITH that limits user options 46dnl 47dnl $1 = option name 48dnl $2 = help-string 49dnl $3 = default value (no) 50dnl $4 = allowed values (yes or no) 51AC_DEFUN([OL_ARG_WITH], [# OpenLDAP --with-$1 52 AC_ARG_WITH($1,[$2 @<:@]ifelse($3,,yes,$3)@:>@,[ 53 ol_arg=invalid 54 for ol_val in ifelse($4,,[yes no],[$4]) ; do 55 if test "$withval" = "$ol_val" ; then 56 ol_arg="$ol_val" 57 fi 58 done 59 if test "$ol_arg" = "invalid" ; then 60 AC_MSG_ERROR(bad value $withval for --with-$1) 61 fi 62 ol_with_$1="$ol_arg" 63], 64[ ol_with_$1=ifelse($3,,"no","$3")])dnl 65dnl AC_MSG_RESULT([OpenLDAP --with-$1 $ol_with_$1]) 66# end --with-$1 67])dnl 68dnl ==================================================================== 69dnl Check for dependency generation flag 70AC_DEFUN([OL_MKDEPEND], [# test for make depend flag 71OL_MKDEP= 72OL_MKDEP_FLAGS= 73if test -z "${MKDEP}"; then 74 OL_MKDEP="${CC-cc}" 75 if test -z "${MKDEP_FLAGS}"; then 76 AC_CACHE_CHECK([for ${OL_MKDEP} depend flag], ol_cv_mkdep, [ 77 ol_cv_mkdep=no 78 for flag in "-M" "-xM"; do 79 cat > conftest.c <<EOF 80 noCode; 81EOF 82 if AC_TRY_COMMAND($OL_MKDEP $flag conftest.c) \ 83 | grep '^conftest\.'"${ac_objext}" >/dev/null 2>&1 84 then 85 if test ! -f conftest."${ac_object}" ; then 86 ol_cv_mkdep=$flag 87 OL_MKDEP_FLAGS="$flag" 88 break 89 fi 90 fi 91 done 92 rm -f conftest* 93 ]) 94 test "$ol_cv_mkdep" = no && OL_MKDEP=":" 95 else 96 cc_cv_mkdep=yes 97 OL_MKDEP_FLAGS="${MKDEP_FLAGS}" 98 fi 99else 100 cc_cv_mkdep=yes 101 OL_MKDEP="${MKDEP}" 102 OL_MKDEP_FLAGS="${MKDEP_FLAGS}" 103fi 104AC_SUBST(OL_MKDEP) 105AC_SUBST(OL_MKDEP_FLAGS) 106]) 107dnl 108dnl ==================================================================== 109dnl Check if system uses EBCDIC instead of ASCII 110AC_DEFUN([OL_CPP_EBCDIC], [# test for EBCDIC 111AC_CACHE_CHECK([for EBCDIC],ol_cv_cpp_ebcdic,[ 112 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[ 113#if !('M' == 0xd4) 114#include <__ASCII__/generate_error.h> 115#endif 116]])],[ol_cv_cpp_ebcdic=yes],[ol_cv_cpp_ebcdic=no])]) 117if test $ol_cv_cpp_ebcdic = yes ; then 118 AC_DEFINE(HAVE_EBCDIC,1, [define if system uses EBCDIC instead of ASCII]) 119fi 120]) 121dnl 122dnl -------------------------------------------------------------------- 123dnl Check for MSVC 124AC_DEFUN([OL_MSVC], 125[AC_REQUIRE_CPP()dnl 126AC_CACHE_CHECK([whether we are using MS Visual C++], ol_cv_msvc, 127[AC_PREPROC_IFELSE([AC_LANG_SOURCE([[ 128#ifndef _MSC_VER 129#include <__FOO__/generate_error.h> 130#endif 131]])],[ol_cv_msvc=yes],[ol_cv_msvc=no])])]) 132 133dnl -------------------------------------------------------------------- 134dnl OpenLDAP version of STDC header check w/ EBCDIC support 135AC_DEFUN([OL_HEADER_STDC], 136[AC_REQUIRE_CPP()dnl 137AC_REQUIRE([OL_CPP_EBCDIC])dnl 138AC_CACHE_CHECK([for ANSI C header files], ol_cv_header_stdc, 139[AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h> 140#include <stdarg.h> 141#include <string.h> 142#include <float.h>]])],[ol_cv_header_stdc=yes],[ol_cv_header_stdc=no]) 143 144if test $ol_cv_header_stdc = yes; then 145 # SunOS 4.x string.h does not declare mem*, contrary to ANSI. 146AC_EGREP_HEADER(memchr, string.h, , ol_cv_header_stdc=no) 147fi 148 149if test $ol_cv_header_stdc = yes; then 150 # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. 151AC_EGREP_HEADER(free, stdlib.h, , ol_cv_header_stdc=no) 152fi 153 154if test $ol_cv_header_stdc = yes; then 155 # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. 156AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <ctype.h> 157#ifndef HAVE_EBCDIC 158# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') 159# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) 160#else 161# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ 162 || ('j' <= (c) && (c) <= 'r') \ 163 || ('s' <= (c) && (c) <= 'z')) 164# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) 165#endif 166#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) 167int main () { int i; for (i = 0; i < 256; i++) 168if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); 169exit (0); } 170]])],[],[ol_cv_header_stdc=no],[:]) 171fi]) 172if test $ol_cv_header_stdc = yes; then 173 AC_DEFINE([STDC_HEADERS], [1], [is standard C provided?]) 174fi 175ac_cv_header_stdc=disable 176]) 177dnl 178dnl ==================================================================== 179dnl DNS resolver macros 180AC_DEFUN([OL_RESOLVER_TRY], 181[if test $ol_cv_lib_resolver = no ; then 182 AC_CACHE_CHECK([for resolver link (]ifelse($2,,default,$2)[)],[$1], 183[ 184 ol_RESOLVER_LIB=ifelse($2,,,$2) 185 ol_LIBS=$LIBS 186 LIBS="$ol_RESOLVER_LIB $LIBS" 187 188 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 189#ifdef HAVE_SYS_TYPES_H 190# include <sys/types.h> 191#endif 192#include <netinet/in.h> 193#ifdef HAVE_ARPA_NAMESER_H 194# include <arpa/nameser.h> 195#endif 196#ifdef HAVE_RESOLV_H 197# include <resolv.h> 198#endif 199]], [[{ 200 int len, status; 201 char *request = NULL; 202 unsigned char reply[64*1024]; 203 unsigned char host[64*1024]; 204 unsigned char *p; 205 206#ifdef NS_HFIXEDSZ 207 /* Bind 8/9 interface */ 208 len = res_query(request, ns_c_in, ns_t_srv, reply, sizeof(reply)); 209#else 210 /* Bind 4 interface */ 211# ifndef T_SRV 212# define T_SRV 33 213# endif 214 len = res_query(request, C_IN, T_SRV, reply, sizeof(reply)); 215#endif 216 p = reply; 217#ifdef NS_HFIXEDSZ 218 /* Bind 8/9 interface */ 219 p += NS_HFIXEDSZ; 220#elif defined(HFIXEDSZ) 221 /* Bind 4 interface w/ HFIXEDSZ */ 222 p += HFIXEDSZ; 223#else 224 /* Bind 4 interface w/o HFIXEDSZ */ 225 p += sizeof(HEADER); 226#endif 227 status = dn_expand( reply, reply+len, p, host, sizeof(host)); 228}]])],[$1=yes],[$1=no]) 229 230 LIBS="$ol_LIBS" 231]) 232 233 if test $$1 = yes ; then 234 ol_cv_lib_resolver=ifelse($2,,yes,$2) 235 fi 236fi 237]) 238dnl -------------------------------------------------------------------- 239dnl Try to locate appropriate library 240AC_DEFUN([OL_RESOLVER_LINK], 241[ol_cv_lib_resolver=no 242OL_RESOLVER_TRY(ol_cv_resolver_none) 243OL_RESOLVER_TRY(ol_cv_resolver_resolv,[-lresolv]) 244OL_RESOLVER_TRY(ol_cv_resolver_bind,[-lbind]) 245]) 246dnl 247dnl ==================================================================== 248dnl International Components for Unicode (ICU) 249AC_DEFUN([OL_ICU], 250[ol_icu=no 251AC_CHECK_HEADERS( unicode/utypes.h ) 252if test $ac_cv_header_unicode_utypes_h = yes ; then 253 dnl OL_ICULIBS="-licui18n -licuuc -licudata" 254 OL_ICULIBS="-licuuc -licudata" 255 256 AC_CACHE_CHECK([for ICU libraries], [ol_cv_lib_icu], [ 257 ol_LIBS="$LIBS" 258 LIBS="$OL_ICULIBS $LIBS" 259 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 260#include <unicode/utypes.h> 261]], [[ 262(void) u_errorName(0); 263]])],[ol_cv_lib_icu=yes],[ol_cv_lib_icu=no]) 264 LIBS="$ol_LIBS" 265]) 266 267 if test $ol_cv_lib_icu != no ; then 268 ol_icu="$OL_ICULIBS" 269 AC_DEFINE([HAVE_ICU], [1], [define if you actually have ICU]) 270 fi 271fi 272]) 273dnl 274dnl ==================================================================== 275dnl Berkeley DB macros 276dnl 277dnl -------------------------------------------------------------------- 278dnl Try to link 279AC_DEFUN([OL_BERKELEY_DB_TRY], 280[if test $ol_cv_lib_db = no ; then 281 AC_CACHE_CHECK([for Berkeley DB link (]ifelse($2,,default,$2)[)],[$1], 282[ 283 ol_DB_LIB=ifelse($2,,,$2) 284 ol_LIBS=$LIBS 285 LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS" 286 287 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 288#ifdef HAVE_DB_185_H 289# include <db_185.h> 290#else 291# include <db.h> 292#endif 293 294#ifndef DB_VERSION_MAJOR 295# define DB_VERSION_MAJOR 1 296#endif 297 298#ifndef NULL 299#define NULL ((void*)0) 300#endif 301]], [[ 302#if DB_VERSION_MAJOR > 2 303 db_env_create( NULL, 0 ); 304#elif DB_VERSION_MAJOR > 1 305 db_appexit( NULL ); 306#else 307 (void) dbopen( NULL, 0, 0, 0, NULL); 308#endif 309]])],[$1=yes],[$1=no]) 310 311 LIBS="$ol_LIBS" 312]) 313 314 if test $$1 = yes ; then 315 ol_cv_lib_db=ifelse($2,,yes,$2) 316 fi 317fi 318]) 319dnl 320dnl -------------------------------------------------------------------- 321dnl Get major and minor version from <db.h> 322AC_DEFUN([OL_BDB_HEADER_VERSION], 323[AC_CACHE_CHECK([for Berkeley DB major version in db.h], [ol_cv_bdb_major],[ 324 AC_LANG_CONFTEST([ 325#include <db.h> 326#ifndef DB_VERSION_MAJOR 327# define DB_VERSION_MAJOR 1 328#endif 329__db_version DB_VERSION_MAJOR 330]) 331 set X `eval "$ac_cpp conftest.$ac_ext" | $EGREP __db_version` none none 332 ol_cv_bdb_major=${3} 333]) 334case $ol_cv_bdb_major in [[1-9]]*) : ;; *) 335 AC_MSG_ERROR([Unknown Berkeley DB major version in db.h]) ;; 336esac 337 338dnl Determine minor version 339AC_CACHE_CHECK([for Berkeley DB minor version in db.h], [ol_cv_bdb_minor],[ 340 AC_LANG_CONFTEST([ 341#include <db.h> 342#ifndef DB_VERSION_MINOR 343# define DB_VERSION_MINOR 0 344#endif 345__db_version DB_VERSION_MINOR 346]) 347 set X `eval "$ac_cpp conftest.$ac_ext" | $EGREP __db_version` none none 348 ol_cv_bdb_minor=${3} 349]) 350case $ol_cv_bdb_minor in [[0-9]]*) : ;; *) 351 AC_MSG_ERROR([Unknown Berkeley DB minor version in db.h]) ;; 352esac 353]) 354dnl 355dnl -------------------------------------------------------------------- 356dnl Try to locate appropriate library 357AC_DEFUN([OL_BERKELEY_DB_LINK], 358[ol_cv_lib_db=no 359 360if test $ol_cv_bdb_major = 4 ; then 361 OL_BERKELEY_DB_TRY(ol_cv_db_db_4_dot_m,[-ldb-4.$ol_cv_bdb_minor]) 362 OL_BERKELEY_DB_TRY(ol_cv_db_db4m,[-ldb4$ol_cv_bdb_minor]) 363 OL_BERKELEY_DB_TRY(ol_cv_db_db_4m,[-ldb-4$ol_cv_bdb_minor]) 364 OL_BERKELEY_DB_TRY(ol_cv_db_db_4_m,[-ldb-4-$ol_cv_bdb_minor]) 365 OL_BERKELEY_DB_TRY(ol_cv_db_db_4,[-ldb-4]) 366 OL_BERKELEY_DB_TRY(ol_cv_db_db4,[-ldb4]) 367 OL_BERKELEY_DB_TRY(ol_cv_db_db,[-ldb]) 368fi 369OL_BERKELEY_DB_TRY(ol_cv_db_none) 370]) 371dnl 372dnl -------------------------------------------------------------------- 373dnl Check if Berkeley DB version 374AC_DEFUN([OL_BERKELEY_DB_VERSION], 375[AC_CACHE_CHECK([for Berkeley DB library and header version match], [ol_cv_berkeley_db_version], [ 376 ol_LIBS="$LIBS" 377 LIBS="$LTHREAD_LIBS $LIBS" 378 if test $ol_cv_lib_db != yes ; then 379 LIBS="$ol_cv_lib_db $LIBS" 380 fi 381 382 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 383#ifdef HAVE_DB_185_H 384 choke me; 385#else 386#include <db.h> 387#endif 388#ifndef DB_VERSION_MAJOR 389# define DB_VERSION_MAJOR 1 390#endif 391#ifndef NULL 392#define NULL ((void *)0) 393#endif 394main() 395{ 396#if DB_VERSION_MAJOR > 1 397 char *version; 398 int major, minor, patch; 399 400 version = db_version( &major, &minor, &patch ); 401 402 if( major != DB_VERSION_MAJOR || 403 minor != DB_VERSION_MINOR || 404 patch != DB_VERSION_PATCH ) 405 { 406 printf("Berkeley DB version mismatch\n" 407 "\theader: %s\n\tlibrary: %s\n", 408 DB_VERSION_STRING, version); 409 return 1; 410 } 411#endif 412 413 return 0; 414}]])],[ol_cv_berkeley_db_version=yes],[ol_cv_berkeley_db_version=no],[ol_cv_berkeley_db_version=cross]) 415 416 LIBS="$ol_LIBS" 417]) 418 419 if test $ol_cv_berkeley_db_version = no ; then 420 AC_MSG_ERROR([Berkeley DB version mismatch]) 421 fi 422])dnl 423dnl 424dnl -------------------------------------------------------------------- 425dnl Check if Berkeley DB supports DB_THREAD 426AC_DEFUN([OL_BERKELEY_DB_THREAD], 427[AC_CACHE_CHECK([for Berkeley DB thread support], [ol_cv_berkeley_db_thread], [ 428 ol_LIBS="$LIBS" 429 LIBS="$LTHREAD_LIBS $LIBS" 430 if test $ol_cv_lib_db != yes ; then 431 LIBS="$ol_cv_lib_db $LIBS" 432 fi 433 434 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 435#ifdef HAVE_DB_185_H 436 choke me; 437#else 438#include <db.h> 439#endif 440#ifndef NULL 441#define NULL ((void *)0) 442#endif 443main() 444{ 445 int rc; 446 u_int32_t flags = DB_CREATE | 447#ifdef DB_PRIVATE 448 DB_PRIVATE | 449#endif 450 DB_THREAD; 451 452#if DB_VERSION_MAJOR > 2 453 DB_ENV *env = NULL; 454 455 rc = db_env_create( &env, 0 ); 456 457 flags |= DB_INIT_MPOOL; 458#ifdef DB_MPOOL_PRIVATE 459 flags |= DB_MPOOL_PRIVATE; 460#endif 461 462 if( rc ) { 463 printf("BerkeleyDB: %s\n", db_strerror(rc) ); 464 return rc; 465 } 466 467#if (DB_VERSION_MAJOR > 3) || (DB_VERSION_MINOR >= 1) 468 rc = (env->open)( env, NULL, flags, 0 ); 469#else 470 rc = (env->open)( env, NULL, NULL, flags, 0 ); 471#endif 472 473 if ( rc == 0 ) { 474 rc = env->close( env, 0 ); 475 } 476 477 if( rc ) { 478 printf("BerkeleyDB: %s\n", db_strerror(rc) ); 479 return rc; 480 } 481 482#else 483 DB_ENV env; 484 memset( &env, '\0', sizeof(env) ); 485 486 rc = db_appinit( NULL, NULL, &env, flags ); 487 488 if( rc == 0 ) { 489 db_appexit( &env ); 490 } 491 492 unlink("__db_mpool.share"); 493 unlink("__db_lock.share"); 494#endif 495 496 return rc; 497}]])],[ol_cv_berkeley_db_thread=yes],[ol_cv_berkeley_db_thread=no],[ol_cv_berkeley_db_thread=cross]) 498 499 LIBS="$ol_LIBS" 500]) 501 502 if test $ol_cv_berkeley_db_thread != no ; then 503 AC_DEFINE([HAVE_BERKELEY_DB_THREAD], [1], 504 [define if Berkeley DB has DB_THREAD support]) 505 fi 506])dnl 507dnl 508dnl -------------------------------------------------------------------- 509dnl Find any DB 510AC_DEFUN([OL_BERKELEY_DB], 511[ol_cv_berkeley_db=no 512AC_CHECK_HEADERS(db.h) 513if test $ac_cv_header_db_h = yes; then 514 OL_BDB_HEADER_VERSION 515 OL_BDB_COMPAT 516 517 if test $ol_cv_bdb_compat != yes ; then 518 AC_MSG_ERROR([BerkeleyDB version incompatible with BDB/HDB backends]) 519 fi 520 521 OL_BERKELEY_DB_LINK 522 if test "$ol_cv_lib_db" != no ; then 523 ol_cv_berkeley_db=yes 524 OL_BERKELEY_DB_VERSION 525 OL_BERKELEY_DB_THREAD 526 fi 527fi 528]) 529dnl -------------------------------------------------------------------- 530dnl Check for version compatility with back-bdb 531AC_DEFUN([OL_BDB_COMPAT], 532[AC_CACHE_CHECK([if Berkeley DB version supported by BDB/HDB backends], [ol_cv_bdb_compat],[ 533 AC_EGREP_CPP(__db_version_compat,[ 534#include <db.h> 535 536 /* this check could be improved */ 537#ifndef DB_VERSION_MAJOR 538# define DB_VERSION_MAJOR 1 539#endif 540#ifndef DB_VERSION_MINOR 541# define DB_VERSION_MINOR 0 542#endif 543 544#define DB_VERSION_MM ((DB_VERSION_MAJOR<<8)|DB_VERSION_MINOR) 545 546/* require 4.4 or later */ 547#if DB_VERSION_MM >= 0x0404 548 __db_version_compat 549#endif 550 ], [ol_cv_bdb_compat=yes], [ol_cv_bdb_compat=no])]) 551]) 552 553dnl 554dnl ==================================================================== 555dnl Check POSIX Thread version 556dnl 557dnl defines ol_cv_pthread_version to 4, 5, 6, 7, 8, 10, depending on the 558dnl version of the POSIX.4a Draft that is implemented. 559dnl 10 == POSIX.4a Final == POSIX.1c-1996 for our purposes. 560dnl Existence of pthread.h should be tested separately. 561dnl 562dnl tests: 563dnl pthread_detach() was dropped in Draft 8, it is present 564dnl in every other version 565dnl PTHREAD_CREATE_UNDETACHED is only in Draft 7, it was called 566dnl PTHREAD_CREATE_JOINABLE after that 567dnl pthread_attr_create was renamed to pthread_attr_init in Draft 6. 568dnl Draft 6-10 has _init, Draft 4-5 has _create. 569dnl pthread_attr_default was dropped in Draft 6, only 4 and 5 have it 570dnl PTHREAD_MUTEX_INITIALIZER was introduced in Draft 5. It's not 571dnl interesting to us because we don't try to statically 572dnl initialize mutexes. 5-10 has it. 573dnl 574dnl Draft 9 and 10 are equivalent for our purposes. 575dnl 576AC_DEFUN([OL_POSIX_THREAD_VERSION], 577[AC_CACHE_CHECK([POSIX thread version],[ol_cv_pthread_version],[ 578 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 579# include <pthread.h> 580 ]], [[ 581 int i = PTHREAD_CREATE_JOINABLE; 582 ]])],[ 583 AC_EGREP_HEADER(pthread_detach,pthread.h, 584 ol_cv_pthread_version=10, ol_cv_pthread_version=8)],[ 585 AC_EGREP_CPP(draft7,[ 586# include <pthread.h> 587# ifdef PTHREAD_CREATE_UNDETACHED 588 draft7 589# endif 590 ], ol_cv_pthread_version=7, [ 591 AC_EGREP_HEADER(pthread_attr_init,pthread.h, 592 ol_cv_pthread_version=6, [ 593 AC_EGREP_CPP(draft5,[ 594# include <pthread.h> 595#ifdef PTHREAD_MUTEX_INITIALIZER 596 draft5 597#endif 598 ], ol_cv_pthread_version=5, ol_cv_pthread_version=4) ]) ]) ]) 599]) 600])dnl 601dnl 602dnl -------------------------------------------------------------------- 603AC_DEFUN([OL_PTHREAD_TEST_INCLUDES], [[ 604/* pthread test headers */ 605#include <pthread.h> 606#if HAVE_PTHREADS < 7 607#include <errno.h> 608#endif 609#ifndef NULL 610#define NULL (void*)0 611#endif 612 613static void *task(p) 614 void *p; 615{ 616 return (void *) (p == NULL); 617} 618]]) 619AC_DEFUN([OL_PTHREAD_TEST_FUNCTION],[[ 620 /* pthread test function */ 621#ifndef PTHREAD_CREATE_DETACHED 622#define PTHREAD_CREATE_DETACHED 1 623#endif 624 pthread_t t; 625 int status; 626 int detach = PTHREAD_CREATE_DETACHED; 627 628#if HAVE_PTHREADS > 4 629 /* Final pthreads */ 630 pthread_attr_t attr; 631 632 status = pthread_attr_init(&attr); 633 if( status ) return status; 634 635#if HAVE_PTHREADS < 7 636 status = pthread_attr_setdetachstate(&attr, &detach); 637 if( status < 0 ) status = errno; 638#else 639 status = pthread_attr_setdetachstate(&attr, detach); 640#endif 641 if( status ) return status; 642 status = pthread_create( &t, &attr, task, NULL ); 643#if HAVE_PTHREADS < 7 644 if( status < 0 ) status = errno; 645#endif 646 if( status ) return status; 647#else 648 /* Draft 4 pthreads */ 649 status = pthread_create( &t, pthread_attr_default, task, NULL ); 650 if( status ) return errno; 651 652 /* give thread a chance to complete */ 653 /* it should remain joinable and hence detachable */ 654 sleep( 1 ); 655 656 status = pthread_detach( &t ); 657 if( status ) return errno; 658#endif 659 660#ifdef HAVE_LINUX_THREADS 661 pthread_kill_other_threads_np(); 662#endif 663 664 return 0; 665]]) 666 667AC_DEFUN([OL_PTHREAD_TEST_PROGRAM], [ 668AC_LANG_SOURCE([OL_PTHREAD_TEST_INCLUDES 669 670int main(argc, argv) 671 int argc; 672 char **argv; 673{ 674OL_PTHREAD_TEST_FUNCTION 675} 676])]) 677dnl -------------------------------------------------------------------- 678AC_DEFUN([OL_PTHREAD_TRY], [# Pthread try link: $1 ($2) 679if test "$ol_link_threads" = no ; then 680 # try $1 681 AC_CACHE_CHECK([for pthread link with $1], [$2], [ 682 # save the flags 683 ol_LIBS="$LIBS" 684 LIBS="$1 $LIBS" 685 686 AC_RUN_IFELSE([OL_PTHREAD_TEST_PROGRAM], 687 [$2=yes], 688 [$2=no], 689 [AC_LINK_IFELSE([AC_LANG_PROGRAM(OL_PTHREAD_TEST_INCLUDES, 690 OL_PTHREAD_TEST_FUNCTION)], 691 [$2=yes], [$2=no])]) 692 693 # restore the LIBS 694 LIBS="$ol_LIBS" 695 ]) 696 697 if test $$2 = yes ; then 698 ol_link_pthreads="$1" 699 ol_link_threads=posix 700 fi 701fi 702]) 703dnl 704dnl ==================================================================== 705dnl Check GNU Pth pthread Header 706dnl 707dnl defines ol_cv_header linux_threads to 'yes' or 'no' 708dnl 'no' implies pthreads.h is not LinuxThreads or pthreads.h 709dnl doesn't exists. Existance of pthread.h should separately 710dnl checked. 711dnl 712AC_DEFUN([OL_HEADER_GNU_PTH_PTHREAD_H], [ 713 AC_CACHE_CHECK([for GNU Pth pthread.h], 714 [ol_cv_header_gnu_pth_pthread_h], 715 [AC_EGREP_CPP(__gnu_pth__, 716 [#include <pthread.h> 717#ifdef _POSIX_THREAD_IS_GNU_PTH 718 __gnu_pth__; 719#endif 720], 721 [ol_cv_header_gnu_pth_pthread_h=yes], 722 [ol_cv_header_gnu_pth_pthread_h=no]) 723 ]) 724])dnl 725dnl ==================================================================== 726dnl Check for NT Threads 727AC_DEFUN([OL_NT_THREADS], [ 728 AC_CHECK_FUNC(_beginthread) 729 730 if test $ac_cv_func__beginthread = yes ; then 731 AC_DEFINE([HAVE_NT_THREADS], [1], [if you have NT Threads]) 732 ol_cv_nt_threads=yes 733 fi 734]) 735dnl ==================================================================== 736dnl Check LinuxThreads Header 737dnl 738dnl defines ol_cv_header linux_threads to 'yes' or 'no' 739dnl 'no' implies pthreads.h is not LinuxThreads or pthreads.h 740dnl doesn't exists. Existance of pthread.h should separately 741dnl checked. 742dnl 743AC_DEFUN([OL_HEADER_LINUX_THREADS], [ 744 AC_CACHE_CHECK([for LinuxThreads pthread.h], 745 [ol_cv_header_linux_threads], 746 [AC_EGREP_CPP(pthread_kill_other_threads_np, 747 [#include <pthread.h>], 748 [ol_cv_header_linux_threads=yes], 749 [ol_cv_header_linux_threads=no]) 750 ]) 751 if test $ol_cv_header_linux_threads = yes; then 752 AC_DEFINE([HAVE_LINUX_THREADS], [1], [if you have LinuxThreads]) 753 fi 754])dnl 755dnl -------------------------------------------------------------------- 756dnl Check LinuxThreads Implementation 757dnl 758dnl defines ol_cv_sys_linux_threads to 'yes' or 'no' 759dnl 'no' implies pthreads implementation is not LinuxThreads. 760dnl 761AC_DEFUN([OL_SYS_LINUX_THREADS], [ 762 AC_CHECK_FUNCS(pthread_kill_other_threads_np) 763 AC_CACHE_CHECK([for LinuxThreads implementation], 764 [ol_cv_sys_linux_threads], 765 [ol_cv_sys_linux_threads=$ac_cv_func_pthread_kill_other_threads_np]) 766])dnl 767dnl 768dnl -------------------------------------------------------------------- 769dnl Check LinuxThreads consistency 770AC_DEFUN([OL_LINUX_THREADS], [ 771 AC_REQUIRE([OL_HEADER_LINUX_THREADS]) 772 AC_REQUIRE([OL_SYS_LINUX_THREADS]) 773 AC_CACHE_CHECK([for LinuxThreads consistency], [ol_cv_linux_threads], [ 774 if test $ol_cv_header_linux_threads = yes && 775 test $ol_cv_sys_linux_threads = yes; then 776 ol_cv_linux_threads=yes 777 elif test $ol_cv_header_linux_threads = no && 778 test $ol_cv_sys_linux_threads = no; then 779 ol_cv_linux_threads=no 780 else 781 ol_cv_linux_threads=error 782 fi 783 ]) 784])dnl 785dnl 786dnl ==================================================================== 787dnl Check for POSIX Regex 788AC_DEFUN([OL_POSIX_REGEX], [ 789AC_CACHE_CHECK([for compatible POSIX regex],ol_cv_c_posix_regex,[ 790 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 791#include <sys/types.h> 792#include <regex.h> 793static char *pattern, *string; 794main() 795{ 796 int rc; 797 regex_t re; 798 799 pattern = "^A"; 800 801 if(regcomp(&re, pattern, 0)) { 802 return -1; 803 } 804 805 string = "ALL MATCH"; 806 807 rc = regexec(&re, string, 0, (void*)0, 0); 808 809 regfree(&re); 810 811 return rc; 812}]])],[ol_cv_c_posix_regex=yes],[ol_cv_c_posix_regex=no],[ol_cv_c_posix_regex=cross])]) 813]) 814dnl 815dnl ==================================================================== 816dnl Check if toupper() requires islower() to be called first 817AC_DEFUN([OL_C_UPPER_LOWER], 818[AC_CACHE_CHECK([if toupper() requires islower()],ol_cv_c_upper_lower,[ 819 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 820#include <ctype.h> 821main() 822{ 823 if ('C' == toupper('C')) 824 exit(0); 825 else 826 exit(1); 827}]])],[ol_cv_c_upper_lower=no],[ol_cv_c_upper_lower=yes],[ol_cv_c_upper_lower=safe])]) 828if test $ol_cv_c_upper_lower != no ; then 829 AC_DEFINE([C_UPPER_LOWER], [1], [define if toupper() requires islower()]) 830fi 831]) 832dnl 833dnl ==================================================================== 834dnl Error string checks 835dnl 836dnl Check for declaration of sys_errlist in one of stdio.h and errno.h. 837dnl Declaration of sys_errlist on BSD4.4 interferes with our declaration. 838dnl Reported by Keith Bostic. 839AC_DEFUN([OL_SYS_ERRLIST], 840[AC_CACHE_CHECK([declaration of sys_errlist],ol_cv_dcl_sys_errlist,[ 841 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 842#include <stdio.h> 843#include <sys/types.h> 844#include <errno.h> 845#ifdef _WIN32 846#include <stdlib.h> 847#endif ]], [[char *c = (char *) *sys_errlist]])],[ol_cv_dcl_sys_errlist=yes 848 ol_cv_have_sys_errlist=yes],[ol_cv_dcl_sys_errlist=no])]) 849# 850# It's possible (for near-UNIX clones) that sys_errlist doesn't exist 851if test $ol_cv_dcl_sys_errlist = no ; then 852 AC_DEFINE([DECL_SYS_ERRLIST], [1], 853 [define if sys_errlist is not declared in stdio.h or errno.h]) 854 855 AC_CACHE_CHECK([existence of sys_errlist],ol_cv_have_sys_errlist,[ 856 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <errno.h>]], [[char *c = (char *) *sys_errlist]])],[ol_cv_have_sys_errlist=yes],[ol_cv_have_sys_errlist=no])]) 857fi 858if test $ol_cv_have_sys_errlist = yes ; then 859 AC_DEFINE([HAVE_SYS_ERRLIST], [1], 860 [define if you actually have sys_errlist in your libs]) 861fi 862])dnl 863AC_DEFUN([OL_NONPOSIX_STRERROR_R], 864[AC_CACHE_CHECK([non-posix strerror_r],ol_cv_nonposix_strerror_r,[ 865 AC_EGREP_CPP(strerror_r,[#include <string.h>], 866 ol_decl_strerror_r=yes, ol_decl_strerror_r=no)dnl 867 868 if test $ol_decl_strerror_r = yes ; then 869 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <string.h>]], [[ /* from autoconf 2.59 */ 870 char buf[100]; 871 char x = *strerror_r (0, buf, sizeof buf); 872 char *p = strerror_r (0, buf, sizeof buf); 873 ]])],[ol_cv_nonposix_strerror_r=yes],[ol_cv_nonposix_strerror_r=no]) 874 else 875 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 876 main() { 877 char buf[100]; 878 buf[0] = 0; 879 strerror_r( 1, buf, sizeof buf ); 880 exit( buf[0] == 0 ); 881 } 882 ]])],[ol_cv_nonposix_strerror_r=yes],[ol_cv_nonposix_strerror=no],[ol_cv_nonposix_strerror=no]) 883 fi 884 ]) 885if test $ol_cv_nonposix_strerror_r = yes ; then 886 AC_DEFINE([HAVE_NONPOSIX_STRERROR_R], [1], 887 [define if strerror_r returns char* instead of int]) 888fi 889])dnl 890dnl 891AC_DEFUN([OL_STRERROR], 892[OL_SYS_ERRLIST dnl TEMPORARY 893AC_CHECK_FUNCS(strerror strerror_r) 894ol_cv_func_strerror_r=no 895if test "${ac_cv_func_strerror_r}" = yes ; then 896 OL_NONPOSIX_STRERROR_R 897elif test "${ac_cv_func_strerror}" = no ; then 898 OL_SYS_ERRLIST 899fi 900])dnl 901dnl ==================================================================== 902dnl Early MIPS compilers (used in Ultrix 4.2) don't like 903dnl "int x; int *volatile a = &x; *a = 0;" 904dnl -- borrowed from PDKSH 905AC_DEFUN([OL_C_VOLATILE], 906 [AC_CACHE_CHECK(if compiler understands volatile, ol_cv_c_volatile, 907 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int x, y, z;]], [[volatile int a; int * volatile b = x ? &y : &z; 908 /* Older MIPS compilers (eg., in Ultrix 4.2) don't like *b = 0 */ 909 *b = 0;]])],[ol_cv_c_volatile=yes],[ol_cv_c_volatile=no])]) 910 if test $ol_cv_c_volatile = yes; then 911 : 912 else 913 AC_DEFINE([volatile], [], [define as empty if volatile is not supported]) 914 fi 915 ])dnl 916dnl 917dnl ==================================================================== 918dnl Look for fetch(3) 919AC_DEFUN([OL_LIB_FETCH], 920[ol_LIBS=$LIBS 921LIBS="-lfetch -lcom_err $LIBS" 922AC_CACHE_CHECK([fetch(3) library],ol_cv_lib_fetch,[ 923 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 924#ifdef HAVE_SYS_PARAM_H 925#include <sys/param.h> 926#endif 927#include <stdio.h> 928#include <fetch.h>]], [[struct url *u = fetchParseURL("file:///"); ]])],[ol_cv_lib_fetch=yes],[ol_cv_lib_fetch=no])]) 929LIBS=$ol_LIBS 930if test $ol_cv_lib_fetch != no ; then 931 ol_link_fetch="-lfetch -lcom_err" 932 AC_DEFINE([HAVE_FETCH], [1], 933 [define if you actually have FreeBSD fetch(3)]) 934fi 935])dnl 936dnl 937dnl ==================================================================== 938dnl Define inet_aton is available 939AC_DEFUN([OL_FUNC_INET_ATON], 940 [AC_CACHE_CHECK([for inet_aton()], ol_cv_func_inet_aton, 941 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 942#ifdef HAVE_SYS_TYPES_H 943# include <sys/types.h> 944#endif 945#ifdef HAVE_SYS_SOCKET_H 946# include <sys/socket.h> 947# ifdef HAVE_SYS_SELECT_H 948# include <sys/select.h> 949# endif 950# include <netinet/in.h> 951# ifdef HAVE_ARPA_INET_H 952# include <arpa/inet.h> 953# endif 954#endif 955]], [[struct in_addr in; 956int rc = inet_aton( "255.255.255.255", &in );]])],[ol_cv_func_inet_aton=yes],[ol_cv_func_inet_aton=no])]) 957 if test $ol_cv_func_inet_aton != no; then 958 AC_DEFINE(HAVE_INET_ATON, 1, 959 [define to you inet_aton(3) is available]) 960 fi 961 ])dnl 962dnl 963dnl ==================================================================== 964dnl check no of arguments for ctime_r 965AC_DEFUN([OL_FUNC_CTIME_R_NARGS], 966 [AC_CACHE_CHECK(number of arguments of ctime_r, ol_cv_func_ctime_r_nargs, 967 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[time_t ti; char *buffer; ctime_r(&ti,buffer,32);]])],[ol_cv_func_ctime_r_nargs3=yes],[ol_cv_func_ctime_r_nargs3=no]) 968 969 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[time_t ti; char *buffer; ctime_r(&ti,buffer);]])],[ol_cv_func_ctime_r_nargs2=yes],[ol_cv_func_ctime_r_nargs2=no]) 970 971 if test $ol_cv_func_ctime_r_nargs3 = yes && 972 test $ol_cv_func_ctime_r_nargs2 = no ; then 973 974 ol_cv_func_ctime_r_nargs=3 975 976 elif test $ol_cv_func_ctime_r_nargs3 = no && 977 test $ol_cv_func_ctime_r_nargs2 = yes ; then 978 979 ol_cv_func_ctime_r_nargs=2 980 981 else 982 ol_cv_func_ctime_r_nargs=0 983 fi 984 ]) 985 986 if test $ol_cv_func_ctime_r_nargs -gt 1 ; then 987 AC_DEFINE_UNQUOTED(CTIME_R_NARGS, $ol_cv_func_ctime_r_nargs, 988 [set to the number of arguments ctime_r() expects]) 989 fi 990])dnl 991dnl 992dnl -------------------------------------------------------------------- 993dnl check return type of ctime_r() 994AC_DEFUN([OL_FUNC_CTIME_R_TYPE], 995 [AC_CACHE_CHECK(return type of ctime_r, ol_cv_func_ctime_r_type, 996 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[extern int (ctime_r)();]])],[ol_cv_func_ctime_r_type="int"],[ol_cv_func_ctime_r_type="charp"]) 997 ]) 998 if test $ol_cv_func_ctime_r_type = "int" ; then 999 AC_DEFINE(CTIME_R_RETURNS_INT,1, [define if ctime_r() returns int]) 1000 fi 1001])dnl 1002dnl ==================================================================== 1003dnl check no of arguments for gethostbyname_r 1004AC_DEFUN([OL_FUNC_GETHOSTBYNAME_R_NARGS], 1005 [AC_CACHE_CHECK(number of arguments of gethostbyname_r, 1006 ol_cv_func_gethostbyname_r_nargs, 1007 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> 1008#include <sys/socket.h> 1009#include <netinet/in.h> 1010#include <netdb.h> 1011#define BUFSIZE (sizeof(struct hostent)+10)]], [[struct hostent hent; char buffer[BUFSIZE]; 1012 int bufsize=BUFSIZE;int h_errno; 1013 (void)gethostbyname_r("segovia.cs.purdue.edu", &hent, 1014 buffer, bufsize, &h_errno);]])],[ol_cv_func_gethostbyname_r_nargs5=yes],[ol_cv_func_gethostbyname_r_nargs5=no]) 1015 1016 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> 1017#include <sys/socket.h> 1018#include <netinet/in.h> 1019#include <netdb.h> 1020#define BUFSIZE (sizeof(struct hostent)+10)]], [[struct hostent hent;struct hostent *rhent; 1021 char buffer[BUFSIZE]; 1022 int bufsize=BUFSIZE;int h_errno; 1023 (void)gethostbyname_r("localhost", &hent, buffer, bufsize, 1024 &rhent, &h_errno);]])],[ol_cv_func_gethostbyname_r_nargs6=yes],[ol_cv_func_gethostbyname_r_nargs6=no]) 1025 1026 if test $ol_cv_func_gethostbyname_r_nargs5 = yes && 1027 test $ol_cv_func_gethostbyname_r_nargs6 = no ; then 1028 1029 ol_cv_func_gethostbyname_r_nargs=5 1030 1031 elif test $ol_cv_func_gethostbyname_r_nargs5 = no && 1032 test $ol_cv_func_gethostbyname_r_nargs6 = yes ; then 1033 1034 ol_cv_func_gethostbyname_r_nargs=6 1035 1036 else 1037 ol_cv_func_gethostbyname_r_nargs=0 1038 fi 1039 ]) 1040 if test $ol_cv_func_gethostbyname_r_nargs -gt 1 ; then 1041 AC_DEFINE_UNQUOTED(GETHOSTBYNAME_R_NARGS, 1042 $ol_cv_func_gethostbyname_r_nargs, 1043 [set to the number of arguments gethostbyname_r() expects]) 1044 fi 1045])dnl 1046dnl 1047dnl check no of arguments for gethostbyaddr_r 1048AC_DEFUN([OL_FUNC_GETHOSTBYADDR_R_NARGS], 1049 [AC_CACHE_CHECK(number of arguments of gethostbyaddr_r, 1050 [ol_cv_func_gethostbyaddr_r_nargs], 1051 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> 1052#include <sys/socket.h> 1053#include <netinet/in.h> 1054#include <netdb.h> 1055#define BUFSIZE (sizeof(struct hostent)+10)]], [[struct hostent hent; char buffer[BUFSIZE]; 1056 struct in_addr add; 1057 size_t alen=sizeof(struct in_addr); 1058 int bufsize=BUFSIZE;int h_errno; 1059 (void)gethostbyaddr_r( (void *)&(add.s_addr), 1060 alen, AF_INET, &hent, buffer, bufsize, &h_errno);]])],[ol_cv_func_gethostbyaddr_r_nargs7=yes],[ol_cv_func_gethostbyaddr_r_nargs7=no]) 1061 1062 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> 1063#include <sys/socket.h> 1064#include <netinet/in.h> 1065#include <netdb.h> 1066#define BUFSIZE (sizeof(struct hostent)+10)]], [[struct hostent hent; 1067 struct hostent *rhent; char buffer[BUFSIZE]; 1068 struct in_addr add; 1069 size_t alen=sizeof(struct in_addr); 1070 int bufsize=BUFSIZE;int h_errno; 1071 (void)gethostbyaddr_r( (void *)&(add.s_addr), 1072 alen, AF_INET, &hent, buffer, bufsize, 1073 &rhent, &h_errno);]])],[ol_cv_func_gethostbyaddr_r_nargs8=yes],[ol_cv_func_gethostbyaddr_r_nargs8=no]) 1074 1075 if test $ol_cv_func_gethostbyaddr_r_nargs7 = yes && 1076 test $ol_cv_func_gethostbyaddr_r_nargs8 = no ; then 1077 1078 ol_cv_func_gethostbyaddr_r_nargs=7 1079 1080 elif test $ol_cv_func_gethostbyaddr_r_nargs7 = no && 1081 test $ol_cv_func_gethostbyaddr_r_nargs8 = yes ; then 1082 1083 ol_cv_func_gethostbyaddr_r_nargs=8 1084 1085 else 1086 ol_cv_func_gethostbyaddr_r_nargs=0 1087 fi 1088 ]) 1089 if test $ol_cv_func_gethostbyaddr_r_nargs -gt 1 ; then 1090 AC_DEFINE_UNQUOTED(GETHOSTBYADDR_R_NARGS, 1091 $ol_cv_func_gethostbyaddr_r_nargs, 1092 [set to the number of arguments gethostbyaddr_r() expects]) 1093 fi 1094])dnl 1095dnl 1096dnl -------------------------------------------------------------------- 1097dnl Check for Cyrus SASL version compatility 1098AC_DEFUN([OL_SASL_COMPAT], 1099[AC_CACHE_CHECK([Cyrus SASL library version], [ol_cv_sasl_compat],[ 1100 AC_EGREP_CPP(__sasl_compat,[ 1101#ifdef HAVE_SASL_SASL_H 1102#include <sasl/sasl.h> 1103#else 1104#include <sasl.h> 1105#endif 1106 1107/* Require 2.1.15+ */ 1108#if SASL_VERSION_MAJOR == 2 && SASL_VERSION_MINOR > 1 1109 char *__sasl_compat = "2.2+ or better okay (we guess)"; 1110#elif SASL_VERSION_MAJOR == 2 && SASL_VERSION_MINOR == 1 \ 1111 && SASL_VERSION_STEP >=15 1112 char *__sasl_compat = "2.1.15+ or better okay"; 1113#endif 1114 ], [ol_cv_sasl_compat=yes], [ol_cv_sasl_compat=no])]) 1115]) 1116dnl ==================================================================== 1117dnl check for SSL compatibility 1118AC_DEFUN([OL_SSL_COMPAT], 1119[AC_CACHE_CHECK([OpenSSL library version (CRL checking capability)], 1120 [ol_cv_ssl_crl_compat],[ 1121 AC_EGREP_CPP(__ssl_compat,[ 1122#ifdef HAVE_OPENSSL_SSL_H 1123#include <openssl/ssl.h> 1124#endif 1125 1126/* Require 0.9.7d+ */ 1127#if OPENSSL_VERSION_NUMBER >= 0x0090704fL 1128 char *__ssl_compat = "0.9.7d"; 1129#endif 1130 ], [ol_cv_ssl_crl_compat=yes], [ol_cv_ssl_crl_compat=no])]) 1131]) 1132