AC_MSG_NOTICE([With dl])
fi
- AC_ARG_WITH(pthreads,AS_HELP_STRING([--with-pthreads],[Use POSIX Threads]))
+ AC_ARG_ENABLE(disk-io,
+ AS_HELP_STRING([--enable-disk-io="list of modules"],[Build support for the list of disk I/O modules.
+ Set without a value or omitted, all available modules will be built.
+ See src/DiskIO for a list of available modules, or
+ Programmers Guide section on DiskIO
+ for details on how to build your custom disk module]),
+ [ case $enableval in
+ yes)
+ for dir in $srcdir/src/DiskIO/*; do
+ module="`basename $dir`"
+ if test -d "$dir" && test "$module" != CVS; then
+ AC_MSG_NOTICE([Autodetected $module DiskIO module])
+ MAYBE_DISK_MODULES="$MAYBE_DISK_MODULES $module"
+ fi
+ done
+ AC_DEFINE(USE_DISKIO,1,[DiskIO modules are expected to be available.])
+ ;;
+ no)
+ AC_DEFINE(USE_DISKIO,0,[DiskIO modules are expected to be available.])
+ ;;
+ *)
+ MAYBE_DISK_MODULES=" `echo $enableval| sed -e 's/,/ /g;s/ */ /g'` "
+ AC_DEFINE(USE_DISKIO,1,[DiskIO modules are expected to be available.])
+ ;;
+ esac
+ ],
+ [ if test -z "$MAYBE_DISK_MODULES"; then
+ AC_MSG_NOTICE([Enabling all available DiskIO modules (default)...])
+ for dir in $srcdir/src/DiskIO/*; do
+ module="`basename $dir`"
+ if test -d "$dir" && test "$module" != CVS; then
+ AC_MSG_NOTICE([Autodetected $module DiskIO module])
+ MAYBE_DISK_MODULES="$MAYBE_DISK_MODULES $module"
+ fi
+ done
+ AC_DEFINE(USE_DISKIO,1,[DiskIO modules are expected to be available.])
+ fi ])
+
+ dnl Some autoconf.h defines we might enable later...
+ AC_DEFINE(USE_DISKIO_AIO, 0, [Whether POSIX AIO support is needed. Automatic])
+ AC_DEFINE(USE_DISKIO_DISKTHREADS, 0, [Whether pthreads support is needed. Automatic])
+ USE_AIOPS_WIN32=0
+ use_aio=
+ use_diskthreads=
+
+ dnl Setup the module paths etc.
+ FOUND_DISKIO_AIO=
+ FOUND_DISKIO_BLOCKING=
+ FOUND_DISKIO_DISKDAEMON=
+ FOUND_DISKIO_DISKTHREADS=
+ DISK_LIBS=
+ DISK_MODULES=
+ DISK_LINKOBJS=
+ for module in $MAYBE_DISK_MODULES none; do
+ if test "$module" = "none"; then
+ continue
+ fi
+ if ! test -d $srcdir/src/DiskIO/$module; then
+ AC_MSG_ERROR(disk-io $module does not exist)
+ fi
+ case "$module" in
+ DiskDaemon)
+ if test "$FOUND_DISKIO_DISKDAEMON" = "yes" ; then
+ AC_MSG_ERROR([DiskIO DiskDaemon module listed twice.])
+ fi
+ FOUND_DISKIO_DISKDAEMON="yes"
+ AC_MSG_NOTICE([Enabling DiskDaemon DiskIO module])
+ DISK_LIBS="$DISK_LIBS libDiskDaemon.a"
+ DISK_MODULES="$DISK_MODULES DiskDaemon"
+ DISK_PROGRAMS="$DISK_PROGRAMS DiskIO/DiskDaemon/diskd"
+ DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/DiskDaemon/DiskDaemonDiskIOModule.o"
+ ;;
+ DiskThreads)
+ if test "$FOUND_DISKIO_DISKTHREADS" = "yes" ; then
+ AC_MSG_ERROR([DiskIO DiskThreads module listed twice.])
+ fi
+ FOUND_DISKIO_DISKTHREADS="yes"
+ use_diskthreads="yes"
+ LIBPTHREADS=
+ SAVE_SQUID_CFLAGS="$SQUID_CFLAGS"
+ SAVE_SQUID_CXXFLAGS="$SQUID_CXXFLAGS"
++ AC_ARG_WITH(pthreads,AS_HELP_STRING([--without-pthreads],[Disable POSIX Threads]))
+ if test "$with_pthreads" != "no"; then
+ dnl TODO: this needs to be extended to handle more systems and better
+ dnl REF: http://www.openldap.org/lists/openldap-bugs/200006/msg00070.html
+ dnl REF: http://autoconf-archive.cryp.to/acx_pthread.html
+ case "$host" in
+ mingw|mingw32)
+ USE_AIOPS_WIN32=1
+ AC_MSG_NOTICE([Windows threads support automatically enabled])
+ ;;
+ i386-unknown-freebsd*)
+ SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
+ SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
+ if test "$GCC" = "yes" ; then
+ if test -z "$PRESET_LDFLAGS"; then
+ LDFLAGS="$LDFLAGS -pthread"
+ fi
+ fi
+ ;;
+ *-solaris2.*)
+ if test "$GCC" = "yes" ; then
+ SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -pthreads"
+ SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -pthreads"
+ AC_CHECK_LIB(pthread, main,[LIBPTHREADS="-lpthread"],
+ [ AC_MSG_NOTICE(pthread library required but cannot be found.)
+ use_diskthreads="no"
+ ])
+ else
+ dnl test for -lpthread first. libc version is a stub apparently on Solaris.
+ SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -lpthread"
+ SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -lpthread"
+ AC_CHECK_LIB(pthread, main,[LIBPTHREADS="-lpthread"],
+ [ SQUID_CFLAGS="$SAVE_SQUID_CFLAGS -D_REENTRANT -lpthread -mt"
+ SQUID_CXXFLAGS="$SAVE_SQUID_CXXFLAGS -D_REENTRANT -lpthread -mt"
+ AC_CHECK_LIB(pthread, main,[LIBPTHREADS="-lpthread"],
+ [ AC_MSG_NOTICE(pthread library required but cannot be found.)
+ use_diskthreads="no"
+ ])
+ ])
+ fi
+ ;;
+ *)
+ SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
+ SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
+ AC_CHECK_LIB(pthread, main,[DISK_LIBS="$DISK_LIBS -lpthread"],
+ [ AC_MSG_NOTICE(pthread library required but cannot be found.)
+ use_diskthreads="no"
+ ])
+ ;;
+ esac
+ else
+ AC_MSG_NOTICE([Native pthreads support manually disabled.])
+ use_diskthreads="no"
+ fi
+ if test "$use_diskthreads" = "yes" ; then
+ AC_DEFINE(USE_DISKIO_DISKTHREADS, 1, [Whether pthreads support is needed. Automatic])
+ AC_MSG_NOTICE([Enabling DiskThreads DiskIO module])
+ DISK_LIBS="$DISK_LIBS $LIBPTHREADS libDiskThreads.a"
+ DISK_MODULES="$DISK_MODULES DiskThreads"
+ DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/DiskThreads/DiskThreadsDiskIOModule.o"
+ else
+ AC_DEFINE(USE_DISKIO_DISKTHREADS, 0, [Whether pthreads support is needed. Automatic])
+ AC_MSG_NOTICE([Native pthreads support disabled. DiskThreads module automaticaly disabled.])
+ SQUID_CFLAGS="$SAVE_SQUID_CFLAGS"
+ SQUID_CXXFLAGS="$SAVE_SQUID_CXXFLAGS"
+ fi
+ ;;
+
+ AIO)
+ if test "$FOUND_DISKIO_AIO" = "yes" ; then
+ AC_MSG_ERROR([DiskIO AIO module listed twice.])
+ fi
+ FOUND_DISKIO_AIO="yes"
+ dnl Check for POSIX AIO availability
+ use_aio="yes"
+ LIBAIO=
+ AC_ARG_WITH(aio, AS_HELP_STRING([--without-aio],[Do not use POSIX AIO. Default: auto-detect]))
+ if test "$with_aio" != "no"; then
+ have_aio_header=no
+ AC_CHECK_HEADERS(aio.h,[have_aio_header=yes])
+ dnl On some systems POSIX AIO functions are in librt
+ dnl On some systems POSIX AIO functions are in libaio
+ AC_CHECK_LIB(rt,aio_read,[LIBAIO="-lrt"],AC_CHECK_LIB(aio,aio_read,[LIBAIO="-laio"],[]))
+ dnl Enable AIO if the library and headers are found
+ if test "$LIBAIO" != "" && test "$have_aio_header" = "yes"; then
+ AC_MSG_NOTICE([Native POSIX AIO support detected.])
+ use_aio="yes"
+ else
+ dnl Windows does things differently. We provide wrappers.
+ dnl TODO: Windows really needs its own DiskIO module or its Overlaped IO
+ case "$host_os" in
+ mingw|mingw32)
+ use_aio="yes"
+ AC_MSG_NOTICE([Windows being built. Maybe-enable POSIX AIO.])
+ ;;
+ *)
+ AC_MSG_NOTICE([Native POSIX AIO support not detected. AIO automatically disabled.])
+ use_aio="no"
+ ;;
+ esac
+ fi
+ else
+ AC_MSG_NOTICE([POSIX AIO support manually disabled.])
+ use_aio="no"
+ fi
+ dnl Use the POSIX AIO pieces if we actually need them.
+ if test "$use_aio" = "yes" ; then
+ AC_DEFINE(USE_DISKIO_AIO, 1, [Whether POSIX AIO support is needed. Automatic])
+ DISK_MODULES="$DISK_MODULES AIO"
+ DISK_LIBS="$DISK_LIBS $LIBAIO libAIO.a"
+ DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/AIO/AIODiskIOModule.o"
+ case "$host_os" in
+ mingw|mingw32)
+ USE_AIO_WIN32=1
+ AC_MSG_NOTICE([Replacing AIO DiskIO module with: Windows overlapped I/O support])
+ ;;
+ *)
+ AC_MSG_NOTICE([Enabling AIO DiskIO module])
+ ;;
+ esac
+ else
+ AC_MSG_NOTICE([AIO DiskIO Module disabled. Missing POSIX AIO support.])
+ fi
+ ;;
+
+ Blocking)
+ if test "$FOUND_DISKIO_BLOCKING" = "yes" ; then
+ AC_MSG_ERROR([DiskIO Blocking module listed twice.])
+ fi
+ FOUND_DISKIO_BLOCKING="yes"
+ AC_MSG_NOTICE([Enabling Blocking DiskIO module])
+ DISK_LIBS="$DISK_LIBS libBlocking.a"
+ DISK_MODULES="$DISK_MODULES Blocking"
+ DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/Blocking/BlockingDiskIOModule.o"
+ ;;
+
+ *)
+ AC_MSG_NOTICE([Enabling $module DiskIO module])
+ DISK_LIBS="$DISK_LIBS lib${module}.a"
+ DISK_MODULES="$DISK_MODULES ${module}"
+ DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/${module}/${module}DiskIOModule.o"
+ ;;
+ esac
+ done
+ AC_MSG_NOTICE([IO Modules built: $DISK_MODULES])
+ AC_SUBST(DISK_MODULES)
+ AC_SUBST(DISK_LIBS)
+ AC_SUBST(DISK_PROGRAMS)
+ AC_SUBST(DISK_LINKOBJS)
+ AM_CONDITIONAL([USE_AIOPS_WIN32], [test "$USE_AIOPS_WIN32" = 1])
+ AM_CONDITIONAL([USE_AIO_WIN32], [test "$USE_AIO_WIN32" = 1])
+
+
+ dnl Check what Storage formats are wanted.
+ dnl This version will error out with a message saying why if a required DiskIO is missing.
AC_ARG_ENABLE(storeio,
AS_HELP_STRING([--enable-storeio="list of modules"],[Build support for the list of store I/O modules.
The default is only to build the "ufs" module.