1251875Speterdnl 2251875Speterdnl Autoconf configuration file for APR 3251875Speterdnl 4251875Speterdnl Process this file with autoconf to produce a configure script. 5251875Speterdnl Use ./buildconf to prepare build files and run autoconf for APR. 6251875Speter 7251875SpeterAC_PREREQ(2.59) 8251875Speter 9251875SpeterAC_INIT(build/apr_common.m4) 10251875SpeterAC_CONFIG_HEADER(include/arch/unix/apr_private.h) 11251875SpeterAC_CONFIG_AUX_DIR(build) 12251875SpeterAC_CONFIG_MACRO_DIR(build) 13251875Speter 14251875Speterdnl 15251875Speterdnl Include our own M4 macros along with those for libtool 16251875Speterdnl 17251875Spetersinclude(build/apr_common.m4) 18251875Spetersinclude(build/apr_network.m4) 19251875Spetersinclude(build/apr_threads.m4) 20251875Spetersinclude(build/apr_win32.m4) 21251875Spetersinclude(build/apr_hints.m4) 22251875Spetersinclude(build/libtool.m4) 23251875Spetersinclude(build/ltsugar.m4) 24251875Spetersinclude(build/argz.m4) 25251875Spetersinclude(build/ltoptions.m4) 26251875Spetersinclude(build/ltversion.m4) 27251875Spetersinclude(build/lt~obsolete.m4) 28251875Speter 29251875Speterdnl Hard-coded top of apr_private.h: 30251875SpeterAH_TOP([ 31251875Speter#ifndef APR_PRIVATE_H 32251875Speter#define APR_PRIVATE_H 33251875Speter]) 34251875Speter 35251875Speterdnl Hard-coded inclusion at the tail end of apr_private.h: 36251875SpeterAH_BOTTOM([ 37251875Speter/* switch this on if we have a BeOS version below BONE */ 38269847Speter#if defined(BEOS) && !defined(HAVE_BONE_VERSION) 39251875Speter#define BEOS_R5 1 40251875Speter#else 41251875Speter#define BEOS_BONE 1 42251875Speter#endif 43251875Speter 44251875Speter/* 45251875Speter * Darwin 10's default compiler (gcc42) builds for both 64 and 46251875Speter * 32 bit architectures unless specifically told not to. 47251875Speter * In those cases, we need to override types depending on how 48251875Speter * we're being built at compile time. 49251875Speter * NOTE: This is an ugly work-around for Darwin's 50251875Speter * concept of universal binaries, a single package 51251875Speter * (executable, lib, etc...) which contains both 32 52251875Speter * and 64 bit versions. The issue is that if APR is 53251875Speter * built universally, if something else is compiled 54251875Speter * against it, some bit sizes will depend on whether 55251875Speter * it is 32 or 64 bit. This is determined by the __LP64__ 56251875Speter * flag. Since we need to support both, we have to 57251875Speter * handle OS X unqiuely. 58251875Speter */ 59251875Speter#ifdef DARWIN_10 60251875Speter 61251875Speter#undef APR_OFF_T_STRFN 62251875Speter#undef APR_INT64_STRFN 63251875Speter#undef SIZEOF_LONG 64251875Speter#undef SIZEOF_SIZE_T 65251875Speter#undef SIZEOF_SSIZE_T 66251875Speter#undef SIZEOF_VOIDP 67251875Speter#undef SIZEOF_STRUCT_IOVEC 68251875Speter 69251875Speter#ifdef __LP64__ 70251875Speter #define APR_INT64_STRFN strtol 71251875Speter #define SIZEOF_LONG 8 72251875Speter #define SIZEOF_SIZE_T 8 73251875Speter #define SIZEOF_SSIZE_T 8 74251875Speter #define SIZEOF_VOIDP 8 75251875Speter #define SIZEOF_STRUCT_IOVEC 16 76251875Speter#else 77251875Speter #define APR_INT64_STRFN strtoll 78251875Speter #define SIZEOF_LONG 4 79251875Speter #define SIZEOF_SIZE_T 4 80251875Speter #define SIZEOF_SSIZE_T 4 81251875Speter #define SIZEOF_VOIDP 4 82251875Speter #define SIZEOF_STRUCT_IOVEC 8 83251875Speter#endif 84251875Speter 85251875Speter#undef APR_OFF_T_STRFN 86251875Speter#define APR_OFF_T_STRFN APR_INT64_STRFN 87251875Speter 88251875Speter 89251875Speter#undef SETPGRP_VOID 90251875Speter#ifdef __DARWIN_UNIX03 91251875Speter #define SETPGRP_VOID 1 92251875Speter#else 93251875Speter/* #undef SETPGRP_VOID */ 94251875Speter#endif 95251875Speter 96251875Speter#endif /* DARWIN_10 */ 97251875Speter 98251875Speter/* 99251875Speter * Include common private declarations. 100251875Speter */ 101251875Speter#include "../apr_private_common.h" 102251875Speter#endif /* APR_PRIVATE_H */ 103251875Speter]) 104251875Speter 105251875Speterdnl Save user-defined environment settings for later restoration 106251875Speterdnl 107251875SpeterAPR_SAVE_THE_ENVIRONMENT(CPPFLAGS) 108251875SpeterAPR_SAVE_THE_ENVIRONMENT(CFLAGS) 109251875SpeterAPR_SAVE_THE_ENVIRONMENT(LDFLAGS) 110251875SpeterAPR_SAVE_THE_ENVIRONMENT(LIBS) 111251875SpeterAPR_SAVE_THE_ENVIRONMENT(INCLUDES) 112251875Speter 113251875Speterdnl Generate ./config.nice for reproducing runs of configure 114251875Speterdnl 115251875SpeterAPR_CONFIG_NICE(config.nice) 116251875Speter 117251875SpeterAC_CANONICAL_SYSTEM 118251875Speterecho "Configuring APR library" 119251875Speterecho "Platform: $host" 120251875Speter 121251875Speterdnl Some initial steps for configuration. We setup the default directory 122251875Speterdnl and which files are to be configured. 123251875Speter 124251875Speterdnl Setup the directory macros now 125251875Speter 126251875Speter# Absolute source/build directory 127251875Speterapr_srcdir=`(cd $srcdir && pwd)` 128251875Speterapr_builddir=`pwd` 129251875SpeterAC_SUBST(apr_srcdir) 130251875SpeterAC_SUBST(apr_builddir) 131251875Speter 132251875Speterif test "$apr_builddir" != "$apr_srcdir"; then 133251875Speter USE_VPATH=1 134251875Speter APR_CONFIG_LOCATION=build 135251875Speterelse 136251875Speter APR_CONFIG_LOCATION=source 137251875Speterfi 138251875Speter 139251875SpeterAC_SUBST(APR_CONFIG_LOCATION) 140251875Speter 141251875Speter# Libtool might need this symbol -- it must point to the location of 142251875Speter# the generated libtool script (not necessarily the "top" build dir). 143251875Speter# 144251875Spetertop_builddir="$apr_builddir" 145251875SpeterAC_SUBST(top_builddir) 146251875Speter 147251875Speter# Directory containing apr build macros, helpers, and make rules 148251875Speter# NOTE: make rules (apr_rules.mk) will be in the builddir for vpath 149251875Speter# 150251875Speterapr_buildout=$apr_builddir/build 151251875Speterapr_builders=$apr_srcdir/build 152251875SpeterAC_SUBST(apr_builders) 153251875Speter 154251875SpeterMKDIR=$apr_builders/mkdir.sh 155251875Speter 156251875Speterdnl Initialize mkdir -p functionality. 157251875SpeterAPR_MKDIR_P_CHECK($apr_builders/mkdir.sh) 158251875Speter 159251875Speter# get our version information 160251875Speterget_version="$apr_builders/get-version.sh" 161251875Speterversion_hdr="$apr_srcdir/include/apr_version.h" 162251875SpeterAPR_MAJOR_VERSION="`$get_version major $version_hdr APR`" 163251875SpeterAPR_DOTTED_VERSION="`$get_version all $version_hdr APR`" 164251875Speter 165251875SpeterAC_SUBST(APR_DOTTED_VERSION) 166251875SpeterAC_SUBST(APR_MAJOR_VERSION) 167251875Speter 168251875Speterecho "APR Version: ${APR_DOTTED_VERSION}" 169251875Speter 170251875Speterdnl Enable the layout handling code, then reparse the prefix-style 171251875Speterdnl arguments due to autoconf being a PITA. 172251875SpeterAPR_ENABLE_LAYOUT(apr) 173251875SpeterAPR_PARSE_ARGUMENTS 174251875Speter 175251875Speterdnl Set optional CC hints here in case autoconf makes an inappropriate choice. 176251875Speterdnl This allows us to suggest what the compiler should be, but still 177251875Speterdnl allows the user to override CC externally. 178251875SpeterAPR_CC_HINTS 179251875Speter 180251875Speterdnl Do the various CC checks *before* preloading values. The preload code 181251875Speterdnl may need to use compiler characteristics to make decisions. This macro 182251875Speterdnl can only be used once within a configure script, so this prevents a 183251875Speterdnl preload section from invoking the macro to get compiler info. 184251875SpeterAC_PROG_CC 185251875Speter 186251875Speterdnl AC_PROG_SED is only avaliable in recent autoconf versions. 187251875Speterdnl Use AC_CHECK_PROG instead if AC_PROG_SED is not present. 188251875Speterifdef([AC_PROG_SED], 189251875Speter [AC_PROG_SED], 190251875Speter [AC_CHECK_PROG(SED, sed, sed)]) 191251875Speter 192251875Speterdnl Preload 193251875SpeterAPR_PRELOAD 194251875Speter 195251875Speterdnl These added to allow default directories to be used... 196251875SpeterDEFAULT_OSDIR="unix" 197251875Speterecho "(Default will be ${DEFAULT_OSDIR})" 198251875Speter 199251875Speterapr_modules="file_io network_io threadproc misc locks time mmap shmem user memory atomic poll support random" 200251875Speter 201251875Speterdnl Checks for programs. 202251875SpeterAC_PROG_MAKE_SET 203251875SpeterAC_PROG_CPP 204251875SpeterAC_PROG_AWK 205251875SpeterAC_PROG_LN_S 206251875SpeterAC_PROG_RANLIB 207251875SpeterAC_PROG_INSTALL 208251875SpeterAC_CHECK_PROG(RM, rm, rm) 209251875SpeterAC_CHECK_PROG(AS, as, as) 210251875SpeterAC_CHECK_PROG(ASCPP, cpp, cpp) 211251875SpeterAC_CHECK_TOOL(AR, ar, ar) 212251875Speter 213251875Speterdnl Various OS checks that apparently set required flags 214251875Speterifdef([AC_USE_SYSTEM_EXTENSIONS], [ 215251875SpeterAC_USE_SYSTEM_EXTENSIONS 216251875Speter], [ 217251875SpeterAC_AIX 218251875SpeterAC_MINIX 219251875Speter]) 220251875Speter 221251875SpeterAC_ISC_POSIX 222251875SpeterAPR_EBCDIC 223251875Speter 224251875Speterdnl this is our library name 225251875SpeterAPR_LIBNAME="apr${libsuffix}" 226251875SpeterAC_SUBST(APR_LIBNAME) 227251875Speter 228251875Speterdnl prep libtool 229251875Speterdnl 230251875Speterecho "performing libtool configuration..." 231251875Speter 232251875SpeterAC_ARG_ENABLE(experimental-libtool,[ --enable-experimental-libtool Use experimental custom libtool], 233251875Speter [experimental_libtool=$enableval],[experimental_libtool=no]) 234251875Speter 235251875Speterdnl Workarounds for busted Libtool 2.x when we don't call AC_PROG_LIBTOOL 236251875Speterif test "x$Xsed" = "x"; then 237251875Speter Xsed="$SED -e 1s/^X//" 238251875Speterfi 239251875Speter 240251875Spetercase $host in 241251875Speter*-os2*) 242251875Speter # Use a custom-made libtool replacement 243251875Speter echo "using aplibtool" 244251875Speter LIBTOOL="$srcdir/build/aplibtool" 245251875Speter gcc $CFLAGS $CPPFLAGS -o $LIBTOOL.exe $LIBTOOL.c 246251875Speter ;; 247251875Speter*) 248251875Speter if test "x$LTFLAGS" = "x"; then 249251875Speter LTFLAGS='--silent' 250251875Speter fi 251251875Speter if test "$experimental_libtool" = "yes"; then 252251875Speter # Use a custom-made libtool replacement 253251875Speter echo "using jlibtool" 254251875Speter LIBTOOL="$apr_builddir/libtool" 255251875Speter LIBTOOL_SRC="$apr_srcdir/build/jlibtool.c" 256251875Speter $CC $CFLAGS $CPPFLAGS -o $LIBTOOL $LIBTOOL_SRC 257251875Speter eval `$apr_builddir/libtool --config | grep "^shlibpath_var=[[A-Z_]]*$"` 258251875Speter if test "x$shlibpath_var" = "x"; then 259251875Speter shlibpath_var=REPLACE_WITH_YOUR_SHLIBPATH_VAR 260251875Speter fi 261251875Speter else 262251875Speter dnl libtoolize requires that the following not be indented 263251875Speter dnl should become LT_INIT(win32-dll) 264251875SpeterAC_LIBTOOL_WIN32_DLL 265251875SpeterAC_PROG_LIBTOOL 266251875Speter # get libtool's setting of shlibpath_var 267251875Speter eval `grep "^shlibpath_var=[[A-Z_]]*$" $apr_builddir/libtool` 268251875Speter if test "x$shlibpath_var" = "x"; then 269251875Speter shlibpath_var=REPLACE_WITH_YOUR_SHLIBPATH_VAR 270251875Speter fi 271251875Speter fi 272251875Speter ;; 273251875Speteresac 274251875Speter 275251875SpeterAC_ARG_WITH(installbuilddir, [ --with-installbuilddir=DIR location to store APR build files (defaults to '${datadir}/build')], 276251875Speter [ installbuilddir=$withval ], [ installbuilddir="${datadir}/build-${APR_MAJOR_VERSION}" ] ) 277251875SpeterAC_SUBST(installbuilddir) 278251875Speter 279251875SpeterAC_ARG_WITH(libtool, [ --without-libtool avoid using libtool to link the library], 280251875Speter [ use_libtool=$withval ], [ use_libtool="yes" ] ) 281251875Speter 282251875Speterif test "x$use_libtool" = "xyes"; then 283251875Speter lt_compile='$(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE) -o $@ -c $< && touch $@' 284251875Speter LT_VERSION="-version-info `$get_version libtool $version_hdr APR`" 285269847Speter link="\$(LIBTOOL) \$(LTFLAGS) --mode=link \$(COMPILE) \$(LT_LDFLAGS) \$(LT_VERSION) \$(ALL_LDFLAGS) -o \$@" 286251875Speter so_ext='lo' 287251875Speter lib_target='-rpath $(libdir) $(OBJECTS)' 288251875Speter export_lib_target='-rpath \$(libdir) \$(OBJECTS)' 289251875Speterelse 290251875Speter lt_compile='$(COMPILE) -o $@ -c $<' 291251875Speter link='$(AR) cr $(TARGET_LIB) $(OBJECTS); $(RANLIB) $(TARGET_LIB)' 292251875Speter so_ext='o' 293251875Speter lib_target='' 294251875Speter export_lib_target='' 295251875Speterfi 296251875Speter 297251875Spetercase $host in 298251875Speter *-solaris2*) 299251875Speter apr_platform_runtime_link_flag="-R" 300251875Speter ;; 301269847Speter *-mingw* | *-cygwin*) 302269847Speter LT_LDFLAGS="$LT_LDFLAGS -no-undefined" 303269847Speter ;; 304251875Speter *) 305251875Speter ;; 306251875Speteresac 307251875Speter 308251875SpeterAC_SUBST(lt_compile) 309251875SpeterAC_SUBST(link) 310251875SpeterAC_SUBST(so_ext) 311251875SpeterAC_SUBST(lib_target) 312251875SpeterAC_SUBST(export_lib_target) 313251875SpeterAC_SUBST(shlibpath_var) 314251875SpeterAC_SUBST(LTFLAGS) 315251875SpeterAC_SUBST(LT_LDFLAGS) 316251875SpeterAC_SUBST(LT_VERSION) 317251875Speter 318251875Speterdnl ----------------------------- Checks for compiler flags 319251875Speternl=' 320251875Speter' 321251875Speterecho "${nl}Check for compiler flags..." 322251875Speter 323251875Speterdnl AC_PROG_CC sets -g in CFLAGS (and -O2 for gcc) by default. 324251875Speterdnl On OS/390 this causes the compiler to insert extra debugger 325251875Speterdnl hook instructions. That's fine for debug/maintainer builds, not fine 326251875Speterdnl otherwise. 327251875Speter 328251875Spetercase $host in 329251875Speter *os390) 330251875Speter if test "$ac_test_CFLAGS" != set; then 331251875Speter APR_REMOVEFROM(CFLAGS,-g) 332251875Speter fi 333251875Speter ;; 334251875Speteresac 335251875Speter 336251875SpeterAC_ARG_ENABLE(debug,[ --enable-debug Turn on debugging and compile time warnings], 337251875Speter [APR_ADDTO(CFLAGS,-g) 338251875Speter if test "$GCC" = "yes"; then 339251875Speter APR_ADDTO(CFLAGS,-Wall) 340251875Speter elif test "$AIX_XLC" = "yes"; then 341251875Speter APR_ADDTO(CFLAGS,-qfullpath) 342251875Speter fi 343251875Speter])dnl 344251875Speter 345251875SpeterAC_ARG_ENABLE(maintainer-mode,[ --enable-maintainer-mode Turn on debugging and compile time warnings], 346251875Speter [APR_ADDTO(CFLAGS,-g) 347251875Speter if test "$GCC" = "yes"; then 348251875Speter APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations]) 349251875Speter elif test "$AIX_XLC" = "yes"; then 350251875Speter APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro) 351251875Speter fi 352251875Speter])dnl 353251875Speter 354251875SpeterAC_ARG_ENABLE(profile,[ --enable-profile Turn on profiling for the build (GCC)], 355251875Speter if test "$GCC" = "yes"; then 356251875Speter APR_ADDTO(CFLAGS, -pg) 357251875Speter APR_REMOVEFROM(CFLAGS, -g) 358251875Speter if test "$host" = "i586-pc-beos"; then 359251875Speter APR_REMOVEFROM(CFLAGS, -O2) 360251875Speter APR_ADDTO(CFLAGS, -O1) 361251875Speter APR_ADDTO(LDFLAGS, -p) 362251875Speter fi 363251875Speter fi 364251875Speter)dnl 365251875Speter 366251875SpeterAC_ARG_ENABLE(pool-debug, 367251875Speter [ --enable-pool-debug[[=yes|no|verbose|verbose-alloc|lifetime|owner|all]] Turn on pools debugging], 368251875Speter [ if test -z "$enableval"; then 369251875Speter APR_ADDTO(CPPFLAGS, -DAPR_POOL_DEBUG=1) 370251875Speter elif test ! "$enableval" = "no"; then 371251875Speter apr_pool_debug=1 372251875Speter 373251875Speter for i in $enableval 374251875Speter do 375251875Speter flag=0 376251875Speter 377251875Speter case $i in 378251875Speter yes) 379251875Speter flag=1 380251875Speter ;; 381251875Speter verbose) 382251875Speter flag=2 383251875Speter ;; 384251875Speter lifetime) 385251875Speter flag=4 386251875Speter ;; 387251875Speter owner) 388251875Speter flag=8 389251875Speter ;; 390251875Speter verbose-alloc) 391251875Speter flag=16 392251875Speter ;; 393251875Speter all) 394251875Speter apr_pool_debug=31 395251875Speter ;; 396251875Speter *) 397251875Speter ;; 398251875Speter esac 399251875Speter 400251875Speter if test $flag -gt 0; then 401251875Speter apr_pool_debug=`expr '(' $apr_pool_debug - $apr_pool_debug % \ 402251875Speter '(' $flag '*' 2 ')' ')' + $flag + $apr_pool_debug % $flag` 403251875Speter fi 404251875Speter done 405251875Speter 406251875Speter APR_ADDTO(CPPFLAGS, -DAPR_POOL_DEBUG=$apr_pool_debug) 407251875Speter fi 408251875Speter ]) 409251875Speter 410251875Speterif test "$host" = "i586-pc-beos"; then 411251875Speter AC_ARG_ENABLE(malloc-debug,[ --enable-malloc-debug Switch on malloc_debug for BeOS], 412251875Speter APR_REMOVEFROM(CFLAGS, -O2) 413251875Speter APR_ADDTO(CPPFLAGS, -fcheck-memory-usage -D_KERNEL_MODE) 414251875Speter ) dnl 415251875Speterfi 416251875Speter 417251875Speter# this is the place to put specific options for platform/compiler 418251875Speter# combinations 419251875Spetercase "$host:$CC" in 420251875Speter *-hp-hpux*:cc ) 421251875Speter APR_ADDTO(CFLAGS,[-Ae +Z]) 422251875Speter case $host in 423251875Speter ia64-* ) 424251875Speter ;; 425251875Speter * ) 426251875Speter if echo "$CFLAGS " | grep '+DA' >/dev/null; then : 427251875Speter else 428251875Speter APR_ADDTO(CFLAGS,[+DAportable]) 429251875Speter fi 430251875Speter ;; 431251875Speter esac 432251875Speter ;; 433251875Speter powerpc-*-beos:mwcc* ) 434251875Speter APR_SETVAR(CPP,[mwcc -E]) 435251875Speter APR_SETVAR(CC,mwcc) 436251875Speter APR_SETVAR(AR,ar) 437251875Speter ;; 438269847Speter dnl If building static APR, both the APR build and the app build 439269847Speter dnl need -DAPR_DECLARE_STATIC to generate the right linkage from 440269847Speter dnl APR_DECLARE et al. 441269847Speter dnl If building dynamic APR, the APR build needs APR_DECLARE_EXPORT 442269847Speter dnl and the app build should have neither define. 443269847Speter *-mingw* | *-cygwin*) 444269847Speter if test "$enable_shared" = "yes"; then 445269847Speter APR_ADDTO(INTERNAL_CPPFLAGS, -DAPR_DECLARE_EXPORT) 446269847Speter else 447269847Speter APR_ADDTO(CPPFLAGS, -DAPR_DECLARE_STATIC) 448269847Speter fi 449269847Speter ;; 450251875Speteresac 451251875Speter 452251875SpeterAC_CACHE_CHECK([whether the compiler provides atomic builtins], [ap_cv_atomic_builtins], 453251875Speter[AC_TRY_RUN([ 454251875Speterint main() 455251875Speter{ 456251875Speter unsigned long val = 1010, tmp, *mem = &val; 457251875Speter 458251875Speter if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020) 459251875Speter return 1; 460251875Speter 461251875Speter tmp = val; 462251875Speter 463251875Speter if (__sync_fetch_and_sub(mem, 1010) != tmp || val != 1010) 464251875Speter return 1; 465251875Speter 466251875Speter if (__sync_sub_and_fetch(&val, 1010) != 0 || val != 0) 467251875Speter return 1; 468251875Speter 469251875Speter tmp = 3030; 470251875Speter 471251875Speter if (__sync_val_compare_and_swap(mem, 0, tmp) != 0 || val != tmp) 472251875Speter return 1; 473251875Speter 474251875Speter if (__sync_lock_test_and_set(&val, 4040) != 3030) 475251875Speter return 1; 476251875Speter 477251875Speter mem = &tmp; 478251875Speter 479251875Speter if (__sync_val_compare_and_swap(&mem, &tmp, &val) != &tmp) 480251875Speter return 1; 481251875Speter 482251875Speter __sync_synchronize(); 483251875Speter 484251875Speter if (mem != &val) 485251875Speter return 1; 486251875Speter 487251875Speter return 0; 488251875Speter}], [ap_cv_atomic_builtins=yes], [ap_cv_atomic_builtins=no], [ap_cv_atomic_builtins=no])]) 489251875Speter 490251875Speterif test "$ap_cv_atomic_builtins" = "yes"; then 491251875Speter AC_DEFINE(HAVE_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins]) 492251875Speterfi 493251875Speter 494251875Spetercase $host in 495251875Speter powerpc-405-*) 496251875Speter # The IBM ppc405cr processor has a bugged stwcx instruction. 497251875Speter AC_DEFINE(PPC405_ERRATA, 1, [Define on PowerPC 405 where errata 77 applies]) 498251875Speter ;; 499251875Speter *) 500251875Speter ;; 501251875Speteresac 502251875Speter 503251875Speterdnl Check the depend program we can use 504251875SpeterAPR_CHECK_DEPEND 505251875Speter 506251875Speterproc_mutex_is_global=0 507251875Speter 508251875Speterconfig_subdirs="none" 509251875SpeterINSTALL_SUBDIRS="none" 510251875SpeterOBJECTS_PLATFORM='$(OBJECTS_unix)' 511251875Speter 512251875Spetercase $host in 513251875Speter i386-ibm-aix* | *-ibm-aix[[1-2]].* | *-ibm-aix3.* | *-ibm-aix4.1 | *-ibm-aix4.1.* | *-ibm-aix4.2 | *-ibm-aix4.2.*) 514251875Speter OSDIR="aix" 515251875Speter APR_ADDTO(LDFLAGS,-lld) 516251875Speter eolstr="\\n" 517251875Speter OBJECTS_PLATFORM='$(OBJECTS_aix)' 518251875Speter ;; 519251875Speter *-os2*) 520251875Speter APR_ADDTO(CPPFLAGS,-DOS2) 521251875Speter APR_ADDTO(CFLAGS,-Zmt) 522251875Speter AC_CHECK_LIB(bsd, random) 523251875Speter OSDIR="os2" 524251875Speter enable_threads="system_threads" 525251875Speter eolstr="\\r\\n" 526251875Speter file_as_socket="0" 527251875Speter proc_mutex_is_global=1 528251875Speter OBJECTS_PLATFORM='$(OBJECTS_os2)' 529251875Speter ;; 530251875Speter *beos*) 531251875Speter OSDIR="beos" 532251875Speter APR_ADDTO(CPPFLAGS,-DBEOS) 533251875Speter enable_threads="system_threads" 534251875Speter native_mmap_emul="1" 535251875Speter APR_CHECK_DEFINE(BONE_VERSION, sys/socket.h) 536251875Speter eolstr="\\n" 537251875Speter osver=`uname -r` 538251875Speter proc_mutex_is_global=1 539251875Speter OBJECTS_PLATFORM='$(OBJECTS_beos)' 540251875Speter case $osver in 541251875Speter 5.0.4) 542251875Speter file_as_socket="1" 543251875Speter ;; 544251875Speter *) 545251875Speter file_as_socket="0" 546251875Speter ;; 547251875Speter esac 548251875Speter ;; 549251875Speter *os390) 550251875Speter OSDIR="os390" 551251875Speter OBJECTS_PLATFORM='$(OBJECTS_os390)' 552251875Speter eolstr="\\n" 553251875Speter ;; 554251875Speter *os400) 555251875Speter OSDIR="as400" 556251875Speter eolstr="\\n" 557251875Speter ;; 558251875Speter *mingw*) 559251875Speter OSDIR="win32" 560251875Speter enable_threads="system_threads" 561251875Speter eolstr="\\r\\n" 562251875Speter file_as_socket=0 563251875Speter proc_mutex_is_global=1 564251875Speter OBJECTS_PLATFORM='$(OBJECTS_win32)' 565251875Speter ;; 566251875Speter *cygwin*) 567251875Speter OSDIR="unix" 568251875Speter enable_threads="no" 569251875Speter eolstr="\\n" 570251875Speter ;; 571251875Speter *hpux10* ) 572251875Speter enable_threads="no" 573251875Speter OSDIR="unix" 574251875Speter eolstr="\\n" 575251875Speter ;; 576251875Speter *) 577251875Speter OSDIR="unix" 578251875Speter eolstr="\\n" 579251875Speter ;; 580251875Speteresac 581251875Speter 582251875SpeterAC_SUBST(OBJECTS_PLATFORM) 583251875Speter 584251875Speter# Check whether LFS has explicitly been disabled 585251875SpeterAC_ARG_ENABLE(lfs,[ --disable-lfs Disable large file support on 32-bit platforms], 586251875Speter[apr_lfs_choice=$enableval], [apr_lfs_choice=yes]) 587251875Speter 588251875Speterif test "$apr_lfs_choice" = "yes"; then 589251875Speter # Check whether the transitional LFS API is sufficient 590251875Speter AC_CACHE_CHECK([whether to enable -D_LARGEFILE64_SOURCE], [apr_cv_use_lfs64], [ 591251875Speter apr_save_CPPFLAGS=$CPPFLAGS 592251875Speter CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE" 593251875Speter AC_TRY_RUN([ 594251875Speter#include <sys/types.h> 595251875Speter#include <sys/stat.h> 596251875Speter#include <fcntl.h> 597251875Speter#include <stdlib.h> 598251875Speter#include <stdio.h> 599251875Speter#include <unistd.h> 600251875Speter 601251875Spetervoid main(void) 602251875Speter{ 603251875Speter int fd, ret = 0; 604251875Speter struct stat64 st; 605251875Speter off64_t off = 4242; 606251875Speter 607251875Speter if (sizeof(off64_t) != 8 || sizeof(off_t) != 4) 608251875Speter exit(1); 609251875Speter if ((fd = open("conftest.lfs", O_LARGEFILE|O_CREAT|O_WRONLY, 0644)) < 0) 610251875Speter exit(2); 611251875Speter if (ftruncate64(fd, off) != 0) 612251875Speter ret = 3; 613251875Speter else if (fstat64(fd, &st) != 0 || st.st_size != off) 614251875Speter ret = 4; 615251875Speter else if (lseek64(fd, off, SEEK_SET) != off) 616251875Speter ret = 5; 617251875Speter else if (close(fd) != 0) 618251875Speter ret = 6; 619251875Speter else if (lstat64("conftest.lfs", &st) != 0 || st.st_size != off) 620251875Speter ret = 7; 621251875Speter else if (stat64("conftest.lfs", &st) != 0 || st.st_size != off) 622251875Speter ret = 8; 623251875Speter unlink("conftest.lfs"); 624251875Speter 625251875Speter exit(ret); 626251875Speter}], [apr_cv_use_lfs64=yes], [apr_cv_use_lfs64=no], [apr_cv_use_lfs64=no]) 627251875Speter CPPFLAGS=$apr_save_CPPFLAGS]) 628251875Speter if test "$apr_cv_use_lfs64" = "yes"; then 629251875Speter APR_ADDTO(CPPFLAGS, [-D_LARGEFILE64_SOURCE]) 630251875Speter fi 631251875Speterfi 632251875Speter 633251875SpeterAC_ARG_ENABLE(nonportable-atomics, 634251875Speter[ --enable-nonportable-atomics Use optimized atomic code which may produce nonportable binaries], 635251875Speter[if test $enableval = yes; then 636251875Speter force_generic_atomics=no 637251875Speter else 638251875Speter force_generic_atomics=yes 639251875Speter fi 640251875Speter], 641251875Speter[case $host_cpu in 642251875Speter i[[456]]86) force_generic_atomics=yes ;; 643289166Speter *) force_generic_atomics=no 644289166Speter case $host in 645289166Speter *solaris2.10*) 646289166Speter AC_TRY_COMPILE( 647289166Speter [#include <atomic.h>], 648289166Speter [void *ptr = NULL; atomic_cas_ptr(&ptr, NULL, NULL);],, 649289166Speter [force_generic_atomics=yes] 650289166Speter ) 651289166Speter if test $force_generic_atomics = yes; then 652289166Speter AC_MSG_NOTICE([nonportable atomic support disabled, system needs Patch-ID 118884 or 118885]) 653289166Speter fi 654289166Speter ;; 655289166Speter esac 656289166Speter ;; 657251875Speteresac 658251875Speter]) 659251875Speter 660251875Speterif test $force_generic_atomics = yes; then 661251875Speter AC_DEFINE([USE_ATOMICS_GENERIC], 1, 662251875Speter [Define if use of generic atomics is requested]) 663251875Speterfi 664251875Speter 665251875SpeterAC_SUBST(proc_mutex_is_global) 666251875SpeterAC_SUBST(eolstr) 667251875SpeterAC_SUBST(INSTALL_SUBDIRS) 668251875Speter 669251875Speter# For some platforms we need a version string which allows easy numeric 670251875Speter# comparisons. 671251875Spetercase $host in 672251875Speter *freebsd*) 673251875Speter if test -x /sbin/sysctl; then 674251875Speter os_version=`/sbin/sysctl -n kern.osreldate` 675251875Speter else 676251875Speter os_version=000000 677251875Speter fi 678251875Speter ;; 679251875Speter *linux*) 680269847Speter os_major=[`uname -r | sed -e 's/\([1-9][0-9]*\)\..*/\1/'`] 681269847Speter os_minor=[`uname -r | sed -e 's/[1-9][0-9]*\.\([0-9]\+\)\..*/\1/'`] 682269847Speter if test $os_major -lt 2 -o \( $os_major -eq 2 -a $os_minor -lt 4 \); then 683269847Speter AC_MSG_WARN([Configured for pre-2.4 Linux $os_major.$os_minor]) 684269847Speter os_pre24linux=1 685269847Speter else 686269847Speter os_pre24linux=0 687269847Speter AC_MSG_NOTICE([Configured for Linux $os_major.$os_minor]) 688269847Speter fi 689251875Speter ;; 690251875Speter *os390) 691251875Speter os_version=`uname -r | sed -e 's/\.//g'` 692251875Speter ;; 693251875Speter *) 694251875Speter os_version=OS_VERSION_IS_NOT_SET 695251875Speter ;; 696251875Speteresac 697251875Speter 698251875Speterecho "${nl}Checking for libraries..." 699251875Speter 700251875Speterdnl ----------------------------- Checks for Any required Libraries 701251875Speterdnl Note: Autoconf will always append LIBS with an extra " " in AC_CHECK_LIB. 702251875Speterdnl It should check for LIBS being empty and set LIBS equal to the new value 703251875Speterdnl without the extra " " in that case, but they didn't do that. So, we 704251875Speterdnl end up LIBS="-lm -lcrypt -lnsl -ldl" which is an annoyance. 705251875Spetercase $host in 706251875Speter *mingw*) 707251875Speter APR_ADDTO(LIBS,[-lshell32 -ladvapi32 -lws2_32 -lrpcrt4 -lmswsock]) 708251875Speter ac_cv_func_CreateFileMapping=yes 709251875Speter ;; 710251875Speter *) 711251875Speter AC_SEARCH_LIBS(gethostbyname, nsl) 712251875Speter AC_SEARCH_LIBS(gethostname, nsl) 713251875Speter AC_SEARCH_LIBS(socket, socket) 714251875Speter AC_SEARCH_LIBS(crypt, crypt ufc) 715251875Speter AC_CHECK_LIB(truerand, main) 716251875Speter AC_SEARCH_LIBS(modf, m) 717251875Speter ;; 718251875Speteresac 719251875Speter 720251875Speterdnl ----------------------------- Checking for Threads 721251875Speterecho "${nl}Checking for Threads..." 722251875Speter 723251875Speterif test -z "$enable_threads"; then 724251875Speter AC_ARG_ENABLE(threads, 725251875Speter [ --enable-threads Enable threading support in APR.], 726251875Speter [ enable_threads=$enableval] , 727251875Speter [ APR_CHECK_PTHREADS_H([ enable_threads="pthread" ] , 728251875Speter [ enable_threads="no" ] ) ] ) 729251875Speterfi 730251875Speter 731251875Speterif test "$enable_threads" = "no"; then 732251875Speter threads="0" 733251875Speter pthreadh="0" 734251875Speter pthreadser="0" 735251875Speterelse 736251875Speter if test "$enable_threads" = "pthread"; then 737251875Speter# We have specified pthreads for our threading library, just make sure 738251875Speter# that we have everything we need 739251875Speter APR_PTHREADS_CHECK_SAVE 740251875Speter APR_PTHREADS_CHECK 741251875Speter APR_CHECK_PTHREADS_H([ 742251875Speter threads="1" 743251875Speter pthreadh="1" 744251875Speter pthreadser="1" ], [ 745251875Speter threads="0" 746251875Speter pthreadh="0" 747251875Speter pthreadser="0" 748251875Speter APR_PTHREADS_CHECK_RESTORE ] ) 749251875Speter elif test "$enable_threads" = "system_threads"; then 750251875Speter threads="1" 751251875Speter pthreadh="0" 752251875Speter pthreadser="0" 753251875Speter else 754251875Speter# We basically specified that we wanted threads, but not how to implement 755251875Speter# them. In this case, just look for pthreads. In the future, we can check 756251875Speter# for other threading libraries as well. 757251875Speter APR_PTHREADS_CHECK_SAVE 758251875Speter APR_PTHREADS_CHECK 759251875Speter APR_CHECK_PTHREADS_H([ 760251875Speter threads="1" 761251875Speter pthreadh="1" 762251875Speter pthreadser="1" ], [ 763251875Speter threads="0" 764251875Speter pthreadser="0" 765251875Speter pthreadh="0" 766251875Speter APR_PTHREADS_CHECK_RESTORE ] ) 767251875Speter fi 768251875Speter if test "$pthreadh" = "1"; then 769251875Speter APR_CHECK_PTHREAD_GETSPECIFIC_TWO_ARGS 770251875Speter APR_CHECK_PTHREAD_ATTR_GETDETACHSTATE_ONE_ARG 771251875Speter APR_CHECK_PTHREAD_RECURSIVE_MUTEX 772251875Speter AC_CHECK_FUNCS([pthread_key_delete pthread_rwlock_init \ 773251875Speter pthread_attr_setguardsize pthread_yield]) 774251875Speter 775251875Speter if test "$ac_cv_func_pthread_rwlock_init" = "yes"; then 776251875Speter dnl ----------------------------- Checking for pthread_rwlock_t 777251875Speter AC_CACHE_CHECK([for pthread_rwlock_t], [apr_cv_type_rwlock_t], 778251875Speter AC_TRY_COMPILE([#include <sys/types.h> 779251875Speter#include <pthread.h>], [pthread_rwlock_t *rwlock;], 780251875Speter [apr_cv_type_rwlock_t=yes], [apr_cv_type_rwlock_t=no], 781251875Speter [apr_cv_type_rwlock_t=no])) 782251875Speter if test "$apr_cv_type_rwlock_t" = "yes"; then 783251875Speter AC_DEFINE(HAVE_PTHREAD_RWLOCKS, 1, [Define if pthread rwlocks are available]) 784251875Speter fi 785251875Speter fi 786251875Speter 787251875Speter if test "$ac_cv_func_pthread_yield" = "no"; then 788251875Speter dnl ----------------------------- Checking for sched_yield 789251875Speter AC_CHECK_HEADERS([sched.h]) 790251875Speter AC_CHECK_FUNCS([sched_yield]) 791251875Speter fi 792251875Speter fi 793251875Speterfi 794251875Speter 795251875Speterac_cv_define_READDIR_IS_THREAD_SAFE=no 796251875Speterac_cv_define_GETHOSTBYNAME_IS_THREAD_SAFE=no 797251875Speterac_cv_define_GETHOSTBYADDR_IS_THREAD_SAFE=no 798251875Speterac_cv_define_GETSERVBYNAME_IS_THREAD_SAFE=no 799251875Speterif test "$threads" = "1"; then 800251875Speter echo "APR will use threads" 801251875Speter AC_CHECK_LIB(c_r, readdir, 802251875Speter AC_DEFINE(READDIR_IS_THREAD_SAFE, 1, 803251875Speter [Define if readdir is thread safe])) 804251875Speter if test "x$apr_gethostbyname_is_thread_safe" = "x"; then 805251875Speter AC_CHECK_LIB(c_r, gethostbyname, apr_gethostbyname_is_thread_safe=yes) 806251875Speter fi 807251875Speter if test "$apr_gethostbyname_is_thread_safe" = "yes"; then 808251875Speter AC_DEFINE(GETHOSTBYNAME_IS_THREAD_SAFE, 1, 809251875Speter [Define if gethostbyname is thread safe]) 810251875Speter fi 811251875Speter if test "x$apr_gethostbyaddr_is_thread_safe" = "x"; then 812251875Speter AC_CHECK_LIB(c_r, gethostbyaddr, apr_gethostbyaddr_is_thread_safe=yes) 813251875Speter fi 814251875Speter if test "$apr_gethostbyaddr_is_thread_safe" = "yes"; then 815251875Speter AC_DEFINE(GETHOSTBYADDR_IS_THREAD_SAFE, 1, 816251875Speter [Define if gethostbyaddr is thread safe]) 817251875Speter fi 818251875Speter if test "x$apr_getservbyname_is_thread_safe" = "x"; then 819251875Speter AC_CHECK_LIB(c_r, getservbyname, apr_getservbyname_is_thread_safe=yes) 820251875Speter fi 821251875Speter if test "$apr_getservbyname_is_thread_safe" = "yes"; then 822251875Speter AC_DEFINE(GETSERVBYNAME_IS_THREAD_SAFE, 1, 823251875Speter [Define if getservbyname is thread safe]) 824251875Speter fi 825251875Speter AC_CHECK_FUNCS(gethostbyname_r gethostbyaddr_r getservbyname_r) 826251875Speterelse 827251875Speter echo "APR will be non-threaded" 828251875Speterfi 829251875Speter 830251875Speterdnl Electric Fence malloc checker. 831251875Speterdnl --with-efence specifies the path to Electric Fence. 832251875Speterdnl This test should remain after the threads checks since libefence 833251875Speterdnl may depend on libpthread. 834251875SpeterAC_ARG_WITH(efence, 835251875Speter [ --with-efence[[=DIR]] path to Electric Fence installation], 836251875Speter [ apr_efence_dir="$withval" 837251875Speter if test "$apr_efence_dir" != "yes"; then 838251875Speter APR_ADDTO(LDFLAGS,[-L$apr_efence_dir/lib]) 839251875Speter if test "x$apr_platform_runtime_link_flag" != "x"; then 840251875Speter APR_ADDTO(LDFLAGS, 841251875Speter [$apr_platform_runtime_link_flag$apr_efence_dir/lib]) 842251875Speter fi 843251875Speter fi 844251875Speter AC_CHECK_LIB(efence, malloc, 845251875Speter [ APR_ADDTO(LIBS,-lefence) ], 846251875Speter [ AC_MSG_ERROR(Electric Fence requested but not detected) ]) 847251875Speter ]) 848251875Speter 849251875SpeterAC_CHECK_FUNCS(sigsuspend, [ have_sigsuspend="1" ], [ have_sigsuspend="0" ]) 850251875SpeterAC_CHECK_FUNCS(sigwait, [ have_sigwait="1" ], [ have_sigwait="0" ]) 851251875Speterdnl AC_CHECK_FUNCS doesn't work for this on Tru64 since the function 852251875Speterdnl is renamed in signal.h. Todo: Autodetect 853251875Spetercase $host in 854251875Speter *alpha*-dec-osf* ) 855251875Speter have_sigwait="1" 856251875Speter ;; 857251875Speteresac 858251875Speter 859251875SpeterAC_SUBST(threads) 860251875SpeterAC_SUBST(have_sigsuspend) 861251875SpeterAC_SUBST(have_sigwait) 862251875Speter 863251875SpeterAC_CHECK_FUNCS(poll kqueue port_create) 864251875Speter 865251875Speter# Check for the Linux epoll interface; epoll* may be available in libc 866251875Speter# but return ENOSYS on a pre-2.6 kernel, so do a run-time check. 867251875SpeterAC_CACHE_CHECK([for epoll support], [apr_cv_epoll], 868251875Speter[AC_TRY_RUN([ 869251875Speter#include <sys/epoll.h> 870251875Speter#include <unistd.h> 871251875Speter 872251875Speterint main() 873251875Speter{ 874251875Speter return epoll_create(5) == -1; 875251875Speter}], [apr_cv_epoll=yes], [apr_cv_epoll=no], [apr_cv_epoll=no])]) 876251875Speter 877251875Speterif test "$apr_cv_epoll" = "yes"; then 878251875Speter AC_DEFINE([HAVE_EPOLL], 1, [Define if the epoll interface is supported]) 879251875Speterfi 880251875Speter 881251875Speterdnl ----------------------------- Checking for extended file descriptor handling 882251875Speter# test for epoll_create1 883251875SpeterAC_CACHE_CHECK([for epoll_create1 support], [apr_cv_epoll_create1], 884251875Speter[AC_TRY_RUN([ 885251875Speter#include <sys/epoll.h> 886251875Speter#include <unistd.h> 887251875Speter 888251875Speterint main() 889251875Speter{ 890251875Speter return epoll_create1(0) == -1; 891251875Speter}], [apr_cv_epoll_create1=yes], [apr_cv_epoll_create1=no], [apr_cv_epoll_create1=no])]) 892251875Speter 893251875Speterif test "$apr_cv_epoll_create1" = "yes"; then 894251875Speter AC_DEFINE([HAVE_EPOLL_CREATE1], 1, [Define if epoll_create1 function is supported]) 895251875Speterfi 896251875Speter 897251875Speter# test for dup3 898251875SpeterAC_CACHE_CHECK([for dup3 support], [apr_cv_dup3], 899251875Speter[AC_TRY_RUN([ 900251875Speter#include <unistd.h> 901251875Speter 902251875Speterint main() 903251875Speter{ 904251875Speter return dup3(STDOUT_FILENO, STDERR_FILENO, 0) == -1; 905251875Speter}], [apr_cv_dup3=yes], [apr_cv_dup3=no], [apr_cv_dup3=no])]) 906251875Speter 907251875Speterif test "$apr_cv_dup3" = "yes"; then 908251875Speter AC_DEFINE([HAVE_DUP3], 1, [Define if dup3 function is supported]) 909251875Speterfi 910251875Speter 911269847Speter# Test for accept4(). Create a non-blocking socket, bind it to 912269847Speter# an unspecified port & address (kernel picks), and attempt to 913269847Speter# call accept4() on it. If the syscall is wired up (i.e. the 914269847Speter# kernel is new enough), it should return EAGAIN. 915251875SpeterAC_CACHE_CHECK([for accept4 support], [apr_cv_accept4], 916251875Speter[AC_TRY_RUN([ 917251875Speter#include <sys/types.h> 918251875Speter#include <sys/socket.h> 919251875Speter#include <sys/wait.h> 920269847Speter#include <netinet/in.h> 921269847Speter#include <netinet/tcp.h> 922251875Speter#include <errno.h> 923269847Speter#include <string.h> 924269847Speter#include <unistd.h> 925269847Speter#include <fcntl.h> 926251875Speter 927269847Speterint main(int argc, char **argv) 928251875Speter{ 929269847Speter int fd, flags; 930269847Speter struct sockaddr_in sin; 931251875Speter 932269847Speter if ((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) 933251875Speter return 1; 934269847Speter flags = fcntl(fd, F_GETFL); 935269847Speter if (flags == -1 || fcntl(fd, F_SETFL, flags|O_NONBLOCK) == -1) 936269847Speter return 5; 937251875Speter 938269847Speter memset(&sin, 0, sizeof sin); 939269847Speter sin.sin_family = AF_INET; 940269847Speter 941269847Speter if (bind(fd, (struct sockaddr *) &sin, sizeof sin) == -1) 942269847Speter return 2; 943269847Speter 944269847Speter if (listen(fd, 5) == -1) 945269847Speter return 3; 946251875Speter 947269847Speter if (accept4(fd, NULL, 0, SOCK_NONBLOCK) == 0 948269847Speter || errno == EAGAIN || errno == EWOULDBLOCK) 949269847Speter return 0; 950251875Speter 951269847Speter return 4; 952251875Speter}], [apr_cv_accept4=yes], [apr_cv_accept4=no], [apr_cv_accept4=no])]) 953251875Speter 954251875Speterif test "$apr_cv_accept4" = "yes"; then 955251875Speter AC_DEFINE([HAVE_ACCEPT4], 1, [Define if accept4 function is supported]) 956251875Speterfi 957251875Speter 958251875SpeterAC_CACHE_CHECK([for SOCK_CLOEXEC support], [apr_cv_sock_cloexec], 959251875Speter[AC_TRY_RUN([ 960251875Speter#include <sys/types.h> 961251875Speter#include <sys/socket.h> 962251875Speter 963251875Speterint main() 964251875Speter{ 965251875Speter return socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0) == -1; 966251875Speter}], [apr_cv_sock_cloexec=yes], [apr_cv_sock_cloexec=no], [apr_cv_sock_cloexec=no])]) 967251875Speter 968251875Speterif test "$apr_cv_sock_cloexec" = "yes"; then 969251875Speter AC_DEFINE([HAVE_SOCK_CLOEXEC], 1, [Define if the SOCK_CLOEXEC flag is supported]) 970251875Speterfi 971251875Speter 972251875Speterdnl ----------------------------- Checking for fdatasync: OS X doesn't have it 973251875SpeterAC_CHECK_FUNCS(fdatasync) 974251875Speter 975251875Speterdnl ----------------------------- Checking for extended file descriptor handling 976251875Speter# test for epoll_create1 977251875SpeterAC_CACHE_CHECK([for epoll_create1 support], [apr_cv_epoll_create1], 978251875Speter[AC_TRY_RUN([ 979251875Speter#include <sys/epoll.h> 980251875Speter#include <unistd.h> 981251875Speter 982251875Speterint main() 983251875Speter{ 984251875Speter return epoll_create1(0) == -1; 985251875Speter}], [apr_cv_epoll_create1=yes], [apr_cv_epoll_create1=no], [apr_cv_epoll_create1=no])]) 986251875Speter 987251875Speterif test "$apr_cv_epoll_create1" = "yes"; then 988251875Speter AC_DEFINE([HAVE_EPOLL_CREATE1], 1, [Define if epoll_create1 function is supported]) 989251875Speterfi 990251875Speter 991269847Speter# Check for z/OS async i/o support. 992269847SpeterAC_CACHE_CHECK([for asio -> message queue support], [apr_cv_aio_msgq], 993269847Speter[AC_TRY_RUN([ 994269847Speter#define _AIO_OS390 995269847Speter#include <aio.h> 996269847Speter 997269847Speterint main() 998269847Speter{ 999269847Speter struct aiocb a; 1000269847Speter 1001269847Speter a.aio_notifytype = AIO_MSGQ; /* use IPC message queue for notification */ 1002269847Speter 1003269847Speter return aio_cancel(2, NULL) == -1; 1004269847Speter}], [apr_cv_aio_msgq=yes], [apr_cv_aio_msgq=no], [apr_cv_aio_msgq=no])]) 1005269847Speter 1006269847Speterif test "$apr_cv_aio_msgq" = "yes"; then 1007269847Speter AC_DEFINE([HAVE_AIO_MSGQ], 1, [Define if async i/o supports message q's]) 1008269847Speterfi 1009269847Speter 1010251875Speter# test for dup3 1011251875SpeterAC_CACHE_CHECK([for dup3 support], [apr_cv_dup3], 1012251875Speter[AC_TRY_RUN([ 1013251875Speter#include <unistd.h> 1014251875Speter 1015251875Speterint main() 1016251875Speter{ 1017251875Speter return dup3(STDOUT_FILENO, STDERR_FILENO, 0) == -1; 1018251875Speter}], [apr_cv_dup3=yes], [apr_cv_dup3=no], [apr_cv_dup3=no])]) 1019251875Speter 1020251875Speterif test "$apr_cv_dup3" = "yes"; then 1021251875Speter AC_DEFINE([HAVE_DUP3], 1, [Define if dup3 function is supported]) 1022251875Speterfi 1023251875Speter 1024251875Speter# test for accept4 1025251875SpeterAC_CACHE_CHECK([for accept4 support], [apr_cv_accept4], 1026251875Speter[AC_TRY_RUN([ 1027251875Speter#include <unistd.h> 1028251875Speter#include <sys/types.h> 1029251875Speter#include <sys/socket.h> 1030251875Speter#include <sys/un.h> 1031251875Speter#include <sys/wait.h> 1032251875Speter#include <signal.h> 1033251875Speter#include <errno.h> 1034251875Speter 1035251875Speter#define A4_SOCK "./apr_accept4_test_socket" 1036251875Speter 1037251875Speterint main() 1038251875Speter{ 1039251875Speter pid_t pid; 1040251875Speter int fd; 1041251875Speter struct sockaddr_un loc, rem; 1042251875Speter socklen_t rem_sz; 1043251875Speter 1044251875Speter if ((pid = fork())) { 1045251875Speter int status; 1046251875Speter 1047251875Speter unlink(A4_SOCK); 1048251875Speter 1049251875Speter if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) 1050251875Speter goto cleanup_failure2; 1051251875Speter 1052251875Speter loc.sun_family = AF_UNIX; 1053251875Speter strncpy(loc.sun_path, A4_SOCK, sizeof(loc.sun_path) - 1); 1054251875Speter 1055251875Speter if (bind(fd, (struct sockaddr *) &loc, 1056251875Speter sizeof(struct sockaddr_un)) == -1) 1057251875Speter goto cleanup_failure; 1058251875Speter 1059251875Speter if (listen(fd, 5) == -1) 1060251875Speter goto cleanup_failure; 1061251875Speter 1062251875Speter rem_sz = sizeof(struct sockaddr_un); 1063251875Speter if (accept4(fd, (struct sockaddr *) &rem, &rem_sz, 0) == -1) { 1064251875Speter goto cleanup_failure; 1065251875Speter } 1066251875Speter else { 1067251875Speter close(fd); 1068251875Speter waitpid(pid, &status, 0); 1069251875Speter unlink(A4_SOCK); 1070251875Speter return 0; 1071251875Speter } 1072251875Speter 1073251875Spetercleanup_failure: 1074251875Speter close(fd); 1075251875Spetercleanup_failure2: 1076251875Speter kill(pid, SIGKILL); 1077251875Speter waitpid(pid, &status, 0); 1078251875Speter unlink(A4_SOCK); 1079251875Speter return 1; 1080251875Speter } 1081251875Speter else { 1082251875Speter if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) 1083251875Speter return 1; /* this will be bad: we'll hang */ 1084251875Speter 1085251875Speter loc.sun_family = AF_UNIX; 1086251875Speter strncpy(loc.sun_path, A4_SOCK, sizeof(loc.sun_path) - 1); 1087251875Speter 1088251875Speter while(connect(fd, (struct sockaddr *) &loc, 1089251875Speter sizeof(struct sockaddr_un)) == -1 && 1090251875Speter (errno==ENOENT || errno==ECONNREFUSED)) 1091251875Speter ; 1092251875Speter 1093251875Speter close(fd); 1094251875Speter return 0; 1095251875Speter } 1096251875Speter}], [apr_cv_accept4=yes], [apr_cv_accept4=no], [apr_cv_accept4=no])]) 1097251875Speter 1098251875Speterif test "$apr_cv_accept4" = "yes"; then 1099251875Speter AC_DEFINE([HAVE_ACCEPT4], 1, [Define if accept4 function is supported]) 1100251875Speterfi 1101251875Speter 1102251875SpeterAC_CACHE_CHECK([for SOCK_CLOEXEC support], [apr_cv_sock_cloexec], 1103251875Speter[AC_TRY_RUN([ 1104251875Speter#include <sys/types.h> 1105251875Speter#include <sys/socket.h> 1106251875Speter 1107251875Speterint main() 1108251875Speter{ 1109251875Speter return socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0) == -1; 1110251875Speter}], [apr_cv_sock_cloexec=yes], [apr_cv_sock_cloexec=no], [apr_cv_sock_cloexec=no])]) 1111251875Speter 1112251875Speterif test "$apr_cv_sock_cloexec" = "yes"; then 1113251875Speter AC_DEFINE([HAVE_SOCK_CLOEXEC], 1, [Define if the SOCK_CLOEXEC flag is supported]) 1114251875Speterfi 1115251875Speter 1116251875Speterdnl ----------------------------- Checking for missing POSIX thread functions 1117251875SpeterAC_CHECK_FUNCS([getpwnam_r getpwuid_r getgrnam_r getgrgid_r]) 1118251875Speter 1119251875Speterdnl ----------------------------- Checking for Shared Memory Support 1120251875Speterecho "${nl}Checking for Shared Memory Support..." 1121251875Speter 1122251875Speter# The real-time POSIX extensions (e.g. shm_*, sem_*) may only 1123251875Speter# be available if linking against librt. 1124251875SpeterAC_SEARCH_LIBS(shm_open, rt) 1125251875Speter 1126251875Spetercase $host in 1127251875Speter *-sysv*) 1128251875Speter ac_includes_default="$ac_includes_default 1129251875Speter#if HAVE_SYS_MUTEX_H /* needed to define lock_t for sys/shm.h */ 1130251875Speter# include <sys/mutex.h> 1131251875Speter#endif";; 1132251875Speteresac 1133251875Speter 1134251875SpeterAC_CHECK_HEADERS([sys/types.h sys/mman.h sys/ipc.h sys/mutex.h sys/shm.h sys/file.h kernel/OS.h os2.h windows.h]) 1135251875SpeterAC_CHECK_FUNCS([mmap munmap shm_open shm_unlink shmget shmat shmdt shmctl \ 1136251875Speter create_area]) 1137251875Speter 1138251875SpeterAPR_CHECK_DEFINE(MAP_ANON, sys/mman.h) 1139251875SpeterAC_CHECK_FILE(/dev/zero) 1140251875Speter 1141251875Speter# Not all systems can mmap /dev/zero (such as HP-UX). Check for that. 1142251875Speterif test "$ac_cv_func_mmap" = "yes" && 1143251875Speter test "$ac_cv_file__dev_zero" = "yes"; then 1144251875Speter AC_MSG_CHECKING(for mmap that can map /dev/zero) 1145251875Speter AC_TRY_RUN([ 1146251875Speter#include <sys/types.h> 1147251875Speter#include <sys/stat.h> 1148251875Speter#include <fcntl.h> 1149251875Speter#ifdef HAVE_SYS_MMAN_H 1150251875Speter#include <sys/mman.h> 1151251875Speter#endif 1152251875Speter int main() 1153251875Speter { 1154251875Speter int fd; 1155251875Speter void *m; 1156251875Speter fd = open("/dev/zero", O_RDWR); 1157251875Speter if (fd < 0) { 1158251875Speter return 1; 1159251875Speter } 1160251875Speter m = mmap(0, sizeof(void*), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); 1161251875Speter if (m == (void *)-1) { /* aka MAP_FAILED */ 1162251875Speter return 2; 1163251875Speter } 1164251875Speter if (munmap(m, sizeof(void*)) < 0) { 1165251875Speter return 3; 1166251875Speter } 1167251875Speter return 0; 1168251875Speter }], [], [ac_cv_file__dev_zero=no], [ac_cv_file__dev_zero=no]) 1169251875Speter 1170251875Speter AC_MSG_RESULT($ac_cv_file__dev_zero) 1171251875Speterfi 1172251875Speter 1173251875Speter# Now we determine which one is our anonymous shmem preference. 1174251875Speterhaveshmgetanon="0" 1175251875Speterhavemmapzero="0" 1176251875Speterhavemmapanon="0" 1177251875SpeterAPR_BEGIN_DECISION([anonymous shared memory allocation method]) 1178251875SpeterAPR_IFALLYES(header:sys/ipc.h header:sys/shm.h header:sys/file.h dnl 1179251875Speter func:shmget func:shmat func:shmdt func:shmctl, 1180251875Speter [haveshmgetanon="1" 1181251875Speter APR_DECIDE(USE_SHMEM_SHMGET_ANON, [SysV IPC shmget()])]) 1182251875SpeterAPR_IFALLYES(header:sys/mman.h func:mmap func:munmap file:/dev/zero, 1183251875Speter [havemmapzero="1" 1184251875Speter APR_DECIDE(USE_SHMEM_MMAP_ZERO, 1185251875Speter [SVR4-style mmap() on /dev/zero])]) 1186251875SpeterAPR_IFALLYES(header:sys/mman.h func:mmap func:munmap define:MAP_ANON, 1187251875Speter [havemmapanon="1" 1188251875Speter APR_DECIDE(USE_SHMEM_MMAP_ANON, 1189251875Speter [4.4BSD-style mmap() via MAP_ANON])]) 1190251875SpeterAPR_IFALLYES(header:os2.h, 1191251875Speter [haveos2shm="1" 1192251875Speter APR_DECIDE(USE_SHMEM_OS2_ANON, [OS/2 DosAllocSharedMem()])]) 1193251875SpeterAPR_IFALLYES(header:kernel/OS.h func:create_area, 1194251875Speter [havebeosshm="1" 1195251875Speter APR_DECIDE(USE_SHMEM_BEOS_ANON, 1196251875Speter [BeOS areas])]) 1197251875SpeterAPR_IFALLYES(header:windows.h func:CreateFileMapping, 1198251875Speter [havewin32shm="1" 1199251875Speter APR_DECIDE(USE_SHMEM_WIN32_ANON, 1200251875Speter [Windows CreateFileMapping()])]) 1201251875Spetercase $host in 1202251875Speter *linux* ) 1203251875Speter # Linux has problems with MM_SHMT_MMANON even though it reports 1204251875Speter # that it has it. 1205251875Speter # FIXME - find exact 2.3 version that MMANON was fixed in. It is 1206251875Speter # confirmed fixed in 2.4 series. 1207269847Speter if test $os_pre24linux -eq 1; then 1208269847Speter AC_MSG_WARN([Disabling anon mmap() support for Linux pre-2.4]) 1209251875Speter APR_DECISION_OVERRIDE(USE_SHMEM_MMAP_ZERO USE_SHMEM_SHMGET_ANON) 1210251875Speter fi 1211251875Speter ;; 1212251875Speter *hpux11* ) 1213251875Speter APR_DECISION_OVERRIDE(USE_SHMEM_SHMGET_ANON) 1214251875Speter ;; 1215251875Speteresac 1216251875SpeterAPR_END_DECISION 1217251875SpeterAC_DEFINE_UNQUOTED($ac_decision) 1218251875Speter 1219251875Speteruseshmgetanon="0" 1220251875Speterusemmapzero="0" 1221251875Speterusemmapanon="0" 1222251875Speter 1223251875Spetercase $ac_decision in 1224251875Speter USE_SHMEM_SHMGET_ANON ) 1225251875Speter useshmgetanon="1" 1226251875Speter ;; 1227251875Speter USE_SHMEM_MMAP_ZERO ) 1228251875Speter usemmapzero="1" 1229251875Speter ;; 1230251875Speter USE_SHMEM_MMAP_ANON ) 1231251875Speter usemmapanon="1" 1232251875Speter ;; 1233251875Speteresac 1234251875Speter 1235251875SpeterAC_SUBST(useshmgetanon) 1236251875SpeterAC_SUBST(usemmapzero) 1237251875SpeterAC_SUBST(usemmapanon) 1238251875SpeterAC_SUBST(haveshmgetanon) 1239251875SpeterAC_SUBST(havemmapzero) 1240251875SpeterAC_SUBST(havemmapanon) 1241251875Speter 1242251875Speter# Now we determine which one is our name-based shmem preference. 1243251875Speterhavemmaptmp="0" 1244251875Speterhavemmapshm="0" 1245251875Speterhaveshmget="0" 1246251875Speterhavebeosarea="0" 1247251875Speterhaveos2shm="0" 1248251875Speterhavewin32shm="0" 1249251875SpeterAPR_BEGIN_DECISION([namebased memory allocation method]) 1250251875SpeterAPR_IFALLYES(header:sys/mman.h func:mmap func:munmap, 1251251875Speter [havemmaptmp="1" 1252251875Speter APR_DECIDE(USE_SHMEM_MMAP_TMP, 1253251875Speter [Classical mmap() on temporary file])]) 1254251875SpeterAPR_IFALLYES(header:sys/mman.h func:mmap func:munmap func:shm_open dnl 1255251875Speter func:shm_unlink, 1256251875Speter [havemmapshm="1" 1257251875Speter APR_DECIDE(USE_SHMEM_MMAP_SHM, 1258251875Speter [mmap() via POSIX.1 shm_open() on temporary file])]) 1259251875SpeterAPR_IFALLYES(header:sys/ipc.h header:sys/shm.h header:sys/file.h dnl 1260251875Speter func:shmget func:shmat func:shmdt func:shmctl, 1261251875Speter [haveshmget="1" 1262251875Speter APR_DECIDE(USE_SHMEM_SHMGET, [SysV IPC shmget()])]) 1263251875SpeterAPR_IFALLYES(header:kernel/OS.h func:create_area, 1264251875Speter [havebeosshm="1" 1265251875Speter APR_DECIDE(USE_SHMEM_BEOS, [BeOS areas])]) 1266251875SpeterAPR_IFALLYES(header:os2.h, 1267251875Speter [haveos2shm="1" 1268251875Speter APR_DECIDE(USE_SHMEM_OS2, [OS/2 DosAllocSharedMem()])]) 1269251875SpeterAPR_IFALLYES(header:windows.h, 1270251875Speter [havewin32shm="1" 1271251875Speter APR_DECIDE(USE_SHMEM_WIN32, [Windows shared memory])]) 1272269847SpeterAC_ARG_ENABLE(posix-shm, 1273269847Speter[ --enable-posix-shm Use POSIX shared memory (shm_open) if available], 1274269847Speter[ 1275269847Speterif test "$havemmapshm" = "1"; then 1276269847Speter APR_DECISION_OVERRIDE(USE_SHMEM_MMAP_SHM) 1277269847Speterfi 1278269847Speter]) 1279251875Spetercase $host in 1280251875Speter *linux* ) 1281269847Speter # Linux pre-2.4 had problems with MM_SHMT_MMANON even though 1282269847Speter # it reports that it has it. 1283269847Speter if test $os_pre24linux -eq 1; then 1284251875Speter APR_DECISION_OVERRIDE(USE_SHMEM_MMAP_TMP USE_SHMEM_MMAP_SHM dnl 1285251875Speter USE_SHMEM_SHMGET) 1286251875Speter fi 1287251875Speter ;; 1288251875Speteresac 1289251875SpeterAPR_END_DECISION 1290251875SpeterAC_DEFINE_UNQUOTED($ac_decision) 1291251875Speter 1292251875Speterusemmaptmp="0" 1293251875Speterusemmapshm="0" 1294251875Speteruseshmget="0" 1295251875Speterusebeosarea="0" 1296251875Speteruseos2shm="0" 1297251875Speterusewin32shm="0" 1298251875Speter 1299251875Spetercase $ac_decision in 1300251875Speter USE_SHMEM_MMAP_TMP ) 1301251875Speter usemmaptmp="1" 1302251875Speter ;; 1303251875Speter USE_SHMEM_MMAP_SHM ) 1304251875Speter usemmapshm="1" 1305251875Speter ;; 1306251875Speter USE_SHMEM_SHMGET ) 1307251875Speter useshmget="1" 1308251875Speter ;; 1309251875Speter USE_SHMEM_BEOS ) 1310251875Speter usebeosarea="1" 1311251875Speter ;; 1312251875Speter USE_SHMEM_OS2 ) 1313251875Speter useos2shm="1" 1314251875Speter ;; 1315251875Speter USE_SHMEM_WIN32 ) 1316251875Speter usewin32shm="1" 1317251875Speter ;; 1318251875Speteresac 1319251875Speter 1320251875Speter# Do we have any shared memory support? 1321251875Speterif test "$usemmaptmp$usemmapshm$usemmapzero$useshmget$usemmapanon$usebeosarea$useos2shm$usewin32shm" = "00000000"; then 1322251875Speter sharedmem="0" 1323251875Speterelse 1324251875Speter sharedmem="1" 1325251875Speterfi 1326251875Speter 1327251875SpeterAC_SUBST(usemmaptmp) 1328251875SpeterAC_SUBST(usemmapshm) 1329251875SpeterAC_SUBST(useshmget) 1330251875SpeterAC_SUBST(usebeosarea) 1331251875SpeterAC_SUBST(useos2shm) 1332251875SpeterAC_SUBST(usewin32shm) 1333251875SpeterAC_SUBST(havemmaptmp) 1334251875SpeterAC_SUBST(havemmapshm) 1335251875SpeterAC_SUBST(haveshmget) 1336251875SpeterAC_SUBST(havebeosarea) 1337251875SpeterAC_SUBST(haveos2shm) 1338251875SpeterAC_SUBST(havewin32shm) 1339251875SpeterAC_SUBST(sharedmem) 1340251875Speter 1341251875Speterdnl ----------------------------- Checks for Any required Functions 1342251875Speterdnl Checks for library functions. (N.B. poll is further down) 1343251875Speter 1344251875SpeterAC_FUNC_ALLOCA 1345251875Speter 1346251875SpeterAC_CHECK_FUNCS([calloc setsid isinf isnan \ 1347251875Speter getenv putenv setenv unsetenv \ 1348251875Speter writev getifaddrs utime utimes]) 1349251875SpeterAC_CHECK_FUNCS(setrlimit, [ have_setrlimit="1" ], [ have_setrlimit="0" ]) 1350251875SpeterAC_CHECK_FUNCS(getrlimit, [ have_getrlimit="1" ], [ have_getrlimit="0" ]) 1351251875Spetersendfile="0" 1352251875SpeterAC_CHECK_LIB(sendfile, sendfilev) 1353251875SpeterAC_CHECK_FUNCS(sendfile send_file sendfilev, [ sendfile="1" ]) 1354251875Speter 1355251875Speterdnl THIS MUST COME AFTER THE THREAD TESTS - FreeBSD doesn't always have a 1356251875Speterdnl threaded poll() and we don't want to use sendfile on early FreeBSD 1357251875Speterdnl systems if we are also using threads. 1358251875Speter 1359251875SpeterAC_ARG_WITH(sendfile, [ --with-sendfile Override decision to use sendfile], 1360251875Speter [ if test "$withval" = "yes"; then 1361251875Speter sendfile="1" 1362251875Speter else 1363251875Speter sendfile="0" 1364251875Speter fi ], [ 1365251875Speter orig_sendfile=$sendfile 1366251875Speter case $host in 1367251875Speter *freebsd*) 1368251875Speter # FreeBSD < 4.2 has issues with threads+sendfile 1369251875Speter if test $os_version -le "401999"; then 1370251875Speter if test "$threads" = "1"; then 1371251875Speter sendfile="0" 1372251875Speter fi 1373251875Speter fi 1374251875Speter ;; 1375251875Speter *alpha*-dec-osf* ) 1376251875Speter sendfile="0" 1377251875Speter ;; 1378251875Speter s390-*-linux-gnu) 1379251875Speter # disable sendfile support for 2.2 on S/390 1380269847Speter if test $os_pre24linux -eq 1; then 1381269847Speter AC_MSG_WARN([Disabled sendfile support for Linux 2.2 on S/390]) 1382251875Speter sendfile="0" 1383251875Speter fi 1384251875Speter ;; 1385251875Speter *aix*) 1386251875Speter # compiler-independent check for 64-bit build 1387251875Speter AC_CHECK_SIZEOF(void*, 4) 1388251875Speter if test "x$ac_cv_sizeof_voidp" = "x8"; then 1389251875Speter # sendfile not working for 64-bit build 1390251875Speter sendfile="0" 1391251875Speter fi 1392251875Speter ;; 1393251875Speter esac 1394251875Speter if test "$orig_sendfile" != "$sendfile"; then 1395251875Speter echo "sendfile support disabled to avoid system problem" 1396251875Speter fi ] ) 1397251875SpeterAC_SUBST(sendfile) 1398251875Speter 1399251875SpeterAC_CHECK_FUNCS(sigaction, [ have_sigaction="1" ], [ have_sigaction="0" ]) 1400251875SpeterAC_DECL_SYS_SIGLIST 1401251875Speter 1402251875SpeterAC_CHECK_FUNCS(fork, [ fork="1" ], [ fork="0" ]) 1403251875SpeterAPR_CHECK_INET_ADDR 1404251875SpeterAPR_CHECK_INET_NETWORK 1405251875SpeterAC_SUBST(apr_inaddr_none) 1406251875SpeterAC_CHECK_FUNC(_getch) 1407251875SpeterAC_CHECK_FUNCS(strerror_r, [ strerror_r="1" ], [ strerror_r="0" ]) 1408251875Speterif test "$strerror_r" = "1"; then 1409251875Speter APR_CHECK_STRERROR_R_RC 1410251875Speterfi 1411251875SpeterAC_CHECK_FUNCS(mmap, [ mmap="1" ], [ mmap="0" ]) 1412251875Speterif test "$native_mmap_emul" = "1"; then 1413251875Speter mmap="1" 1414251875Speterfi 1415251875SpeterAC_CHECK_FUNCS(memmove, [ have_memmove="1" ], [have_memmove="0" ]) 1416289166SpeterAC_CHECK_FUNCS([getpass getpassphrase gmtime_r localtime_r]) 1417289166Spetercase $host in 1418289166Speter *-hp-hpux*) 1419289166Speter dnl mkstemp is limited to 26 temporary files (a-z); use APR replacement 1420289166Speter ;; 1421289166Speter *) 1422289166Speter AC_CHECK_FUNCS(mkstemp) 1423289166Speter ;; 1424289166Speteresac 1425251875Speter 1426251875SpeterAC_SUBST(fork) 1427251875SpeterAC_SUBST(have_inet_addr) 1428251875SpeterAC_SUBST(tcp_nodelay_inherited) 1429251875SpeterAC_SUBST(o_nonblock_inherited) 1430251875SpeterAC_SUBST(have_inet_network) 1431251875SpeterAC_SUBST(have_sigaction) 1432251875SpeterAC_SUBST(have_setrlimit) 1433251875SpeterAC_SUBST(have_getrlimit) 1434251875SpeterAC_SUBST(mmap) 1435251875SpeterAC_SUBST(have_memmove) 1436251875Speter 1437251875SpeterAPR_CHECK_SIGWAIT_ONE_ARG 1438251875Speter 1439251875Speterdnl ----------------------------- Checks for Any required Headers 1440251875SpeterAC_HEADER_STDC 1441251875Speter 1442251875SpeterAPR_FLAG_HEADERS( 1443251875Speter ByteOrder.h \ 1444251875Speter conio.h \ 1445251875Speter crypt.h \ 1446251875Speter ctype.h \ 1447251875Speter dir.h \ 1448251875Speter dirent.h \ 1449251875Speter dl.h \ 1450251875Speter dlfcn.h \ 1451251875Speter errno.h \ 1452251875Speter fcntl.h \ 1453251875Speter grp.h \ 1454251875Speter io.h \ 1455251875Speter limits.h \ 1456251875Speter mach-o/dyld.h \ 1457251875Speter malloc.h \ 1458251875Speter memory.h \ 1459251875Speter netdb.h \ 1460251875Speter osreldate.h \ 1461251875Speter poll.h \ 1462251875Speter process.h \ 1463251875Speter pwd.h \ 1464251875Speter semaphore.h \ 1465251875Speter signal.h \ 1466251875Speter stdarg.h \ 1467251875Speter stddef.h \ 1468251875Speter stdio.h \ 1469251875Speter stdlib.h \ 1470251875Speter string.h \ 1471251875Speter strings.h \ 1472251875Speter sysapi.h \ 1473251875Speter sysgtime.h \ 1474251875Speter termios.h \ 1475251875Speter time.h \ 1476251875Speter tpfeq.h \ 1477251875Speter tpfio.h \ 1478251875Speter unistd.h \ 1479251875Speter unix.h \ 1480251875Speter windows.h \ 1481251875Speter winsock2.h \ 1482251875Speter arpa/inet.h \ 1483251875Speter kernel/OS.h \ 1484251875Speter net/errno.h \ 1485251875Speter netinet/in.h \ 1486251875Speter netinet/sctp.h \ 1487251875Speter netinet/sctp_uio.h \ 1488251875Speter sys/file.h \ 1489251875Speter sys/ioctl.h \ 1490251875Speter sys/mman.h \ 1491251875Speter sys/param.h \ 1492251875Speter sys/poll.h \ 1493251875Speter sys/resource.h \ 1494251875Speter sys/select.h \ 1495251875Speter sys/sem.h \ 1496251875Speter sys/sendfile.h \ 1497251875Speter sys/signal.h \ 1498251875Speter sys/socket.h \ 1499251875Speter sys/sockio.h \ 1500251875Speter sys/stat.h \ 1501251875Speter sys/sysctl.h \ 1502251875Speter sys/syslimits.h \ 1503251875Speter sys/time.h \ 1504251875Speter sys/types.h \ 1505251875Speter sys/uio.h \ 1506251875Speter sys/un.h \ 1507251875Speter sys/wait.h) 1508251875Speter 1509251875Speter# IRIX 6.5 has a problem in <netinet/tcp.h> which prevents it from 1510251875Speter# being included by itself. Check for <netinet/tcp.h> manually, 1511251875Speter# including another header file first. 1512251875SpeterAC_CACHE_CHECK([for netinet/tcp.h], [apr_cv_hdr_netinet_tcp_h], 1513251875Speter[AC_TRY_CPP( 1514251875Speter[#ifdef HAVE_NETINET_IN_H 1515251875Speter#include <netinet/in.h> 1516251875Speter#endif 1517251875Speter#include <netinet/tcp.h> 1518251875Speter], [apr_cv_hdr_netinet_tcp_h=yes], [apr_cv_hdr_netinet_tcp_h=no])]) 1519251875Speterif test "$apr_cv_hdr_netinet_tcp_h" = "yes"; then 1520251875Speter netinet_tcph=1 1521251875Speter AC_DEFINE([HAVE_NETINET_TCP_H], 1, [Defined if netinet/tcp.h is present]) 1522251875Speterelse 1523251875Speter netinet_tcph=0 1524251875Speterfi 1525251875Speter 1526251875SpeterAC_SUBST(arpa_ineth) 1527251875SpeterAC_SUBST(conioh) 1528251875SpeterAC_SUBST(ctypeh) 1529251875SpeterAC_SUBST(crypth) 1530251875SpeterAC_SUBST(errnoh) 1531251875SpeterAC_SUBST(direnth) 1532251875SpeterAC_SUBST(fcntlh) 1533251875SpeterAC_SUBST(ioh) 1534251875SpeterAC_SUBST(limitsh) 1535251875SpeterAC_SUBST(netdbh) 1536251875SpeterAC_SUBST(sys_syslimitsh) 1537251875SpeterAC_SUBST(netinet_inh) 1538251875SpeterAC_SUBST(netinet_sctph) 1539251875SpeterAC_SUBST(netinet_sctp_uioh) 1540251875SpeterAC_SUBST(netinet_tcph) 1541251875SpeterAC_SUBST(stdargh) 1542251875SpeterAC_SUBST(stdioh) 1543251875SpeterAC_SUBST(stdlibh) 1544251875SpeterAC_SUBST(stringh) 1545251875SpeterAC_SUBST(stringsh) 1546251875SpeterAC_SUBST(sys_ioctlh) 1547251875SpeterAC_SUBST(sys_sendfileh) 1548251875SpeterAC_SUBST(sys_signalh) 1549251875SpeterAC_SUBST(sys_socketh) 1550251875SpeterAC_SUBST(sys_sockioh) 1551251875SpeterAC_SUBST(sys_typesh) 1552251875SpeterAC_SUBST(sys_timeh) 1553251875SpeterAC_SUBST(sys_uioh) 1554251875SpeterAC_SUBST(sys_unh) 1555251875SpeterAC_SUBST(timeh) 1556251875SpeterAC_SUBST(unistdh) 1557251875SpeterAC_SUBST(signalh) 1558251875SpeterAC_SUBST(sys_waith) 1559251875SpeterAC_SUBST(processh) 1560251875SpeterAC_SUBST(pthreadh) 1561251875SpeterAC_SUBST(semaphoreh) 1562251875SpeterAC_SUBST(windowsh) 1563251875SpeterAC_SUBST(winsock2h) 1564251875Speter 1565251875Speter# Checking for h_errno in <netdb.h> 1566251875Speterif test "$netdbh" = "1"; then 1567251875Speter APR_CHECK_H_ERRNO_FLAG 1568251875Speter if test "$ac_cv_h_errno_cflags" = "no"; then 1569251875Speter AC_MSG_ERROR([can not find h_errno in netdb.h]) 1570251875Speter fi 1571251875Speterfi 1572251875Speter 1573251875SpeterAC_ARG_ENABLE(allocator-uses-mmap, 1574269847Speter [ --enable-allocator-uses-mmap Use mmap in apr_allocator instead of malloc ], 1575251875Speter [ if test "$enableval" = "yes"; then 1576251875Speter APR_IFALLYES(header:sys/mman.h func:mmap func:munmap define:MAP_ANON, 1577251875Speter [AC_DEFINE(APR_ALLOCATOR_USES_MMAP, 1, 1578251875Speter [Define if apr_allocator should use mmap]) ], 1579251875Speter [AC_MSG_ERROR([mmap()/MAP_ANON not supported]) ] 1580251875Speter ) 1581251875Speter fi ] 1582251875Speter) 1583251875Speter 1584251875Speterdnl ----------------------------- Checks for standard typedefs 1585251875SpeterAC_TYPE_OFF_T 1586251875SpeterAC_TYPE_PID_T 1587251875SpeterAC_TYPE_SIZE_T 1588251875SpeterAC_TYPE_UID_T 1589251875SpeterAC_CHECK_TYPE(ssize_t, int) 1590251875SpeterAC_C_INLINE 1591251875SpeterAC_C_CONST 1592251875SpeterAC_FUNC_SETPGRP 1593251875Speter 1594251875SpeterAPR_CHECK_SOCKLEN_T 1595251875Speter 1596251875Speterdnl Checks for pointer size 1597251875SpeterAC_CHECK_SIZEOF(void*, 4) 1598251875Speter 1599251875Speterif test "x$ac_cv_sizeof_voidp" != "x"; then 1600251875Speter voidp_size=$ac_cv_sizeof_voidp 1601251875Speterelse 1602251875Speter AC_ERROR([Cannot determine size of void*]) 1603251875Speterfi 1604251875Speter 1605251875Speterdnl Checks for integer size 1606251875SpeterAC_CHECK_SIZEOF(char, 1) 1607251875SpeterAC_CHECK_SIZEOF(int, 4) 1608251875SpeterAC_CHECK_SIZEOF(long, 4) 1609251875SpeterAC_CHECK_SIZEOF(short, 2) 1610251875SpeterAC_CHECK_SIZEOF(long long, 8) 1611251875Speter 1612251875Speterif test "$ac_cv_sizeof_short" = "2"; then 1613251875Speter short_value=short 1614251875Speterfi 1615251875Speterif test "$ac_cv_sizeof_int" = "4"; then 1616251875Speter int_value=int 1617251875Speterfi 1618251875Speter# Now we need to find what apr_int64_t (sizeof == 8) will be. 1619251875Speter# The first match is our preference. 1620251875Speterif test "$ac_cv_sizeof_int" = "8"; then 1621251875Speter int64_literal='#define APR_INT64_C(val) (val)' 1622251875Speter uint64_literal='#define APR_UINT64_C(val) (val##U)' 1623251875Speter int64_t_fmt='#define APR_INT64_T_FMT "d"' 1624251875Speter uint64_t_fmt='#define APR_UINT64_T_FMT "u"' 1625251875Speter uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "x"' 1626251875Speter int64_value="int" 1627251875Speter long_value=int 1628251875Speter int64_strfn="strtoi" 1629251875Speterelif test "$ac_cv_sizeof_long" = "8"; then 1630251875Speter int64_literal='#define APR_INT64_C(val) (val##L)' 1631251875Speter uint64_literal='#define APR_UINT64_C(val) (val##UL)' 1632251875Speter int64_t_fmt='#define APR_INT64_T_FMT "ld"' 1633251875Speter uint64_t_fmt='#define APR_UINT64_T_FMT "lu"' 1634251875Speter uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "lx"' 1635251875Speter int64_value="long" 1636251875Speter long_value=long 1637251875Speter int64_strfn="strtol" 1638251875Speterelif test "$ac_cv_sizeof_long_long" = "8"; then 1639251875Speter int64_literal='#define APR_INT64_C(val) (val##LL)' 1640251875Speter uint64_literal='#define APR_UINT64_C(val) (val##ULL)' 1641251875Speter # Linux, Solaris, FreeBSD all support ll with printf. 1642251875Speter # BSD 4.4 originated 'q'. Solaris is more popular and 1643251875Speter # doesn't support 'q'. Solaris wins. Exceptions can 1644251875Speter # go to the OS-dependent section. 1645251875Speter int64_t_fmt='#define APR_INT64_T_FMT "lld"' 1646251875Speter uint64_t_fmt='#define APR_UINT64_T_FMT "llu"' 1647251875Speter uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "llx"' 1648251875Speter int64_value="long long" 1649251875Speter long_value="long long" 1650251875Speter int64_strfn="strtoll" 1651251875Speterelif test "$ac_cv_sizeof_longlong" = "8"; then 1652251875Speter int64_literal='#define APR_INT64_C(val) (val##LL)' 1653251875Speter uint64_literal='#define APR_UINT64_C(val) (val##ULL)' 1654251875Speter int64_t_fmt='#define APR_INT64_T_FMT "qd"' 1655251875Speter uint64_t_fmt='#define APR_UINT64_T_FMT "qu"' 1656251875Speter uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "qx"' 1657251875Speter int64_value="__int64" 1658251875Speter long_value="__int64" 1659251875Speter int64_strfn="strtoll" 1660251875Speterelse 1661251875Speter # int64_literal may be overriden if your compiler thinks you have 1662251875Speter # a 64-bit value but APR does not agree. 1663251875Speter AC_ERROR([could not detect a 64-bit integer type]) 1664251875Speterfi 1665251875Speter 1666251875Speter# If present, allow the C99 macro INT64_C to override our conversion. 1667251875Speter# 1668251875Speter# HP-UX's ANSI C compiler provides this without any includes, so we 1669251875Speter# will first look for INT64_C without adding stdint.h 1670251875SpeterAC_CACHE_CHECK([for INT64_C], [apr_cv_define_INT64_C], [ 1671251875SpeterAC_EGREP_CPP(YES_IS_DEFINED, 1672251875Speter[#ifdef INT64_C 1673251875SpeterYES_IS_DEFINED 1674251875Speter#endif], [apr_cv_define_INT64_C=yes], [ 1675251875Speter # Now check for INT64_C in stdint.h 1676251875Speter AC_EGREP_CPP(YES_IS_DEFINED, [#include <stdint.h> 1677251875Speter#ifdef INT64_C 1678251875SpeterYES_IS_DEFINED 1679251875Speter#endif], [apr_cv_define_INT64_C=yes], [apr_cv_define_INT64_C=no])])]) 1680251875Speter 1681251875Speterif test "$apr_cv_define_INT64_C" = "yes"; then 1682251875Speter int64_literal='#define APR_INT64_C(val) INT64_C(val)' 1683251875Speter uint64_literal='#define APR_UINT64_C(val) UINT64_C(val)' 1684251875Speter stdint=1 1685251875Speterelse 1686251875Speter stdint=0 1687251875Speterfi 1688251875Speter 1689251875Speterif test "$ac_cv_type_size_t" = "yes"; then 1690251875Speter size_t_value="size_t" 1691251875Speterelse 1692251875Speter size_t_value="apr_int32_t" 1693251875Speterfi 1694251875Speterif test "$ac_cv_type_ssize_t" = "yes"; then 1695251875Speter ssize_t_value="ssize_t" 1696251875Speterelse 1697251875Speter ssize_t_value="apr_int32_t" 1698251875Speterfi 1699251875Speterif test "$ac_cv_socklen_t" = "yes"; then 1700251875Speter socklen_t_value="socklen_t" 1701251875Speter case $host in 1702251875Speter *-hp-hpux*) 1703251875Speter if test "$ac_cv_sizeof_long" = "8"; then 1704251875Speter # 64-bit HP-UX requires 32-bit socklens in 1705251875Speter # kernel, but user-space declarations say 1706251875Speter # 64-bit (socklen_t == size_t == long). 1707251875Speter # This will result in many compile warnings, 1708251875Speter # but we're functionally busted otherwise. 1709251875Speter socklen_t_value="int" 1710251875Speter fi 1711251875Speter ;; 1712251875Speter esac 1713251875Speterelse 1714251875Speter socklen_t_value="int" 1715251875Speterfi 1716251875Speter 1717251875SpeterAPR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], pid_t, 8) 1718251875Speter 1719251875Speterif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_short"; then 1720251875Speter pid_t_fmt='#define APR_PID_T_FMT "hd"' 1721251875Speterelif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_int"; then 1722251875Speter pid_t_fmt='#define APR_PID_T_FMT "d"' 1723251875Speterelif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_long"; then 1724251875Speter pid_t_fmt='#define APR_PID_T_FMT "ld"' 1725251875Speterelif test "$ac_cv_sizeof_pid_t" = "$ac_cv_sizeof_long_long"; then 1726251875Speter pid_t_fmt='#define APR_PID_T_FMT APR_INT64_T_FMT' 1727251875Speterelse 1728251875Speter pid_t_fmt='#error Can not determine the proper size for pid_t' 1729251875Speterfi 1730251875Speter 1731251875Speter# Basically, we have tried to figure out the correct format strings 1732251875Speter# for APR types which vary between platforms, but we don't always get 1733251875Speter# it right. 1734251875Spetercase $host in 1735251875Speter s390*linux*) 1736251875Speter # uniquely, the 31-bit Linux/s390 uses "unsigned long int" 1737251875Speter # for size_t rather than "unsigned int": 1738251875Speter size_t_fmt="lu" 1739251875Speter ssize_t_fmt="ld" 1740251875Speter ;; 1741251875Speter *-os2*) 1742251875Speter size_t_fmt="lu" 1743251875Speter ;; 1744251875Speter *-solaris*) 1745251875Speter if test "$ac_cv_sizeof_long" = "8"; then 1746251875Speter pid_t_fmt='#define APR_PID_T_FMT "d"' 1747251875Speter else 1748251875Speter pid_t_fmt='#define APR_PID_T_FMT "ld"' 1749251875Speter fi 1750251875Speter ;; 1751251875Speter *aix4*|*aix5*) 1752251875Speter ssize_t_fmt="ld" 1753251875Speter size_t_fmt="lu" 1754251875Speter ;; 1755251875Speter *beos*) 1756251875Speter ssize_t_fmt="ld" 1757251875Speter size_t_fmt="ld" 1758251875Speter ;; 1759251875Speter *apple-darwin*) 1760251875Speter osver=`uname -r` 1761251875Speter case $osver in 1762251875Speter [[0-7]].*) 1763251875Speter ssize_t_fmt="d" 1764251875Speter ;; 1765251875Speter *) 1766251875Speter ssize_t_fmt="ld" 1767251875Speter ;; 1768251875Speter esac 1769251875Speter size_t_fmt="lu" 1770251875Speter ;; 1771251875Speter *-mingw*) 1772251875Speter int64_t_fmt='#define APR_INT64_T_FMT "I64d"' 1773251875Speter uint64_t_fmt='#define APR_UINT64_T_FMT "I64u"' 1774251875Speter uint64_t_hex_fmt='#define APR_UINT64_T_HEX_FMT "I64x"' 1775251875Speter int64_value="__int64" 1776251875Speter long_value="__int64" 1777251875Speter int64_strfn="_strtoi64" 1778251875Speter ;; 1779251875Speteresac 1780251875Speter 1781251875SpeterAPR_CHECK_TYPES_COMPATIBLE(ssize_t, int, [ssize_t_fmt="d"]) 1782251875SpeterAPR_CHECK_TYPES_COMPATIBLE(ssize_t, long, [ssize_t_fmt="ld"]) 1783251875SpeterAPR_CHECK_TYPES_COMPATIBLE(size_t, unsigned int, [size_t_fmt="u"]) 1784251875SpeterAPR_CHECK_TYPES_COMPATIBLE(size_t, unsigned long, [size_t_fmt="lu"]) 1785251875Speter 1786251875SpeterAPR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], ssize_t, 8) 1787251875Speter 1788251875SpeterAC_MSG_CHECKING([which format to use for apr_ssize_t]) 1789251875Speterif test -n "$ssize_t_fmt"; then 1790251875Speter AC_MSG_RESULT(%$ssize_t_fmt) 1791251875Speterelif test "$ac_cv_sizeof_ssize_t" = "$ac_cv_sizeof_int"; then 1792251875Speter ssize_t_fmt="d" 1793251875Speter AC_MSG_RESULT(%d) 1794251875Speterelif test "$ac_cv_sizeof_ssize_t" = "$ac_cv_sizeof_long"; then 1795251875Speter ssize_t_fmt="ld" 1796251875Speter AC_MSG_RESULT(%ld) 1797251875Speterelse 1798251875Speter AC_ERROR([could not determine the proper format for apr_ssize_t]) 1799251875Speterfi 1800251875Speter 1801251875Speterssize_t_fmt="#define APR_SSIZE_T_FMT \"$ssize_t_fmt\"" 1802251875Speter 1803251875SpeterAPR_CHECK_SIZEOF_EXTENDED([#include <stddef.h>], size_t, 8) 1804251875Speter 1805251875SpeterAC_MSG_CHECKING([which format to use for apr_size_t]) 1806251875Speterif test -n "$size_t_fmt"; then 1807251875Speter AC_MSG_RESULT(%$size_t_fmt) 1808251875Speterelif test "$ac_cv_sizeof_size_t" = "$ac_cv_sizeof_int"; then 1809251875Speter size_t_fmt="d" 1810251875Speter AC_MSG_RESULT(%d) 1811251875Speterelif test "$ac_cv_sizeof_size_t" = "$ac_cv_sizeof_long"; then 1812251875Speter size_t_fmt="ld" 1813251875Speter AC_MSG_RESULT(%ld) 1814251875Speterelse 1815251875Speter AC_ERROR([could not determine the proper format for apr_size_t]) 1816251875Speterfi 1817251875Speter 1818251875Spetersize_t_fmt="#define APR_SIZE_T_FMT \"$size_t_fmt\"" 1819251875Speter 1820251875SpeterAPR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], off_t, 8) 1821251875Speter 1822251875Speterif test "${ac_cv_sizeof_off_t}${apr_cv_use_lfs64}" = "4yes"; then 1823251875Speter # Enable LFS 1824251875Speter aprlfs=1 1825289166Speter AC_CHECK_FUNCS([mmap64 sendfile64 sendfilev64 readdir64_r]) 1826289166Speter case $host in 1827289166Speter *-hp-hpux*) 1828289166Speter dnl mkstemp64 is limited to 26 temporary files (a-z); use APR replacement 1829289166Speter ;; 1830289166Speter *) 1831289166Speter AC_CHECK_FUNCS(mkstemp64) 1832289166Speter ;; 1833289166Speter esac 1834251875Speterelif test "${ac_cv_sizeof_off_t}" != "${ac_cv_sizeof_size_t}"; then 1835251875Speter # unsure of using -gt above is as portable, can can't forsee where 1836251875Speter # off_t can legitimately be smaller than size_t 1837251875Speter aprlfs=1 1838251875Speterelse 1839251875Speter aprlfs=0 1840251875Speterfi 1841251875Speter 1842251875SpeterAC_MSG_CHECKING([which type to use for apr_off_t]) 1843251875Speterif test "${ac_cv_sizeof_off_t}${apr_cv_use_lfs64}" = "4yes"; then 1844251875Speter # LFS is go! 1845251875Speter off_t_fmt='#define APR_OFF_T_FMT APR_INT64_T_FMT' 1846251875Speter off_t_value='off64_t' 1847251875Speter off_t_strfn='apr_strtoi64' 1848251875Speterelif test "${ac_cv_sizeof_off_t}x${ac_cv_sizeof_long}" = "4x4"; then 1849251875Speter # Special case: off_t may change size with _FILE_OFFSET_BITS 1850251875Speter # on 32-bit systems with LFS support. To avoid compatibility 1851251875Speter # issues when other packages do define _FILE_OFFSET_BITS, 1852251875Speter # hard-code apr_off_t to long. 1853251875Speter off_t_value=long 1854251875Speter off_t_fmt='#define APR_OFF_T_FMT "ld"' 1855251875Speter off_t_strfn='strtol' 1856251875Speterelif test "$ac_cv_type_off_t" = "yes"; then 1857251875Speter off_t_value=off_t 1858251875Speter # off_t is more commonly a long than an int; prefer that case 1859251875Speter # where int and long are the same size. 1860251875Speter if test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_long"; then 1861251875Speter off_t_fmt='#define APR_OFF_T_FMT "ld"' 1862251875Speter off_t_strfn='strtol' 1863251875Speter elif test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_int"; then 1864251875Speter off_t_fmt='#define APR_OFF_T_FMT "d"' 1865251875Speter off_t_strfn='strtoi' 1866251875Speter elif test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_long_long"; then 1867251875Speter off_t_fmt='#define APR_OFF_T_FMT APR_INT64_T_FMT' 1868251875Speter off_t_strfn='apr_strtoi64' 1869251875Speter else 1870251875Speter AC_ERROR([could not determine the size of off_t]) 1871251875Speter fi 1872251875Speter # Per OS tuning... 1873251875Speter case $host in 1874251875Speter *-mingw*) 1875251875Speter off_t_value=apr_int64_t 1876251875Speter off_t_fmt='#define APR_OFF_T_FMT "I64d"' 1877251875Speter off_t_strfn='_strtoi64' 1878251875Speter ;; 1879251875Speter esac 1880251875Speterelse 1881251875Speter # Fallback on int 1882251875Speter off_t_value=apr_int32_t 1883251875Speter off_t_fmt=d 1884251875Speter off_t_strfn='strtoi' 1885251875Speterfi 1886251875SpeterAC_MSG_RESULT($off_t_value) 1887251875Speter 1888251875Speter# Regardless of whether _LARGEFILE64_SOURCE is used, on some 1889251875Speter# platforms _FILE_OFFSET_BITS will affect the size of ino_t and hence 1890251875Speter# the build-time ABI may be different from the apparent ABI when using 1891251875Speter# APR with another package which *does* define _FILE_OFFSET_BITS. 1892251875Speter# (Exactly as per the case above with off_t where LFS is *not* used) 1893251875Speter# 1894251875Speter# To be safe, hard-code apr_ino_t as 'unsigned long' or 'unsigned int' 1895251875Speter# iff that is exactly the size of ino_t here; otherwise use ino_t as existing 1896251875Speter# releases did. To be correct, apr_ino_t should have been made an 1897251875Speter# ino64_t as apr_off_t is off64_t, but this can't be done now without 1898251875Speter# breaking ABI. 1899251875Speter 1900251875Speter# Per OS tuning... 1901251875Spetercase $host in 1902251875Speter*mingw*) 1903251875Speter ino_t_value=apr_int64_t 1904251875Speter ;; 1905251875Speter*) 1906251875Speter ino_t_value=ino_t 1907251875Speter APR_CHECK_SIZEOF_EXTENDED(AC_INCLUDES_DEFAULT, ino_t, $ac_cv_sizeof_long) 1908251875Speter if test $ac_cv_sizeof_ino_t = 4; then 1909251875Speter if test $ac_cv_sizeof_long = 4; then 1910251875Speter ino_t_value="unsigned long" 1911251875Speter else 1912251875Speter ino_t_value="unsigned int" 1913251875Speter fi 1914251875Speter fi 1915251875Speter ;; 1916251875Speteresac 1917251875SpeterAC_MSG_NOTICE([using $ino_t_value for ino_t]) 1918251875Speter 1919251875Speter# Checks for endianness 1920251875SpeterAC_C_BIGENDIAN 1921251875Speterif test $ac_cv_c_bigendian = yes; then 1922251875Speter bigendian=1 1923251875Speterelse 1924251875Speter bigendian=0 1925251875Speterfi 1926251875Speter 1927251875SpeterAPR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h> 1928251875Speter#include <sys/uio.h>],struct iovec,0) 1929251875Speterif test "$ac_cv_sizeof_struct_iovec" = "0"; then 1930251875Speter have_iovec=0 1931251875Speterelse 1932251875Speter have_iovec=1 1933251875Speterfi 1934251875Speter 1935251875SpeterAC_SUBST(voidp_size) 1936251875SpeterAC_SUBST(short_value) 1937251875SpeterAC_SUBST(int_value) 1938251875SpeterAC_SUBST(long_value) 1939251875SpeterAC_SUBST(int64_value) 1940251875SpeterAC_SUBST(off_t_value) 1941251875SpeterAC_SUBST(size_t_value) 1942251875SpeterAC_SUBST(ssize_t_value) 1943251875SpeterAC_SUBST(socklen_t_value) 1944251875SpeterAC_SUBST(int64_t_fmt) 1945251875SpeterAC_SUBST(uint64_t_fmt) 1946251875SpeterAC_SUBST(uint64_t_hex_fmt) 1947251875SpeterAC_SUBST(ssize_t_fmt) 1948251875SpeterAC_SUBST(size_t_fmt) 1949251875SpeterAC_SUBST(off_t_fmt) 1950251875SpeterAC_SUBST(pid_t_fmt) 1951251875SpeterAC_SUBST(int64_literal) 1952251875SpeterAC_SUBST(uint64_literal) 1953251875SpeterAC_SUBST(stdint) 1954251875SpeterAC_SUBST(bigendian) 1955251875SpeterAC_SUBST(aprlfs) 1956251875SpeterAC_SUBST(have_iovec) 1957251875SpeterAC_SUBST(ino_t_value) 1958251875Speter 1959251875Speterdnl ----------------------------- Checking for string functions 1960251875SpeterAC_CHECK_FUNCS(strnicmp, have_strnicmp="1", have_strnicmp="0") 1961251875SpeterAC_CHECK_FUNCS(strncasecmp, have_strncasecmp="1", have_strncasecmp="0") 1962251875SpeterAC_CHECK_FUNCS(stricmp, have_stricmp="1", have_stricmp="0") 1963251875SpeterAC_CHECK_FUNCS(strcasecmp, have_strcasecmp="1", have_strcasecmp="0") 1964251875SpeterAC_CHECK_FUNCS(strdup, have_strdup="1", have_strdup="0") 1965251875SpeterAC_CHECK_FUNCS(strstr, have_strstr="1", have_strstr="0") 1966251875SpeterAC_CHECK_FUNCS(memchr, have_memchr="1", have_memchr="0") 1967251875SpeterAC_CHECK_FUNC($int64_strfn, have_int64_strfn="1", have_int64_strfn="0") 1968251875Speter 1969251875Speterdnl ----------------------------- We have a fallback position 1970251875Speterif test "$have_int64_strfn" = "0" && test "$int64_strfn" = "strtoll"; then 1971251875Speter int64_strfn="strtoq" 1972251875Speter AC_CHECK_FUNC(strtoq, [have_int64_strfn=1], [have_int64_strfn=0]) 1973251875Speterfi 1974251875Speter 1975251875Speterif test "$have_int64_strfn" = "1"; then 1976251875Speter AC_DEFINE_UNQUOTED(APR_INT64_STRFN, [$int64_strfn], 1977251875Speter [Define as function which can be used for conversion of strings to apr_int64_t]) 1978251875Speterfi 1979251875Speter 1980251875SpeterAC_SUBST(have_strnicmp) 1981251875SpeterAC_SUBST(have_strncasecmp) 1982251875SpeterAC_SUBST(have_stricmp) 1983251875SpeterAC_SUBST(have_strcasecmp) 1984251875SpeterAC_SUBST(have_strdup) 1985251875SpeterAC_SUBST(have_strstr) 1986251875SpeterAC_SUBST(have_memchr) 1987251875Speter 1988251875Speterif test "$off_t_strfn" = "apr_strtoi64" && test "$have_int64_strfn" = "1"; then 1989251875Speter off_t_strfn=$int64_strfn 1990251875Speterfi 1991251875SpeterAC_DEFINE_UNQUOTED(APR_OFF_T_STRFN, [$off_t_strfn], 1992251875Speter [Define as function used for conversion of strings to apr_off_t]) 1993251875Speter 1994251875Speterdnl ----------------------------- Checking for DSO support 1995251875Speterecho "${nl}Checking for DSO..." 1996251875SpeterAC_ARG_ENABLE(dso, 1997251875Speter [ --disable-dso Disable DSO support ], 1998251875Speter [if test "x$enableval" = "xyes"; then 1999251875Speter dsotype=any 2000251875Speter else 2001251875Speter dsotype=$enableval 2002251875Speter fi 2003251875Speter ], [dsotype=any]) 2004251875Speter 2005251875Speterif test "$dsotype" = "any"; then 2006251875Speter if test "$dsotype" = "any"; then 2007251875Speter case $host in 2008251875Speter *darwin[[0-8]]\.*) 2009251875Speter # Original Darwin, not for 9.0!: 2010251875Speter AC_CHECK_FUNC(NSLinkModule, [dsotype=dyld]);; 2011251875Speter hppa*-hpux[[1-9]]\.*|hppa*-hpux1[[01]]*) 2012251875Speter # shl is specific to parisc hpux SOM binaries, not used for 64 bit 2013251875Speter AC_CHECK_LIB(dld, shl_load, [have_shl=1]) 2014251875Speter if test "$ac_cv_sizeof_voidp$have_shl" = "41"; then 2015251875Speter dsotype=shl; APR_ADDTO(LIBS,-ldld) 2016251875Speter fi;; 2017251875Speter *mingw*|*-os2*) 2018251875Speter # several 'other's below probably belong up here. If they always 2019251875Speter # use a platform implementation and shouldn't test the dlopen/dlfcn 2020251875Speter # features, then bring them up here. 2021251875Speter # But if they -should- optionally use dlfcn, and/or need the config 2022251875Speter # detection of dlopen/dlsym, do not move them up. 2023251875Speter dsotype=other ;; 2024251875Speter esac 2025251875Speter fi 2026251875Speter # Normal POSIX: 2027251875Speter if test "$dsotype" = "any"; then 2028251875Speter AC_CHECK_FUNC(dlopen, [dsotype=dlfcn]) 2029251875Speter fi 2030251875Speter if test "$dsotype" = "any"; then 2031251875Speter AC_CHECK_LIB(dl, dlopen, [dsotype=dlfcn; APR_ADDTO(LIBS,-ldl)]) 2032251875Speter fi 2033251875Speter if test "$dsotype" = "dlfcn"; then 2034251875Speter # ReliantUnix has dlopen() in libc but dlsym() in libdl :( 2035251875Speter AC_CHECK_FUNC(dlsym, [], 2036251875Speter [AC_CHECK_LIB(dl, dlsym, 2037251875Speter [APR_ADDTO(LIBS, -ldl)], 2038251875Speter [dsotype=any 2039251875Speter echo "Weird: dlopen() was found but dlsym() was not found!"])]) 2040251875Speter fi 2041251875Speter if test "$dsotype" = "any"; then 2042251875Speter # BeOS: 2043251875Speter AC_CHECK_LIB(root, load_image, [dsotype=other]) 2044251875Speter fi 2045251875Speter # Everything else: 2046251875Speter if test "$dsotype" = "any"; then 2047251875Speter case $host in 2048251875Speter *os390|*os400|*-aix*) 2049251875Speter # Some -aix5 will use dl, no hassles. Keep that pattern here. 2050251875Speter dsotype=other ;; 2051251875Speter *-hpux*) 2052251875Speter if test "$have_shl" = "1"; then 2053251875Speter dsotype=shl; APR_ADDTO(LIBS,-ldld) 2054251875Speter fi;; 2055251875Speter esac 2056251875Speter fi 2057251875Speterfi 2058251875Speter 2059251875Speterif test "$dsotype" = "any"; then 2060251875Speter AC_MSG_ERROR([Could not detect suitable DSO implementation]) 2061251875Speterelif test "$dsotype" = "no"; then 2062251875Speter aprdso="0" 2063251875Speterelse 2064251875Speter case "$dsotype" in 2065251875Speter dlfcn) AC_DEFINE(DSO_USE_DLFCN, 1, [Define if DSO support uses dlfcn.h]);; 2066251875Speter shl) AC_DEFINE(DSO_USE_SHL, 1, [Define if DSO support uses shl_load]);; 2067251875Speter dyld) AC_DEFINE(DSO_USE_DYLD, 1, [Define if DSO support uses dyld.h]);; 2068251875Speter other) ;; # Use whatever is in dso/OSDIR 2069251875Speter *) AC_MSG_ERROR([Unknown DSO implementation "$dsotype"]);; 2070251875Speter esac 2071251875Speter aprdso="1" 2072251875Speter apr_modules="$apr_modules dso" 2073251875Speterfi 2074251875Speter 2075251875SpeterAC_SUBST(aprdso) 2076251875Speter 2077251875Speterdnl ----------------------------- Checking for Processes 2078251875Speterecho "${nl}Checking for Processes..." 2079251875Speter 2080251875SpeterAC_CHECK_FUNCS(waitpid) 2081251875Speter 2082251875SpeterAC_ARG_ENABLE(other-child, 2083251875Speter [ --enable-other-child Enable reliable child processes ], 2084251875Speter [ if test "$enableval" = "yes"; then 2085251875Speter oc="1" 2086251875Speter else 2087251875Speter oc="0" 2088251875Speter fi ], 2089251875Speter [ oc=1 ] ) 2090251875Speter 2091251875SpeterAC_SUBST(oc) 2092251875Speter 2093251875Speterif test -z "$have_proc_invoked"; then 2094251875Speter have_proc_invoked="0" 2095251875Speterfi 2096251875Speter 2097251875SpeterAC_SUBST(have_proc_invoked) 2098251875Speter 2099251875SpeterAC_MSG_CHECKING(for Variable Length Arrays) 2100251875SpeterAPR_TRY_COMPILE_NO_WARNING([], 2101251875Speter[ 2102251875Speter int foo[argc]; 2103251875Speter foo[0] = 0; 2104251875Speter], vla_msg=yes, vla_msg=no ) 2105251875SpeterAC_MSG_RESULT([$vla_msg]) 2106251875Speterif test "$vla_msg" = "yes"; then 2107251875Speter AC_DEFINE(HAVE_VLA, 1, [Define if C compiler supports VLA]) 2108251875Speterfi 2109251875Speter 2110251875SpeterAC_CACHE_CHECK(struct rlimit,ac_cv_struct_rlimit,[ 2111251875SpeterAC_TRY_RUN([ 2112251875Speter#include <sys/types.h> 2113251875Speter#include <sys/time.h> 2114251875Speter#include <sys/resource.h> 2115251875Spetermain() 2116251875Speter{ 2117251875Speter struct rlimit limit; 2118251875Speter limit.rlim_cur = 0; 2119251875Speter limit.rlim_max = 0; 2120251875Speter exit(0); 2121251875Speter}], [ 2122251875Speter ac_cv_struct_rlimit=yes ], [ 2123251875Speter ac_cv_struct_rlimit=no ], [ 2124251875Speter ac_cv_struct_rlimit=no ] ) ] ) 2125251875Speterstruct_rlimit=0 2126251875Spetertest "x$ac_cv_struct_rlimit" = xyes && struct_rlimit=1 2127251875SpeterAC_SUBST(struct_rlimit) 2128251875Speter 2129251875Speterdnl ----------------------------- Checking for Locking Characteristics 2130251875Speterecho "${nl}Checking for Locking..." 2131251875Speter 2132251875SpeterAC_CHECK_FUNCS(semget semctl flock) 2133251875SpeterAC_CHECK_HEADERS(semaphore.h OS.h) 2134251875SpeterAC_SEARCH_LIBS(sem_open, rt) 2135251875SpeterAC_CHECK_FUNCS(sem_close sem_unlink sem_post sem_wait create_sem) 2136251875Speter 2137251875Speter# Some systems return ENOSYS from sem_open. 2138251875SpeterAC_CACHE_CHECK(for working sem_open,ac_cv_func_sem_open,[ 2139251875SpeterAC_TRY_RUN([ 2140251875Speter#include <errno.h> 2141251875Speter#include <stdlib.h> 2142251875Speter#include <fcntl.h> 2143251875Speter#include <semaphore.h> 2144251875Speter#ifndef SEM_FAILED 2145251875Speter#define SEM_FAILED (-1) 2146251875Speter#endif 2147251875Spetermain() 2148251875Speter{ 2149251875Speter sem_t *psem; 2150251875Speter const char *sem_name = "/apr_autoconf"; 2151251875Speter 2152251875Speter psem = sem_open(sem_name, O_CREAT, 0644, 1); 2153251875Speter if (psem == (sem_t *)SEM_FAILED) { 2154251875Speter exit(1); 2155251875Speter } 2156251875Speter sem_close(psem); 2157251875Speter psem = sem_open(sem_name, O_CREAT | O_EXCL, 0644, 1); 2158251875Speter if (psem != (sem_t *)SEM_FAILED) { 2159251875Speter sem_close(psem); 2160251875Speter exit(1); 2161251875Speter } 2162251875Speter sem_unlink(sem_name); 2163251875Speter exit(0); 2164251875Speter}], [ac_cv_func_sem_open=yes], [ac_cv_func_sem_open=no], 2165251875Speter[ac_cv_func_sem_open=no])]) 2166251875Speter 2167251875Speter# It's stupid, but not all platforms have union semun, even those that need it. 2168251875SpeterAC_MSG_CHECKING(for union semun in sys/sem.h) 2169251875SpeterAC_TRY_COMPILE([ 2170251875Speter#include <sys/types.h> 2171251875Speter#include <sys/ipc.h> 2172251875Speter#include <sys/sem.h> 2173251875Speter],[ 2174251875Speterunion semun arg; 2175251875Spetersemctl(0, 0, 0, arg); 2176251875Speter], [have_union_semun="1" union_semun=yes ] 2177251875Spetermsg=yes, [ 2178251875Speterhave_union_semun="0" 2179251875Spetermsg=no ] ) 2180251875SpeterAC_MSG_RESULT([$msg]) 2181251875SpeterAC_SUBST(have_union_semun) 2182251875Speter 2183251875Speterdnl Checks for libraries. 2184251875SpeterAPR_CHECK_DEFINE(LOCK_EX, sys/file.h) 2185251875SpeterAPR_CHECK_DEFINE(F_SETLK, fcntl.h) 2186251875SpeterAPR_CHECK_DEFINE(SEM_UNDO, sys/sem.h) 2187251875Speter 2188251875Speter# We are assuming that if the platform doesn't have POLLIN, it doesn't have 2189251875Speter# any POLL definitions. 2190251875SpeterAPR_CHECK_DEFINE_FILES(POLLIN, poll.h sys/poll.h) 2191251875Speter 2192251875Speterif test "$threads" = "1"; then 2193251875Speter APR_CHECK_DEFINE(PTHREAD_PROCESS_SHARED, pthread.h) 2194251875Speter AC_CHECK_FUNCS(pthread_mutexattr_setpshared) 2195251875Speter # Some systems have setpshared and define PROCESS_SHARED, but don't 2196251875Speter # really support PROCESS_SHARED locks. So, we must validate that we 2197251875Speter # can go through the steps without receiving some sort of system error. 2198251875Speter # Linux and older versions of AIX have this problem. 2199251875Speter APR_IFALLYES(header:pthread.h define:PTHREAD_PROCESS_SHARED func:pthread_mutexattr_setpshared, [ 2200251875Speter AC_CACHE_CHECK([for working PROCESS_SHARED locks], apr_cv_process_shared_works, [ 2201251875Speter AC_TRY_RUN([ 2202251875Speter#include <sys/types.h> 2203251875Speter#include <pthread.h> 2204251875Speter int main() 2205251875Speter { 2206251875Speter pthread_mutex_t mutex; 2207251875Speter pthread_mutexattr_t attr; 2208251875Speter if (pthread_mutexattr_init(&attr)) 2209251875Speter exit(1); 2210251875Speter if (pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED)) 2211251875Speter exit(2); 2212251875Speter if (pthread_mutex_init(&mutex, &attr)) 2213251875Speter exit(3); 2214251875Speter if (pthread_mutexattr_destroy(&attr)) 2215251875Speter exit(4); 2216251875Speter if (pthread_mutex_destroy(&mutex)) 2217251875Speter exit(5); 2218251875Speter exit(0); 2219251875Speter }], [apr_cv_process_shared_works=yes], [apr_cv_process_shared_works=no])]) 2220251875Speter # Override detection of pthread_mutexattr_setpshared 2221251875Speter ac_cv_func_pthread_mutexattr_setpshared=$apr_cv_process_shared_works]) 2222251875Speter 2223251875Speter if test "$ac_cv_func_pthread_mutexattr_setpshared" = "yes"; then 2224251875Speter APR_CHECK_PTHREAD_ROBUST_SHARED_MUTEX 2225251875Speter fi 2226251875Speterfi 2227251875Speter 2228251875Speter# See which lock mechanisms we can support on this system. 2229251875SpeterAPR_IFALLYES(header:semaphore.h func:sem_open func:sem_close dnl 2230251875Speter func:sem_unlink func:sem_post func:sem_wait, 2231251875Speter hasposixser="1", hasposixser="0") 2232251875SpeterAPR_IFALLYES(func:semget func:semctl define:SEM_UNDO, hassysvser="1", 2233251875Speter hassysvser="0") 2234251875SpeterAPR_IFALLYES(func:flock define:LOCK_EX, hasflockser="1", hasflockser="0") 2235251875SpeterAPR_IFALLYES(header:fcntl.h define:F_SETLK, hasfcntlser="1", hasfcntlser="0") 2236251875Speter# note: the current APR use of shared mutex requires /dev/zero 2237251875SpeterAPR_IFALLYES(header:pthread.h define:PTHREAD_PROCESS_SHARED dnl 2238251875Speter func:pthread_mutexattr_setpshared dnl 2239251875Speter file:/dev/zero, 2240251875Speter hasprocpthreadser="1", hasprocpthreadser="0") 2241251875SpeterAPR_IFALLYES(header:OS.h func:create_sem, hasbeossem="1", hasbeossem="0") 2242251875Speter 2243251875Speter# See which lock mechanism we'll select by default on this system. 2244251875Speter# The last APR_DECIDE to execute sets the default. 2245251875Speter# At this stage, we match the ordering in Apache 1.3 2246251875Speter# which is (highest to lowest): sysvsem -> fcntl -> flock. 2247251875Speter# POSIX semaphores and cross-process pthread mutexes are not 2248251875Speter# used by default since they have less desirable behaviour when 2249251875Speter# e.g. a process holding the mutex segfaults. 2250251875Speter# The BEOSSEM decision doesn't require any substitutions but is 2251251875Speter# included here to prevent the fcntl() branch being selected 2252251875Speter# from the decision making. 2253251875SpeterAPR_BEGIN_DECISION([apr_lock implementation method]) 2254251875SpeterAPR_IFALLYES(func:flock define:LOCK_EX, 2255251875Speter APR_DECIDE(USE_FLOCK_SERIALIZE, [4.2BSD-style flock()])) 2256251875SpeterAPR_IFALLYES(header:fcntl.h define:F_SETLK, 2257251875Speter APR_DECIDE(USE_FCNTL_SERIALIZE, [SVR4-style fcntl()])) 2258251875SpeterAPR_IFALLYES(func:semget func:semctl define:SEM_UNDO, 2259251875Speter APR_DECIDE(USE_SYSVSEM_SERIALIZE, [SysV IPC semget()])) 2260251875SpeterAPR_IFALLYES(header:OS.h func:create_sem, 2261251875Speter APR_DECIDE(USE_BEOSSEM, [BeOS Semaphores])) 2262251875Speterif test "x$apr_lock_method" != "x"; then 2263251875Speter APR_DECISION_FORCE($apr_lock_method) 2264251875Speterfi 2265251875SpeterAPR_END_DECISION 2266251875SpeterAC_DEFINE_UNQUOTED($ac_decision) 2267251875Speter 2268251875Speterflockser="0" 2269251875Spetersysvser="0" 2270251875Speterposixser="0" 2271251875Speterprocpthreadser="0" 2272251875Speterfcntlser="0" 2273251875Spetercase $ac_decision in 2274251875Speter USE_FLOCK_SERIALIZE ) 2275251875Speter flockser="1" 2276251875Speter ;; 2277251875Speter USE_FCNTL_SERIALIZE ) 2278251875Speter fcntlser="1" 2279251875Speter ;; 2280251875Speter USE_SYSVSEM_SERIALIZE ) 2281251875Speter sysvser="1" 2282251875Speter ;; 2283251875Speter USE_POSIXSEM_SERIALIZE ) 2284251875Speter posixser="1" 2285251875Speter ;; 2286251875Speter USE_PROC_PTHREAD_SERIALIZE ) 2287251875Speter procpthreadser="1" 2288251875Speter ;; 2289251875Speter USE_BEOSSEM ) 2290251875Speter beossem="1" 2291251875Speter ;; 2292251875Speteresac 2293251875Speter 2294251875Speterif test $hasfcntlser = "1"; then 2295251875SpeterAC_MSG_CHECKING(if fcntl returns EACCES when F_SETLK is already held) 2296251875SpeterAC_TRY_RUN([ 2297251875Speter#ifdef HAVE_STDLIB_H 2298251875Speter#include <stdlib.h> 2299251875Speter#endif 2300251875Speter#ifdef HAVE_SYS_TYPES_H 2301251875Speter#include <sys/types.h> 2302251875Speter#endif 2303251875Speter#ifdef HAVE_SYS_STAT_H 2304251875Speter#include <sys/stat.h> 2305251875Speter#endif 2306251875Speter#ifdef HAVE_SYS_WAIT_H 2307251875Speter#include <sys/wait.h> 2308251875Speter#endif 2309251875Speter#if defined(HAVE_UNISTD_H) 2310251875Speter#include <unistd.h> 2311251875Speter#endif 2312251875Speter#include <fcntl.h> 2313251875Speter#include <errno.h> 2314251875Speter 2315251875Speterint fd; 2316251875Speterstruct flock proc_mutex_lock_it = {0}; 2317251875Speterconst char *fname = "conftest.fcntl"; 2318251875Speter 2319251875Speterint main() 2320251875Speter{ 2321251875Speter int rc, status;; 2322251875Speter proc_mutex_lock_it.l_whence = SEEK_SET; /* from current point */ 2323251875Speter proc_mutex_lock_it.l_type = F_WRLCK; /* set exclusive/write lock */ 2324251875Speter 2325251875Speter fd = creat(fname, S_IRWXU); 2326251875Speter unlink(fname); 2327251875Speter 2328251875Speter if (rc = lockit()) { 2329251875Speter exit(-1); 2330251875Speter } 2331251875Speter 2332251875Speter if (fork()) { 2333251875Speter wait(&status); 2334251875Speter } 2335251875Speter else { 2336251875Speter return(lockit()); 2337251875Speter } 2338251875Speter 2339251875Speter close(fd); 2340251875Speter exit(WEXITSTATUS(status) != EACCES); 2341251875Speter} 2342251875Speter 2343251875Speterint lockit() { 2344251875Speter int rc; 2345251875Speter do { 2346251875Speter rc = fcntl(fd, F_SETLK, &proc_mutex_lock_it); 2347251875Speter } while ( rc < 0 && errno == EINTR); 2348251875Speter 2349251875Speter return (rc < 0) ? errno : 0; 2350251875Speter}], [apr_fcntl_tryacquire_eacces=1], [apr_fcntl_tryacquire_eacces=0], [apr_fcntl_tryacquire_eacces=0]) 2351251875Speterfi 2352251875Speter 2353251875Speterif test "$apr_fcntl_tryacquire_eacces" = "1"; then 2354251875Speter AC_DEFINE(FCNTL_TRYACQUIRE_EACCES, 1, [Define if fcntl returns EACCES when F_SETLK is already held]) 2355251875Speter AC_MSG_RESULT(yes) 2356251875Speterelse 2357251875Speter AC_MSG_RESULT(no) 2358251875Speterfi 2359251875Speter 2360251875Speter 2361251875SpeterAC_SUBST(hasflockser) 2362251875SpeterAC_SUBST(hassysvser) 2363251875SpeterAC_SUBST(hasposixser) 2364251875SpeterAC_SUBST(hasfcntlser) 2365251875SpeterAC_SUBST(hasprocpthreadser) 2366251875SpeterAC_SUBST(flockser) 2367251875SpeterAC_SUBST(sysvser) 2368251875SpeterAC_SUBST(posixser) 2369251875SpeterAC_SUBST(fcntlser) 2370251875SpeterAC_SUBST(procpthreadser) 2371251875SpeterAC_SUBST(pthreadser) 2372251875Speter 2373251875SpeterAC_MSG_CHECKING(if all interprocess locks affect threads) 2374251875Speterif test "x$apr_process_lock_is_global" = "xyes"; then 2375251875Speter proclockglobal="1" 2376251875Speter AC_MSG_RESULT(yes) 2377251875Speterelse 2378251875Speter proclockglobal="0" 2379251875Speter AC_MSG_RESULT(no) 2380251875Speterfi 2381251875Speter 2382251875SpeterAC_SUBST(proclockglobal) 2383251875Speter 2384251875SpeterAC_MSG_CHECKING(if POSIX sems affect threads in the same process) 2385251875Speterif test "x$apr_posixsem_is_global" = "xyes"; then 2386251875Speter AC_DEFINE(POSIXSEM_IS_GLOBAL, 1, 2387251875Speter [Define if POSIX semaphores affect threads within the process]) 2388251875Speter AC_MSG_RESULT(yes) 2389251875Speterelse 2390251875Speter AC_MSG_RESULT(no) 2391251875Speterfi 2392251875Speter 2393251875SpeterAC_MSG_CHECKING(if SysV sems affect threads in the same process) 2394251875Speterif test "x$apr_sysvsem_is_global" = "xyes"; then 2395251875Speter AC_DEFINE(SYSVSEM_IS_GLOBAL, 1, 2396251875Speter [Define if SysV semaphores affect threads within the process]) 2397251875Speter AC_MSG_RESULT(yes) 2398251875Speterelse 2399251875Speter AC_MSG_RESULT(no) 2400251875Speterfi 2401251875Speter 2402251875SpeterAC_MSG_CHECKING(if fcntl locks affect threads in the same process) 2403251875Speterif test "x$apr_fcntl_is_global" = "xyes"; then 2404251875Speter AC_DEFINE(FCNTL_IS_GLOBAL, 1, 2405251875Speter [Define if fcntl locks affect threads within the process]) 2406251875Speter AC_MSG_RESULT(yes) 2407251875Speterelse 2408251875Speter AC_MSG_RESULT(no) 2409251875Speterfi 2410251875Speter 2411251875SpeterAC_MSG_CHECKING(if flock locks affect threads in the same process) 2412251875Speterif test "x$apr_flock_is_global" = "xyes"; then 2413251875Speter AC_DEFINE(FLOCK_IS_GLOBAL, 1, 2414251875Speter [Define if flock locks affect threads within the process]) 2415251875Speter AC_MSG_RESULT(yes) 2416251875Speterelse 2417251875Speter AC_MSG_RESULT(no) 2418251875Speterfi 2419251875Speter 2420251875Speterdnl ----------------------------- Checking for /dev/random 2421251875SpeterAC_MSG_CHECKING(for entropy source) 2422251875Speter 2423251875Speterwhy_no_rand="" 2424251875Speter 2425251875SpeterAC_ARG_WITH(egd, 2426251875Speter [ --with-egd[[=DIR]] use EGD-compatible socket], 2427251875Speter [ AC_DEFINE(HAVE_EGD, 1, [Define if EGD is supported]) 2428251875Speter if test "$withval" = "yes"; then 2429251875Speter AC_DEFINE_UNQUOTED(EGD_DEFAULT_SOCKET, ["/var/run/egd-pool","/dev/egd-pool","/etc/egd-pool","/etc/entropy"], 2430251875Speter [Define to list of paths to EGD sockets]) 2431251875Speter else 2432251875Speter AC_DEFINE_UNQUOTED(EGD_DEFAULT_SOCKET, ["$withval"]) 2433251875Speter fi 2434251875Speter AC_MSG_RESULT(EGD-compatible daemon) 2435251875Speter rand="1" 2436251875Speter ]) 2437251875Speter 2438251875Speterif test "$rand" != "1"; then 2439251875Speter AC_ARG_WITH(devrandom, 2440251875Speter [ --with-devrandom[[=DEV]] use /dev/random or compatible [[searches by default]]], 2441251875Speter [ apr_devrandom="$withval" ], [ apr_devrandom="yes" ]) 2442251875Speter 2443251875Speter if test "$apr_devrandom" = "yes"; then 2444251875Speter # /dev/random on OpenBSD doesn't provide random data, so 2445251875Speter # prefer /dev/arandom, which does; see random(4). 2446251875Speter for f in /dev/arandom /dev/urandom /dev/random; do 2447251875Speter if test -r $f; then 2448251875Speter apr_devrandom=$f 2449251875Speter rand=1 2450251875Speter break 2451251875Speter fi 2452251875Speter done 2453251875Speter elif test "$apr_devrandom" != "no"; then 2454251875Speter if test -r "$apr_devrandom"; then 2455251875Speter rand="1" 2456251875Speter else 2457251875Speter AC_ERROR([$apr_devrandom not found or unreadable.]) 2458251875Speter fi 2459251875Speter fi 2460251875Speter 2461251875Speter if test "$rand" = "1"; then 2462251875Speter case $host in 2463251875Speter *os390) 2464251875Speter if test $os_version -lt 1700; then 2465251875Speter rand="0" 2466251875Speter why_no_rand=" ($apr_devrandom unusable on z/OS before V1R7)" 2467251875Speter fi 2468251875Speter ;; 2469251875Speter esac 2470251875Speter fi 2471251875Speter 2472251875Speter if test "$rand" = "1"; then 2473251875Speter AC_DEFINE_UNQUOTED(DEV_RANDOM, ["$apr_devrandom"], [Define to path of random device]) 2474251875Speter AC_MSG_RESULT([$apr_devrandom]) 2475251875Speter fi 2476251875Speterfi 2477251875Speter 2478251875Speterif test "$rand" != "1"; then 2479251875Speter case $host in 2480251875Speter # we have built in support for OS/2 2481251875Speter *-os2*) 2482251875Speter AC_MSG_RESULT([Using OS/2 builtin random]) 2483251875Speter rand="1" 2484251875Speter ;; 2485251875Speter *) 2486251875Speter if test "$rand" != "1"; then 2487251875Speter if test "$ac_cv_lib_truerand_main" = "yes"; then 2488251875Speter AC_DEFINE(HAVE_TRUERAND, 1, [Define if truerand is supported]) 2489251875Speter AC_MSG_RESULT(truerand) 2490251875Speter rand="1" 2491251875Speter else 2492251875Speter AC_MSG_RESULT(not found$why_no_rand) 2493251875Speter rand="0" 2494251875Speter fi 2495251875Speter fi 2496251875Speter ;; 2497251875Speter esac 2498251875Speterfi 2499251875Speter 2500251875SpeterAC_SUBST(rand) 2501251875Speter 2502251875Speterdnl ----------------------------- Checking for File Info Support 2503251875Speterecho "${nl}Checking for File Info Support..." 2504251875SpeterAC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_atimensec, 2505251875Speterstruct stat.st_ctimensec, struct stat.st_mtimensec, struct stat.st_atim.tv_nsec, 2506251875Speterstruct stat.st_ctim.tv_nsec, struct stat.st_mtim.tv_nsec, 2507251875Speterstruct stat.st_atime_n, struct stat.st_ctime_n, struct stat.st_mtime_n],,,[ 2508251875Speter#ifdef HAVE_SYS_TYPES_H 2509251875Speter#include <sys/types.h> 2510251875Speter#endif 2511251875Speter#ifdef HAVE_SYS_STAT_H 2512251875Speter#include <sys/stat.h> 2513251875Speter#endif 2514251875Speter#ifdef HAVE_UNISTD_H 2515251875Speter#include <unistd.h> 2516251875Speter#endif]) 2517251875Speter 2518251875SpeterAPR_CHECK_DIRENT_INODE 2519251875SpeterAPR_CHECK_DIRENT_TYPE 2520251875Speter 2521251875Speterdnl ----------------------------- Checking for UUID Support 2522251875Speterecho "${nl}Checking for OS UUID Support..." 2523251875Speter 2524251875SpeterAC_CHECK_HEADERS(uuid.h uuid/uuid.h sys/uuid.h, break) 2525251875Speter 2526251875Speterapr_revert_save_LIBS=$LIBS 2527251875Speter 2528251875Speter# Prefer the flavor(s) that live in libc; 2529251875SpeterAC_SEARCH_LIBS(uuid_create, uuid) 2530251875SpeterAC_SEARCH_LIBS(uuid_generate, uuid) 2531251875Speterif test "$ac_cv_search_uuid_create" = "none required" -o \ 2532251875Speter "$ac_cv_search_uuid_generate" = "none required"; then 2533251875Speter LIBS=$apr_revert_save_LIBS 2534251875Speterfi 2535251875Speter 2536251875SpeterAC_CHECK_FUNCS(uuid_create uuid_generate) 2537251875Speter 2538251875SpeterAC_CACHE_CHECK([for os uuid usability], [apr_cv_osuuid], [ 2539251875Speter# Ensure this test closely mirrors misc/unix/rand.c! 2540251875Speteruuid_includes=" 2541251875Speter#if defined(HAVE_SYS_TYPES_H) 2542251875Speter#include <sys/types.h> 2543251875Speter#endif 2544251875Speter#if defined(HAVE_UNISTD_H) 2545251875Speter#include <unistd.h> 2546251875Speter#endif 2547251875Speter#if defined(HAVE_UUID_H) 2548251875Speter#include <uuid.h> 2549251875Speter#elif defined(HAVE_UUID_UUID_H) 2550251875Speter#include <uuid/uuid.h> 2551251875Speter#elif defined(HAVE_SYS_UUID_H) 2552251875Speter#include <sys/uuid.h> 2553251875Speter#endif 2554251875Speter" 2555251875Speter apr_cv_osuuid=no 2556251875Speter if test $ac_cv_func_uuid_create = yes; then 2557251875Speter AC_TRY_LINK([$uuid_includes], [ 2558251875Speter uuid_t g; 2559251875Speter uint32_t s; 2560251875Speter uuid_create(&g, &s); 2561251875Speter if (s == uuid_s_ok) s = 0; 2562251875Speter ], [apr_cv_osuuid=yes], [apr_cv_func_uuid_create=no]) 2563251875Speter fi 2564251875Speter if test $ac_cv_func_uuid_generate = yes; then 2565251875Speter AC_TRY_LINK([$uuid_includes], [ 2566251875Speter uuid_t g; 2567251875Speter uuid_generate(g); 2568251875Speter ], [apr_cv_osuuid=yes], [apr_cv_func_uuid_generate=no]) 2569251875Speter fi 2570251875Speter]) 2571251875Speter 2572251875Speterif test $apr_cv_osuuid = yes; then 2573251875Speter osuuid="1" 2574251875Speterelse 2575251875Speter osuuid="0" 2576251875Speter LIBS=$apr_revert_save_LIBS 2577251875Speterfi 2578251875SpeterAC_SUBST(osuuid) 2579251875Speter 2580251875Speter 2581251875Speterdnl ----------------------------- Checking for Time Support 2582251875Speterecho "${nl}Checking for Time Support..." 2583251875Speter 2584251875SpeterAC_CHECK_MEMBERS([struct tm.tm_gmtoff, struct tm.__tm_gmtoff],,,[ 2585251875Speter#include <sys/types.h> 2586251875Speter#include <time.h>]) 2587251875Speter 2588251875Speterdnl ----------------------------- Checking for Networking Support 2589251875Speterecho "${nl}Checking for Networking support..." 2590251875SpeterAPR_TYPE_IN_ADDR 2591251875Speterif test "$ac_cv_type_in_addr" = "yes"; then 2592251875Speter have_in_addr="1" 2593251875Speterelse 2594251875Speter have_in_addr="0" 2595251875Speterfi 2596251875Speter 2597251875SpeterAC_MSG_CHECKING([if fd == socket on this platform]) 2598251875Speterif test "x$file_as_socket" != "x0" ; then 2599251875Speter file_as_socket="1"; 2600251875Speter echo "yes" 2601251875Speterelse 2602251875Speter echo "no" 2603251875Speterfi 2604251875Speter 2605251875SpeterAC_SUBST(have_in_addr) 2606251875SpeterAC_SUBST(file_as_socket) 2607251875Speter 2608251875Speterif test "$ac_cv_func_poll $file_as_socket" = "yes 1"; then 2609251875Speter AC_DEFINE(WAITIO_USES_POLL, 1, 2610251875Speter [Define if apr_wait_for_io_or_timeout() uses poll(2)]) 2611251875Speterfi 2612251875Speter 2613251875Speter# Check the types only if we have gethostbyname_r 2614251875Speterif test "$ac_cv_func_gethostbyname_r" = "yes"; then 2615251875Speter APR_CHECK_GETHOSTBYNAME_R_STYLE 2616251875Speterfi 2617251875Speter 2618251875Speter# Check the types only if we have getservbyname_r 2619251875Speterif test "$ac_cv_func_getservbyname_r" = "yes"; then 2620251875Speter APR_CHECK_GETSERVBYNAME_R_STYLE 2621251875Speterfi 2622251875Speter 2623251875SpeterAPR_CHECK_TCP_NODELAY_INHERITED 2624251875SpeterAPR_CHECK_O_NONBLOCK_INHERITED 2625251875SpeterAPR_CHECK_TCP_NODELAY_WITH_CORK 2626251875Speter 2627251875Speter# Look for a way of corking TCP... 2628251875SpeterAPR_CHECK_DEFINE(TCP_CORK, netinet/tcp.h) 2629251875SpeterAPR_CHECK_DEFINE(TCP_NOPUSH, netinet/tcp.h) 2630251875Speterapr_tcp_nopush_flag="0" 2631251875Speterhave_corkable_tcp="0" 2632251875Speterif test "x$ac_cv_define_TCP_CORK" = "xyes"; then 2633251875Speter apr_tcp_nopush_flag="TCP_CORK" 2634251875Speter have_corkable_tcp="1" 2635251875Speterelse 2636251875Speter case $host in 2637251875Speter *linux*) 2638251875Speter AC_EGREP_CPP(yes,[ 2639251875Speter#include <linux/socket.h> 2640251875Speter#ifdef TCP_CORK 2641251875Speteryes 2642251875Speter#endif 2643251875Speter ],[ 2644251875Speter apr_tcp_nopush_flag="3" 2645251875Speter have_corkable_tcp="1" 2646251875Speter ]) 2647251875Speter ;; 2648251875Speter *) 2649251875Speter ;; 2650251875Speter esac 2651251875Speterfi 2652251875Speterif test "x$ac_cv_define_TCP_NOPUSH" = "xyes"; then 2653251875Speter apr_tcp_nopush_flag="TCP_NOPUSH" 2654251875Speter have_corkable_tcp="1" 2655251875Speterfi 2656251875Speter 2657251875SpeterAPR_CHECK_DEFINE(SO_ACCEPTFILTER, sys/socket.h) 2658251875Speterif test "x$ac_cv_define_SO_ACCEPTFILTER" = "xyes"; then 2659251875Speter acceptfilter="1" 2660251875Speterelse 2661251875Speter acceptfilter="0" 2662251875Speterfi 2663251875Speter 2664251875SpeterAPR_CHECK_SCTP 2665251875SpeterAPR_CHECK_MCAST 2666251875Speter 2667251875SpeterAC_SUBST(apr_tcp_nopush_flag) 2668251875SpeterAC_SUBST(have_corkable_tcp) 2669251875SpeterAC_SUBST(acceptfilter) 2670251875SpeterAC_SUBST(have_sctp) 2671251875Speter 2672251875SpeterAC_CHECK_FUNCS(set_h_errno) 2673251875Speter 2674251875Speterecho "${nl}Checking for IPv6 Networking support..." 2675251875Speterdnl Start of checking for IPv6 support... 2676251875Speter 2677251875SpeterAC_ARG_ENABLE(ipv6, 2678251875Speter [ --disable-ipv6 Disable IPv6 support in APR.], 2679251875Speter [ if test "$enableval" = "no"; then 2680251875Speter user_disabled_ipv6=1 2681251875Speter fi ], 2682251875Speter [ user_disabled_ipv6=0 ] ) 2683251875Speter 2684251875Spetercase $host in 2685251875Speter *) 2686251875Speter broken_ipv6=0 2687251875Speteresac 2688251875Speter 2689251875SpeterAC_SEARCH_LIBS(getaddrinfo, socket inet6) 2690251875SpeterAC_SEARCH_LIBS(gai_strerror, socket inet6) 2691251875SpeterAC_SEARCH_LIBS(getnameinfo, socket inet6) 2692251875SpeterAC_CHECK_FUNCS(gai_strerror) 2693251875SpeterAPR_CHECK_WORKING_GETADDRINFO 2694251875SpeterAPR_CHECK_NEGATIVE_EAI 2695251875SpeterAPR_CHECK_WORKING_GETNAMEINFO 2696251875SpeterAPR_CHECK_SOCKADDR_IN6 2697251875SpeterAPR_CHECK_SOCKADDR_STORAGE 2698251875Speter 2699251875Speterhave_ipv6="0" 2700251875Speterif test "$user_disabled_ipv6" = 1; then 2701251875Speter ipv6_result="no -- disabled by user" 2702251875Speterelse 2703251875Speter if test "x$broken_ipv6" = "x0"; then 2704251875Speter if test "x$have_sockaddr_in6" = "x1"; then 2705251875Speter if test "x$ac_cv_working_getaddrinfo" = "xyes"; then 2706251875Speter if test "x$ac_cv_working_getnameinfo" = "xyes"; then 2707251875Speter APR_CHECK_GETADDRINFO_ADDRCONFIG 2708251875Speter have_ipv6="1" 2709251875Speter ipv6_result="yes" 2710251875Speter else 2711251875Speter ipv6_result="no -- no getnameinfo" 2712251875Speter fi 2713251875Speter else 2714251875Speter ipv6_result="no -- no working getaddrinfo" 2715251875Speter fi 2716251875Speter else 2717251875Speter ipv6_result="no -- no sockaddr_in6" 2718251875Speter fi 2719251875Speter else 2720251875Speter ipv6_result="no -- the platform has known problems supporting IPv6" 2721251875Speter fi 2722251875Speterfi 2723251875Speter 2724251875SpeterAC_MSG_CHECKING(if APR supports IPv6) 2725251875SpeterAC_MSG_RESULT($ipv6_result) 2726251875Speter 2727251875SpeterAC_SUBST(have_ipv6) 2728251875Speter 2729251875Speter# hstrerror is only needed if IPv6 is not enabled, 2730251875Speter# so getaddrinfo/gai_strerror are not used. 2731251875Speterif test $have_ipv6 = 0; then 2732251875Speter AC_SEARCH_LIBS(hstrerror, resolv, 2733251875Speter [AC_DEFINE(HAVE_HSTRERROR, 1, [Define if hstrerror is present])]) 2734251875Speterfi 2735251875Speter 2736251875Speterdnl Check for langinfo support 2737251875Speter 2738251875SpeterAC_CHECK_HEADERS(langinfo.h) 2739251875SpeterAC_CHECK_FUNCS(nl_langinfo) 2740251875Speter 2741251875Speterdnl ------------------------------ Defaults for some platform nuances 2742251875Speter 2743251875Speterdnl Do we have a Win32-centric Unicode FS? 2744251875SpeterAPR_SETIFNULL(have_unicode_fs, [0]) 2745251875SpeterAC_SUBST(have_unicode_fs) 2746251875Speter 2747251875SpeterAPR_SETIFNULL(apr_has_xthread_files, [0]) 2748251875SpeterAC_SUBST(apr_has_xthread_files) 2749251875Speter 2750251875SpeterAPR_SETIFNULL(apr_procattr_user_set_requires_password, [0]) 2751251875SpeterAC_SUBST(apr_procattr_user_set_requires_password) 2752251875Speter 2753251875SpeterAPR_SETIFNULL(apr_thread_func, []) 2754251875SpeterAC_SUBST(apr_thread_func) 2755251875Speter 2756251875SpeterAPR_SETIFNULL(apr_has_user, [1]) 2757251875SpeterAC_SUBST(apr_has_user) 2758251875Speter 2759251875Speterdnl ----------------------------- Finalize the variables 2760251875Speter 2761251875Speterecho "${nl}Restore user-defined environment settings..." 2762251875Speter 2763251875SpeterAPR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_) 2764251875SpeterAPR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_) 2765251875SpeterAPR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_) 2766251875SpeterAPR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_) 2767251875SpeterAPR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_) 2768251875SpeterAC_SUBST(NOTEST_CPPFLAGS) 2769251875SpeterAC_SUBST(NOTEST_CFLAGS) 2770251875SpeterAC_SUBST(NOTEST_LDFLAGS) 2771251875SpeterAC_SUBST(NOTEST_LIBS) 2772251875SpeterAC_SUBST(NOTEST_INCLUDES) 2773251875Speter 2774251875Speterdnl ----------------------------- Construct the files 2775251875Speter 2776269847SpeterAC_SUBST(INTERNAL_CPPFLAGS) 2777251875SpeterAC_SUBST(LDLIBS) 2778251875SpeterAC_SUBST(INCLUDES) 2779251875SpeterAC_SUBST(AR) 2780251875SpeterAC_SUBST(RM) 2781251875SpeterAC_SUBST(OSDIR) 2782251875SpeterAC_SUBST(DEFAULT_OSDIR) 2783251875SpeterAC_SUBST(EXEEXT) 2784251875SpeterAC_SUBST(LIBTOOL_LIBS) 2785251875Speter 2786269847Speter# Use -no-install or -no-fast-install to link the test 2787269847Speter# programs on all platforms but Darwin, where it would cause 2788269847Speter# the programs to be linked against installed versions of 2789269847Speter# libapr instead of those just built. 2790251875Spetercase $host in 2791269847Speter *-apple-darwin*) 2792269847Speter LT_NO_INSTALL="" 2793269847Speter ;; 2794269847Speter *-mingw*) 2795269847Speter LT_NO_INSTALL="-no-fast-install" 2796269847Speter ;; 2797269847Speter *) 2798269847Speter LT_NO_INSTALL="-no-install" 2799269847Speter ;; 2800251875Speteresac 2801251875SpeterAC_SUBST(LT_NO_INSTALL) 2802251875Speter 2803251875Speter# 2804251875Speter# BSD/OS (BSDi) needs to use a different include syntax in the Makefiles 2805251875Speter# 2806251875Spetercase $host in 2807251875Speter*bsdi*) 2808251875Speter # Check whether they've installed GNU make 2809251875Speter if make --version > /dev/null 2>&1; then 2810251875Speter INCLUDE_RULES="include $apr_buildout/apr_rules.mk" 2811251875Speter INCLUDE_OUTPUTS="include $apr_srcdir/build-outputs.mk" 2812251875Speter else 2813251875Speter # BSDi make 2814251875Speter INCLUDE_RULES=".include \"$apr_buildout/apr_rules.mk\"" 2815251875Speter INCLUDE_OUTPUTS=".include \"$apr_srcdir/build-outputs.mk\"" 2816251875Speter fi 2817251875Speter ;; 2818251875Speter*) 2819251875Speter INCLUDE_RULES="include $apr_buildout/apr_rules.mk" 2820251875Speter INCLUDE_OUTPUTS="include $apr_srcdir/build-outputs.mk" 2821251875Speter ;; 2822251875Speteresac 2823251875SpeterAC_SUBST(INCLUDE_RULES) 2824251875SpeterAC_SUBST(INCLUDE_OUTPUTS) 2825251875Speter 2826251875SpeterAC_CONFIG_FILES([Makefile 2827251875Speter include/apr.h 2828251875Speter build/apr_rules.mk 2829251875Speter build/pkg/pkginfo 2830251875Speter apr-$APR_MAJOR_VERSION-config:apr-config.in 2831251875Speter apr.pc]) 2832251875Speter 2833251875Speterif test -d $srcdir/test; then 2834251875Speter AC_CONFIG_FILES([test/Makefile test/internal/Makefile]) 2835251875Speterfi 2836251875Speter 2837251875Speterdir=include/arch/unix 2838251875Spetertest -d $dir || $MKDIR $dir 2839251875Speter 2840251875SpeterAC_CONFIG_COMMANDS([default], [ 2841251875Speter# Commands run at the end of config.status: 2842251875Speterfor i in $APR_SAVE_HEADERS; do 2843251875Speter if cmp -s $i $i.save 2>/dev/null; then 2844251875Speter mv $i.save $i 2845251875Speter AC_MSG_NOTICE([$i is unchanged]) 2846251875Speter fi 2847251875Speter rm -f $i.save 2848251875Speterdone 2849251875Speterchmod +x apr-$APR_MAJOR_VERSION-config 2850251875Speter],[ 2851251875Speterdnl This section is expanded by configure UNQUOTED so variable 2852251875Speterdnl references must be backslash-escaped as necessary. 2853251875Speter 2854251875Speter# Commands run at the beginning of config.status: 2855251875SpeterAPR_SAVE_HEADERS="include/apr.h include/arch/unix/apr_private.h" 2856251875SpeterAPR_MAJOR_VERSION=$APR_MAJOR_VERSION 2857251875SpeterAPR_PLATFORM=$host 2858251875Speter 2859251875Speterfor apri in \${APR_SAVE_HEADERS}; do 2860251875Speter test -r \${apri} && mv \${apri} \${apri}.save 2861251875Speterdone 2862251875Speter]) 2863251875Speter 2864251875SpeterAC_OUTPUT 2865