1 ## Copyright (C) 1996-2015 The Squid Software Foundation and contributors
3 ## Squid software is distributed under GPLv2+ license and includes
4 ## contributions from numerous individuals and organizations.
5 ## Please see the COPYING and CONTRIBUTORS files for details.
8 AC_INIT([Squid Web Proxy],[4.0.0-BZR],[http://bugs.squid-cache.org/],[squid])
10 AC_CONFIG_HEADERS([include/autoconf.h])
11 AC_CONFIG_AUX_DIR(cfgaux)
12 AC_CONFIG_SRCDIR([src/main.cc])
13 AM_INIT_AUTOMAKE([tar-ustar nostdinc])
14 AC_REVISION($Revision$)dnl
15 AC_PREFIX_DEFAULT(/usr/local/squid)
18 m4_include([acinclude/ax_with_prog.m4])
19 m4_include([acinclude/init.m4])
20 m4_include([acinclude/squid-util.m4])
21 m4_include([acinclude/compiler-flags.m4])
22 m4_include([acinclude/os-deps.m4])
23 m4_include([acinclude/krb5.m4])
24 m4_include([acinclude/pam.m4])
25 m4_include([acinclude/pkg.m4])
26 m4_include([acinclude/lib-checks.m4])
27 m4_include([acinclude/ax_cxx_compile_stdcxx_11.m4])
28 m4_include([acinclude/ax_cxx_0x_types.m4])
30 PRESET_CFLAGS="$CFLAGS"
31 PRESET_CXXFLAGS="$CXXFLAGS"
32 PRESET_LDFLAGS="$LDFLAGS"
34 dnl Set default LDFLAGS
35 if test "x$LDFLAGS" = "x" ; then
46 # Clang 3.2 on some CPUs requires -march-native to detect correctly.
47 # GCC 4.3+ can also produce faster executables when its used.
48 # But building inside a virtual machine environment has been found to
49 # cause random Illegal Instruction errors due to mis-detection of CPU.
50 AC_ARG_ENABLE(arch-native,
51 AS_HELP_STRING([--disable-arch-native],[Some compilers offer CPU-specific
52 optimizations with the -march=native parameter.
53 This flag disables the optimization. The default is to
54 auto-detect compiler support and use where available.]), [
55 SQUID_YESNO([$enableval],
56 [Unrecognized argument to --disable-arch-native: $enableval])
58 AC_MSG_NOTICE([CPU arch native optimization enabled: ${enable_arch_native:=auto}])
59 if test "x${enable_arch_native}" != "xno"; then
60 SQUID_CC_CHECK_ARGUMENT([squid_cv_check_marchnative],[-march=native])
63 # might be cross-compiling.
64 # NP: BUILDCXXFLAGS defined at the end of configure after CXXFLAGS fully known.
65 AC_ARG_VAR([BUILDCXX],[path to compiler for building compile-time tools. e.g. cf_gen])
66 if test "x$HOSTCXX" != "x" -a "x$BUILDCXX" = "x"; then
67 AC_MSG_WARN([Cross-compiling with HOSTCXX is deprecated. Uses BUILDCXX instead.])
70 if test "x$BUILDCXX" = "x"; then
72 if test "x$squid_cv_check_marchnative" = "xyes"; then
73 CXXFLAGS="$CXXFLAGS -march=native"
78 AC_MSG_CHECKING([simplified host os])
79 simple_host_os=`echo $host_os|sed 's/[0-9].*//g;s/-.*//g'`
80 squid_host_os_version=`echo $host_os|tr -d "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-"`
81 if test -n "$squid_host_os_version"; then
82 squid_host_os="`echo $simple_host_os| sed s/$squid_host_os_version//g`"
84 squid_host_os="$simple_host_os"
86 AC_MSG_RESULT($squid_host_os (version $squid_host_os_version))
87 # on windows squid_host_os is either mingw or cygwin, version is 32
89 # this needs to be before any test is run, to have more standard
90 # functions available on some Unix sysems (e.g. Solaris)
91 if test "x$squid_host_os" = "solaris" -a "x$GCC" != "x" ; then
92 AC_USE_SYSTEM_EXTENSIONS
95 # Check for C++11 compiler support
96 AX_CXX_COMPILE_STDCXX_11([noext],[mandatory])
105 AC_PATH_PROG(SH, sh, /bin/sh)
106 AC_PATH_PROG(FALSE, false, /usr/bin/false)
107 AC_PATH_PROG(TRUE, true, /usr/bin/true)
108 AC_PATH_PROG(MV, mv, $FALSE)
109 AC_PATH_PROG(MKDIR, mkdir, $FALSE)
110 AC_PATH_PROG(LN, ln, cp)
111 AC_PATH_PROG(CHMOD, chmod, $FALSE)
112 AC_PATH_PROG(TR, tr, $FALSE)
113 AC_PATH_PROG(RM, rm, $FALSE)
114 AC_PATH_PROG(CPPUNITCONFIG, cppunit-config, false)
115 dnl Libtool 2.2.6 requires: rm -f
118 AC_PATH_PROG(PERL, perl, none)
119 if test "x$ac_cv_path_PERL" = "xnone"; then
120 AC_MSG_FAILURE([Perl is required to compile Squid. Please install Perl and then re-run configure ])
122 AC_PATH_PROG(POD2MAN, pod2man, $FALSE)
123 AM_CONDITIONAL(ENABLE_POD2MAN_DOC, test "x${ac_cv_path_POD2MAN}" != "x$FALSE")
125 dnl set $(AR) if not provided by the build environment
126 if test "x$AR" = "x"; then
127 AC_PATH_PROG(AR, ar, $FALSE)
132 # pre-define DEFAULT_PREFIX, some modules need it.
133 if test "${prefix}" = "NONE" ; then
134 squid_prefix=$ac_default_prefix
138 AC_DEFINE_UNQUOTED(DEFAULT_PREFIX,[$squid_prefix],[The install prefix])
140 AC_ARG_ENABLE(strict-error-checking,
141 AS_HELP_STRING([--disable-strict-error-checking],[By default squid is compiled
142 with all possible static compiler error-checks enabled.
143 This flag disables the behavior]), [
144 SQUID_YESNO([$enableval],
145 [Unrecognized argument to --disable-strict-error-checking: $enableval])
147 AC_MSG_NOTICE([strict error checking enabled: ${enable_strict_error_checking:=yes}])
149 AC_MSG_CHECKING(whether to use loadable modules)
150 AC_ARG_ENABLE(loadable-modules,
151 AS_HELP_STRING([--disable-loadable-modules],[do not support loadable modules]) , [
152 SQUID_YESNO([$enableval],
153 [Unrecognized argument to --disable-loadable-modules: $enableval])
155 AM_CONDITIONAL(ENABLE_LOADABLE_MODULES, test "x${enable_loadable_modules:=yes}" = "xyes")
156 AC_MSG_RESULT([$enable_loadable_modules])
158 if test "x$enable_loadable_modules" = "xyes";
160 AC_DEFINE(USE_LOADABLE_MODULES, 1, [Support Loadable Modules])
166 # LT_INIT requires libtool v2, might as well state it loud
168 LT_INIT([dlopen],[disable-shared])
169 if ! test "${ac_top_build_prefix}" = "";
171 # LTDL v3-v7 macros assume the autoconf 2.62 variable top_build_prefix is defined
172 # But from autoconf 2.64 its called ac_top_build_prefix and not automatically added to the Makefile
173 # This fixes Linux LTDLv3-v7, and BSD LTDL v2.2
174 top_build_prefix=${ac_top_build_prefix}
175 AC_SUBST(top_build_prefix)
179 dnl LibTool environment is now prepared for setup. Check that it is usable and initialize.
182 # Do we need these unconditionally for "make distcheck" to work?
186 if test "x$enable_loadable_modules" = "xyes";
188 # Why is this needed? Should not LT_INIT (or LT_LIB_DLLOAD) from libtool do that?
189 LIBADD_DL=${lt_cv_dlopen_libs}
190 AC_SUBST([LIBADD_DL])
193 SQUID_CC_GUESS_VARIANT
194 SQUID_CC_GUESS_OPTIONS
196 dnl find out the exe extension for this platform.
197 dnl If it is not empty, use it for CGI as well.
201 if test "x$EXEEXT" = "x" ; then
204 # automake automatically adds .exe when installing binaries
209 AM_CONDITIONAL(ENABLE_WIN32SPECIFIC,[test "x$squid_host_os" = "xmingw"])
210 AM_CONDITIONAL(ENABLE_WIN32_IPC,[test "x$squid_host_os" = "xmingw"])
212 case "$squid_host_os" in
214 AC_PATH_PROG(WIN32_PSAPI, psapi.dll, none)
215 CFLAGS="$CFLAGS -mthreads"
216 CXXFLAGS="$CXXFLAGS -mthreads -static-libgcc -static-libstdc++"
217 if test "x$ac_cv_path_WIN32_PSAPI" = "xnone"; then
218 AC_MSG_NOTICE([PSAPI.DLL is recommended to run Squid on Windows NT Platform])
219 AC_MSG_NOTICE([Please see PSAPI.DLL section on doc/win32-relnotes.html.])
221 AC_DEFINE(HAVE_WIN32_PSAPI,1,[Define if you have PSAPI.DLL on Windows systems])
224 MINGW_LIBS="-lmingwex"
228 # FreeBSD places local libraries and packages in /usr/local
229 CFLAGS="$CFLAGS -I/usr/local/include"
230 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
231 LDFLAGS="$LDFLAGS -L/usr/local/lib -Wl,-R/usr/local/lib"
238 AC_DEFINE_UNQUOTED(CONFIG_HOST_TYPE, "$host",[Host type from configure])
240 AC_DEFINE_UNQUOTED(SQUID_CONFIGURE_OPTIONS, "$ac_configure_args",
241 [configure command line used to configure Squid])
243 CACHE_EFFECTIVE_USER="nobody"
244 AC_ARG_WITH(default-user,
245 AS_HELP_STRING([--with-default-user=USER],[System user account for squid permissions. Default: nobody]),
246 [ CACHE_EFFECTIVE_USER="$withval" ]
248 AC_SUBST(CACHE_EFFECTIVE_USER)
250 DEFAULT_LOG_DIR="$localstatedir/logs"
252 AS_HELP_STRING([--with-logdir=PATH],
253 [Default location for squid logs. default: PREFIX/var/logs]), [
256 AC_MSG_ERROR( --with-logdir requires a directory PATH. --with-logdir=PATH )
259 DEFAULT_LOG_DIR="$withval"
264 AC_SUBST(DEFAULT_LOG_DIR)
266 DEFAULT_PID_FILE="$localstatedir/run/squid.pid"
268 AS_HELP_STRING([--with-pidfile=PATH],
269 [Default location for squid pid file. Default: PREFIX/var/run/squid.pid]), [
272 AC_MSG_ERROR( --with-pidfile requires a file PATH. --with-pidfile=PATH )
275 DEFAULT_PID_FILE="$withval"
279 AC_SUBST(DEFAULT_PID_FILE)
281 DEFAULT_SWAP_DIR="$localstatedir/cache/squid"
283 AS_HELP_STRING([--with-swapdir=PATH],
284 [Default location for squid cache directories. Default: PREFIX/var/cache/squid]), [
287 AC_MSG_ERROR( --with-swapdir requires a directory PATH. --with-swapdir=PATH )
290 DEFAULT_SWAP_DIR="$withval"
294 AC_SUBST(DEFAULT_SWAP_DIR)
296 if test "$squid_cv_compiler" = "gcc"; then
297 GCCVER=`$CC -v 2>&1 | awk '$2 == "version" {print $3}'`
298 GCCVER2=`echo $GCCVER | awk '{print $1 * 100}'`
301 if test $GCCVER2 -lt 300 ; then
302 AC_MSG_FAILURE([GCC $GCCVER causes a coredump on $host.
303 Please use a more recent GCC version])
311 dnl Set Default CFLAGS
312 if test "x$PRESET_CFLAGS" = "x"; then
313 if test "$squid_cv_compiler" = "gcc"; then
316 # sunos has too many warnings for this to be useful
320 # Motorola cc/ld does not like -02 but is ok on -O
321 CFLAGS=`echo $CFLAGS | sed -e 's/-O[0-9]/-O/'`
324 CFLAGS="$squid_cv_cc_option_wall $CFLAGS"
330 # suggested by Rafael Seidl <rafaels@cthulhu.engr.sgi.com>
331 CFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
332 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
333 -Wl,-woff,85,-woff,84,-woff,134 \
334 -nostdinc -I/usr/include -D_BSD_SIGNALS $CFLAGS"
335 CXXFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
336 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
337 -Wl,-woff,85,-woff,84,-woff,134 \
338 -nostdinc -I/usr/include -D_BSD_SIGNALS $CXXFLAGS"
346 dnl set squid required flags
347 if test "$squid_cv_compiler" = "gcc"; then
348 case "$squid_host_os" in
350 dnl Guido Serassio (serassio@squid-cache.org) 20070811
351 dnl Using the latest MinGW (gcc 3.4.5 + mingw-runtime 3.13) cannot build with
352 dnl -Werror -Wmissing-prototypes -Wmissing-declarations
353 dnl TODO: check if the problem will be present in any other newer MinGW release.
354 SQUID_CFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow"
357 SQUID_CFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wcomments -Wshadow"
360 SQUID_CXXFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow"
366 dnl CentOS (and RHEL) still define ntohs() using deprecated C++ features
367 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_wno_deprecated_register],[-Werror -Wno-deprecated-register],[[#include <arpa/inet.h>]],[[int fox=ntohs(1);]])
369 if test "x$enable_strict_error_checking" != "xno"; then
370 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_option_werror"
371 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cxx_option_werror"
374 if test "x$ac_cv_require_wno_deprecated_register" = "xyes"; then
375 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -Wno-deprecated-register"
378 # squid_cv_cc_arg_pipe is set by SQUID_CC_GUESS_OPTIONS
379 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cc_arg_pipe"
380 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_arg_pipe"
382 # possibly include some build info tag into squid -v
383 SQUID_EMBED_BUILD_INFO
385 AC_ARG_ENABLE(optimizations,
386 AS_HELP_STRING([--disable-optimizations],
387 [Do not compile Squid with compiler optimizations enabled.
388 Optimization is good for production builds, but not
389 good for debugging. During development, use
390 --disable-optimizations to reduce compilation times
391 and allow easier debugging. This option implies
392 --disable-inline]), [
393 if test "x$enableval" = "xno" ; then
394 AC_MSG_NOTICE([Disabling compiler optimizations (-O flag)])
395 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9]]*//'`"
396 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-O[[0-9]]*//'`"
401 AH_TEMPLATE(_USE_INLINE_,[Include inline methods into header file])
402 AC_ARG_ENABLE(inline,
403 AS_HELP_STRING([--disable-inline],
404 [Do not compile trivial methods as inline. Squid
405 is coded with much of the code able to be inlined.
406 Inlining is good for production builds, but not
407 good for development. During development, use
408 --disable-inline to reduce compilation times and
409 allow incremental builds to be quick. For
410 production builds, or load tests, use
411 --enable-inline to have squid make all trivial
412 methods inlinable by the compiler.]), [
413 SQUID_YESNO([$enableval],
414 [Unrecognized argument to --disable-inline: $enableval])
416 AC_MSG_NOTICE([inlining optimizations enabled: ${enable_inline:=yes}])
417 SQUID_DEFINE_BOOL(_USE_INLINE_,$enable_inline,
418 [Include inline methods into header file])
419 # to be used by sub-commands
422 AC_ARG_ENABLE(debug-cbdata,
423 AS_HELP_STRING([--enable-debug-cbdata],
424 [Provide some debug information in cbdata]), [
425 SQUID_YESNO([$enableval],
426 [unrecognized argument to --enable-debug-cbdata: $enableval])
428 SQUID_DEFINE_BOOL(USE_CBDATA_DEBUG,${enable_debug_cbdata:=no},
429 [Enable support for cbdata debug information])
430 AC_MSG_NOTICE([cbdata debugging enabled: $enable_debug_cbdata])
433 dnl Nasty hack to get autoconf 2.64 on Linux to run.
434 dnl all other uses of RUN_IFELSE are wrapped inside CACHE_CHECK which breaks on 2.64
435 AC_RUN_IFELSE([AC_LANG_SOURCE([[ int main(int argc, char **argv) { return 0; } ]])],[],[],[:])
437 AH_TEMPLATE(XMALLOC_STATISTICS,[Define to have malloc statistics])
438 AC_ARG_ENABLE(xmalloc-statistics,
439 AS_HELP_STRING([--enable-xmalloc-statistics],
440 [Show malloc statistics in status page]), [
441 SQUID_YESNO([$enableval],
442 [unrecognized argument to --enable-xmalloc-statistics: $enableval])
444 SQUID_DEFINE_BOOL(XMALLOC_STATISTICS,${enable_xmalloc_statistics:=no},
445 [Show malloc statistics in status page])
446 AC_MSG_NOTICE([xmalloc stats display: $enable_xmalloc_statistics])
448 squid_opt_aufs_threads=""
449 AC_ARG_WITH(aufs-threads,
450 AS_HELP_STRING([--with-aufs-threads=N_THREADS],
451 [Tune the number of worker threads for the aufs object store.]), [
454 squid_opt_aufs_threads=$withval
457 AC_MSG_ERROR(--with-aufs-threads expects a numeric argument)
461 if test "x$squid_opt_aufs_threads" != "x"; then
462 AC_MSG_NOTICE([With $squid_opt_aufs_threads aufs threads])
463 AC_DEFINE_UNQUOTED(AUFS_IO_THREADS,$squid_opt_aufs_threads,
464 [Defines how many threads aufs uses for I/O])
467 AC_ARG_WITH(dl, AS_HELP_STRING([--with-dl],[Use dynamic linking]))
468 if test "x$with_dl" = "xyes"; then
469 AC_MSG_NOTICE([With dl])
472 AC_SEARCH_LIBS([shm_open], [rt])
473 if test "x$ac_cv_search_shm_open" != "xno" ; then
474 AC_DEFINE(HAVE_SHM,1,[Support shared memory features])
477 AC_MSG_CHECKING([for DiskIO modules to be enabled])
478 squid_disk_module_candidates=""
479 squid_opt_enable_diskio="auto" #values: no, yes, "auto"(=yes+detect modules)
480 AC_ARG_ENABLE(disk-io,
481 AS_HELP_STRING([--enable-disk-io="list of modules"],
482 [Build support for the list of disk I/O modules.
483 Set without a value or omitted, all available modules will be built.
484 See src/DiskIO for a list of available modules, or
485 Programmers Guide section on DiskIO
486 for details on how to build your custom disk module]), [
490 #do nothing, "auto" is ok
493 squid_opt_enable_diskio="no"
496 squid_opt_enable_diskio="yes"
497 squid_disk_module_candidates=" `echo $enableval| sed -e 's/,/ /g;s/ */ /g'` "
498 SQUID_CLEANUP_MODULES_LIST([squid_disk_module_candidates])
503 # if requested to autodetect, find out what we have
504 if test "x$squid_opt_enable_diskio" = "xauto"; then
505 squid_opt_enable_diskio="yes"
506 SQUID_LOOK_FOR_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
507 if test "x$ac_cv_search_shm_open" = "xno" ; then
509 squid_disk_module_candidates=`echo $squid_disk_module_candidates|sed 's/IpcIo//'`
513 AC_MSG_RESULT([${squid_disk_module_candidates:-none}])
514 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
515 SQUID_DEFINE_BOOL(USE_DISKIO,$squid_opt_enable_diskio,
516 [DiskIO modules are expected to be available.])
520 dnl Some autoconf.h defines we might enable later...
521 AC_ARG_WITH(pthreads,AS_HELP_STRING([--without-pthreads],[Disable POSIX Threads]))
522 AC_ARG_WITH(aio, AS_HELP_STRING([--without-aio],[Do not use POSIX AIO. Default: auto-detect]))
525 squid_opt_use_diskthreads=
528 dnl Setup the module paths etc.
532 AH_TEMPLATE(HAVE_DISKIO_MODULE_AIO, [Whether POSIX AIO Disk I/O module is built])
533 AH_TEMPLATE(HAVE_DISKIO_MODULE_BLOCKING, [Whether Blocking Disk I/O module is built])
534 AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKDAEMON, [Whether DiskDaemon Disk I/O module is built])
535 AH_TEMPLATE(HAVE_DISKIO_MODULE_IPCIO, [Whether IpcIo Disk I/O module is built])
536 AH_TEMPLATE(HAVE_DISKIO_MODULE_MMAPPED, [Whether Mmapped Disk I/O module is built])
537 for module in $squid_disk_module_candidates none; do
539 if test "x$module" = "xnone"; then
542 if ! test -d "$srcdir/src/DiskIO/$module"; then
543 AC_MSG_ERROR(disk-io $module does not exist)
548 dnl Check for POSIX AIO availability
549 squid_opt_use_aio="yes"
551 if test "x$with_aio" != "xno"; then
553 AC_CHECK_HEADERS(aio.h,[have_aio_header=yes])
554 dnl On some systems POSIX AIO functions are in librt
555 dnl On some systems POSIX AIO functions are in libaio
556 AC_CHECK_LIB(rt,aio_read,[AIOLIB="-lrt"],AC_CHECK_LIB(aio,aio_read,[AIOLIB="-laio"],[]))
557 dnl Enable AIO if the library and headers are found
558 if test "x$AIOLIB" != "x" && test "x$have_aio_header" = "xyes"; then
559 AC_MSG_NOTICE([Native POSIX AIO support detected.])
560 squid_opt_use_aio="yes"
562 dnl Windows does things differently. We provide wrappers.
563 dnl TODO: Windows really needs its own DiskIO module or its Overlaped IO
564 case "$squid_host_os" in
566 squid_opt_use_aio="yes"
567 AC_MSG_NOTICE([Windows being built. Maybe-enable POSIX AIO.])
570 AC_MSG_NOTICE([Native POSIX AIO support not detected. AIO automatically disabled.])
571 squid_opt_use_aio="no"
576 AC_MSG_NOTICE([POSIX AIO support manually disabled.])
577 squid_opt_use_aio="no"
579 dnl Use the POSIX AIO pieces if we actually need them.
580 if test "x$squid_opt_use_aio" = "xyes" ; then
581 DISK_MODULES="$DISK_MODULES AIO"
582 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/AIO/AIODiskIOModule.o"
583 AC_DEFINE([HAVE_DISKIO_MODULE_AIO],1,[POSIX AIO Disk I/O module is built])
584 case "$squid_host_os" in
587 AC_MSG_NOTICE([Replacing AIO DiskIO module with: Windows overlapped I/O support])
590 AC_MSG_NOTICE([Enabling AIO DiskIO module])
594 AC_MSG_NOTICE([AIO DiskIO Module disabled. Missing POSIX AIO support.])
599 AC_MSG_NOTICE([Enabling Blocking DiskIO module])
600 DISK_MODULES="$DISK_MODULES Blocking"
601 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/Blocking/BlockingDiskIOModule.o"
602 AC_DEFINE([HAVE_DISKIO_MODULE_BLOCKING],1,[Blocking Disk I/O module is built])
606 case "$squid_host_os" in
608 AC_MSG_NOTICE(["DiskDaemon not supported on MinGW"])
611 AC_MSG_NOTICE([Enabling DiskDaemon DiskIO module])
612 DISK_MODULES="$DISK_MODULES DiskDaemon"
613 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/DiskDaemon/DiskDaemonDiskIOModule.o"
614 AC_DEFINE([HAVE_DISKIO_MODULE_DISKDAEMON],1,[DiskDaemon Disk I/O module is built])
620 squid_opt_use_diskthreads="yes"
622 SQUID_STATE_SAVE([diskthreads_state],[SQUID_CFLAGS SQUID_CXXFLAGS])
623 if test "x$with_pthreads" != "xno"; then
624 dnl TODO: this needs to be extended to handle more systems and better
625 dnl REF: http://www.openldap.org/lists/openldap-bugs/200006/msg00070.html
626 dnl REF: http://autoconf-archive.cryp.to/acx_pthread.html
627 case "$squid_host_os" in
630 AC_MSG_NOTICE([Windows threads support automatically enabled])
633 if test `echo "$squid_host_os_version" | tr -d .` -lt 70 ; then
634 AC_MSG_NOTICE(pthread library requires FreeBSD 7 or later)
635 squid_opt_use_diskthreads="no"
637 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
638 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
639 if test "x$GCC" = "xyes" -a "x$PRESET_LDFLAGS" = "x" ; then
640 LDFLAGS="$LDFLAGS -pthread"
645 if test `echo "$squid_host_os_version" | tr -d .` -lt 52 ; then
646 AC_MSG_NOTICE(pthread library requires OpenBSD 5.2 or later)
647 squid_opt_use_diskthreads="no"
649 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
650 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
651 LDFLAGS="$LDFLAGS -lpthread"
655 if test "x$GCC" = "xyes" ; then
656 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -pthreads"
657 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -pthreads"
658 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
659 AC_MSG_NOTICE(pthread library required but cannot be found.)
660 squid_opt_use_diskthreads="no"
663 dnl test for -lpthread first. libc version is a stub apparently on Solaris.
664 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -lpthread"
665 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -lpthread"
666 AC_SEARCH_LIBS([pthread_create],[pthread thread],[
667 LIBPTHREADS="" #in LIBS
669 AC_MSG_NOTICE(pthread library required but cannot be found.)
670 squid_opt_use_diskthreads="no"
675 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
676 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
677 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
678 AC_MSG_NOTICE(pthread library required but cannot be found.)
679 squid_opt_use_diskthreads="no"
684 AC_MSG_NOTICE([Native pthreads support manually disabled.])
685 squid_opt_use_diskthreads="no"
687 if test "x$squid_opt_use_diskthreads" = "xyes" ; then
688 AC_MSG_NOTICE([Enabling DiskThreads DiskIO module])
689 DISK_MODULES="$DISK_MODULES DiskThreads"
690 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/DiskThreads/DiskThreadsDiskIOModule.o"
691 AC_DEFINE([HAVE_DISKIO_MODULE_DISKTHREADS],1,[DiskThreads Disk I/O module is built])
693 AC_MSG_NOTICE([Native pthreads support disabled. DiskThreads module automaticaly disabled.])
694 SQUID_STATE_ROLLBACK([diskthreads_state])
699 AC_MSG_NOTICE([Enabling IpcIo DiskIO module])
700 if test "x$ac_cv_search_shm_open" = "xno" ; then
701 AC_MSG_ERROR([DiskIO IpcIo module requires shared memory support])
703 DISK_MODULES="$DISK_MODULES IpcIo"
704 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/IpcIo/IpcIoDiskIOModule.o"
705 AC_DEFINE([HAVE_DISKIO_MODULE_IPCIO],1,[IpcIo Disk I/O module is built])
709 dnl TODO: use availability of sys/mman.h and/or mmap to define
710 dnl OR support windows mmap functions
711 if test "x$squid_host_os" = "xmingw" ; then
712 AC_MSG_NOTICE([Mmapped DiskIO is not available on Mingw])
714 AC_MSG_NOTICE([Enabling Mmapped DiskIO module])
715 DISK_MODULES="$DISK_MODULES Mmapped"
716 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/Mmapped/MmappedDiskIOModule.o"
717 AC_DEFINE([HAVE_DISKIO_MODULE_MMAPPED],1,[Mmapped Disk I/O module is built])
722 AC_MSG_NOTICE([Enabling $module DiskIO module])
723 DISK_LIBS="$DISK_LIBS lib${module}.la"
724 DISK_MODULES="$DISK_MODULES ${module}"
725 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/${module}/${module}DiskIOModule.o"
729 AC_MSG_NOTICE([IO Modules built: $DISK_MODULES])
730 AC_SUBST(DISK_MODULES)
732 AC_SUBST(DISK_LINKOBJS)
733 AM_CONDITIONAL([ENABLE_DISKIO_AIO], [test "x$squid_disk_module_candidates_AIO" = "xyes"])
735 AM_CONDITIONAL([ENABLE_WIN32_AIO], [test "x$squid_disk_module_candidates_AIO" = "xyes" -a "x$ENABLE_WIN32_AIO" = "x1"])
736 AM_CONDITIONAL([ENABLE_DISKIO_BLOCKING], [test "x$squid_disk_module_candidates_Blocking" = "xyes"])
737 AM_CONDITIONAL([ENABLE_DISKIO_DISKDAEMON], [test "x$squid_disk_module_candidates_DiskDaemon" = "xyes"])
738 AM_CONDITIONAL([ENABLE_DISKIO_DISKTHREADS], [test "x$squid_disk_module_candidates_DiskThreads" = "xyes"])
739 AC_SUBST(LIBPTHREADS)
740 AM_CONDITIONAL([ENABLE_WIN32_AIOPS], [test "x$squid_disk_module_candidates_DiskThreads" = "xyes" -a "x$ENABLE_WIN32_AIOPS" = "x1"])
741 AM_CONDITIONAL([ENABLE_DISKIO_IPCIO], [test "x$squid_disk_module_candidates_IpcIo" = "xyes"])
742 AM_CONDITIONAL([ENABLE_DISKIO_MMAPPED], [test "x$squid_disk_module_candidates_Mmapped" = "xyes"])
745 dnl Check what Storage formats are wanted.
746 dnl This version will error out with a message saying why if a required DiskIO is missing.
747 squid_opt_enable_storeio=auto
748 AC_ARG_ENABLE([storeio],
749 AS_HELP_STRING([--enable-storeio="list of modules"],
750 [Build support for the list of store I/O modules.
751 The default is only to build the "ufs" module.
752 See src/fs for a list of available modules, or
753 Programmers Guide section <not yet written>
754 for details on how to build your custom store module]), [
757 squid_opt_enable_storeio=auto
760 squid_opt_enable_storeio=no
763 squid_opt_enable_storeio=yes
764 squid_storeio_module_candidates="`echo $enableval| sed -e 's/,/ /g;s/ */ /g'`"
765 # ufs is really always needed as it has low-level routines
766 # if it is a dupe it will be cleaned-up later
767 squid_storeio_module_candidates="$squid_storeio_module_candidates ufs"
771 if test "x$squid_opt_enable_storeio" = "xauto"; then
772 squid_opt_enable_storeio=yes
773 AC_MSG_CHECKING([for available StoreIO modules])
774 SQUID_LOOK_FOR_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
775 AC_MSG_RESULT([$squid_storeio_module_candidates])
778 SQUID_CLEANUP_MODULES_LIST([squid_storeio_module_candidates])
779 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
780 AC_MSG_NOTICE([Store modules built: $squid_storeio_module_candidates])
782 for fs in $squid_storeio_module_candidates none; do
785 if test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
786 "$squid_disk_module_candidates_DiskDaemon" != "yes" ; then
787 AC_MSG_ERROR([Storage diskd module requires DiskIO module: Blocking or DiskDaemon])
791 if test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
792 "$squid_disk_module_candidates_DiskThreads" != "yes" ; then
793 AC_MSG_ERROR([Storage module aufs requires DiskIO module: Blocking or DiskThreads])
797 if test "x$squid_disk_module_candidates_IpcIo" != "xyes" -a \
798 "x$squid_disk_module_candidates_Blocking" != "xyes"; then
799 AC_MSG_ERROR([Storage module Rock requires IpcIo or Blocking DiskIO module])
801 squid_do_build_rock=true
804 squid_do_build_ufs=true
809 AM_CONDITIONAL(HAVE_FS_UFS,[test "x$squid_do_build_ufs" = "xtrue" ])
810 AM_CONDITIONAL(HAVE_FS_ROCK,[test "x$squid_do_build_rock" = "xtrue" ])
811 dnl hack: need to define those even if not used in the build system to
812 dnl make sure that global FS objects are linked to the squid binary.
813 AH_TEMPLATE(HAVE_FS_UFS, "Define to 1 if ufs filesystem module is build")
814 AH_TEMPLATE(HAVE_FS_AUFS, "Define to 1 if aufs filesystem module is build")
815 AH_TEMPLATE(HAVE_FS_DISKD, "Define to 1 if diskd filesystem module is build")
816 AH_TEMPLATE(HAVE_FS_ROCK, "Define to 1 if rock filesystem module is build")
819 dnl got final squid_storeio_module_candidates, build library lists
820 dnl This list will not be needed when each fs library has its own Makefile
822 dnl File system libraries to link executables with.
823 dnl These are the same as STORE_LIBS_TO_BUILD, but with a path
825 for fs in $squid_storeio_module_candidates; do
826 STORE_LIBS_TO_BUILD="$STORE_LIBS_TO_BUILD lib${fs}.la"
827 STORE_LIBS_TO_ADD="$STORE_LIBS_TO_ADD fs/lib${fs}.la"
828 SQUID_TOUPPER_VAR_CONTENTS([fs])
829 AC_DEFINE_UNQUOTED(HAVE_FS_${fs}, 1)
832 AC_SUBST(STORE_LIBS_TO_BUILD)
833 AC_SUBST(STORE_LIBS_TO_ADD)
834 AC_SUBST(STORE_TESTS)
837 dnl At lest one removal policy is always needed.
838 dnl 'lru' removal policy is currently hard-coded by name for tests
839 dnl so we must set it as default.
841 AC_ARG_ENABLE(removal-policies,
842 AS_HELP_STRING([--enable-removal-policies="list of policies"],
843 [Build support for the list of removal policies.
844 The default is only to build the "lru" module.
845 See src/repl for a list of available modules, or
846 Programmers Guide section 9.9 for details on how
847 to build your custom policy]), [
850 SQUID_LOOK_FOR_MODULES([$srcdir/src/repl],[REPL_POLICIES])
855 REPL_POLICIES="`echo $enableval| sed -e 's/,/ /g;s/ */ /g'`"
859 if test "x$REPL_POLICIES" != "x" ; then
860 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/repl],[REPL_POLICIES])
861 AC_MSG_NOTICE([Removal policies to build: $REPL_POLICIES])
862 REPL_OBJS="repl/lib`echo $REPL_POLICIES|sed -e 's% %.a repl/lib%g'`.a"
863 REPL_LIBS="`echo $REPL_OBJS|sed -e 's%repl/%%g'`"
865 AC_SUBST(REPL_POLICIES)
869 AM_CONDITIONAL(ENABLE_PINGER, false)
871 AS_HELP_STRING([--enable-icmp],[Enable ICMP pinging and Network Measurement]),
872 [ if test "x$enableval" = "xyes" ; then
873 AC_MSG_NOTICE([ICMP enabled])
874 AC_DEFINE(USE_ICMP,1,[Define to use Squid ICMP and Network Measurement features (highly recommended!)])
875 AM_CONDITIONAL(ENABLE_PINGER, true)
879 AM_CONDITIONAL(ENABLE_DELAY_POOLS, false)
880 AC_ARG_ENABLE(delay-pools,
881 AS_HELP_STRING([--enable-delay-pools],[Enable delay pools to limit bandwidth usage]),
882 [ if test "x$enableval" = "xyes" ; then
883 AC_MSG_NOTICE([Delay pools enabled])
884 AC_DEFINE([USE_DELAY_POOLS],1,[Traffic management via "delay pools".])
885 AM_CONDITIONAL(ENABLE_DELAY_POOLS, true)
889 dnl disable generic/common adaptation support by default
890 squid_opt_use_adaptation=no
892 squid_opt_use_esi=yes
893 AH_TEMPLATE([USE_SQUID_ESI],
894 [Define to enable the ESI processor and Surrogate header support])
896 AS_HELP_STRING([--enable-esi],
897 [Enable ESI for accelerators. Benefits from expat or libxml2.
898 Enabling ESI will cause squid reverse proxies to be capable
899 of the Edge Acceleration Specification (www.esi.org).]),
900 [squid_opt_use_esi=$enableval], [squid_opt_use_esi=no])
905 if test "x$squid_opt_use_esi" = "xyes" ; then
906 AC_MSG_NOTICE([Enabling ESI processor and Surrogate header support.])
907 AC_DEFINE(USE_SQUID_ESI,1,
908 [Compile the ESI processor and Surrogate header support])
910 AC_MSG_NOTICE([Disabling ESI processor])
913 # ESI support libraries: expat
914 AC_ARG_WITH(expat, AS_HELP_STRING([--without-expat],[Do not use expat for ESI. Default: auto-detect]))
915 if test "x$squid_opt_use_esi" = "xyes" -a "x$with_expat" != "xno" ; then
916 AC_CHECK_LIB([expat], [main], [EXPATLIB="-lexpat"; HAVE_LIBEXPAT=1])
917 AC_CHECK_HEADERS([expat.h])
918 AC_DEFINE_UNQUOTED(HAVE_LIBEXPAT, $HAVE_LIBEXPAT, [Define to 1 if you have the expat library])
919 if test "x$with_expat" = "xyes" -a "x$HAVE_LIBEXPAT" != "x1" ; then
920 AC_MSG_ERROR([Required library expat is not able to be found.])
924 AC_ARG_WITH(libxml2, AS_HELP_STRING([--without-libxml2],[Do not use libxml2 for ESI. Default: auto-detect]))
925 if test "x$squid_opt_use_esi" = "xyes" -a "x$with_libxml2" != "xno" ; then
926 AC_CHECK_LIB([xml2], [main], [XMLLIB="-lxml2"; HAVE_LIBXML2=1])
927 dnl Find the main header and include path...
928 AC_CACHE_CHECK([location of libxml2 include files], [ac_cv_libxml2_include], [
929 AC_CHECK_HEADERS([libxml/parser.h], [], [
930 AC_MSG_NOTICE([Testing in /usr/include/libxml2])
931 SAVED_CPPFLAGS="$CPPFLAGS"
932 CPPFLAGS="-I/usr/include/libxml2 $CPPFLAGS"
933 unset ac_cv_header_libxml_parser_h
934 AC_CHECK_HEADERS([libxml/parser.h], [ac_cv_libxml2_include="-I/usr/include/libxml2"], [
935 AC_MSG_NOTICE([Testing in /usr/local/include/libxml2])
936 CPPFLAGS="-I/usr/local/include/libxml2 $SAVED_CPPFLAGS"
937 unset ac_cv_header_libxml_parser_h
938 AC_CHECK_HEADERS([libxml/parser.h], [ac_cv_libxml2_include="-I/usr/local/include/libxml2"], [
939 AC_MSG_NOTICE([Failed to find libxml2 header file libxml/parser.h])
942 CPPFLAGS="$SAVED_CPPFLAGS"
945 if test "x$ac_cv_libxml2_include" != "x"; then
946 SQUID_CXXFLAGS="$ac_cv_libxml2_include $SQUID_CXXFLAGS"
947 CPPFLAGS="$ac_cv_libxml2_include $CPPFLAGS"
949 dnl Now that we know where to look find the headers...
950 AC_CHECK_HEADERS(libxml/parser.h libxml/HTMLparser.h libxml/HTMLtree.h)
951 AC_DEFINE_UNQUOTED(HAVE_LIBXML2, $HAVE_LIBXML2, [Define to 1 if you have the libxml2 library])
952 if test "x$with_libxml2" = "xyes" -a "$HAVE_LIBXML2" != "1" ; then
953 AC_MSG_ERROR([Required library libxml2 is not able to be found.])
957 AM_CONDITIONAL(USE_ESI, test "x$squid_opt_use_esi" = "xyes")
958 AM_CONDITIONAL(HAVE_LIBEXPAT, test "$HAVE_LIBEXPAT" = 1)
960 AM_CONDITIONAL(HAVE_LIBXML2, test "$HAVE_LIBXML2" = 1)
963 # icap argument handling
964 AC_ARG_ENABLE(icap-client,
965 AS_HELP_STRING([--disable-icap-client],[Disable the ICAP client.]),[
966 SQUID_YESNO([$enableval],[Unrecognized argument to --disable-icap-client: $enableval])
968 SQUID_DEFINE_BOOL(ICAP_CLIENT,${enable_icap_client:=yes}, [Enable ICAP client features in Squid])
969 AM_CONDITIONAL(USE_ICAP_CLIENT, [test "x$enable_icap_client" != "xno" ])
970 if test "x$enable_icap_client" != "xno" ; then
971 ICAP_LIBS="icap/libicap.la"
972 squid_opt_use_adaptation=yes
979 AC_MSG_CHECKING(whether to support eCAP)
981 AS_HELP_STRING([--enable-ecap],[support loadable content adaptation modules]), [
982 case "${enableval}" in
983 yes|no) squid_opt_use_ecap=$enableval ;;
984 *) AC_MSG_ERROR(bad value ${enableval} for --enable-ecap) ;;
986 AC_MSG_RESULT([$squid_opt_use_ecap, explicitly])
988 squid_opt_use_ecap=no;
989 AC_MSG_RESULT([$squid_opt_use_ecap, implicitly])
993 dnl Necessary if the first PKG_CHECK_MODULES call is conditional
996 dnl Perform configuration consistency checks for eCAP
997 if test "x$squid_opt_use_ecap" != "xno";
999 dnl eCAP support requires loadable modules, which are enabled by default
1000 if test "x$enable_loadable_modules" != "xyes"
1002 AC_MSG_ERROR([eCAP support requires loadable modules. Please do not use --disable-loadable-modules with --enable-ecap.])
1005 if test -n "$PKG_CONFIG"; then
1006 dnl eCAP support requires libecap.
1007 dnl This Squid supports libecap v1.0.x.
1008 dnl Use EXT_ prefix to distinguish external libecap (that we check for
1009 dnl here) from our own convenience ecap library in Makefiles.
1010 PKG_CHECK_MODULES([EXT_LIBECAP],[libecap >= 1.0 libecap < 1.1])
1012 AC_MSG_NOTICE([eCAP support requires pkg-config to verify the correct library version. Trouble may follow.])
1016 AM_CONDITIONAL(USE_ECAP, test "x$squid_opt_use_ecap" = "xyes")
1017 if test "x$squid_opt_use_ecap" = "xyes";
1019 AC_DEFINE(USE_ECAP,1,[Enable eCAP support])
1020 ECAP_LIBS="ecap/libsquid-ecap.la"
1021 squid_opt_use_adaptation=yes
1023 AC_DEFINE(USE_ECAP,0,[Disable eCAP support])
1026 dnl convenience library
1030 dnl enable adaptation if requested by specific adaptation mechanisms
1031 AM_CONDITIONAL(USE_ADAPTATION, test "x$squid_opt_use_adaptation" = "xyes")
1032 if test "x$squid_opt_use_adaptation" = "xyes"
1034 AC_DEFINE(USE_ADAPTATION,1,[common adaptation support])
1035 ADAPTATION_LIBS="adaptation/libadaptation.la"
1037 AC_DEFINE(USE_ADAPTATION,0,[common adaptation support])
1040 AC_SUBST(ADAPTATION_LIBS)
1042 test "x$squid_host_os" = "xmingw" && enable_wccp=no
1044 AS_HELP_STRING([--disable-wccp],[Disable Web Cache Coordination Protocol]), [
1045 SQUID_YESNO([$enableval],[unrecognized argument to --disable-wccp: $enableval])
1047 SQUID_DEFINE_BOOL(USE_WCCP, ${enable_wccp:=yes}, [Define to enable WCCP])
1048 AC_MSG_NOTICE([Web Cache Coordination Protocol enabled: $enable_wccp])
1050 test "x$squid_host_os" = "xmingw" && enable_wccpv2=no
1051 AC_ARG_ENABLE(wccpv2,
1052 AS_HELP_STRING([--disable-wccpv2],
1053 [Disable Web Cache Coordination V2 Protocol]), [
1054 SQUID_YESNO([$enableval],
1055 [unrecognized argument to --disable-wccpv2: $enableval])
1057 SQUID_DEFINE_BOOL(USE_WCCPv2,${enable_wccpv2:=yes},
1058 [Define to enable WCCP V2])
1059 AC_MSG_NOTICE([Web Cache Coordination V2 Protocol enabled: $enable_wccpv2])
1061 AC_ARG_ENABLE(kill-parent-hack,
1062 AS_HELP_STRING([--enable-kill-parent-hack],[Kill parent on shutdown]), [
1063 SQUID_YESNO([$enableval],
1064 [unrecognized argument to --enable-kill-parent-hack: $enableval])
1066 SQUID_DEFINE_BOOL(KILL_PARENT_OPT,${enable_kill_parent_hack:=no},
1067 [A dangerous feature which causes Squid to kill its parent
1068 process (presumably the RunCache script) upon receipt
1069 of SIGTERM or SIGINT. Deprecated, Use with caution.])
1070 AC_MSG_NOTICE([Kill parent on shutdown hack enabled: $enable_kill_parent_hack])
1073 AS_HELP_STRING([--disable-snmp],[Disable SNMP monitoring support]), [
1074 SQUID_YESNO([$enableval],
1075 [unrecognized argument to --disable-snmp: $enableval])
1077 SQUID_DEFINE_BOOL(SQUID_SNMP,${enable_snmp:=yes},
1078 [Define to enable SNMP monitoring of Squid])
1079 AM_CONDITIONAL(ENABLE_SNMP, [test "x$enable_snmp" = "xyes"])
1080 if test "x$enable_snmp" = "xyes"; then
1081 SNMPLIB='../lib/snmplib/libsnmplib.la'
1083 AC_MSG_NOTICE([SNMP support enabled: $enable_snmp])
1086 AC_ARG_ENABLE(cachemgr-hostname,
1087 AS_HELP_STRING([--enable-cachemgr-hostname=hostname],
1088 [Make cachemgr.cgi default to this host.
1089 If unspecified, uses the name of the build-host]), [
1092 AC_DEFINE(CACHEMGR_HOSTNAME,[getfullhostname()],
1093 [If you are upset that the cachemgr.cgi form comes up with the hostname field blank, then define this to getfullhostname()])
1094 AC_MSG_NOTICE([Cachemgr default hostname == host where cachemgr runs])
1100 AC_DEFINE_UNQUOTED(CACHEMGR_HOSTNAME,"${enableval}")
1101 AC_MSG_NOTICE([Cachemgr default hostname set to ${enableval}])
1107 AS_HELP_STRING([--disable-eui],
1108 [Disable use of ARP / MAC/ EUI (ether address)]), [
1109 SQUID_YESNO([$enableval],[--disable-eui expects no arguments])
1111 if test "x${enable_eui:=yes}" = "xyes" ; then
1112 case "$squid_host_os" in
1113 linux|solaris|freebsd|openbsd|netbsd|cygwin)
1120 AC_MSG_WARN([EUI support probably will not work on host $host.])
1123 # iphlpapi.h check delayed after winsock2.h
1138 #include <sys/types.h>
1139 #include <sys/socket.h>
1142 # OpenBSD, FreeBSD and NetBSD requires sys/param.h to be included before sysctl.h and net/if_dl.h
1147 #if HAVE_SYS_PARAM_H
1148 #include <sys/param.h>
1153 AC_MSG_NOTICE([EUI (MAC address) controls enabled: $enable_eui])
1154 SQUID_DEFINE_BOOL(USE_SQUID_EUI,$enable_eui,
1155 [Define this to include code which lets you use ethernet addresses. This code uses API initially defined in 4.4-BSD.])
1156 AM_CONDITIONAL(USE_SQUID_EUI, [test "x$enable_eui" = "xyes" ])
1160 AS_HELP_STRING([--disable-htcp],[Disable HTCP protocol support]), [
1161 SQUID_YESNO([$enableval],
1162 [unrecognized argument to --disable-htcp: $enableval])
1164 SQUID_DEFINE_BOOL(USE_HTCP,${enable_htcp:=yes},
1165 [Define this to include code for the Hypertext Cache Protocol (HTCP)])
1166 AM_CONDITIONAL(ENABLE_HTCP, [test "x$enable_htcp" = "xyes"])
1167 AC_MSG_NOTICE([HTCP support enabled: $enable_htcp])
1169 # Cryptograhic libraries
1171 AS_HELP_STRING([--without-nettle],[Compile without the Nettle crypto library.]),[
1172 case "$with_nettle" in
1174 : # Nothing special to do here
1177 if test ! -d "$withval" ; then
1178 AC_MSG_ERROR([--with-nettle path does not point to a directory])
1180 NETTLELIBDIR="-L$with_nettle/lib"
1181 CPPFLAGS="-I$with_nettle/include $CPPFLAGS"
1185 if test "x$with_nettle" != "xno" ; then
1186 AC_CHECK_LIB(nettle, nettle_md5_init,[
1187 NETTLELIB="$NETTLELIBDIR -lnettle"
1188 AC_CHECK_HEADERS(nettle/md5.h)
1190 if test "x$with_nettle" != "xno" ; then
1191 # Base64 uses the nettle 3.0 API
1192 # which matters on 64-bit systems
1193 AC_CHECK_HEADERS(nettle/base64.h)
1194 AC_MSG_CHECKING([for Nettle 3.0 API compatibility])
1195 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1198 # include <nettle/base64.h>
1200 uint8_t inData[10]; inData[0] = '\0';
1202 struct base64_decode_ctx ctx;
1203 base64_decode_init(&ctx);
1204 uint8_t outData[10];
1206 if (!base64_decode_update(&ctx, &dstLen, outData, srcLen, inData) ||
1207 !base64_decode_final(&ctx)) {
1210 ]])],[AC_MSG_RESULT(yes)
1211 AC_DEFINE(HAVE_NETTLE30_BASE64,1,[set to 1 if Nettle 3.0 API will link])
1212 ],[AC_MSG_RESULT(no)])
1215 AC_MSG_NOTICE([Using Nettle cryptographic library: ${with_nettle:=yes}])
1218 dnl Check for libcrypt
1220 dnl Some of our helpers use crypt(3) which may be in libc, or in
1221 dnl libcrypt (eg FreeBSD)
1222 AC_CHECK_LIB(crypt, crypt, [CRYPTLIB="-lcrypt"])
1223 dnl Solaris10 provides MD5 natively through libmd5
1224 AC_CHECK_LIB(md5, MD5Init, [CRYPTLIB="$CRYPTLIB -lmd5"])
1229 dnl User may want to disable GnuTLS
1231 AS_HELP_STRING([--without-gnutls],
1232 [Do not use GnuTLS for SSL. Default: auto-detect]), [
1233 case "$with_gnutls" in
1235 : # Nothing special to do here
1238 if test ! -d "$withval" ; then
1239 AC_MSG_ERROR([--with-gnutls path does not point to a directory])
1241 LIBGNUTLS_PATH="-L$with_gnutls/lib"
1242 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1245 AH_TEMPLATE(USE_GNUTLS,[GnuTLS support is available])
1246 if test "x$with_gnutls" != "xno"; then
1247 AC_CHECK_HEADERS(gnutls/gnutls.h gnutls/x509.h)
1249 # User may have provided a custom location for GnuTLS. Otherwise...
1250 SQUID_STATE_SAVE(squid_gnutls_state)
1251 LIBS="$LIBS $LIBGNUTLS_PATH"
1253 # auto-detect using pkg-config
1254 PKG_CHECK_MODULES([LIBGNUTLS],[gnutls >= 3.1.5],,[
1255 ## find the package without pkg-config
1256 ## check that the library is actually new enough.
1257 ## by testing for a 3.1.5+ function which we use
1258 AC_CHECK_LIB(gnutls,gnutls_certificate_verify_peers3,[LIBGNUTLS_LIBS="-lgnutls"])
1261 SQUID_STATE_ROLLBACK(squid_gnutls_state) #de-pollute LIBS
1263 if test "x$with_gnutls" = "xyes" -a "x$LIBGNUTLS_LIBS" = "x"; then
1264 AC_MSG_ERROR([Required GnuTLS library not found])
1266 if test "x$LIBGNUTLS_LIBS" != "x" ; then
1267 CXXFLAGS="$LIBGNUTLS_CFLAGS $CXXFLAGS"
1268 SSLLIB="$LIBGNUTLS_PATH $LIBGNUTLS_LIBS $SSLLIB"
1269 AC_DEFINE(USE_GNUTLS,1,[GnuTLS support is available])
1274 AC_MSG_NOTICE([GnuTLS library support: ${with_gnutls:=auto} ${LIBGNUTLS_PATH} ${LIBGNUTLS_LIBS}])
1276 dnl User may specify OpenSSL is needed from a non-standard location
1277 AC_ARG_WITH(openssl,
1278 AS_HELP_STRING([--with-openssl=PATH],
1279 [Compile with the OpenSSL libraries. The path to
1280 the OpenSSL development libraries and headers
1281 installation can be specified if outside of the
1282 system standard directories]), [
1283 case "$with_openssl" in
1285 : # Nothing special to do here
1288 if test ! -d "$withval" ; then
1289 AC_MSG_ERROR([--with-openssl path does not point to a directory])
1291 LIBOPENSSL_PATH="-L$with_openssl/lib"
1292 CPPFLAGS="-I$with_openssl/include $CPPFLAGS"
1296 AH_TEMPLATE(USE_OPENSSL,[OpenSSL support is available])
1297 ## OpenSSL is default disable due to licensing issues on some OS
1298 if test "x$with_openssl" = "xyes"; then
1303 openssl/opensslv.h \
1310 # User may have provided a custom location for OpenSSL. Otherwise...
1311 SQUID_STATE_SAVE(squid_openssl_state)
1312 LIBS="$LIBS $LIBOPENSSL_PATH"
1314 # auto-detect using pkg-config
1315 PKG_CHECK_MODULES([LIBOPENSSL],[openssl],,[
1316 ## For some OS pkg-config is broken or unavailable.
1317 ## Detect libraries the hard way.
1319 # Windows MinGW has some special libraries ...
1320 if test "x$squid_host_os" = "xmingw" ; then
1321 LIBOPENSSL_LIBS='-lssleay32 -leay32 -lgdi32 $LIBOPENSSL_LIBS'
1322 AC_MSG_NOTICE([Windows OpenSSL library support: yes -lssleay32 -leay32 -lgdi32])
1325 AC_CHECK_LIB(crypto,[CRYPTO_new_ex_data],[LIBOPENSSL_LIBS="-lcrypto $LIBOPENSSL_LIBS"],[
1326 AC_MSG_ERROR([library 'crypto' is required for OpenSSL])
1328 AC_CHECK_LIB(ssl,[SSL_library_init],[LIBOPENSSL_LIBS="-lssl $LIBOPENSSL_LIBS"],[
1329 AC_MSG_ERROR([library 'ssl' is required for OpenSSL])
1333 # This is a workaround for RedHat 9 brain damage..
1334 if test -d /usr/kerberos/include -a -f /usr/include/openssl/kssl.h; then
1335 AC_MSG_NOTICE([OpenSSL depends on Kerberos])
1336 LIBOPENSSL_LIBS="-L/usr/kerberos/lib $LIBOPENSSL_LIBS"
1337 CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
1339 SQUID_STATE_ROLLBACK(squid_openssl_state) #de-pollute LIBS
1341 if test "x$LIBOPENSSL_LIBS" != "x"; then
1342 CXXFLAGS="$LIBOPENSSL_CFLAGS $CXXFLAGS"
1343 SSLLIB="$LIBOPENSSL_PATH $LIBOPENSSL_LIBS $SSLLIB"
1344 AC_DEFINE(USE_OPENSSL,1,[OpenSSL support is available])
1346 # check for other specific broken implementations
1347 SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS
1348 SQUID_CHECK_OPENSSL_CONST_SSL_METHOD
1349 SQUID_CHECK_OPENSSL_TXTDB
1350 SQUID_CHECK_OPENSSL_HELLO_OVERWRITE_HACK
1352 if test "x$SSLLIB" = "x"; then
1353 AC_MSG_ERROR([Required OpenSSL library not found])
1356 AC_MSG_NOTICE([OpenSSL library support: ${with_openssl:=no} ${LIBOPENSSL_PATH} ${LIBOPENSSL_LIBS}])
1357 AM_CONDITIONAL(ENABLE_SSL,[ test "x$with_openssl" = "xyes" ])
1360 dnl User may specify MIT Kerberos is needed from a non-standard location
1361 AC_ARG_WITH(mit-krb5,
1362 AS_HELP_STRING([--without-mit-krb5],
1363 [Compile without MIT Kerberos support.]), [
1364 case "$with_mit_krb5" in
1366 : # Nothing special to do here
1369 if test ! -d "$withval" ; then
1370 AC_MSG_ERROR([--with-mit-krb5 path does not point to a directory])
1372 if test -d "$with_mit_krb5/lib64" ; then
1373 LIB_KRB5_PATH="-L$with_mit_krb5/lib64 -L$with_mit_krb5/lib"
1375 LIB_KRB5_PATH="-L$with_mit_krb5/lib"
1377 CXXFLAGS="-I$with_mit_krb5/include $CXXFLAGS"
1378 krb5confpath="$with_mit_krb5/bin"
1382 AH_TEMPLATE(USE_APPLE_KRB5,[Apple Kerberos support is available])
1383 AH_TEMPLATE(USE_MIT_KRB5,[MIT Kerberos support is available])
1384 AH_TEMPLATE(USE_SOLARIS_KRB5,[Solaris Kerberos support is available])
1386 dnl User may specify Heimdal Kerberos is needed from a non-standard location
1387 AC_ARG_WITH(heimdal-krb5,
1388 AS_HELP_STRING([--without-heimdal-krb5],
1389 [Compile without Heimdal Kerberos support.]), [
1390 case "$with_heimdal_krb5" in
1392 : # Nothing special to do here
1395 if test ! -d "$withval" ; then
1396 AC_MSG_ERROR([--with-heimdal-krb5 path does not point to a directory])
1398 if test -d "$with_heimdal_krb5/lib64" ; then
1399 LIB_KRB5_PATH="-L$with_heimdal_krb5/lib64 -L$with_heimdal_krb5/lib"
1401 LIB_KRB5_PATH="-L$with_heimdal_krb5/lib"
1403 CXXFLAGS="-I$with_heimdal_krb5/include $CXXFLAGS"
1404 krb5confpath="$with_heimdal_krb5/bin"
1405 with_heimdal_krb5=yes
1408 AH_TEMPLATE(USE_HEIMDAL_KRB5,[Heimdal Kerberos support is available])
1412 dnl User may specify GNU gss is needed from a non-standard location
1414 AS_HELP_STRING([--without-gnugss],
1415 [Compile without the GNU gss libraries.]), [
1416 case "$with_gnugss" in
1418 : # Nothing special to do here
1421 if test ! -d "$withval" ; then
1422 AC_MSG_ERROR([--with-gnugss path does not point to a directory])
1424 if test ! -d "$with_gnugss/lib64" ; then
1425 LIB_KRB5_PATH="-L$with_gnugss/lib64 -L$with_gnugss/lib"
1427 LIB_KRB5_PATH="-L$with_gnugss/lib"
1429 CXXFLAGS="-I$with_gnugss/include $CXXFLAGS"
1434 AH_TEMPLATE(USE_GNUGSS,[GNU gss support is available])
1436 # determine krb5 conflicts
1437 ac_with_krb5_count=0
1438 if test "x$with_mit_krb5" = "xyes"; then
1439 ac_with_krb5_count=`expr $ac_with_krb5_count + 1`
1441 if test "x$with_heimdal_krb5" = "xyes"; then
1442 ac_with_krb5_count=`expr $ac_with_krb5_count + 1`
1444 if test "x$with_gnugss" = "xyes"; then
1445 ac_with_krb5_count=`expr $ac_with_krb5_count + 1`
1448 if test $ac_with_krb5_count -gt 1 ; then
1449 AC_MSG_ERROR([Please choose only one Kerberos library.])
1450 elif test $ac_with_krb5_count -eq 0 ; then
1451 # find installed libs via pkg-config or krb5-config
1452 PKG_CHECK_EXISTS(gssapi-krb5 krb5, [with_mit_krb5=yes])
1453 PKG_CHECK_EXISTS(heimdal-gssapi, [with_heimdal_krb5=yes])
1454 PKG_CHECK_EXISTS(gss, [with_gnugss=yes])
1455 if test "x$with_mit_krb5" = "xyes"; then
1456 ac_with_krb5_count=`expr $ac_with_krb5_count + 1`
1458 if test "x$with_heimdal_krb5" = "xyes"; then
1459 ac_with_krb5_count=`expr $ac_with_krb5_count + 1`
1461 if test "x$with_gnugss" = "xyes"; then
1462 ac_with_krb5_count=`expr $ac_with_krb5_count + 1`
1464 if test $ac_with_krb5_count -gt 1 ; then
1465 AC_MSG_ERROR([pkg-config found multiple Kerberos library. Please select one with --with-<kerberos package>])
1466 elif test $ac_with_krb5_count -eq 0 -a "$cross_compiling" = "no"; then
1467 # Look for krb5-config (unless cross-compiling)
1468 AC_PATH_PROG(krb5_config,krb5-config,no)
1469 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1470 krb5confpath="`dirname $ac_cv_path_krb5_config`"
1471 ac_heimdal="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i heimdal`"
1472 ac_solaris="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i solaris`"
1473 ac_apple="`$ac_cv_path_krb5_config --vendor 2>/dev/null | grep -c -i apple`"
1474 if test $ac_heimdal -gt 0 ; then
1475 with_heimdal_krb5=yes
1476 ac_with_krb5_count=1
1478 if test $ac_solaris -gt 0 ; then
1479 with_solaris_krb5=yes
1480 ac_with_krb5_count=1
1482 if test $ac_apple -gt 0 ; then
1484 ac_with_krb5_count=1
1486 if test $ac_heimdal -eq 0 && test $ac_solaris -eq 0 && test $ac_apple -eq 0; then
1488 ac_with_krb5_count=1
1491 AC_MSG_WARN([Could not find krb5-config in path])
1496 if test "x$with_mit_krb5" = "xyes" || test "x$with_apple_krb5" = "xyes" ; then
1497 SQUID_STATE_SAVE([squid_krb5_save])
1498 LIBS="$LIBS $LIB_KRB5_PATH"
1500 # auto-detect using pkg-config
1501 PKG_CHECK_MODULES([LIB_KRB5],[gssapi-krb5 krb5],,[
1502 # look for krb5-config (unless cross-compiling)
1503 if test "$cross_compiling" = "no"; then
1504 if test "x$krb5confpath" = "x" ; then
1505 AC_PATH_PROG(krb5_config,krb5-config,no)
1506 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1507 ac_krb5_config="$ac_cv_path_krb5_config"
1510 ac_krb5_config="$krb5confpath/krb5-config"
1513 if test "x$ac_krb5_config" != "x" && test -x "$ac_krb5_config"; then
1515 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1516 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1517 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1518 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1519 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1521 ## For some OS pkg-config is broken or unavailable.
1522 ## Detect libraries the hard way.
1524 SQUID_STATE_SAVE([squid_mit_save])
1525 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1526 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
1527 AC_MSG_ERROR([library 'com_err' is required for MIT Kerberos])
1530 AC_CHECK_LIB(k5crypto, [main], [LIB_KRB5_LIBS="-lk5crypto $LIB_KRB5_LIBS"],[
1531 AC_MSG_ERROR([library 'k5crypto' is required for MIT Kerberos])
1534 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1535 AC_MSG_ERROR([library 'krb5' is required for MIT Kerberos])
1538 AC_CHECK_LIB(gssapi_krb5, [main], [LIB_KRB5_LIBS="-lgssapi_krb5 $LIB_KRB5_LIBS"],[
1539 AC_MSG_ERROR([library 'gssapi_krb5' is required for MIT Kerberos])
1541 SQUID_STATE_ROLLBACK([squid_mit_save])
1546 if test "x$LIB_KRB5_LIBS" != "x"; then
1547 if test "x$with_apple_krb5" = "xyes" ; then
1548 AC_DEFINE(USE_APPLE_KRB5,1,[Apple Kerberos support is available])
1549 KRB5_FLAVOUR="Apple"
1551 AC_DEFINE(USE_MIT_KRB5,1,[MIT Kerberos support is available])
1554 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1555 KRB5INCS="$LIB_KRB5_CFLAGS"
1557 # check for other specific broken implementations
1558 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1559 LIBS="$LIBS $KRB5LIBS"
1561 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1562 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1563 AC_CHECK_HEADERS(gssapi/gssapi_generic.h)
1564 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1565 AC_CHECK_HEADERS(profile.h)
1567 SQUID_CHECK_KRB5_FUNCS
1570 if test "x$KRB5LIBS" = "x"; then
1571 AC_MSG_ERROR([Required Kerberos library not found])
1572 ac_with_krb5_count=0
1575 SQUID_STATE_ROLLBACK([squid_krb5_save])
1578 if test "x$with_solaris_krb5" = "xyes"; then
1579 SQUID_STATE_SAVE([squid_krb5_save])
1580 LIBS="$LIBS $LIB_KRB5_PATH"
1582 # no pkg-config for solaris native Kerberos
1583 # look for krb5-config (unless cross-compiling)
1584 if test "$cross_compiling" = "no"; then
1585 if test "x$krb5confpath" = "x" ; then
1586 AC_PATH_PROG(krb5_config,krb5-config,no)
1587 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1588 ac_krb5_config="$ac_cv_path_krb5_config"
1591 ac_krb5_config="$krb5confpath/krb5-config"
1594 if test "x$ac_krb5_config" != "x" && test -x "$ac_krb5_config"; then
1596 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1597 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1598 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1599 # Solaris 10 Update 11 patches the krb5-config tool to produce stderr messages on stdout.
1600 SOLARIS_BROKEN_KRB5CONFIG_GSSAPI="`$ac_krb5_config --libs gssapi 2>/dev/null | grep "krb5-config"`"
1601 if test "x$SOLARIS_BROKEN_KRB5CONFIG_GSSAPI" = "x"; then
1602 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1603 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1606 ## For some OS pkg-config is broken or unavailable.
1607 ## Detect libraries the hard way.
1609 CXXFLAGS="-I/usr/include/kerberosv5 $CXXFLAGS"
1611 SQUID_STATE_SAVE([squid_solaris_save])
1612 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1613 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1614 AC_MSG_ERROR([library 'krb5' is required for Solaris Kerberos])
1617 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
1618 AC_MSG_ERROR([library 'gss' is required for Solaris Kerberos])
1620 SQUID_STATE_ROLLBACK([squid_solaris_save])
1623 if test "x$LIB_KRB5_LIBS" != "x"; then
1624 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1625 KRB5INCS="$LIB_KRB5_CFLAGS"
1626 AC_DEFINE(USE_SOLARIS_KRB5,1,[Solaris Kerberos support is available])
1627 KRB5_FLAVOUR="Solaris"
1629 # check for other specific broken implementations
1630 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1631 LIBS="$LIBS $KRB5LIBS"
1633 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1634 AC_CHECK_HEADERS(gssapi/gssapi.h gssapi/gssapi_ext.h)
1635 AC_CHECK_HEADERS(krb5.h com_err.h)
1637 SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H
1638 if test "x$squid_cv_broken_krb5_h" = "xyes"; then
1639 AC_DEFINE(HAVE_BROKEN_SOLARIS_KRB5_H, 1, [Define to 1 if Solaris krb5.h is broken for C++])
1640 AC_MSG_WARN([You have a broken Solaris <krb5.h> system include.])
1641 AC_MSG_WARN([Please see http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6837512])
1642 AC_MSG_WARN([If you need Kerberos support you will have to patch])
1643 AC_MSG_WARN([your system. See contrib/solaris/solaris-krb5-include.patch])
1646 SQUID_CHECK_KRB5_FUNCS
1649 if test "x$KRB5LIBS" = "x"; then
1650 AC_MSG_ERROR([Required Kerberos library not found])
1651 ac_with_krb5_count=0
1654 SQUID_STATE_ROLLBACK([squid_krb5_save])
1657 if test "x$with_heimdal_krb5" = "xyes"; then
1658 SQUID_STATE_SAVE([squid_krb5_save])
1659 LIBS="$LIBS $LIB_KRB5_PATH"
1661 # auto-detect using pkg-config
1662 PKG_CHECK_MODULES([LIB_KRB5],[heimdal-gssapi],,[
1663 # look for krb5-config (unless cross-compiling)
1664 if test "$cross_compiling" = "no"; then
1665 if test "x$krb5confpath" = "x" ; then
1666 AC_PATH_PROG(krb5_config,krb5-config,no)
1667 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1668 ac_krb5_config="$ac_cv_path_krb5_config"
1671 ac_krb5_config="$krb5confpath/krb5-config"
1674 if test "x$ac_krb5_config" != "x" && test -x "$ac_krb5_config"; then
1676 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1677 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1678 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1679 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1680 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1682 ## For some OS pkg-config is broken or unavailable.
1683 ## Detect libraries the hard way.
1684 SQUID_STATE_SAVE([squid_heimdal_save])
1686 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1687 AC_CHECK_LIB(resolv, [main], [LIB_KRB5_LIBS="-lresolv $LIB_KRB5_LIBS"],[
1688 AC_MSG_ERROR([library 'resolv' is required for Heimdal Kerberos])
1691 AC_CHECK_LIB(crypt, [main], [LIB_KRB5_LIBS="-lcrypt $LIB_KRB5_LIBS"],[
1692 AC_MSG_ERROR([library 'crypt' is required for Heimdal Kerberos])
1695 AC_CHECK_LIB(roken, [main], [LIB_KRB5_LIBS="-lroken $LIB_KRB5_LIBS"],[
1696 AC_MSG_ERROR([library 'roken' is required for Heimdal Kerberos])
1699 AC_CHECK_LIB(heimbase, [main], [LIB_KRB5_LIBS="-lheimbase $LIB_KRB5_LIBS"],[
1700 AC_MSG_WARN([library 'heimbase' may be required for Heimdal Kerberos])
1703 AC_CHECK_LIB(wind, [main], [LIB_KRB5_LIBS="-lwind $LIB_KRB5_LIBS"],[
1704 AC_MSG_WARN([library 'wind' may be required for Heimdal Kerberos])
1707 AC_CHECK_LIB(crypto, [main], [LIB_KRB5_LIBS="-lcrypto $LIB_KRB5_LIBS"],[
1708 AC_MSG_ERROR([library 'crypto' is required for Heimdal Kerberos])
1711 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
1712 AC_MSG_ERROR([library 'com_err' is required for Heimdal Kerberos])
1715 AC_CHECK_LIB(hx509, [main], [LIB_KRB5_LIBS="-lhx509 $LIB_KRB5_LIBS"],[
1716 AC_MSG_WARN([library 'hx509' may be required for Heimdal Kerberos])
1719 AC_CHECK_LIB(asn1, [main], [LIB_KRB5_LIBS="-lasn1 $LIB_KRB5_LIBS"],[
1720 AC_MSG_ERROR([library 'asn1' is required for Heimdal Kerberos])
1723 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1724 AC_MSG_ERROR([library 'krb5' is required for Heimdal Kerberos])
1727 AC_CHECK_LIB(heimntlm, [main], [LIB_KRB5_LIBS="-lheimntlm $LIB_KRB5_LIBS"],[
1728 AC_MSG_WARN([library 'heimntlm' may be required for Heimdal Kerberos])
1731 AC_CHECK_LIB(gssapi, [main], [LIB_KRB5_LIBS="-lgssapi $LIB_KRB5_LIBS"],[
1732 AC_MSG_ERROR([library 'gssapi' is required for Heimdal Kerberos])
1734 SQUID_STATE_ROLLBACK([squid_heimdal_save])
1738 if test "x$LIB_KRB5_LIBS" != "x"; then
1739 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1740 KRB5INCS="$LIB_KRB5_CFLAGS"
1741 AC_DEFINE(USE_HEIMDAL_KRB5,1,[Heimdal Kerberos support is available])
1742 KRB5_FLAVOUR="Heimdal"
1744 # check for other specific broken implementations
1745 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1746 LIBS="$LIBS $KRB5LIBS"
1748 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1749 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1750 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1752 SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H
1753 if test "x$squid_cv_broken_heimdal_krb5_h" = "xyes"; then
1754 AC_DEFINE(HAVE_BROKEN_HEIMDAL_KRB5_H, 1, [Define to 1 if Heimdal krb5.h is broken for C++])
1757 SQUID_CHECK_KRB5_FUNCS
1760 if test "x$KRB5LIBS" = "x"; then
1761 AC_MSG_ERROR([Required Kerberos library not found])
1762 ac_with_krb5_count=0
1765 SQUID_STATE_ROLLBACK([squid_krb5_save])
1768 if test "x$with_gnugss" = "xyes"; then
1769 SQUID_STATE_SAVE([squid_krb5_save])
1770 LIBS="$LIBS $LIB_KRB5_PATH"
1772 # auto-detect using pkg-config
1773 PKG_CHECK_MODULES([LIB_KRB5],[gss],,[
1774 ## For some OS pkg-config is broken or unavailable.
1775 ## Detect libraries the hard way.
1777 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1778 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
1779 AC_MSG_ERROR([library 'com_err' is required for GNU Kerberos])
1784 if test "x$LIB_KRB5_LIBS" != "x"; then
1785 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1786 KRB5INCS="$LIB_KRB5_CFLAGS"
1787 AC_DEFINE(USE_GNUGSS,1,[GNU Kerberos support is available])
1788 KRB5_FLAVOUR="GNU GSS"
1790 # check for other specific broken implementations
1791 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1792 LIBS="$LIBS $KRB5LIBS"
1794 AC_MSG_NOTICE([Try to find Kerbeors headers in given path])
1795 AC_CHECK_HEADERS(gss.h)
1797 SQUID_CHECK_WORKING_GSSAPI
1798 SQUID_DEFINE_BOOL(HAVE_GSSAPI,$squid_cv_working_gssapi,[GSSAPI support])
1800 SQUID_CHECK_SPNEGO_SUPPORT
1801 SQUID_DEFINE_BOOL(HAVE_SPNEGO,$squid_cv_have_spnego,[SPNEGO support])
1803 SQUID_CHECK_WORKING_KRB5
1804 SQUID_DEFINE_BOOL(HAVE_KRB5,$squid_cv_working_krb5,[KRB5 support])
1807 if test "x$KRB5LIBS" = "x"; then
1808 AC_MSG_ERROR([Required Kerberos library not found])
1809 ac_with_krb5_count=0
1812 SQUID_STATE_ROLLBACK([squid_krb5_save])
1814 if test $ac_with_krb5_count -gt 0 ; then
1817 AC_MSG_NOTICE([$KRB5_FLAVOUR Kerberos library support: ${with_krb5:=no} ${LIB_KRB5_PATH} ${LIB_KRB5_LIBS}])
1820 AM_CONDITIONAL(HAVE_SPNEGO, test x"$squid_cv_have_spnego" = x"yes" )
1822 dnl On MinGW OpenLDAP is not available, so LDAP helpers can be linked
1823 dnl only with Windows LDAP libraries using -lwldap32
1824 case "$squid_host_os" in
1830 AC_CHECK_LIB(ldap, ldap_init, [LDAPLIB="-lldap"])
1831 dnl LDAP helpers need to know if -llber is needed or not
1832 AC_CHECK_LIB(lber, ber_init, [LBERLIB="-llber"])
1833 dnl if no ldap lib found check for mozilla version
1834 if test "x$ac_cv_lib_ldap_ldap_init" != x""yes; then
1837 AC_CHECK_LIB(ldap60, ldap_init, [LDAPLIB="-lldap60"])
1838 LIBS="$LDAPLIB $LIBPTHREADS"
1839 AC_CHECK_LIB(prldap60, prldap_init, [LDAPLIB="-lprldap60 $LDAPLIB"])
1840 LIBS="$LDAPLIB $LIBPTHREADS"
1841 AC_CHECK_LIB(ssldap60, ldapssl_init, [LDAPLIB="-lssldap60 $LDAPLIB"])
1845 AC_CHECK_HEADERS(ldap.h lber.h)
1846 AC_CHECK_HEADERS(mozldap/ldap.h)
1849 dnl Check for LDAP_OPT_DEBUG_LEVEL
1851 AC_MSG_CHECKING([for LDAP_OPT_DEBUG_LEVEL])
1852 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1855 int i=LDAP_OPT_DEBUG_LEVEL
1857 [ AC_MSG_RESULT(yes) ],
1858 [ AC_MSG_RESULT(no) ])
1861 dnl Check for working ldap
1864 LIBS="$LDAPLIB $LBERLIB $LIBPTHREADS"
1865 AC_MSG_CHECKING([for working ldap])
1866 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1867 # define LDAP_DEPRECATED 1
1870 # elif HAVE_MOZLDAP_LDAP_H
1871 # include <mozldap/ldap.h>
1879 ldap_init((const char *)&host, port);
1884 [ AC_DEFINE(HAVE_LDAP, 1, [LDAP support])
1885 AC_MSG_RESULT(yes) ],
1886 [ AC_MSG_RESULT(no) ],
1887 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1891 dnl Check for ldap vendor
1893 AC_MSG_CHECKING([for OpenLDAP])
1894 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1898 # include <string.h>
1902 return strcmp(LDAP_VENDOR_NAME,"OpenLDAP");
1905 [ AC_DEFINE(HAVE_OPENLDAP, 1, [OpenLDAP support])
1906 AC_MSG_RESULT(yes) ],
1907 [ AC_MSG_RESULT(no) ],
1908 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1910 AC_MSG_CHECKING([for Sun LDAP SDK])
1911 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1915 # include <string.h>
1919 return strcmp(LDAP_VENDOR_NAME,"Sun Microsystems Inc.");
1922 [ AC_DEFINE(HAVE_SUN_LDAP_SDK, 1, [Sun LDAP SDK support])
1923 AC_MSG_RESULT(yes) ],
1924 [ AC_MSG_RESULT(no) ],
1925 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1927 AC_MSG_CHECKING([for Mozilla LDAP SDK])
1928 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1931 # elif HAVE_MOZLDAP_LDAP_H
1932 # include <mozldap/ldap.h>
1934 # include <string.h>
1938 return strcmp(LDAP_VENDOR_NAME,"mozilla.org");
1941 [ AC_DEFINE(HAVE_MOZILLA_LDAP_SDK, 1, [Mozilla LDAP SDK support])
1942 AC_MSG_RESULT(yes) ],
1943 [ AC_MSG_RESULT(no)],
1944 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1947 dnl Check for LDAP_REBINDPROC_CALLBACK
1949 AC_MSG_CHECKING([for LDAP_REBINDPROC_CALLBACK])
1950 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1953 # elif HAVE_MOZLDAP_LDAP_H
1954 # include <mozldap/ldap.h>
1957 LDAP_REBINDPROC_CALLBACK ldap_rebind;
1959 [ AC_DEFINE(HAVE_LDAP_REBINDPROC_CALLBACK,1,[Define to 1 if you have LDAP_REBINDPROC_CALLBACK])
1960 AC_MSG_RESULT(yes) ],
1961 [ AC_MSG_RESULT(no) ])
1964 dnl Check for LDAP_REBIND_PROC
1966 AC_MSG_CHECKING([for LDAP_REBIND_PROC])
1967 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1970 # elif HAVE_MOZLDAP_LDAP_H
1971 # include <mozldap/ldap.h>
1974 LDAP_REBIND_PROC ldap_rebind;
1976 [ AC_DEFINE(HAVE_LDAP_REBIND_PROC,1,[Define to 1 if you have LDAP_REBIND_PROC])
1977 AC_MSG_RESULT(yes) ],
1978 [ AC_MSG_RESULT(no) ])
1981 dnl Check for LDAP_REBIND_FUNCTION
1983 AC_MSG_CHECKING([for LDAP_REBIND_FUNCTION])
1984 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1985 # define LDAP_REFERRALS
1988 # elif HAVE_MOZLDAP_LDAP_H
1989 # include <mozldap/ldap.h>
1992 LDAP_REBIND_FUNCTION ldap_rebind;
1994 [ AC_DEFINE(HAVE_LDAP_REBIND_FUNCTION,1,[Define to 1 if you have LDAP_REBIND_FUNCTION])
1995 AC_MSG_RESULT(yes) ],
1996 [ AC_MSG_RESULT(no) ])
1999 dnl Check for LDAP_SCOPE_DEFAULT
2001 AC_MSG_CHECKING([for LDAP_SCOPE_DEFAULT])
2002 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2005 # elif HAVE_MOZLDAP_LDAP_H
2006 # include <mozldap/ldap.h>
2009 int i=LDAP_SCOPE_DEFAULT;
2011 [ AC_DEFINE(HAVE_LDAP_SCOPE_DEFAULT,1,[Define to 1 if you have LDAP_SCOPE_DEFAULT])
2012 AC_MSG_RESULT(yes) ],
2013 [ AC_MSG_RESULT(no) ])
2016 dnl Check for ldap_url_desc.lud_scheme
2018 AC_CHECK_MEMBER(struct ldap_url_desc.lud_scheme,
2019 AC_DEFINE(HAVE_LDAP_URL_LUD_SCHEME,1,
2020 [Define to 1 if you have LDAPURLDesc.lud_scheme]),,[#include <ldap.h>])
2023 dnl Check for ldapssl_client_init
2025 AC_CHECK_LIB(ldap,ldapssl_client_init,
2026 AC_DEFINE(HAVE_LDAPSSL_CLIENT_INIT,1,[Define to 1 if you have ldapssl_client_init]),)
2029 dnl Check for ldap_url_desc2str
2031 AC_CHECK_LIB(ldap,ldap_url_desc2str,
2032 AC_DEFINE(HAVE_LDAP_URL_DESC2STR,1,[Define to 1 if you have ldap_url_desc2str]),)
2035 dnl Check for ldap_url_parse
2037 AC_CHECK_LIB(ldap,ldap_url_parse,
2038 AC_DEFINE(HAVE_LDAP_URL_PARSE,1,[Define to 1 if you have ldap_url_parse]),)
2041 dnl Check for ldap_start_tls_s
2043 AC_CHECK_LIB(ldap,ldap_start_tls_s,
2044 AC_DEFINE(HAVE_LDAP_START_TLS_S,1,[Define to 1 if you have ldap_start_tls_s]),)
2051 AC_ARG_ENABLE(forw-via-db,
2052 AS_HELP_STRING([--enable-forw-via-db],[Enable Forw/Via database]), [
2053 SQUID_YESNO([$enableval],[unrecognized argument to --enable-forw-via-db: $enableval])
2055 SQUID_DEFINE_BOOL(USE_FORW_VIA_DB,${enable_forw_via_db:=no},
2056 [Enable Forw/Via database])
2057 AC_MSG_NOTICE([Forw/Via database enabled: $enable_forw_via_db])
2059 AC_ARG_ENABLE(cache-digests,
2060 AS_HELP_STRING([--enable-cache-digests],
2061 [Use Cache Digests. See http://wiki.squid-cache.org/SquidFaq/CacheDigests]),
2063 SQUID_YESNO($enableval,
2064 [unrecognized argument to --enable-cache-digests: $enableval])
2066 SQUID_DEFINE_BOOL(USE_CACHE_DIGESTS,${enable_cache_digests:=no},
2067 [Use Cache Digests for locating objects in neighbor caches.])
2068 AC_MSG_NOTICE([Cache Digests enabled: $enable_cache_digests])
2071 ################################
2072 # check for netio plugin stuff #
2073 ################################
2074 dnl order of these options handling is relevant in case the user
2075 dnl supplies more than one --enable option. Options handled later
2076 dnl override those handled earlier for io loop method manual override
2077 AC_ARG_ENABLE(select,
2078 AS_HELP_STRING([--disable-select],[Disable select(2) support.]),
2080 SQUID_YESNO($enableval,[--disable-select takes no extra argument])
2081 if test "x$enableval" = "xyes"; then
2082 if test "x$squid_host_os" = "xmingw"; then
2083 squid_opt_io_loop_engine="select_win32"
2085 squid_opt_io_loop_engine="select"
2089 AC_MSG_NOTICE([enabling select syscall for net I/O: ${enable_select:=auto}])
2092 AS_HELP_STRING([--disable-poll],[Disable poll(2) support.]),
2094 SQUID_YESNO($enableval,[--disable-poll takes no extra argument])
2095 test "x$enableval" = "xyes" && squid_opt_io_loop_engine="poll"
2097 AC_MSG_NOTICE([enabling poll syscall for net I/O: ${enable_poll:=auto}])
2099 AC_ARG_ENABLE(kqueue,
2100 AS_HELP_STRING([--disable-kqueue],
2101 [Disable kqueue(2) support.]), [
2102 SQUID_YESNO($enableval,[--enable-kqueue takes no extra argument])
2104 if test "x${enable_kqueue:=auto}" != "xno" ; then
2105 AC_CHECK_HEADERS([sys/event.h],[],[
2106 if test "x${enable_kqueue}" = "xyes" ; then
2107 AC_MSG_ERROR([kqueue support requires sys/event.h header file.])
2110 AC_CHECK_FUNCS(kqueue,[],[
2111 if test "x${enable_kqueue}" = "xyes" ; then
2112 AC_MSG_ERROR([kqueue support missing in libc library.])
2115 if test "x$ac_cv_func_kqueue" = "xyes" -a "x$ac_cv_header_sys_event_h" = "xyes" ; then
2116 squid_opt_io_loop_engine="kqueue"
2121 AC_MSG_NOTICE([enabling kqueue for net I/O: ${enable_kqueue:=auto}])
2124 AC_ARG_ENABLE(epoll,
2125 AS_HELP_STRING([--disable-epoll],[Disable Linux epoll(2) support.]),
2127 SQUID_YESNO($enableval,[--disable-epoll takes no extra argument])
2128 test "x$enableval" = "xyes" && squid_opt_io_loop_engine="epoll"
2130 AC_MSG_NOTICE([enabling epoll syscall for net I/O: ${enable_epoll:=auto}])
2132 # auto-detect and verify epoll header and library present and working
2133 # logic mapping and loop method selection are performed later
2134 if test "x$enable_epoll" != "xno" ; then
2136 # check if libs are needed to support epoll
2137 # note: this code block seems quite generic. Could it be extracted
2138 # into a squid specific configure function?
2139 SQUID_STATE_SAVE(squid_epoll_state)
2140 AC_SEARCH_LIBS(epoll_ctl,[epoll])
2141 if test "x$ac_cv_search_epoll_ctl" = "xno" ; then
2142 enable_epoll=no #disable. Needed code not found
2143 elif test "x$ac_cv_search_epoll_ctl" = "xnone required" ; then
2146 EPOLL_LIBS=$ac_cv_search_epoll_ctl
2148 AC_SUBST(EPOLL_LIBS)
2149 SQUID_STATE_ROLLBACK(squid_epoll_state) #de-pollute LIBS
2151 # epoll requires sys/epoll.h
2152 AC_CHECK_HEADERS([sys/epoll.h])
2154 dnl Verify that epoll really works
2155 if test "x$ac_cv_search_epoll_ctl" != 'xno' ; then
2159 if test "x$enable_epoll" = "xyes" -a "x$squid_cv_epoll_works" = "xno" ; then
2160 AC_MSG_ERROR([Epoll does not work. Force-enabling it is not going to help.])
2164 dnl Enable /dev/poll
2165 AC_ARG_ENABLE(devpoll,
2166 AS_HELP_STRING([--disable-devpoll],[Disable Solaris /dev/poll support.]),
2168 SQUID_YESNO($enableval,[--disable-devpoll takes no extra argument])
2169 test "x$enableval" = "xyes" && squid_opt_io_loop_engine="devpoll"
2171 AC_MSG_NOTICE([enabling /dev/poll for net I/O: ${enable_devpoll:=auto}])
2173 ## auto-detect and verify devpoll header and library present and working
2174 if test "x$enable_devpoll" != "xno"; then
2176 # /dev/poll requires ioctl() and write()
2177 AC_CHECK_FUNCS(ioctl)
2178 AC_CHECK_FUNCS(write)
2180 # /dev/poll requires sys/devpoll.h
2181 AC_CHECK_HEADERS([sys/devpoll.h],,[
2182 if test "x$enable_devpoll" = "xyes"; then
2183 AC_MSG_ERROR([--enable-devpoll specified but /dev/poll headers not found])
2187 # Verify that /dev/poll really works
2188 if test "x$enable_devpoll" != 'xno' ; then
2192 if test "x$enable_devpoll" = "xyes" -a "x$squid_cv_devpoll_works" = "xno" ; then
2193 AC_MSG_ERROR([/dev/poll does not work. Force-enabling it is not going to help.])
2198 AC_ARG_ENABLE(http-violations,
2199 AS_HELP_STRING([--disable-http-violations],
2200 [This allows you to remove code which is known to
2201 violate the HTTP protocol specification.]), [
2202 SQUID_YESNO([$enableval],
2203 [unrecognized argument to --disable-http-violations: $enableval])
2205 SQUID_DEFINE_BOOL(USE_HTTP_VIOLATIONS, ${enable_http_violations:=yes},
2206 [Define to enable code which volates the HTTP standard specification])
2207 AC_MSG_NOTICE([HTTP violations support enabled: $enable_http_violations])
2209 # IPFW Transparent Proxy
2210 AC_ARG_ENABLE(ipfw-transparent,
2211 AS_HELP_STRING([--enable-ipfw-transparent],
2212 [Enable Transparent Proxy support for systems
2213 using FreeBSD IPFW-style firewalling.]), [
2214 SQUID_YESNO([$enableval],
2215 [unrecognized argument to --enable-ipfw-transparent: $enableval])
2217 SQUID_DEFINE_BOOL(IPFW_TRANSPARENT,${enable_ipfw_transparent:=no},
2218 [Enable support for Transparent Proxy on systems using FreeBSD IPFW-style firewalling.])
2219 AC_MSG_NOTICE([FreeBSD IPFW-based transparent proxying enabled: $enable_ipfw_transparent])
2221 # IP-Filter Transparent Proxy
2222 AC_ARG_ENABLE(ipf-transparent,
2223 AS_HELP_STRING([--enable-ipf-transparent],
2224 [Enable Transparent Proxy support using IPFilter-style firewalling]), [
2225 SQUID_YESNO([$enableval],
2226 [unrecognized argument to --enable-ipf-transparent: $enableval])
2228 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2229 #IPF currently broken. Default-disabled for now.
2230 AC_MSG_NOTICE([IPF-based transparent proxying requested: ${enable_ipf_transparent:=no}])
2232 dnl Enable PF Transparent Proxy
2233 AC_ARG_ENABLE(pf-transparent,
2234 AS_HELP_STRING([--enable-pf-transparent],
2235 [Enable Transparent Proxy support for systems using PF network address redirection.]), [
2236 SQUID_YESNO([$enableval],
2237 [unrecognized argument to --enable-pf-transparent: $enableval])
2239 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2240 AC_MSG_NOTICE([PF-based transparent proxying requested: ${enable_pf_transparent:=no}])
2242 dnl Enable /dev/pf support for older PF Transparent Proxy systems (OpenBSD 4.x and older)
2243 AC_ARG_WITH(nat-devpf,
2244 AS_HELP_STRING([--with-nat-devpf],
2245 [Enable /dev/pf support for NAT on older OpenBSD and FreeBSD kernels.]), [
2246 SQUID_YESNO([$enableval],
2247 [unrecognized argument to --with-nat-devpf: $enableval])
2249 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2250 AC_MSG_NOTICE([NAT lookups via /dev/pf: ${with_nat_devpf:=no}])
2252 # Linux Netfilter Transparent Proxy
2253 AC_ARG_ENABLE(linux-netfilter,
2254 AS_HELP_STRING([--enable-linux-netfilter],
2255 [Enable Transparent Proxy support for Linux (Netfilter)]), [
2256 SQUID_YESNO([$enableval],
2257 [unrecognized argument to --enable-linux-netfilter: $enableval])
2259 AC_MSG_NOTICE([Linux Netfilter support requested: ${enable_linux_netfilter:=auto}])
2260 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2263 dnl Look for libnetfilter_conntrack options (needed for QOS netfilter marking)
2264 dnl squid_opt_netfilterconntrack is set only when option is explicity specified
2265 AC_ARG_WITH(netfilter-conntrack,
2266 AS_HELP_STRING([--without-netfilter-conntrack],
2267 [Do not use Netfilter conntrack libraries for packet marking.
2268 A path to alternative library location may be specified by
2269 using --with-netfilter-conntrack=PATH. Default: auto-detect.]), [
2270 case "$with_netfilter_conntrack" in
2272 squid_opt_netfilterconntrack=$with_netfilter_conntrack
2275 if test ! -d "$withval" ; then
2276 AC_MSG_ERROR([--without-netfilter-conntrack path does not point to a directory])
2278 squid_opt_netfilterconntrackpath=$withval
2279 LDFLAGS="-L$squid_opt_netfilterconntrackpath/lib $LDFLAGS"
2280 CPPFLAGS="-I$squid_opt_netfilterconntrackpath/include $CPPFLAGS"
2281 with_netfilter_conntrack=yes
2282 squid_opt_netfilterconntrack=yes
2285 AC_MSG_NOTICE([Linux Netfilter Conntrack support requested: ${with_netfilter_conntrack:=auto}])
2286 if test "x$with_netfilter_conntrack" != "xno"; then
2287 AC_SEARCH_LIBS([nfct_query], [netfilter_conntrack],,[
2288 if test x"$with_netfilter_conntrack" = "xyes"; then
2289 AC_MSG_ERROR([--with-netfilter-conntrack specified but libnetfilter-conntrack library not found])
2291 with_netfilter_conntrack=no])
2292 AC_CHECK_HEADERS([libnetfilter_conntrack/libnetfilter_conntrack.h \
2293 libnetfilter_conntrack/libnetfilter_conntrack_tcp.h],,[
2294 if test x"$with_netfilter_conntrack" = "xyes"; then
2295 AC_MSG_ERROR([--with-netfilter-conntrack specified but libnetfilter-conntrack headers not found])
2297 with_netfilter_conntrack=no])
2298 # If nothing is broken; enable the libraries usage.
2299 if test "x$with_netfilter_conntrack" != "xno"; then
2300 with_netfilter_conntrack=yes
2305 dnl Enable Large file support
2307 squid_opt_enable_large_files=no
2309 AC_ARG_WITH(large-files,
2310 AS_HELP_STRING([--with-large-files],[Enable support for large files (logs etc).]), [
2311 if test "x$withval" = "xyes"; then
2312 squid_opt_enable_large_files=yes
2316 dnl UNIX Build environment
2317 dnl AS_HELP_STRING is not suited here because it cannot to specify newlines
2318 AC_ARG_WITH(build-environment,
2319 AS_HELP_STRING([--with-build-environment=model],
2320 [The build environment to use. Normally one of
2321 POSIX_V6_ILP32_OFF32 (32 bits),
2322 POSIX_V6_ILP32_OFFBIG (32 bits with large file support),
2323 POSIX_V6_LP64_OFF64 (64 bits),
2324 POSIX_V6_LPBIG_OFFBIG (large pointers and files),
2325 XBS5_ILP32_OFF32 i(legacy, 32 bits),
2326 XBS5_ILP32_OFFBIG (legacy, 32 bits with large file support),
2327 XBS5_LP64_OFF64 (legacy, 64 bits),
2328 XBS5_LPBIG_OFFBIG (legacy, large pointers and files)
2329 or default (The default for your OS)]), [
2332 AC_MSG_FAILURE([--with-build-environment expects a build environment string as used by getconf])
2335 buildmodel="$withval"
2340 #hack. Let's early-detect sizeof(long)
2341 AC_CHECK_SIZEOF(long)
2343 if test "x$squid_opt_enable_large_files" = "xyes" -a "x$buildmodel" = "x"; then
2344 for model in POSIX_V6_LPBIG_OFFBIG XBS5_LPBIG_OFFBIG POSIX_V6_LP64_OFF64 XBS5_LP64_OFF64 POSIX_V6_ILP32_OFFBIG XBS5_ILP32_OFFBIG; do
2345 if test "`getconf _$model 2>/dev/null || true`" = 1 || test "`getconf $model 2>/dev/null || true`" ; then
2350 if test "x$buildmodel" = "x"; then
2351 AC_MSG_WARN([No suitable build environment found for large files. Trying to use _FILE_OFFSET_BITS=64])
2354 if test "x$buildmodel" = "xdefault" -o "x$buildmodel" = "x"; then
2355 # define _FILE_OFFSET_BITS if requested and needed
2356 if test "x$squid_opt_enable_large_files" = "xyes" -a $ac_cv_sizeof_long -le 4 ; then
2357 AC_MSG_NOTICE([Enabling -D_FILE_OFFSET_BITS=64])
2358 CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
2359 CXXFLAGS="-D_FILE_OFFSET_BITS=64 $CXXFLAGS"
2362 AC_MSG_NOTICE([Using $buildmodel build environment])
2363 if test "`getconf _$buildmodel 2>/dev/null || true`" = 1 || test "`getconf $buildmodel 2>/dev/null || true`" ; then
2366 AC_MSG_ERROR(Build environment $buildmodel not known to getconf.)
2368 CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
2369 CXXFLAGS="`getconf ${buildmodel}_CFLAGS` $CXXFLAGS"
2370 LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
2371 LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
2372 if test "x$squid_host_os" = "xsolaris" ; then
2374 # On Solaris getconf returns for CFLAGS -xarch=generic64, -Xa and -Usun options, and
2375 # for LDFLAGS -xarch=generic64, but:
2376 # "-Xa" is supported only by Sun cc, so we need to remove it when using gcc
2377 # For gcc "-xarch=generic64" must be replaced with "-m64"
2378 # The 'sun' define is needed by ipfilter includes, so we must remove "-Usun"
2379 if test "x$GCC" = "xyes"; then
2380 AC_MSG_NOTICE([Removing -Xa for gcc/g++ on $host])
2381 CFLAGS="`echo $CFLAGS | sed -e 's/-Xa//'`"
2382 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Xa//'`"
2383 AC_MSG_NOTICE([Replacing -xarch=generic64 with -m64 for gcc/g++ on $host])
2384 CFLAGS="`echo $CFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
2385 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
2386 LDFLAGS="`echo $LDFLAGS | sed -e 's/-xarch=generic64//'`"
2388 AC_MSG_NOTICE([Removing -Usun on $host])
2389 CFLAGS="`echo $CFLAGS | sed -e 's/-Usun//'`"
2390 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Usun//'`"
2394 dnl Enable Leak Finding Functions
2395 AC_ARG_ENABLE(leakfinder,
2396 AS_HELP_STRING([--enable-leakfinder],
2397 [Enable Leak Finding code. Enabling this alone does nothing;
2398 you also have to modify the source code to use the leak
2399 finding functions. Probably Useful for hackers only.]), [
2400 SQUID_YESNO([$enableval],
2401 [unrecognized argument to --enable-leakfinder: $enableval])
2403 AC_MSG_NOTICE([Leak Finder enabled: ${enable_leakfinder:=no}])
2404 SQUID_DEFINE_BOOL(USE_LEAKFINDER,$enable_leakfinder,
2405 [Enable code for assisting in finding memory leaks. Not for the faint of heart])
2406 AM_CONDITIONAL(MAKE_LEAKFINDER, [test "x$enable_leakfinder" = "xyes"])
2409 AC_ARG_ENABLE(follow-x-forwarded-for,
2410 AS_HELP_STRING([--enable-follow-x-forwarded-for],
2411 [Enable support for following the X-Forwarded-For
2412 HTTP header to try to find the IP address of the
2413 original or indirect client when a request has
2414 been forwarded through other proxies.]), [
2415 SQUID_YESNO([$enableval],
2416 [unrecognized argument to --enable-follow-x-forwarded-for: $enableval])
2418 AC_MSG_NOTICE([Support for X-Forwarded-For enabled: ${enable_follow_x_forwarded_for:=yes}])
2419 SQUID_DEFINE_BOOL(FOLLOW_X_FORWARDED_FOR,$enable_follow_x_forwarded_for,
2420 [Enable following X-Forwarded-For headers])
2422 AC_ARG_ENABLE(ident-lookups,
2423 AS_HELP_STRING([--disable-ident-lookups],
2424 [Remove code that supports performing Ident (RFC 931) lookups.]), [
2425 SQUID_YESNO([$enableval],[unrecognized argument to --disable-ident-lookups: $enableval])
2427 AC_MSG_NOTICE([Support for Ident lookups enabled: ${enable_ident_lookups:=yes}])
2428 SQUID_DEFINE_BOOL(USE_IDENT,$enable_ident_lookups,[Support for Ident (RFC 931) lookups])
2430 AM_CONDITIONAL(USE_SSL_CRTD, false)
2431 AC_ARG_ENABLE(ssl-crtd,
2432 AC_HELP_STRING([--enable-ssl-crtd],
2433 [Prevent Squid from directly generation of SSL private key and
2434 certificate request and instead enables the ssl_crtd processes.]), [
2435 SQUID_YESNO([$enableval],
2436 [unrecogized argument to --enable-ssl-crtd: $enableval])
2439 if test "x$enable_ssl_crtd" = "xyes" -a "x$with_openssl" = "xno" ; then
2440 AC_MSG_ERROR([You need to enable ssl gatewaying support to use ssl_crtd feature. Try to use --with-openssl. ])
2442 SQUID_DEFINE_BOOL(USE_SSL_CRTD, ${enable_ssl_crtd:=no},[Use ssl_crtd daemon])
2443 AM_CONDITIONAL(USE_SSL_CRTD, [test "x$enable_ssl_crtd" = "xyes"])
2445 dnl Select Default hosts file location
2446 AC_ARG_ENABLE(default-hostsfile,
2447 AS_HELP_STRING([--enable-default-hostsfile=path],
2448 [Select default location for hosts file.
2449 See hosts_file directive in squid.conf for details]), [
2450 if test "x$enableval" != "xnone" -a "x$enableval" != "xno" ; then
2451 if test \! -f "$enableval"; then
2452 AC_MSG_WARN([Unable to find file $enableval. I hope you know what you are doing.])
2454 squid_opt_default_hosts=$enableval
2456 squid_opt_default_hosts="none"
2459 AC_MSG_NOTICE([Default hosts file set to: ${squid_opt_default_hosts:=/etc/hosts}])
2460 DEFAULT_HOSTS=$squid_opt_default_hosts
2461 AC_SUBST(DEFAULT_HOSTS)
2463 # Select auth schemes modules to build
2465 AS_HELP_STRING([--enable-auth],
2466 [Build global support for authentication. The list of schemes
2467 and helpers to be enabled is defined elsewhere]), [
2468 SQUID_YESNO([$enableval],
2469 [unrecognized argument to --enable-auth: $enableval])
2471 AC_MSG_NOTICE([Authentication support enabled: ${enable_auth:=yes}])
2472 SQUID_DEFINE_BOOL(USE_AUTH,$enable_auth,[Enable support for authentication])
2473 AM_CONDITIONAL(ENABLE_AUTH, test "x$enable_auth" != "xno")
2476 AC_ARG_ENABLE(auth-basic,
2477 AS_HELP_STRING([--enable-auth-basic="list of helpers"],
2478 [Enable the basic authentication scheme, and build the specified helpers.
2479 Not providing an explicit list of helpers will attempt build of
2480 all possible helpers. Default is to do so.
2481 To disable the basic authentication scheme, use --disable-auth-basic.
2482 To enable but build no helpers, specify "none".
2483 To see available helpers, see the helpers/basic_auth directory. ]),[
2484 #nothing to do really
2486 m4_include([helpers/basic_auth/modules.m4])
2488 AC_ARG_ENABLE(auth-digest,
2489 AS_HELP_STRING([--enable-auth-digest="list of helpers"],
2490 [Enable the Digest authentication scheme, and build the specified helpers.
2491 Not providing an explicit list of helpers will attempt build of
2492 all possible helpers. Default is to do so.
2493 To disable the Digest authentication scheme, use --disable-auth-digest.
2494 To enable but build no helpers, specify "none".
2495 To see available helpers, see the helpers/digest_auth directory. ]),[
2496 #nothing to do, really
2498 m4_include([helpers/digest_auth/modules.m4])
2500 AC_ARG_ENABLE(auth-negotiate,
2501 AS_HELP_STRING([--enable-auth-negotiate="list of helpers"],
2502 [Enable the Negotiate authentication scheme, and build the specified
2504 Not providing an explicit list of helpers will attempt build of
2505 all possible helpers. Default is to do so.
2506 To disable the Negotiate authentication scheme,
2507 use --disable-auth-negotiate.
2508 To enable but build no helpers, specify "none".
2509 To see available helpers, see the helpers/negotiate_auth directory. ]),[
2510 #nothing to do, really
2512 m4_include([helpers/negotiate_auth/modules.m4])
2514 AC_ARG_ENABLE(auth-ntlm,
2515 AS_HELP_STRING([--enable-auth-ntlm="list of helpers"],
2516 [Enable the NTLM authentication scheme, and build the specified helpers.
2517 Not providing an explicit list of helpers will attempt build of
2518 all possible helpers. Default is to do so.
2519 To disable the NTLM authentication scheme, use --disable-auth-ntlm.
2520 To enable but build no helpers, specify "none".
2521 To see available helpers, see the helpers/ntlm_auth directory. ]),[
2523 m4_include([helpers/ntlm_auth/modules.m4])
2525 dnl Authentication libraries to build
2526 dnl This list will not be needed when each auth library has its own Makefile
2527 dnl this is to be placed AFTER each auth module's handler
2529 for module in $AUTH_MODULES; do
2530 AUTH_LIBS_TO_BUILD="$AUTH_LIBS_TO_BUILD ${module}/lib${module}.la"
2532 AC_SUBST(AUTH_MODULES)
2533 AC_SUBST(AUTH_LIBS_TO_BUILD)
2535 dnl Select logging daemon helpers to build
2536 AC_ARG_ENABLE(log-daemon-helpers,
2537 AS_HELP_STRING([--enable-log-daemon-helpers="list of helpers"],
2538 [This option selects which logging daemon helpers to
2539 build and install as part of the normal build process
2540 For a list of available helpers see the helpers/log_daemon
2542 #nothing to do, really
2544 m4_include([helpers/log_daemon/modules.m4])
2546 AC_ARG_ENABLE(external-acl-helpers,
2547 AS_HELP_STRING([--enable-external-acl-helpers="list of helpers"],
2548 [Enable external_acl helpers support and thelpers themselves.
2549 Default is to build all buildable helpers and enable support.
2550 To disable support, use --disable-external-acl-helpers.
2551 To build no helpers, specify "none".
2552 To see available helpers, see the helpers/external_acl
2554 #nothing to do, really
2556 m4_include([helpers/external_acl/modules.m4])
2558 dnl Select url_rewrite helpers to build
2559 AC_ARG_ENABLE(url-rewrite-helpers,
2560 AS_HELP_STRING([--enable-url-rewrite-helpers="list of helpers"],
2561 [This option selects which url_rewrite helpers to
2562 build and install as part of the normal build
2563 process. The default is to attempt the build of all possible
2564 helpers. Use --disable-url-rewrite-helpers to build none.
2565 For a list of available helpers see the
2566 helpers/url_rewrite directory.]),[
2568 m4_include([helpers/url_rewrite/modules.m4])
2570 dnl Select storeid_rewrite helpers to build
2571 AC_ARG_ENABLE(storeid-rewrite-helpers,
2572 AS_HELP_STRING([--enable-storeid-rewrite-helpers="list of helpers"],
2573 [This option selects which Store-ID rewrite helpers to
2574 build and install as part of the normal build
2575 process. The default is to attempt the build of all possible
2576 helpers. Use --disable-storeid-rewrite-helpers to build none.
2577 For a list of available helpers see the
2578 helpers/storeid_rewrite directory.]),[
2580 m4_include([helpers/storeid_rewrite/modules.m4])
2582 AC_ARG_WITH(valgrind-debug,
2583 AS_HELP_STRING([--with-valgrind-debug],
2584 [Include debug instrumentation for use with valgrind]),
2586 SQUID_YESNO([$withval],
2587 [unrecognized argument to --with-valgrind-debug: $withval])
2588 if test "x$withval" != "xno" ; then
2589 AC_CHECK_HEADERS(valgrind/memcheck.h,[],[
2590 AC_MSG_ERROR([Valgrind support requested, needed headers not found.])
2594 SQUID_DEFINE_BOOL(WITH_VALGRIND,${with_valgrind_debug:=no},
2595 [Valgrind memory debugger support])
2596 AC_MSG_NOTICE([Valgrind debug support enabled: $with_valgrind_debug])
2598 dnl Disable "memPools" code
2599 #AC_ARG_ENABLE(chunkedmempools,
2600 # AS_HELP_STRING([--enable-chunkedmempools],
2601 # [Enable experimental chunked memPools. Note that this option
2602 # simply sets the default behaviour. Specific classes can override this
2603 # at runtime, and only lib/MemPool.c needs to be altered
2604 # to change the squid-wide default for all classes.]), [
2605 #SQUID_YESNO([$enableval],
2606 # [--enable-chunkedmempools option takes no arguments])
2608 SQUID_DEFINE_BOOL(USE_CHUNKEDMEMPOOLS,${enable_chunkedmempools:=no},
2609 [Enable chunked Memory Pools support (experimental)])
2610 #AC_MSG_NOTICE([Chunked MemPools enabled: $enable_chunkedmempools])
2612 dnl Enable WIN32 Service compile mode
2613 AC_ARG_ENABLE(win32-service,
2614 AS_HELP_STRING([--enable-win32-service],
2615 [Compile Squid as a WIN32 Service.
2616 Works only on MS-Windows platforms]), [
2617 SQUID_YESNO([$enableval],
2618 [unrecognized argument to --enable-win32-service: $enableval])
2620 SQUID_DEFINE_BOOL(USE_WIN32_SERVICE,${enable_win32_service:=no},
2621 [Enable code supporting MS Windows service mode])
2622 AC_MSG_NOTICE([MS Windows service mode enabled: $enable_win32_service])
2625 # Disable "unlinkd" code
2626 AC_ARG_ENABLE(unlinkd,
2627 AS_HELP_STRING([--disable-unlinkd],[Do not use unlinkd]), [
2628 SQUID_YESNO([$enableval],
2629 [unrecognized argument to --disable-unlinkd: $enableval])
2631 SQUID_DEFINE_BOOL(USE_UNLINKD,${enable_unlinkd:=yes},
2632 [Enable useage of unlinkd])
2633 AM_CONDITIONAL(ENABLE_UNLINKD,test "x$enable_unlinkd" = "xyes")
2634 AC_MSG_NOTICE([unlinkd enabled: $enable_unlinkd])
2636 # Enable backtraces on fatal errors
2637 AC_ARG_ENABLE(stacktraces,
2638 AS_HELP_STRING([--enable-stacktraces],
2639 [Enable automatic call backtrace on fatal errors]), [
2640 SQUID_YESNO([$enableval],
2641 [unrecognized argument to --enable-stacktraces: $enableval])
2643 SQUID_DEFINE_BOOL(PRINT_STACK_TRACE,${enable_stacktraces:=no},
2644 [Print stack traces on fatal errors])
2645 AC_MSG_NOTICE([Automatically print stack trace on fatal errors: $enable_stacktraces])
2648 # CPU Profiling options handling
2649 AC_ARG_ENABLE(cpu-profiling,
2650 AS_HELP_STRING([--enable-cpu-profiling],
2651 [Enable instrumentation to try and understand how CPU power
2652 is spent by squid, by enabling specific probes in selected
2654 New probes can only be added by modifying the source code.
2655 It is meant to help developers in optimizing performance
2656 of Squid internal functions.
2657 If you are not developer you should not enable this,
2658 as it slows squid down somewhat.
2659 See lib/Profiler.c for more details.]), [
2660 SQUID_YESNO([$enableval],
2661 [unrecognized argument to --enable-cpu-profiling: $enableval])
2663 # Default OFF. This is a debug feature. Only check and enable if forced ON.
2664 if test "x$enable_cpu_profiling" = "xyes"; then
2665 SQUID_CHECK_FUNCTIONAL_CPU_PROFILER
2666 if test "x$squid_cv_cpu_profiler_works" = "xno"; then
2667 AC_MSG_ERROR([CPU profiling will not be functional in this build.])
2670 SQUID_DEFINE_BOOL(USE_XPROF_STATS,${enable_cpu_profiling:=no},
2671 [Define to enable CPU profiling within Squid])
2672 AM_CONDITIONAL(ENABLE_XPROF_STATS,
2673 test "x$enable_cpu_profiling" = "xyes")
2674 AC_MSG_NOTICE([CPU profiling enabled: $enable_cpu_profiling])
2676 # Enable X-Accelerator-Vary for Vary support within an accelerator setup
2677 AC_ARG_ENABLE(x-accelerator-vary,
2678 AS_HELP_STRING([--enable-x-accelerator-vary],
2679 [Enable support for the X-Accelerator-Vary
2680 HTTP header. Can be used to indicate
2681 variance within an accelerator setup.
2682 Typically used together with other code
2683 that adds custom HTTP headers to the requests.]), [
2684 SQUID_YESNO([$enableval],
2685 [unrecognized argument to --enable-x-accelerator-vary: $enableval])
2687 SQUID_DEFINE_BOOL(X_ACCELERATOR_VARY,${enable_x_accelerator_vary:=no},
2688 [Enable support for the X-Accelerator-Vary HTTP header])
2689 AC_MSG_NOTICE([X-Accelerator-Vary support enabled: $enable_x_accelerator_vary])
2692 if $CPPUNITCONFIG --help >/dev/null; then
2693 squid_cv_cppunit_version="`$CPPUNITCONFIG --version`"
2694 AC_MSG_NOTICE([using system installed cppunit version $squid_cv_cppunit_version])
2695 unset squid_cv_cppunit_version
2696 SQUID_CPPUNIT_LIBS="`$CPPUNITCONFIG --libs`"
2698 SQUID_CPPUNIT_INC="`$CPPUNITCONFIG --cflags`"
2700 AC_MSG_WARN([cppunit does not appear to be installed. squid does not require this, but code testing with 'make check' will fail.])
2702 SQUID_CPPUNIT_LIBS=''
2703 SQUID_CPPUNIT_INC=''
2706 AC_ARG_WITH(cppunit-basedir,
2707 AS_HELP_STRING([--with-cppunit-basedir=PATH],
2708 [Path where the cppunit headers are libraries can be found ]), [
2709 if test -f "$withval/include/cppunit/TestCase.h"; then
2710 AC_MSG_NOTICE([Using cppunit includes from $withval])
2711 SQUID_CPPUNIT_INC="-I${withval}/include"
2713 AC_MSG_ERROR(Cannot find cppunit at $withval)
2715 if test -f "$withval/lib/libcppunit.la"; then
2716 AC_MSG_NOTICE([Using cppunit lib from $withval])
2717 SQUID_CPPUNIT_LA="${withval}/lib/libcppunit.la"
2718 SQUID_CPPUNIT_LIBS='$(SQUID_CPPUNIT_LA)'
2720 AC_MSG_ERROR(Cannot find cppunit at $withval)
2723 SQUID_STATE_SAVE(squid_cppunit_state)
2724 CXXFLAGS="$CXXFLAGS $SQUID_CPPUNIT_INC"
2725 AC_CHECK_HEADERS(cppunit/extensions/HelperMacros.h)
2726 SQUID_STATE_ROLLBACK(squid_cppunit_state)
2727 AC_SUBST(SQUID_CPPUNIT_LIBS)
2728 AC_SUBST(SQUID_CPPUNIT_LA)
2729 AC_SUBST(SQUID_CPPUNIT_INC)
2731 # Force some compilers to use ANSI features
2735 if test "x$ac_cv_prog_CC" = "xcc" ; then
2736 AC_MSG_NOTICE([adding '-Ae' to cc args for $host])
2744 dnl automake handles this AC_PATH_PROG(MAKEDEPEND, makedepend, $TRUE)
2748 AC_MSG_NOTICE([Disabling ranlib for HP-UX...])
2753 dnl Check for headers
2778 linux/posix_types.h \
2786 netinet/in_systm.h \
2838 linux/netfilter_ipv4.h \
2839 linux/netfilter_ipv6/ip6_tables.h \
2841 SQUID_DEFAULT_INCLUDES
2845 /* Netfilter ip(6)tables v1.4.0 has broken headers */
2846 #if HAVE_NETINET_IN_H
2847 #include <netinet/in.h>
2851 dnl *BSD dont include the dependencies for all their net/ and netinet/ files
2852 dnl We must include a few basic type headers for them to work.
2867 SQUID_BSDNET_INCLUDES)
2873 AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
2876 #include <sys/time.h>
2883 dnl Override rusage() detect on MinGW because is emulated in source code
2884 case "$squid_host_os" in
2886 AC_DEFINE(HAVE_STRUCT_RUSAGE)
2887 ac_cv_func_getrusage='yes'
2888 AC_MSG_NOTICE([Using own rusage on Windows.])
2891 AC_CHECK_TYPE(struct rusage,AC_DEFINE(HAVE_STRUCT_RUSAGE,1,[The system provides struct rusage]),,[
2893 #include <sys/time.h>
2895 #if HAVE_SYS_RESOURCE_H
2896 #include <sys/resource.h>
2901 AC_CHECK_MEMBERS([struct iphdr.ip_hl],,,[
2902 #if HAVE_SYS_TYPES_H
2903 #include <sys/types.h>
2905 #include <netinet/in.h>
2906 #include <netinet/in_systm.h>
2907 #include <netinet/ip.h>
2908 #if defined (__linux__) || defined (__CYGWIN__)
2917 dnl Check for typedefs
2918 AC_CHECK_SIZEOF(void *)
2920 # check for a bunch of types
2934 AC_CHECK_TYPE([bool])
2935 #need the defines for PRId64
2936 AC_CHECK_SIZEOF(int64_t)
2937 AC_CHECK_SIZEOF(long)
2938 #need the defines for PRIuSIZE
2939 AC_CHECK_SIZEOF(size_t)
2940 #need the define for overflow checks
2941 AC_CHECK_SIZEOF(off_t)
2942 AC_CHECK_SIZEOF(size_t)
2944 dnl Some C++11 types we try to use
2946 AX_CXX_TYPE_UNIQUE_PTR
2947 AX_CXX_TYPE_UNIFORM_DISTRIBUTIONS
2949 dnl On Solaris 9 x86, gcc may includes a "fixed" set of old system include files
2950 dnl that is incompatible with the updated Solaris header files.
2951 dnl For this reason, we must check if pad128_t and upad128_t are defined.
2952 AC_CHECK_TYPE(pad128_t,
2953 AC_DEFINE(HAVE_PAD128_T,1,[pad128_t is defined in system headers]),
2954 ,SQUID_DEFAULT_INCLUDES)
2956 AC_CHECK_TYPE(upad128_t,
2957 AC_DEFINE(HAVE_UPAD128_T,1,[upad128_t is defined in system headers]),
2958 ,SQUID_DEFAULT_INCLUDES)
2960 AC_CHECK_TYPE(mode_t, AC_DEFINE(HAVE_MODE_T,1,[mode_t is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
2961 AC_CHECK_TYPE(fd_mask, AC_DEFINE(HAVE_FD_MASK,1,[fd_mask is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
2963 AC_CHECK_TYPE(socklen_t,AC_DEFINE(HAVE_SOCKLEN_T,1,[socklen_t is defined by the system headers]),,[
2964 #include <sys/types.h>
2965 #include <sys/socket.h>
2971 AC_CHECK_TYPE(mtyp_t,AC_DEFINE(HAVE_MTYP_T,1,
2972 [mtyp_t is defined by the system headers]),,[#include <sys/types.h>
2973 #include <sys/ipc.h>
2974 #include <sys/msg.h>])
2976 # check for compiler support of %zu printf macro
2977 AH_TEMPLATE(PRIuSIZE,[Compiler supports %zu printf macro])
2978 AC_MSG_CHECKING([for compiler %zu support])
2979 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2981 ]],[[size_t n=1;printf("%zu",n);]])],[
2982 AC_DEFINE(PRIuSIZE,"zu")
2984 ],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
2987 dnl Check for special functions
2991 dnl Check for libcap header (assume its not broken unless
2992 AC_ARG_WITH(libcap, AS_HELP_STRING([--without-libcap],
2993 [disable usage of Linux capabilities library to control privileges]), [
2994 SQUID_YESNO([$withval],[unrecognized argument to --without-libcap: $withval])
2995 ],[with_libcap=auto])
2997 if test "x$with_libcap" != "xno"; then
2998 # cap_clear_flag is the most recent libcap function we require
2999 AC_CHECK_HEADERS(sys/capability.h)
3000 AC_CHECK_LIB(cap, cap_clear_flag)
3001 SQUID_CHECK_FUNCTIONAL_LIBCAP2
3003 # if it can't be supported..
3004 if test "x$ac_cv_header_sys_capability_h" = "xno" -o \
3005 "x$ac_cv_lib_cap_cap_clear_flag" = "xno"; then
3006 # and it was forced on: error
3007 if test "x$with_libcap" = "xyes" ; then
3008 AC_MSG_ERROR([libcap forced enabled but not available or not usable, requires libcap-2.09 or later])
3010 # with_libcap is "auto"; it can't be supported. Disable.
3014 # header and lib are ok, we support
3020 SQUID_DEFINE_BOOL(USE_LIBCAP,$with_libcap,
3021 [use libcap to set capabilities required for TPROXY])
3022 AC_MSG_NOTICE([libcap support enabled: $with_libcap])
3023 SQUID_DEFINE_BOOL(LIBCAP_BROKEN,${squid_cv_sys_capability_works:=no},
3024 [libcap2 headers are broken and clashing with glibc])
3025 AC_MSG_NOTICE([libcap2 headers are ok: $squid_cv_sys_capability_works])
3028 dnl Check for needed libraries
3029 AC_SEARCH_LIBS([gethostbyname],[nsl resolv bind])
3030 AC_SEARCH_LIBS([res_init],[resolv])
3031 AC_SEARCH_LIBS([__res_search],[resolv])
3032 AC_SEARCH_LIBS([bind],[socket])
3033 AC_SEARCH_LIBS([opcom_stack_trace],[opcom_stack])
3034 AC_SEARCH_LIBS([strlcpy], [bsd])
3035 AC_SEARCH_LIBS([yp_match], [nsl nss_nis nss_nisplus])
3036 dnl Check for Winsock only on MinGW, on Cygwin we must use emulated BSD socket API
3037 if test "x$squid_host_os" = "xmingw" ; then
3038 SQUID_CHECK_WINSOCK_LIB
3044 #include <winsock2.h>
3047 #include <windows.h>
3050 #include <ws2tcpip.h>
3055 # check that we have unix sockets
3056 SQUID_CHECK_UNIX_SOCKET
3057 SQUID_DEFINE_BOOL(HAVE_UNIXSOCKET,$squid_cv_unixsocket,[System supports unix sockets])
3059 AC_CHECK_LIB(gnumalloc, malloc)
3060 if test "x$ac_cv_lib_gnumalloc_malloc" = "xyes"; then
3061 AC_MSG_NOTICE([Disabling extended malloc functions when using bundled gnumalloc])
3062 ac_cv_func_mallocblksize=no
3063 ac_cv_func_mallopt=no
3065 case "$squid_host_os" in
3067 AC_MSG_NOTICE([skipping libmalloc check for $host])
3070 AC_MSG_NOTICE([skipping libmalloc check for $host])
3074 AC_CHECK_LIB(malloc, main)
3079 case "$squid_host_os" in
3081 AC_MSG_NOTICE([Use MSVCRT for math functions.])
3084 dnl rint() and log() are only used in old C code for now.
3086 AC_SEARCH_LIBS([rint],[m])
3087 AC_SEARCH_LIBS([log],[m])
3092 dnl --with-maxfd present for compatibility with Squid-2.
3093 dnl undocumented in ./configure --help to encourage using the Squid-3 directive
3098 squid_filedescriptors_num=$withval
3099 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
3102 AC_MSG_ERROR(--with-maxfd expects a numeric argument)
3107 AC_ARG_WITH(filedescriptors,
3108 AS_HELP_STRING([--with-filedescriptors=NUMBER],
3109 [Force squid to support NUMBER filedescriptors]),
3113 squid_filedescriptors_num=$withval
3114 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
3117 AC_MSG_ERROR(--with-filedescriptors expects a numeric argument)
3122 SQUID_CHECK_DEFAULT_FD_SETSIZE
3124 if test "x$squid_filedescriptors_num" != "x"; then
3125 AC_MSG_NOTICE([Default number of fieldescriptors: $squid_filedescriptors_num])
3127 if test "$squid_filedescriptors_num" -lt 512 ; then
3128 AC_MSG_WARN([$squid_filedescriptors_num may not be enough filedescriptors if your])
3129 AC_MSG_WARN([cache will be very busy. Please see the FAQ page])
3130 AC_MSG_WARN([http://wiki.squid-cache.org/SquidFaq/TroubleShooting])
3131 AC_MSG_WARN([on how to increase your filedescriptor limit])
3133 AC_DEFINE_UNQUOTED(SQUID_MAXFD, $squid_filedescriptors_num,[Maximum number of open filedescriptors])
3136 dnl Enable IPv6 support
3137 AC_MSG_CHECKING([whether to enable IPv6])
3139 AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support. The default is to probe system capabilities on startup.]), [
3140 SQUID_YESNO([$enableval],[unrecognized argument to --disable-ipv6: $enableval])
3142 AC_MSG_RESULT(${enable_ipv6:=yes})
3143 SQUID_DEFINE_BOOL(USE_IPV6,$enable_ipv6,[Enable support for IPv6 ])
3145 if test "x$enable_ipv6" = "xyes" ; then
3146 SQUID_CHECK_SIN6_LEN_IN_SAI
3148 SQUID_CHECK_SS_LEN_IN_SOCKADDR_STORAGE
3149 SQUID_CHECK_SIN_LEN_IN_SOCKADDR_IN
3152 dnl Check for libdl, used by auth_modules/PAM
3153 if test "x$with_dl" = "xyes"; then
3154 AC_CHECK_LIB(dl, dlopen)
3157 dnl -lintl is needed on SCO version 3.2v4.2 for strftime()
3158 dnl Robert Side <rside@aiinc.bc.ca>
3159 dnl Mon, 18 Jan 1999 17:48:00 GMT
3162 AC_CHECK_LIB(intl, strftime)
3167 dnl this is not fully functional if db.h is for a differend db version
3170 dnl check that dbopen is actually defined in the header
3171 dnl FIXME: in case of failure undef db-related includes etc.
3172 AC_CHECK_DECL(dbopen,,,[
3173 #if HAVE_SYS_TYPES_H
3174 #include <sys/types.h>
3186 SQUID_CHECK_DBOPEN_NEEDS_LIBDB
3187 if test "x$ac_cv_dbopen_libdb" = "xyes"; then
3192 dnl System-specific library modifications
3196 if test "x$GCC" = "xyes"; then
3197 AC_MSG_NOTICE([Removing -O for gcc on $host])
3198 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9]]*//'`"
3203 AC_MSG_NOTICE([Removing -lsocket for IRIX...])
3204 LIBS=`echo $LIBS | sed -e s/-lsocket//`
3205 AC_MSG_NOTICE([Removing -lnsl for IRIX...])
3206 LIBS=`echo $LIBS | sed -e s/-lnsl//`
3207 ac_cv_lib_nsl_main=no
3208 AC_MSG_NOTICE([Removing -lbsd for IRIX...])
3209 LIBS=`echo $LIBS | sed -e s/-lbsd//`
3211 dnl From: c0032033@ws.rz.tu-bs.de (Joerg Schumacher)
3212 dnl Date: Thu, 17 Oct 1996 04:09:30 +0200
3213 dnl Please change your configure script. AIX doesn't need -lbsd.
3215 AC_MSG_NOTICE([Removing -lbsd for AIX...])
3216 LIBS=`echo $LIBS | sed -e s/-lbsd//`
3218 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_rtti],[-rtti],[[
3224 public:virtual ~Foo(){}
3226 class Bar:public Foo{
3227 public:Bar():Foo(){}
3230 Foo * myFoo=new Bar();
3231 Bar * myBar=dynamic_cast<Bar *>(myFoo);
3232 assert(myBar != NULL);
3234 if test "$ac_cv_require_rtti" = "yes"; then
3235 SQUID_CFLAGS="-rtti $SQUID_CFLAGS"
3236 SQUID_CXXFLAGS="-rtti $SQUID_CXXFLAGS"
3240 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_qcpluscmt],[-qcpluscmt],[[]],[[//c++ cmt]])
3242 if test "$ac_cv_require_qcpluscmt" = "yes"; then
3243 SQUID_CFLAGS="-qcpluscmt $SQUID_CFLAGS"
3248 SQUID_CFLAGS="$SQUID_CFLAGS -D_SQUID_MOTOROLA_"
3249 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_SQUID_MOTOROLA_"
3250 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1,
3251 [If gettimeofday is known to take only one argument])
3253 [*-*-solaris2.[0-4]])
3254 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)
3256 [*-sony-newsos[56]*])
3257 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)
3261 # Remove optimization for GCC 2.95.[123]
3262 # gcc -O[2] on *BSD and Linux (x86) causes pointers to magically become NULL
3263 if test "x$GCC" = "xyes"; then
3264 GCCVER=`$CC -v 2>&1 | awk '$2 == "version" {print $3}'`
3267 AC_MSG_NOTICE([Removing -O for gcc on $host with GCC $GCCVER])
3268 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9]]*//'`"
3273 dnl This has to be before AC_CHECK_FUNCS
3274 # Disable poll() on certain platforms. Override by setting ac_cv_func_poll
3275 # when running configure.
3276 if test "x$ac_cv_func_poll" = "x" ; then
3280 AC_MSG_NOTICE([disabling poll for $host...])
3281 ac_cv_func_poll='no'
3284 # Henrik Nordstrom (hno@squid-cache.org) 19980817
3285 # poll is problematic on Linux. We disable it
3286 # by default until Linux gets it right.
3287 rev=`uname -r | awk -F. '{printf "%03d%03d",$1,$2}'`
3288 if test $rev -lt 002002; then
3289 AC_MSG_NOTICE([disabling poll for $host < 2.2...])
3290 ac_cv_func_poll='no'
3293 [powerpc-ibm-aix4.1.*])
3294 # Mike Laster (mlaster@metavillage.com) 19981021
3295 AC_MSG_NOTICE([disabling poll for $host...])
3296 ac_cv_func_poll='no'
3299 # Robert Side <rside@aiinc.bc.ca>
3300 # Mon, 18 Jan 1999 17:48:00 GMT
3301 AC_MSG_NOTICE([disabling poll for $host...])
3302 ac_cv_func_poll='no'
3307 dnl Check for library functions
3309 backtrace_symbols_fd \
3332 pthread_attr_setschedparam \
3333 pthread_attr_setscope \
3334 pthread_setschedparam \
3358 dnl ... and some we provide local replacements for
3367 AC_CHECK_DECLS([getaddrinfo,getnameinfo,inet_ntop,inet_pton,InetNtopA,InetPtonA],,,[
3369 * BSD requires sys/types.h, sys/socket.h, netinet/in.h, netdb.h, arpa/inet.h
3370 * Linux requires sys/types.h, sys/socket.h, arpa/inet.h
3371 * Windows requires sys/socket.h, winsock2.h, ws2tcpip.h
3373 #if HAVE_SYS_TYPES_H
3374 #include <sys/types.h>
3376 #if HAVE_NETINET_IN_H
3377 #include <netinet/in.h>
3379 #if HAVE_SYS_SOCKET_H
3380 #include <sys/socket.h>
3385 #if HAVE_ARPA_INET_H
3386 #include <arpa/inet.h>
3389 #include <winsock2.h>
3392 #include <ws2tcpip.h>
3396 # Magic which checks whether we are forcing a type of comm loop we
3397 # are actually going to (ab)use.
3398 # Mostly ripped from squid-commloops, thanks to adrian and benno
3400 if test "x$squid_opt_io_loop_engine" != "x"; then
3401 AC_MSG_NOTICE([choosing user-specified net I/O API $squid_opt_io_loop_engine])
3402 elif test "x$enable_epoll" != "xno" -a "x$squid_cv_epoll_works" = "xyes" ; then
3403 squid_opt_io_loop_engine="epoll"
3404 elif test "x$enable_kqueue" != "xno" ; then
3405 squid_opt_io_loop_engine="kqueue"
3406 elif test "x$enable_devpoll" != "xno" ; then
3407 squid_opt_io_loop_engine="devpoll"
3408 elif test "x$enable_poll" != "xno" -a "x$ac_cv_func_poll" = "xyes" ; then
3409 squid_opt_io_loop_engine="poll"
3410 elif test "x$enable_select" != "xno" -a "x$ac_cv_func_select" = "xyes"; then
3411 squid_opt_io_loop_engine="select"
3412 elif test "x$enable_select" != "xno" -a "x$squid_host_os" = "xmingw"; then
3413 squid_opt_io_loop_engine="select_win32"
3415 AC_MSG_WARN([Eep! Cannot find epoll, kqueue, /dev/poll, poll or select!])
3416 AC_MSG_WARN([Will try select and hope for the best.])
3417 squid_opt_io_loop_engine="select"
3420 AC_MSG_NOTICE([Using ${squid_opt_io_loop_engine} for the IO loop.])
3422 AM_CONDITIONAL([USE_POLL], [test $squid_opt_io_loop_engine = poll])
3423 AM_CONDITIONAL([USE_EPOLL], [test $squid_opt_io_loop_engine = epoll])
3424 AM_CONDITIONAL([USE_SELECT], [test $squid_opt_io_loop_engine = select])
3425 AM_CONDITIONAL([USE_SELECT_WIN32], [test $squid_opt_io_loop_engine = select_win32])
3426 AM_CONDITIONAL([USE_KQUEUE], [test $squid_opt_io_loop_engine = kqueue])
3427 AM_CONDITIONAL([USE_DEVPOLL], [test $squid_opt_io_loop_engine = devpoll])
3429 case $squid_opt_io_loop_engine in
3430 epoll) AC_DEFINE(USE_EPOLL,1,[Use epoll() for the IO loop]) ;;
3431 devpoll) AC_DEFINE(USE_DEVPOLL,1,[Use /dev/poll for the IO loop]) ;;
3432 poll) AC_DEFINE(USE_POLL,1,[Use poll() for the IO loop]) ;;
3433 kqueue) AC_DEFINE(USE_KQUEUE,1,[Use kqueue() for the IO loop]) ;;
3434 select_win32) AC_DEFINE(USE_SELECT_WIN32,1,[Use Winsock select() for the IO loop]) ;;
3435 select) AC_DEFINE(USE_SELECT,1,[Use select() for the IO loop]) ;;
3438 if test "x$ac_cv_func_sched_getaffinity" = "xyes" -a "x$ac_cv_func_sched_setaffinity" = "xyes" ; then
3439 AC_DEFINE(HAVE_CPU_AFFINITY,1,[Support setting CPU affinity for workers])
3442 SQUID_CHECK_SETRESUID_WORKS
3443 if test "x$squid_cv_resuid_works" = "xyes" ; then
3444 AC_DEFINE(HAVE_SETRESUID,1,[Yay! Another Linux brokenness. Knowing that setresuid() exists is not enough, because RedHat 5.0 declares setresuid() but does not implement it.])
3447 AC_CHECK_HEADERS(mswsock.h)
3448 AC_MSG_CHECKING([for constant CMSG_SPACE])
3449 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
3450 #if HAVE_SYS_SOCKET_H
3451 #include <sys/socket.h>
3454 #include <mswsock.h>
3457 int a[CMSG_SPACE(int)];
3460 AC_DEFINE(HAVE_CONSTANT_CMSG_SPACE, 1, [Define to 1 if CMSG_SPACE is constant])
3465 AC_CHECK_TYPE(struct cmsghdr,AC_DEFINE(HAVE_CMSGHDR,1,[The system provides struct cmsghdr]),,[
3466 #if HAVE_SYS_SOCKET_H
3467 #include <sys/socket.h>
3470 #include <mswsock.h>
3473 #include <winsock2.h>
3477 AC_CHECK_TYPE(struct iovec,AC_DEFINE(HAVE_IOVEC,1,[The system provides struct iovec]),,[
3478 #if HAVE_SYS_SOCKET_H
3479 #include <sys/socket.h>
3482 #include <winsock2.h>
3485 #include <sys/uio.h>
3489 AC_CHECK_TYPE(struct msghdr,AC_DEFINE(HAVE_MSGHDR,1,[The system provides struct msghdr]),,[
3490 #if HAVE_SYS_SOCKET_H
3491 #include <sys/socket.h>
3494 #include <mswsock.h>
3497 #include <winsock2.h>
3501 AC_CHECK_TYPE(struct sockaddr_un,AC_DEFINE(HAVE_SOCKADDR_UN,1,[The system provides sockaddr_un]),,[
3505 #if HAVE_SYS_SOCKET_H
3506 #include <sys/socket.h>
3509 #include <winsock2.h>
3513 SQUID_CHECK_FUNC_STRNSTR
3514 SQUID_CHECK_FUNC_VACOPY
3515 SQUID_CHECK_FUNC___VACOPY
3517 dnl IP-Filter support requires ipf header files. These aren't
3518 dnl installed by default, so we need to check for them
3519 if test "x$enable_ipf_transparent" != "xno" ; then
3520 SQUID_CHECK_BROKEN_SOLARIS_IPFILTER
3521 AC_MSG_CHECKING(for availability of IP-Filter header files)
3522 # hold on to your hats...
3523 if test "x$ac_cv_header_ip_compat_h" = "xyes" -o \
3524 "x$ac_cv_header_ip_fil_compat_h" = "xyes" -o \
3525 "x$ac_cv_header_netinet_ip_compat_h" = "xyes" -o \
3526 "x$ac_cv_header_netinet_ip_fil_compat_h" = "xyes" ; then
3527 have_ipfilter_compat_header="yes"
3529 if test "x$have_ipfilter_compat_header" = "xyes" -a \
3530 "x$ac_cv_header_ip_fil_h" = "xyes" -a \
3531 "x$ac_cv_header_ip_nat_h" = "xyes" ; then
3532 enable_ipf_transparent="yes"
3533 elif test "x$have_ipfilter_compat_header" = "xyes" -a \
3534 "x$ac_cv_header_netinet_ip_fil_h" = "xyes" -a \
3535 "x$ac_cv_header_netinet_ip_nat_h" = "xyes" ; then
3536 enable_ipf_transparent="yes"
3538 enable_ipf_transparent="no"
3540 AC_MSG_RESULT($IPF_TRANSPARENT)
3542 ## On Solaris Ipfilter includes expect that SOLARIS2 is defined with the
3543 ## Solaris minor version (8, 9, 10, ...)
3544 if test "x$enable_ipf_transparent" = "xyes" -a "x$squid_host_os" = "xsolaris" ; then
3545 solrev=`uname -r | sh -c 'IFS=. read j n x; echo $n'`
3546 CFLAGS="-DSOLARIS2=$solrev $CFLAGS"
3547 CXXFLAGS="-DSOLARIS2=$solrev $CXXFLAGS"
3551 AC_MSG_NOTICE([IPF-based transparent proxying enabled: $enable_ipf_transparent])
3552 SQUID_DEFINE_BOOL(IPF_TRANSPARENT,$enable_ipf_transparent,
3553 [Enable support for IPF-style transparent proxying])
3555 dnl PF /dev/pf support requires a header file.
3556 if test "x$with_nat_devpf" != "xno" ; then
3557 if test "x$ac_cv_header_net_pfvar_h" = "xyes" -o \
3558 "x$ac_cv_header_net_pf_pfvar_h" = "xyes"; then
3559 if test "x$with_nat_devpf" = "xauto" ; then
3563 if test "x$with_nat_devpf" = "xyes" ; then
3564 AC_MSG_ERROR([PF /dev/pf based NAT requested but needed header not found])
3569 SQUID_DEFINE_BOOL(PF_TRANSPARENT,${enable_pf_transparent:=no},
3570 [Enable support for PF-style transparent proxying])
3571 SQUID_DEFINE_BOOL(USE_NAT_DEVPF,${with_nat_devpf:=no},
3572 [Enable support for /dev/pf NAT lookups])
3574 if test "x$enable_linux_netfilter" != "xno" ; then
3575 if test "x$ac_cv_header_linux_netfilter_ipv4_h" = "xyes"; then
3576 if test "x$enable_linux_netfilter" = "xauto" ; then
3577 enable_linux_netfilter=yes
3580 if test "x$enable_linux_netfilter" = "xauto" ; then
3581 enable_linux_netfilter=no
3583 AC_MSG_ERROR([Linux Netfilter support requested but needed headers not found])
3587 SQUID_DEFINE_BOOL(LINUX_NETFILTER,$enable_linux_netfilter,
3588 [Enable support for Transparent Proxy on Linux via Netfilter])
3590 dnl Netfilter TPROXY depends on libcap but the NAT parts can still work.
3591 AC_MSG_NOTICE([Support for Netfilter-based interception proxy requested: $enable_linux_netfilter])
3592 if test "x$enable_linux_netfilter" = "xyes" -a "x$with_libcap" != "xyes" ; then
3593 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for TPROXY])
3594 AC_MSG_WARN([Linux Transparent Proxy (version 4+) support WILL NOT be enabled])
3595 AC_MSG_WARN([Reduced support to NAT Interception Proxy])
3599 if test "x$squid_opt_netfilterconntrack" = "xyes" -a "x$with_libcap" != "xyes" ; then
3600 AC_MSG_ERROR([Linux netfilter conntrack requires libcap support (libcap 2.09+)])
3602 if test "x$with_netfilter_conntrack" = "xyes" -a "x$with_libcap" != "xyes" ; then
3603 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for netfilter mark support])
3604 AC_MSG_WARN([Linux netfilter marking support WILL NOT be enabled])
3605 with_netfilter_conntrack=no
3607 AC_MSG_NOTICE([Linux Netfilter Conntrack support enabled: ${with_netfilter_conntrack} ${squid_opt_netfilterconntrackpath}])
3610 AC_ARG_ENABLE(zph-qos,
3611 AS_HELP_STRING([--enable-zph-qos],[Enable ZPH QOS support]), [
3612 SQUID_YESNO([$enableval],
3613 [unrecognized argument to --enable-zph-qos: $enableval])
3615 SQUID_DEFINE_BOOL(USE_QOS_TOS,${enable_zph_qos:=yes},
3616 [Enable Zero Penalty Hit QOS. When set, Squid will alter the
3617 TOS field of HIT responses to help policing network traffic])
3618 AC_MSG_NOTICE([ZPH QOS enabled: $enable_zph_qos])
3619 if test x"$enable_zph_qos" = "xyes" ; then
3620 AC_MSG_NOTICE([QOS netfilter mark preservation enabled: $with_netfilter_conntrack])
3621 SQUID_DEFINE_BOOL(USE_LIBNETFILTERCONNTRACK,${with_netfilter_conntrack:=no},
3622 [Enable support for QOS netfilter mark preservation])
3626 AC_CHECK_LIB(regex, regexec, [REGEXLIB="-lregex"],[REGEXLIB=''])
3627 AC_ARG_ENABLE(gnuregex,
3628 AS_HELP_STRING([--enable-gnuregex],
3629 [Compile GNUregex. Unless you have reason to use
3630 this option, you should not enable it.
3631 This library file is usually only required on Windows and
3632 very old Unix boxes which do not have their own regex
3633 library built in.]), [
3634 SQUID_YESNO([$enableval],[unrecognized argument to --enable-gnuregex: $enableval])
3636 # force-enable on old solaris and nextstep
3637 if test "x${enable_gnuregex:=auto}" = "xauto" ; then
3639 *-sun-solaris2.[[0-4]])
3640 enable_gnuregex="yes"
3643 enable_gnuregex="yes"
3648 # try detecting if it is needed
3649 if test "x$enable_gnuregex" = "xauto" ; then
3650 SQUID_CHECK_REGEX_WORKS
3651 if test "x$squid_cv_regex_works" = "xyes" ; then
3657 AC_MSG_CHECKING(if GNUregex needs to be compiled)
3658 AC_MSG_RESULT($enable_gnuregex)
3659 if test "x$enable_gnuregex" = "xyes"; then
3660 # for some reason (force-enable, test..) gnuregex was found as needed. Override any system lib
3663 #if no reason was found to enable gnuregex, disable it
3664 if test "x$enable_gnuregex" = "xauto" ; then
3667 SQUID_DEFINE_BOOL(USE_GNUREGEX,$enable_gnuregex,[Define if we should use GNU regex])
3670 SQUID_DETECT_UDP_SND_BUFSIZE
3671 SQUID_DETECT_UDP_RECV_BUFSIZE
3672 SQUID_DETECT_TCP_SND_BUFSIZE
3673 SQUID_DETECT_TCP_RECV_BUFSIZE
3675 SQUID_CHECK_RECV_ARG_TYPE
3676 SQUID_CHECK_NEED_SYS_ERRLIST
3677 SQUID_CHECK_MAXPATHLEN
3679 SQUID_CHECK_LIBRESOLV_DNS_TTL_HACK
3680 SQUID_CHECK_RESOLVER_FIELDS
3682 AC_CHECK_HEADERS(sys/statvfs.h)
3683 if test "x$ac_cv_header_sys_statvfs_h" = "xyes" ; then
3684 SQUID_CHECK_WORKING_STATVFS
3686 if test "x$ac_cv_func_statvfs" != "xyes" ; then
3687 AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/vfs.h sys/statfs.h)
3688 AC_CHECK_FUNCS(statfs)
3689 SQUID_CHECK_F_FRSIZE_IN_STATFS
3692 dnl Squid will not usually attempt to translate templates when building
3693 AC_ARG_ENABLE(translation,
3694 AS_HELP_STRING([--enable-translation],[Generate the localized error page templates and manuals.
3695 Which can also be downloaded from http://www.squid-cache.org/Versions/langpack/.]), [
3696 SQUID_YESNO([$enableval],
3697 [unrecognized argument to --enable-translation: $enableval])
3699 if test "x${enable_translation:=no}" = "xyes" ; then
3700 AX_WITH_PROG([PO2HTML],[po2html])
3701 AX_WITH_PROG([PO2TEXT],[po2txt])
3709 dnl Squid now has limited locale handling ...
3711 AC_ARG_ENABLE(auto-locale,
3712 AS_HELP_STRING([--disable-auto-locale],[This prevents Squid providing localized error pages based on the
3713 clients request headers.
3714 When disabled Squid requires explicit language configuration.]), [
3715 SQUID_YESNO([$enableval],
3716 [unrecognized argument to --disable-auto-locale: $enableval])
3718 AC_MSG_NOTICE([Multi-Language support enabled: ${enable_auto_locale:=yes}])
3719 SQUID_DEFINE_BOOL(USE_ERR_LOCALES,$enable_auto_locale,
3720 [Use multi-language support on error pages])
3723 dnl Need the debugging version of malloc if available
3725 if test "x$ac_cv_lib_malloc_main" = "xyes" ; then
3726 if test -r /usr/lib/debug/malloc.o ; then
3727 XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/malloc.o"
3729 if test -r /usr/lib/debug/mallocmap.o ; then
3730 XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/mallocmap.o"
3735 if test "x$XTRA_LIBS" = "x"; then
3738 XTRA_LIBS=`echo $XTRA_LIBS | sed -e "s/ */ /g"`
3743 AC_SUBST(SQUID_CFLAGS)
3744 AC_SUBST(SQUID_CXXFLAGS)
3746 AC_ARG_VAR([BUILDCXXFLAGS],[C++ compiler flags for building compile-time tools. e.g. cf_gen])
3747 if test "x$BUILDCXXFLAGS" = "x"; then
3748 # if we are NOT cross-compiling, use the default build flags for cf_gen and friends
3749 # otherwise rely on the user-provided value
3750 if test "x$squid_cv_check_marchnative" = "xyes"; then
3751 # always valid for the Build compiler.
3752 BUILDCXXFLAGS="-march=native"
3754 BUILDCXXFLAGS="$BUILDCXXFLAGS $CXXFLAGS"
3756 AC_SUBST(BUILDCXXFLAGS)
3758 AC_MSG_NOTICE([BUILD LIBRARIES: $LIBS])
3759 AC_MSG_NOTICE([BUILD EXTRA LIBRARIES: $XTRA_LIBS])
3760 AC_MSG_NOTICE([BUILD OBJECTS: $OBJS])
3761 AC_MSG_NOTICE([BUILD EXTRA OBJECTS: $XTRA_OBJS])
3762 AC_MSG_NOTICE([BUILD C FLAGS: $CFLAGS])
3763 AC_MSG_NOTICE([BUILD EXTRA C FLAGS: $SQUID_CFLAGS])
3764 AC_MSG_NOTICE([BUILD C++ FLAGS: $CXXFLAGS])
3765 AC_MSG_NOTICE([BUILD EXTRA C++ FLAGS: $SQUID_CXXFLAGS])
3766 AC_MSG_NOTICE([BUILD Tools C++ FLAGS: $BUILDCXXFLAGS])
3768 dnl Clean up after OSF/1 core dump bug
3776 doc/manuals/Makefile
3779 helpers/basic_auth/Makefile
3780 helpers/basic_auth/DB/Makefile
3781 helpers/basic_auth/fake/Makefile
3782 helpers/basic_auth/getpwnam/Makefile
3783 helpers/basic_auth/LDAP/Makefile
3784 helpers/basic_auth/NCSA/Makefile
3785 helpers/basic_auth/NIS/Makefile
3786 helpers/basic_auth/PAM/Makefile
3787 helpers/basic_auth/POP3/Makefile
3788 helpers/basic_auth/RADIUS/Makefile
3789 helpers/basic_auth/SASL/Makefile
3790 helpers/basic_auth/SMB/Makefile
3791 helpers/basic_auth/SMB_LM/Makefile
3792 helpers/basic_auth/SSPI/Makefile
3793 helpers/digest_auth/Makefile
3794 helpers/digest_auth/eDirectory/Makefile
3795 helpers/digest_auth/file/Makefile
3796 helpers/digest_auth/LDAP/Makefile
3797 helpers/external_acl/Makefile
3798 helpers/external_acl/AD_group/Makefile
3799 helpers/external_acl/delayer/Makefile
3800 helpers/external_acl/eDirectory_userip/Makefile
3801 helpers/external_acl/file_userip/Makefile
3802 helpers/external_acl/kerberos_ldap_group/Makefile
3803 helpers/external_acl/LDAP_group/Makefile
3804 helpers/external_acl/LM_group/Makefile
3805 helpers/external_acl/session/Makefile
3806 helpers/external_acl/SQL_session/Makefile
3807 helpers/external_acl/unix_group/Makefile
3808 helpers/external_acl/wbinfo_group/Makefile
3809 helpers/external_acl/time_quota/Makefile
3810 helpers/log_daemon/Makefile
3811 helpers/log_daemon/DB/Makefile
3812 helpers/log_daemon/file/Makefile
3813 helpers/negotiate_auth/Makefile
3814 helpers/negotiate_auth/kerberos/Makefile
3815 helpers/negotiate_auth/SSPI/Makefile
3816 helpers/negotiate_auth/wrapper/Makefile
3817 helpers/ntlm_auth/Makefile
3818 helpers/ntlm_auth/fake/Makefile
3819 helpers/ntlm_auth/smb_lm/Makefile
3820 helpers/ntlm_auth/SSPI/Makefile
3821 helpers/ssl/Makefile
3822 helpers/storeid_rewrite/Makefile
3823 helpers/storeid_rewrite/file/Makefile
3824 helpers/url_rewrite/Makefile
3825 helpers/url_rewrite/fake/Makefile
3826 helpers/url_rewrite/LFS/Makefile
3829 lib/libTrie/Makefile
3830 lib/libTrie/test/Makefile
3831 lib/ntlmauth/Makefile
3832 lib/profiler/Makefile
3835 lib/snmplib/Makefile
3839 src/adaptation/Makefile
3840 src/adaptation/icap/Makefile
3841 src/adaptation/ecap/Makefile
3844 src/auth/basic/Makefile
3845 src/auth/digest/Makefile
3846 src/auth/negotiate/Makefile
3847 src/auth/ntlm/Makefile
3849 src/clients/Makefile
3853 src/DiskIO/AIO/Makefile
3854 src/DiskIO/Blocking/Makefile
3855 src/DiskIO/DiskDaemon/Makefile
3856 src/DiskIO/DiskThreads/Makefile
3857 src/DiskIO/IpcIo/Makefile
3858 src/DiskIO/Mmapped/Makefile
3866 src/http/one/Makefile
3876 src/security/Makefile
3877 src/servers/Makefile
3882 tools/helper-mux/Makefile
3883 tools/purge/Makefile
3884 tools/squidclient/Makefile
3885 tools/systemd/Makefile
3886 tools/sysvinit/Makefile
3889 # must configure libltdl subdir unconditionally for "make distcheck" to work
3890 #AC_CONFIG_SUBDIRS(libltdl)