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