1 ## Copyright (C) 1996-2016 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.10-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 subdir-objects])
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 # If the user did not specify a C++ version.
96 user_cxx=`echo "$PRESET_CXXFLAGS" | grep -o -E "\-std="`
97 if test "x$user_cxx" = "x"; then
98 # Check for C++11 compiler support
99 AX_CXX_COMPILE_STDCXX_11([noext],[mandatory])
109 AC_PATH_PROG(SH, sh, /bin/sh)
110 AC_PATH_PROG(FALSE, false, /usr/bin/false)
111 AC_PATH_PROG(TRUE, true, /usr/bin/true)
112 AC_PATH_PROG(MV, mv, $FALSE)
113 AC_PATH_PROG(MKDIR, mkdir, $FALSE)
114 AC_PATH_PROG(LN, ln, cp)
115 AC_PATH_PROG(CHMOD, chmod, $FALSE)
116 AC_PATH_PROG(TR, tr, $FALSE)
117 AC_PATH_PROG(RM, rm, $FALSE)
118 AC_PATH_PROG(CPPUNITCONFIG, cppunit-config, false)
119 dnl Libtool 2.2.6 requires: rm -f
122 AC_PATH_PROG(PERL, perl, none)
123 if test "x$ac_cv_path_PERL" = "xnone"; then
124 AC_MSG_FAILURE([Perl is required to compile Squid. Please install Perl and then re-run configure ])
126 AC_PATH_PROG(POD2MAN, pod2man, $FALSE)
127 AM_CONDITIONAL(ENABLE_POD2MAN_DOC, test "x${ac_cv_path_POD2MAN}" != "x$FALSE")
129 dnl set $(AR) if not provided by the build environment
130 if test "x$AR" = "x"; then
131 AC_PATH_PROG(AR, ar, $FALSE)
136 AC_PATH_PROG(LINUXDOC, linuxdoc, $FALSE)
137 AM_CONDITIONAL(ENABLE_RELEASE_DOCS, test "x${ac_cv_path_LINUXDOC}" != "x$FALSE")
139 # pre-define DEFAULT_PREFIX, some modules need it.
140 if test "${prefix}" = "NONE" ; then
141 squid_prefix=$ac_default_prefix
145 AC_DEFINE_UNQUOTED(DEFAULT_PREFIX,[$squid_prefix],[The install prefix])
147 AC_ARG_ENABLE(strict-error-checking,
148 AS_HELP_STRING([--disable-strict-error-checking],[By default squid is compiled
149 with all possible static compiler error-checks enabled.
150 This flag disables the behavior]), [
151 SQUID_YESNO([$enableval],
152 [Unrecognized argument to --disable-strict-error-checking: $enableval])
154 AC_MSG_NOTICE([strict error checking enabled: ${enable_strict_error_checking:=yes}])
156 AC_MSG_CHECKING(whether to use loadable modules)
157 AC_ARG_ENABLE(loadable-modules,
158 AS_HELP_STRING([--disable-loadable-modules],[do not support loadable modules]) , [
159 SQUID_YESNO([$enableval],
160 [Unrecognized argument to --disable-loadable-modules: $enableval])
162 AM_CONDITIONAL(ENABLE_LOADABLE_MODULES, test "x${enable_loadable_modules:=yes}" = "xyes")
163 AC_MSG_RESULT([$enable_loadable_modules])
165 if test "x$enable_loadable_modules" = "xyes";
167 AC_DEFINE(USE_LOADABLE_MODULES, 1, [Support Loadable Modules])
173 # LT_INIT requires libtool v2, might as well state it loud
175 LT_INIT([dlopen],[disable-shared])
176 if ! test "${ac_top_build_prefix}" = "";
178 # LTDL v3-v7 macros assume the autoconf 2.62 variable top_build_prefix is defined
179 # But from autoconf 2.64 its called ac_top_build_prefix and not automatically added to the Makefile
180 # This fixes Linux LTDLv3-v7, and BSD LTDL v2.2
181 top_build_prefix=${ac_top_build_prefix}
182 AC_SUBST(top_build_prefix)
186 dnl LibTool environment is now prepared for setup. Check that it is usable and initialize.
189 # Do we need these unconditionally for "make distcheck" to work?
193 if test "x$enable_loadable_modules" = "xyes";
195 # Why is this needed? Should not LT_INIT (or LT_LIB_DLLOAD) from libtool do that?
196 LIBADD_DL=${lt_cv_dlopen_libs}
197 AC_SUBST([LIBADD_DL])
200 SQUID_CC_GUESS_VARIANT
201 SQUID_CC_GUESS_OPTIONS
203 dnl find out the exe extension for this platform.
204 dnl If it is not empty, use it for CGI as well.
208 if test "x$EXEEXT" = "x" ; then
211 # automake automatically adds .exe when installing binaries
216 AM_CONDITIONAL(ENABLE_WIN32SPECIFIC,[test "x$squid_host_os" = "xmingw"])
217 AM_CONDITIONAL(ENABLE_WIN32_IPC,[test "x$squid_host_os" = "xmingw"])
219 case "$squid_host_os" in
221 AC_PATH_PROG(WIN32_PSAPI, psapi.dll, none)
222 CFLAGS="$CFLAGS -mthreads"
223 CXXFLAGS="$CXXFLAGS -mthreads -static-libgcc -static-libstdc++"
224 if test "x$ac_cv_path_WIN32_PSAPI" = "xnone"; then
225 AC_MSG_NOTICE([PSAPI.DLL is recommended to run Squid on Windows NT Platform])
226 AC_MSG_NOTICE([Please see PSAPI.DLL section on doc/win32-relnotes.html.])
228 AC_DEFINE(HAVE_WIN32_PSAPI,1,[Define if you have PSAPI.DLL on Windows systems])
231 MINGW_LIBS="-lmingwex"
235 # FreeBSD places local libraries and packages in /usr/local
236 CFLAGS="$CFLAGS -I/usr/local/include"
237 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
238 LDFLAGS="$LDFLAGS -L/usr/local/lib -Wl,-R/usr/local/lib"
245 AC_DEFINE_UNQUOTED(CONFIG_HOST_TYPE, "$host",[Host type from configure])
247 AC_DEFINE_UNQUOTED(SQUID_CONFIGURE_OPTIONS, "$ac_configure_args",
248 [configure command line used to configure Squid])
250 CACHE_EFFECTIVE_USER="nobody"
251 AC_ARG_WITH(default-user,
252 AS_HELP_STRING([--with-default-user=USER],[System user account for squid permissions. Default: nobody]),
253 [ CACHE_EFFECTIVE_USER="$withval" ]
255 AC_SUBST(CACHE_EFFECTIVE_USER)
257 DEFAULT_LOG_DIR="$localstatedir/logs"
259 AS_HELP_STRING([--with-logdir=PATH],
260 [Default location for squid logs. default: PREFIX/var/logs]), [
263 AC_MSG_ERROR( --with-logdir requires a directory PATH. --with-logdir=PATH )
266 DEFAULT_LOG_DIR="$withval"
271 AC_SUBST(DEFAULT_LOG_DIR)
273 DEFAULT_PID_FILE="$localstatedir/run/@SERVICE_NAME@.pid"
275 AS_HELP_STRING([--with-pidfile=PATH],
276 [Default location for squid pid file. Default: PREFIX/var/run/squid.pid]), [
279 AC_MSG_ERROR( --with-pidfile requires a file PATH. --with-pidfile=PATH )
282 DEFAULT_PID_FILE="$withval"
286 AC_SUBST(DEFAULT_PID_FILE)
288 DEFAULT_SWAP_DIR="$localstatedir/cache/squid"
290 AS_HELP_STRING([--with-swapdir=PATH],
291 [Default location for squid cache directories. Default: PREFIX/var/cache/squid]), [
294 AC_MSG_ERROR( --with-swapdir requires a directory PATH. --with-swapdir=PATH )
297 DEFAULT_SWAP_DIR="$withval"
301 AC_SUBST(DEFAULT_SWAP_DIR)
303 dnl Set Default CFLAGS
304 if test "x$PRESET_CFLAGS" = "x"; then
305 if test "$squid_cv_compiler" = "gcc"; then
308 # sunos has too many warnings for this to be useful
312 # Motorola cc/ld does not like -02 but is ok on -O
313 CFLAGS=`echo $CFLAGS | sed -e 's/-O[0-9]/-O/'`
316 CFLAGS="$squid_cv_cc_option_wall $CFLAGS"
322 # suggested by Rafael Seidl <rafaels@cthulhu.engr.sgi.com>
323 CFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
324 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
325 -Wl,-woff,85,-woff,84,-woff,134 \
326 -nostdinc -I/usr/include -D_BSD_SIGNALS $CFLAGS"
327 CXXFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
328 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
329 -Wl,-woff,85,-woff,84,-woff,134 \
330 -nostdinc -I/usr/include -D_BSD_SIGNALS $CXXFLAGS"
338 dnl set squid required flags
339 if test "$squid_cv_compiler" = "gcc"; then
340 case "$squid_host_os" in
342 dnl Guido Serassio (serassio@squid-cache.org) 20070811
343 dnl Using the latest MinGW (gcc 3.4.5 + mingw-runtime 3.13) cannot build with
344 dnl -Werror -Wmissing-prototypes -Wmissing-declarations
345 dnl TODO: check if the problem will be present in any other newer MinGW release.
346 SQUID_CFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow"
349 SQUID_CFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wcomments -Wshadow"
352 SQUID_CXXFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual"
358 dnl CentOS (and RHEL) still define ntohs() using deprecated C++ features
359 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_wno_deprecated_register],[-Werror -Wno-deprecated-register],[[#include <arpa/inet.h>]],[[int fox=ntohs(1);]])
361 if test "x$enable_strict_error_checking" != "xno"; then
362 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_option_werror"
363 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cxx_option_werror"
366 if test "x$ac_cv_require_wno_deprecated_register" = "xyes"; then
367 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -Wno-deprecated-register"
370 # squid_cv_cc_arg_pipe is set by SQUID_CC_GUESS_OPTIONS
371 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cc_arg_pipe"
372 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_arg_pipe"
374 # possibly include some build info tag into squid -v
375 SQUID_EMBED_BUILD_INFO
377 AC_ARG_ENABLE(optimizations,
378 AS_HELP_STRING([--disable-optimizations],
379 [Do not compile Squid with compiler optimizations enabled.
380 Optimization is good for production builds, but not
381 good for debugging. During development, use
382 --disable-optimizations to reduce compilation times
383 and allow easier debugging. This option implies
384 --disable-inline]), [
385 if test "x$enableval" = "xno" ; then
386 AC_MSG_NOTICE([Disabling compiler optimizations (-O flag)])
387 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9g]]*//'`"
388 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-O[[0-9g]]*//'`"
393 AH_TEMPLATE(_USE_INLINE_,[Include inline methods into header file])
394 AC_ARG_ENABLE(inline,
395 AS_HELP_STRING([--disable-inline],
396 [Do not compile trivial methods as inline. Squid
397 is coded with much of the code able to be inlined.
398 Inlining is good for production builds, but not
399 good for development. During development, use
400 --disable-inline to reduce compilation times and
401 allow incremental builds to be quick. For
402 production builds, or load tests, use
403 --enable-inline to have squid make all trivial
404 methods inlinable by the compiler.]), [
405 SQUID_YESNO([$enableval],
406 [Unrecognized argument to --disable-inline: $enableval])
408 AC_MSG_NOTICE([inlining optimizations enabled: ${enable_inline:=yes}])
409 SQUID_DEFINE_BOOL(_USE_INLINE_,$enable_inline,
410 [Include inline methods into header file])
411 # to be used by sub-commands
414 AC_ARG_ENABLE(debug-cbdata,
415 AS_HELP_STRING([--enable-debug-cbdata],
416 [Provide some debug information in cbdata]), [
417 SQUID_YESNO([$enableval],
418 [unrecognized argument to --enable-debug-cbdata: $enableval])
420 SQUID_DEFINE_BOOL(USE_CBDATA_DEBUG,${enable_debug_cbdata:=no},
421 [Enable support for cbdata debug information])
422 AC_MSG_NOTICE([cbdata debugging enabled: $enable_debug_cbdata])
425 dnl Nasty hack to get autoconf 2.64 on Linux to run.
426 dnl all other uses of RUN_IFELSE are wrapped inside CACHE_CHECK which breaks on 2.64
427 AC_RUN_IFELSE([AC_LANG_SOURCE([[ int main(int argc, char **argv) { return 0; } ]])],[],[],[:])
429 AH_TEMPLATE(XMALLOC_STATISTICS,[Define to have malloc statistics])
430 AC_ARG_ENABLE(xmalloc-statistics,
431 AS_HELP_STRING([--enable-xmalloc-statistics],
432 [Show malloc statistics in status page]), [
433 SQUID_YESNO([$enableval],
434 [unrecognized argument to --enable-xmalloc-statistics: $enableval])
436 SQUID_DEFINE_BOOL(XMALLOC_STATISTICS,${enable_xmalloc_statistics:=no},
437 [Show malloc statistics in status page])
438 AC_MSG_NOTICE([xmalloc stats display: $enable_xmalloc_statistics])
440 squid_opt_aufs_threads=""
441 AC_ARG_WITH(aufs-threads,
442 AS_HELP_STRING([--with-aufs-threads=N_THREADS],
443 [Tune the number of worker threads for the aufs object store.]), [
446 squid_opt_aufs_threads=$withval
449 AC_MSG_ERROR(--with-aufs-threads expects a numeric argument)
453 if test "x$squid_opt_aufs_threads" != "x"; then
454 AC_MSG_NOTICE([With $squid_opt_aufs_threads aufs threads])
455 AC_DEFINE_UNQUOTED(AUFS_IO_THREADS,$squid_opt_aufs_threads,
456 [Defines how many threads aufs uses for I/O])
459 AC_ARG_WITH(dl, AS_HELP_STRING([--with-dl],[Use dynamic linking]))
460 if test "x$with_dl" = "xyes"; then
461 AC_MSG_NOTICE([With dl])
464 ## check for atomics library before anything that might need it
465 # AC_SEARCH_LIBS pollutes LIBS
466 SQUID_STATE_SAVE(LIBATOMIC)
467 AC_SEARCH_LIBS([__atomic_load_8],[atomic],[
468 test "$ac_res" = "none required" || ATOMICLIB=$ac_res],[])
469 SQUID_STATE_ROLLBACK(LIBATOMIC)
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.
531 AH_TEMPLATE(HAVE_DISKIO_MODULE_AIO, [Whether POSIX AIO Disk I/O module is built])
532 AH_TEMPLATE(HAVE_DISKIO_MODULE_BLOCKING, [Whether Blocking Disk I/O module is built])
533 AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKDAEMON, [Whether DiskDaemon Disk I/O module is built])
534 AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKTHREADS, [Whether DiskThreads 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 AC_DEFINE([HAVE_DISKIO_MODULE_AIO],1,[POSIX AIO Disk I/O module is built])
583 case "$squid_host_os" in
586 AC_MSG_NOTICE([Replacing AIO DiskIO module with: Windows overlapped I/O support])
589 AC_MSG_NOTICE([Enabling AIO DiskIO module])
593 AC_MSG_NOTICE([AIO DiskIO Module disabled. Missing POSIX AIO support.])
594 squid_disk_module_candidates_AIO=no
599 AC_MSG_NOTICE([Enabling Blocking DiskIO module])
600 DISK_MODULES="$DISK_MODULES Blocking"
601 AC_DEFINE([HAVE_DISKIO_MODULE_BLOCKING],1,[Blocking Disk I/O module is built])
605 case "$squid_host_os" in
607 AC_MSG_NOTICE(["DiskDaemon not supported on MinGW"])
608 squid_disk_module_candidates_DiskDaemon=no
611 AC_MSG_NOTICE([Enabling DiskDaemon DiskIO module])
612 DISK_MODULES="$DISK_MODULES DiskDaemon"
613 AC_DEFINE([HAVE_DISKIO_MODULE_DISKDAEMON],1,[DiskDaemon Disk I/O module is built])
619 squid_opt_use_diskthreads="yes"
621 SQUID_STATE_SAVE([diskthreads_state],[SQUID_CFLAGS SQUID_CXXFLAGS])
622 if test "x$with_pthreads" != "xno"; then
623 dnl TODO: this needs to be extended to handle more systems and better
624 dnl REF: http://www.openldap.org/lists/openldap-bugs/200006/msg00070.html
625 dnl REF: http://autoconf-archive.cryp.to/acx_pthread.html
626 case "$squid_host_os" in
629 AC_MSG_NOTICE([Windows threads support automatically enabled])
632 if test `echo "$squid_host_os_version" | tr -d .` -lt 70 ; then
633 AC_MSG_NOTICE(pthread library requires FreeBSD 7 or later)
634 squid_opt_use_diskthreads="no"
636 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
637 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
638 if test "x$GCC" = "xyes" -a "x$PRESET_LDFLAGS" = "x" ; then
639 LDFLAGS="$LDFLAGS -pthread"
644 if test `echo "$squid_host_os_version" | tr -d .` -lt 52 ; then
645 AC_MSG_NOTICE(pthread library requires OpenBSD 5.2 or later)
646 squid_opt_use_diskthreads="no"
648 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
649 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
650 LDFLAGS="$LDFLAGS -lpthread"
654 if test "x$GCC" = "xyes" ; then
655 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -pthreads"
656 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -pthreads"
657 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
658 AC_MSG_NOTICE(pthread library required but cannot be found.)
659 squid_opt_use_diskthreads="no"
662 dnl test for -lpthread first. libc version is a stub apparently on Solaris.
663 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -lpthread"
664 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -lpthread"
665 AC_SEARCH_LIBS([pthread_create],[pthread thread],[
666 LIBPTHREADS="" #in LIBS
668 AC_MSG_NOTICE(pthread library required but cannot be found.)
669 squid_opt_use_diskthreads="no"
674 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
675 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
676 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
677 AC_MSG_NOTICE(pthread library required but cannot be found.)
678 squid_opt_use_diskthreads="no"
683 AC_MSG_NOTICE([Native pthreads support manually disabled.])
684 squid_opt_use_diskthreads="no"
686 if test "x$squid_opt_use_diskthreads" = "xyes" ; then
687 AC_MSG_NOTICE([Enabling DiskThreads DiskIO module])
688 DISK_MODULES="$DISK_MODULES DiskThreads"
689 AC_DEFINE([HAVE_DISKIO_MODULE_DISKTHREADS],1,[DiskThreads Disk I/O module is built])
691 AC_MSG_NOTICE([Native pthreads support disabled. DiskThreads module automaticaly disabled.])
692 SQUID_STATE_ROLLBACK([diskthreads_state])
693 squid_disk_module_candidates_DiskThreads=no
698 if test "x$ac_cv_search_shm_open" = "xno" ; then
699 AC_MSG_NOTICE([DiskIO IpcIo module requires shared memory support])
700 squid_disk_module_candidates_IpcIo=no
702 AC_MSG_NOTICE([Enabling IpcIo DiskIO module])
703 DISK_MODULES="$DISK_MODULES IpcIo"
704 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])
713 squid_disk_module_candidates_Mmapped=no
715 AC_MSG_NOTICE([Enabling Mmapped DiskIO module])
716 DISK_MODULES="$DISK_MODULES Mmapped"
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}"
728 AC_MSG_NOTICE([IO Modules built: $DISK_MODULES])
729 AC_SUBST(DISK_MODULES)
731 AM_CONDITIONAL(ENABLE_DISKIO_AIO, test "x$squid_disk_module_candidates_AIO" = "xyes")
733 AM_CONDITIONAL(ENABLE_WIN32_AIO, test "x$squid_disk_module_candidates_AIO" = "xyes" -a "x$ENABLE_WIN32_AIO" = "x1")
734 AM_CONDITIONAL(ENABLE_DISKIO_BLOCKING, test "x$squid_disk_module_candidates_Blocking" = "xyes")
735 AM_CONDITIONAL(ENABLE_DISKIO_DISKDAEMON, test "x$squid_disk_module_candidates_DiskDaemon" = "xyes")
736 AM_CONDITIONAL(ENABLE_DISKIO_DISKTHREADS, test "x$squid_disk_module_candidates_DiskThreads" = "xyes")
737 AC_SUBST(LIBPTHREADS)
738 AM_CONDITIONAL(ENABLE_WIN32_AIOPS, test "x$squid_disk_module_candidates_DiskThreads" = "xyes" -a "x$ENABLE_WIN32_AIOPS" = "x1")
739 AM_CONDITIONAL(ENABLE_DISKIO_IPCIO, test "x$squid_disk_module_candidates_IpcIo" = "xyes")
740 AM_CONDITIONAL(ENABLE_DISKIO_MMAPPED, test "x$squid_disk_module_candidates_Mmapped" = "xyes")
742 dnl Check what Storage formats are wanted.
743 dnl This version will error out with a message saying why if a required DiskIO is missing.
744 squid_opt_enable_storeio=auto
745 AC_ARG_ENABLE([storeio],
746 AS_HELP_STRING([--enable-storeio="list of modules"],
747 [Build support for the list of store I/O modules.
748 The default is only to build the "ufs" module.
749 See src/fs for a list of available modules, or
750 Programmers Guide section <not yet written>
751 for details on how to build your custom store module]), [
754 squid_opt_enable_storeio=auto
757 squid_opt_enable_storeio=no
760 squid_opt_enable_storeio=yes
761 squid_storeio_module_candidates="`echo $enableval| sed -e 's/,/ /g;s/ */ /g'`"
762 # ufs is really always needed as it has low-level routines
763 # if it is a dupe it will be cleaned-up later
764 squid_storeio_module_candidates="$squid_storeio_module_candidates ufs"
768 if test "x$squid_opt_enable_storeio" = "xauto"; then
769 squid_opt_enable_storeio=yes
770 AC_MSG_CHECKING([for available StoreIO modules])
771 SQUID_LOOK_FOR_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
772 AC_MSG_RESULT([$squid_storeio_module_candidates])
775 SQUID_CLEANUP_MODULES_LIST([squid_storeio_module_candidates])
776 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
777 AC_MSG_NOTICE([Store modules built: $squid_storeio_module_candidates])
779 for fs in $squid_storeio_module_candidates none; do
782 if test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
783 "$squid_disk_module_candidates_DiskDaemon" != "yes" ; then
784 AC_MSG_ERROR([Storage diskd module requires DiskIO module: Blocking or DiskDaemon])
788 if test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
789 "$squid_disk_module_candidates_DiskThreads" != "yes" ; then
790 AC_MSG_ERROR([Storage module aufs requires DiskIO module: Blocking or DiskThreads])
794 if test "x$squid_disk_module_candidates_IpcIo" != "xyes" -a \
795 "x$squid_disk_module_candidates_Blocking" != "xyes"; then
796 AC_MSG_ERROR([Storage module Rock requires DiskIO module: Blocking or IpcIo])
798 squid_do_build_rock=true
801 if test "x$squid_disk_module_candidates_Blocking" != "xyes"; then
802 AC_MSG_ERROR([Storage module ufs requires DiskIO module: Blocking])
804 squid_do_build_ufs=true
809 AM_CONDITIONAL(ENABLE_FS_UFS, test "x$squid_do_build_ufs" = "xtrue")
810 AM_CONDITIONAL(ENABLE_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(ENABLE_ESI, test "x$squid_opt_use_esi" = "xyes")
958 AM_CONDITIONAL(ENABLE_LIBEXPAT, test "$HAVE_LIBEXPAT" = 1)
960 AM_CONDITIONAL(ENABLE_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])
970 if test "x$enable_icap_client" != "xno" ; then
971 ICAP_LIBS="icap/libicap.la"
972 squid_opt_use_adaptation=yes
974 AM_CONDITIONAL(ENABLE_ICAP_CLIENT, test "x$enable_icap_client" != "xno")
978 AC_MSG_CHECKING(whether to support eCAP)
980 AS_HELP_STRING([--enable-ecap],[support loadable content adaptation modules]), [
981 case "${enableval}" in
982 yes|no) squid_opt_use_ecap=$enableval ;;
983 *) AC_MSG_ERROR(bad value ${enableval} for --enable-ecap) ;;
985 AC_MSG_RESULT([$squid_opt_use_ecap, explicitly])
987 squid_opt_use_ecap=no;
988 AC_MSG_RESULT([$squid_opt_use_ecap, implicitly])
992 dnl Necessary if the first PKG_CHECK_MODULES call is conditional
995 dnl Perform configuration consistency checks for eCAP
996 if test "x$squid_opt_use_ecap" != "xno";
998 dnl eCAP support requires loadable modules, which are enabled by default
999 if test "x$enable_loadable_modules" != "xyes"
1001 AC_MSG_ERROR([eCAP support requires loadable modules. Please do not use --disable-loadable-modules with --enable-ecap.])
1004 if test -n "$PKG_CONFIG"; then
1005 dnl eCAP support requires libecap.
1006 dnl This Squid supports libecap v1.0.x.
1007 dnl Use EXT_ prefix to distinguish external libecap (that we check for
1008 dnl here) from our own convenience ecap library in Makefiles.
1009 PKG_CHECK_MODULES([EXT_LIBECAP],[libecap >= 1.0 libecap < 1.1])
1011 AC_MSG_NOTICE([eCAP support requires pkg-config to verify the correct library version. Trouble may follow.])
1016 if test "x$squid_opt_use_ecap" = "xyes"; then
1017 ECAP_LIBS="ecap/libecapsquid.la"
1018 squid_opt_use_adaptation=yes
1020 SQUID_DEFINE_BOOL(USE_ECAP,${squid_opt_use_ecap:=no},[Whether to use eCAP support])
1021 AM_CONDITIONAL(ENABLE_ECAP, test "x$squid_opt_use_ecap" = "xyes")
1024 dnl enable adaptation if requested by specific adaptation mechanisms
1026 if test "x$squid_opt_use_adaptation" = "xyes"; then
1027 ADAPTATION_LIBS="adaptation/libadaptation.la"
1029 SQUID_DEFINE_BOOL(USE_ADAPTATION,${squid_opt_use_adaptation:=no}, [common adaptation support])
1030 AM_CONDITIONAL(ENABLE_ADAPTATION, test "x$squid_opt_use_adaptation" = "xyes")
1031 AC_SUBST(ADAPTATION_LIBS)
1033 test "x$squid_host_os" = "xmingw" && enable_wccp=no
1035 AS_HELP_STRING([--disable-wccp],[Disable Web Cache Coordination Protocol]), [
1036 SQUID_YESNO([$enableval],[unrecognized argument to --disable-wccp: $enableval])
1038 SQUID_DEFINE_BOOL(USE_WCCP, ${enable_wccp:=yes}, [Define to enable WCCP])
1039 AC_MSG_NOTICE([Web Cache Coordination Protocol enabled: $enable_wccp])
1041 test "x$squid_host_os" = "xmingw" && enable_wccpv2=no
1042 AC_ARG_ENABLE(wccpv2,
1043 AS_HELP_STRING([--disable-wccpv2],
1044 [Disable Web Cache Coordination V2 Protocol]), [
1045 SQUID_YESNO([$enableval],
1046 [unrecognized argument to --disable-wccpv2: $enableval])
1048 SQUID_DEFINE_BOOL(USE_WCCPv2,${enable_wccpv2:=yes},
1049 [Define to enable WCCP V2])
1050 AC_MSG_NOTICE([Web Cache Coordination V2 Protocol enabled: $enable_wccpv2])
1052 AC_ARG_ENABLE(kill-parent-hack,
1053 AS_HELP_STRING([--enable-kill-parent-hack],[Kill parent on shutdown]), [
1054 SQUID_YESNO([$enableval],
1055 [unrecognized argument to --enable-kill-parent-hack: $enableval])
1057 SQUID_DEFINE_BOOL(KILL_PARENT_OPT,${enable_kill_parent_hack:=no},
1058 [A dangerous feature which causes Squid to kill its parent
1059 process (presumably the RunCache script) upon receipt
1060 of SIGTERM or SIGINT. Deprecated, Use with caution.])
1061 AC_MSG_NOTICE([Kill parent on shutdown hack enabled: $enable_kill_parent_hack])
1064 AS_HELP_STRING([--disable-snmp],[Disable SNMP monitoring support]), [
1065 SQUID_YESNO([$enableval],
1066 [unrecognized argument to --disable-snmp: $enableval])
1068 SQUID_DEFINE_BOOL(SQUID_SNMP,${enable_snmp:=yes},
1069 [Define to enable SNMP monitoring of Squid])
1070 AM_CONDITIONAL(ENABLE_SNMP, [test "x$enable_snmp" = "xyes"])
1071 if test "x$enable_snmp" = "xyes"; then
1072 SNMPLIB='../lib/snmplib/libsnmplib.la'
1074 AC_MSG_NOTICE([SNMP support enabled: $enable_snmp])
1077 AC_ARG_ENABLE(cachemgr-hostname,
1078 AS_HELP_STRING([--enable-cachemgr-hostname=hostname],
1079 [Make cachemgr.cgi default to this host.
1080 If unspecified, uses the name of the build-host]), [
1083 AC_DEFINE(CACHEMGR_HOSTNAME,[getfullhostname()],
1084 [If you are upset that the cachemgr.cgi form comes up with the hostname field blank, then define this to getfullhostname()])
1085 AC_MSG_NOTICE([Cachemgr default hostname == host where cachemgr runs])
1091 AC_DEFINE_UNQUOTED(CACHEMGR_HOSTNAME,"${enableval}")
1092 AC_MSG_NOTICE([Cachemgr default hostname set to ${enableval}])
1098 AS_HELP_STRING([--disable-eui],
1099 [Disable use of ARP / MAC/ EUI (ether address)]), [
1100 SQUID_YESNO([$enableval],[--disable-eui expects no arguments])
1102 if test "x${enable_eui:=yes}" = "xyes" ; then
1103 case "$squid_host_os" in
1104 linux|solaris|freebsd|openbsd|netbsd|cygwin)
1111 AC_MSG_WARN([EUI support probably will not work on host $host.])
1114 # iphlpapi.h check delayed after winsock2.h
1129 #include <sys/types.h>
1130 #include <sys/socket.h>
1133 # OpenBSD, FreeBSD and NetBSD requires sys/param.h to be included before sysctl.h and net/if_dl.h
1138 #if HAVE_SYS_PARAM_H
1139 #include <sys/param.h>
1144 AC_MSG_NOTICE([EUI (MAC address) controls enabled: $enable_eui])
1145 SQUID_DEFINE_BOOL(USE_SQUID_EUI,$enable_eui,
1146 [Define this to include code which lets you use ethernet addresses. This code uses API initially defined in 4.4-BSD.])
1147 AM_CONDITIONAL(ENABLE_EUI, [test "x$enable_eui" = "xyes" ])
1151 AS_HELP_STRING([--disable-htcp],[Disable HTCP protocol support]), [
1152 SQUID_YESNO([$enableval],
1153 [unrecognized argument to --disable-htcp: $enableval])
1155 SQUID_DEFINE_BOOL(USE_HTCP,${enable_htcp:=yes},
1156 [Define this to include code for the Hypertext Cache Protocol (HTCP)])
1157 AM_CONDITIONAL(ENABLE_HTCP, [test "x$enable_htcp" = "xyes"])
1158 AC_MSG_NOTICE([HTCP support enabled: $enable_htcp])
1160 # Cryptograhic libraries
1162 AS_HELP_STRING([--without-nettle],[Compile without the Nettle crypto library.]),[
1163 case "$with_nettle" in
1165 : # Nothing special to do here
1168 if test ! -d "$withval" ; then
1169 AC_MSG_ERROR([--with-nettle path does not point to a directory])
1171 NETTLELIBDIR="-L$with_nettle/lib"
1172 CPPFLAGS="-I$with_nettle/include $CPPFLAGS"
1176 if test "x$with_nettle" != "xno" ; then
1177 AC_CHECK_LIB(nettle, nettle_md5_init,[
1178 NETTLELIB="$NETTLELIBDIR -lnettle"
1179 AC_CHECK_HEADERS(nettle/md5.h)
1181 if test "x$with_nettle" != "xno" ; then
1182 # Base64 uses the nettle 3.0 API
1183 # which matters on 64-bit systems
1184 AC_CHECK_HEADERS(nettle/base64.h)
1185 AC_MSG_CHECKING([for Nettle 3.0 API compatibility])
1186 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1189 # include <nettle/base64.h>
1191 uint8_t inData[10]; inData[0] = '\0';
1193 struct base64_decode_ctx ctx;
1194 base64_decode_init(&ctx);
1195 uint8_t outData[10];
1197 if (!base64_decode_update(&ctx, &dstLen, outData, srcLen, inData) ||
1198 !base64_decode_final(&ctx)) {
1201 ]])],[AC_MSG_RESULT(yes)
1202 AC_DEFINE(HAVE_NETTLE30_BASE64,1,[set to 1 if Nettle 3.0 API will link])
1203 ],[AC_MSG_RESULT(no)])
1206 AC_MSG_NOTICE([Using Nettle cryptographic library: ${with_nettle:=yes}])
1209 dnl Check for libcrypt
1211 dnl Some of our helpers use crypt(3) which may be in libc, or in
1212 dnl libcrypt (eg FreeBSD)
1213 AC_CHECK_LIB(crypt, crypt, [CRYPTLIB="-lcrypt"])
1214 dnl Solaris10 provides MD5 natively through libmd5
1215 AC_CHECK_LIB(md5, MD5Init, [CRYPTLIB="$CRYPTLIB -lmd5"])
1220 dnl User may want to disable GnuTLS
1222 AS_HELP_STRING([--without-gnutls],
1223 [Do not use GnuTLS for SSL. Default: auto-detect]), [
1224 case "$with_gnutls" in
1226 : # Nothing special to do here
1229 if test ! -d "$withval" ; then
1230 AC_MSG_ERROR([--with-gnutls path does not point to a directory])
1232 LIBGNUTLS_PATH="-L$with_gnutls/lib"
1233 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1236 AH_TEMPLATE(USE_GNUTLS,[GnuTLS support is available])
1237 if test "x$with_gnutls" != "xno"; then
1238 SQUID_STATE_SAVE(squid_gnutls_state)
1240 # User may have provided a custom location for GnuTLS. Otherwise...
1241 LIBS="$LIBS $LIBGNUTLS_PATH"
1243 # auto-detect using pkg-config
1244 PKG_CHECK_MODULES([LIBGNUTLS],[gnutls >= 3.1.5],[
1245 CPPFLAGS="$CPPFLAGS $LIBGNUTLS_CFLAGS"
1247 ## find the package without pkg-config
1248 ## check that the library is actually new enough.
1249 ## by testing for a 3.1.5+ function which we use
1250 AC_CHECK_LIB(gnutls,gnutls_certificate_verify_peers3,[LIBGNUTLS_LIBS="-lgnutls"])
1252 AC_CHECK_HEADERS(gnutls/gnutls.h gnutls/x509.h)
1254 SQUID_STATE_ROLLBACK(squid_gnutls_state) #de-pollute LIBS
1256 if test "x$with_gnutls" = "xyes" -a "x$LIBGNUTLS_LIBS" = "x"; then
1257 AC_MSG_ERROR([Required GnuTLS library not found])
1259 if test "x$LIBGNUTLS_LIBS" != "x" ; then
1260 CXXFLAGS="$LIBGNUTLS_CFLAGS $CXXFLAGS"
1261 SSLLIB="$LIBGNUTLS_PATH $LIBGNUTLS_LIBS $SSLLIB"
1262 AC_DEFINE(USE_GNUTLS,1,[GnuTLS support is available])
1267 AC_MSG_NOTICE([GnuTLS library support: ${with_gnutls:=auto} ${LIBGNUTLS_PATH} ${LIBGNUTLS_LIBS}])
1269 dnl User may specify OpenSSL is needed from a non-standard location
1270 AC_ARG_WITH(openssl,
1271 AS_HELP_STRING([--with-openssl=PATH],
1272 [Compile with the OpenSSL libraries. The path to
1273 the OpenSSL development libraries and headers
1274 installation can be specified if outside of the
1275 system standard directories]), [
1276 case "$with_openssl" in
1278 : # Nothing special to do here
1281 if test ! -d "$withval" ; then
1282 AC_MSG_ERROR([--with-openssl path does not point to a directory])
1284 LIBOPENSSL_PATH="-L$with_openssl/lib"
1285 CPPFLAGS="-I$with_openssl/include $CPPFLAGS"
1289 AH_TEMPLATE(USE_OPENSSL,[OpenSSL support is available])
1290 ## OpenSSL is default disable due to licensing issues on some OS
1291 if test "x$with_openssl" = "xyes"; then
1297 openssl/opensslv.h \
1304 # User may have provided a custom location for OpenSSL. Otherwise...
1305 SQUID_STATE_SAVE(squid_openssl_state)
1306 LIBS="$LIBS $LIBOPENSSL_PATH"
1308 # auto-detect using pkg-config
1309 PKG_CHECK_MODULES([LIBOPENSSL],[openssl],,[
1310 ## For some OS pkg-config is broken or unavailable.
1311 ## Detect libraries the hard way.
1313 # Windows MinGW has some special libraries ...
1314 if test "x$squid_host_os" = "xmingw" ; then
1315 LIBOPENSSL_LIBS='-lssleay32 -leay32 -lgdi32 $LIBOPENSSL_LIBS'
1316 AC_MSG_NOTICE([Windows OpenSSL library support: yes -lssleay32 -leay32 -lgdi32])
1319 AC_CHECK_LIB(crypto,[CRYPTO_new_ex_data],[LIBOPENSSL_LIBS="-lcrypto $LIBOPENSSL_LIBS"],[
1320 AC_MSG_ERROR([library 'crypto' is required for OpenSSL])
1322 AC_CHECK_LIB(ssl,[SSL_library_init],[LIBOPENSSL_LIBS="-lssl $LIBOPENSSL_LIBS"],[
1323 AC_MSG_ERROR([library 'ssl' is required for OpenSSL])
1327 # This is a workaround for RedHat 9 brain damage..
1328 if test -d /usr/kerberos/include -a -f /usr/include/openssl/kssl.h; then
1329 AC_MSG_NOTICE([OpenSSL depends on Kerberos])
1330 LIBOPENSSL_LIBS="-L/usr/kerberos/lib $LIBOPENSSL_LIBS"
1331 CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
1333 SQUID_STATE_ROLLBACK(squid_openssl_state) #de-pollute LIBS
1335 if test "x$LIBOPENSSL_LIBS" != "x"; then
1336 CXXFLAGS="$LIBOPENSSL_CFLAGS $CXXFLAGS"
1337 SSLLIB="$LIBOPENSSL_PATH $LIBOPENSSL_LIBS $SSLLIB"
1338 AC_DEFINE(USE_OPENSSL,1,[OpenSSL support is available])
1340 # check for other specific broken implementations
1341 SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS
1342 SQUID_CHECK_OPENSSL_CONST_SSL_METHOD
1343 SQUID_CHECK_OPENSSL_TXTDB
1344 SQUID_CHECK_OPENSSL_HELLO_OVERWRITE_HACK
1346 if test "x$SSLLIB" = "x"; then
1347 AC_MSG_ERROR([Required OpenSSL library not found])
1350 AC_MSG_NOTICE([OpenSSL library support: ${with_openssl:=no} ${LIBOPENSSL_PATH} ${LIBOPENSSL_LIBS}])
1351 AM_CONDITIONAL(ENABLE_SSL,[ test "x$with_openssl" = "xyes" ])
1354 dnl User may specify MIT Kerberos is needed from a non-standard location
1355 AC_ARG_WITH(mit-krb5,
1356 AS_HELP_STRING([--without-mit-krb5],
1357 [Compile without MIT Kerberos support.]), [
1358 case "$with_mit_krb5" in
1360 : # Nothing special to do here
1363 if test ! -d "$withval" ; then
1364 AC_MSG_ERROR([--with-mit-krb5 path does not point to a directory])
1366 if test -d "$with_mit_krb5/lib64" ; then
1367 LIB_KRB5_PATH="-L$with_mit_krb5/lib64 -L$with_mit_krb5/lib"
1369 LIB_KRB5_PATH="-L$with_mit_krb5/lib"
1371 CXXFLAGS="-I$with_mit_krb5/include $CXXFLAGS"
1372 krb5confpath="$with_mit_krb5/bin"
1376 AH_TEMPLATE(USE_APPLE_KRB5,[Apple Kerberos support is available])
1377 AH_TEMPLATE(USE_MIT_KRB5,[MIT Kerberos support is available])
1378 AH_TEMPLATE(USE_SOLARIS_KRB5,[Solaris Kerberos support is available])
1380 ## find out if pkg-config or krb5-config will work
1381 if test "x$with_mit_krb5" != "xno"; then
1382 # find installed libs via pkg-config or krb5-config
1384 PKG_CHECK_EXISTS(mit-krb5-gssapi mit-krb5, [squid_pc_krb5_name="mit-krb5-gssapi mit-krb5"],[
1385 PKG_CHECK_EXISTS(gssapi-krb5 krb5, [squid_pc_krb5_name="gssapi-krb5 krb5"])
1387 if test "x$squid_pc_krb5_name" = "x" -a "$cross_compiling" = "no"; then
1388 # Look for krb5-config (unless cross-compiling)
1389 AC_PATH_PROG(krb5_config,krb5-config,no)
1390 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1391 krb5confpath="`dirname $ac_cv_path_krb5_config`"
1392 ac_heimdal="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i heimdal`"
1393 ac_solaris="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i solaris`"
1394 ac_apple="`$ac_cv_path_krb5_config --vendor 2>/dev/null | grep -c -i apple`"
1395 if test $ac_solaris -gt 0 ; then
1396 with_solaris_krb5=yes
1397 elif test $ac_apple -gt 0 ; then
1399 elif test $ac_heimdal -gt 0; then
1401 if test "x$with_mit_krb5" = "xyes"; then
1402 AC_MSG_ERROR([Could not find pkg-config or krb5-config for MIT Kerberos])
1406 if test "x$with_mit_krb5" = "xyes"; then
1407 AC_MSG_ERROR([Could not find krb5-config in path])
1415 # detect MIT Kerberos dependencies (except on Solaris)
1416 if test "x$with_mit_krb5" != "xno" -a "x$with_solaris_krb5" != "xyes"; then
1417 SQUID_STATE_SAVE([squid_krb5_save])
1418 LIBS="$LIBS $LIB_KRB5_PATH"
1420 # auto-detect using pkg-config
1421 PKG_CHECK_MODULES([LIB_KRB5], $squid_pc_krb5_name,,[
1422 # look for krb5-config (unless cross-compiling)
1423 if test "$cross_compiling" = "no"; then
1424 if test "x$krb5confpath" = "x" ; then
1425 AC_PATH_PROG(krb5_config,krb5-config,no)
1426 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1427 ac_krb5_config="$ac_cv_path_krb5_config"
1430 ac_krb5_config="$krb5confpath/krb5-config"
1433 if test "x$ac_krb5_config" != "x" && test -x "$ac_krb5_config"; then
1435 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1436 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1437 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1438 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1439 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1441 ## For some OS pkg-config is broken or unavailable.
1442 ## Detect libraries the hard way.
1444 SQUID_STATE_SAVE([squid_mit_save])
1446 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1447 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
1448 AC_MSG_WARN([library 'com_err' is required for MIT Kerberos])
1449 missing_required=yes
1452 AC_CHECK_LIB(k5crypto, [main], [LIB_KRB5_LIBS="-lk5crypto $LIB_KRB5_LIBS"],[
1453 AC_MSG_WARN([library 'k5crypto' is required for MIT Kerberos])
1454 missing_required=yes
1457 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1458 AC_MSG_WARN([library 'krb5' is required for MIT Kerberos])
1459 missing_required=yes
1462 AC_CHECK_LIB(gssapi_krb5, [main], [LIB_KRB5_LIBS="-lgssapi_krb5 $LIB_KRB5_LIBS"],[
1463 AC_MSG_WARN([library 'gssapi_krb5' is required for MIT Kerberos])
1464 missing_required=yes
1466 SQUID_STATE_ROLLBACK([squid_mit_save])
1467 if test "x$missing_required" = "xyes"; then
1473 if test "x$LIB_KRB5_LIBS" != "x"; then
1474 if test "x$with_apple_krb5" = "xyes" ; then
1475 AC_DEFINE(USE_APPLE_KRB5,1,[Apple Kerberos support is available])
1476 KRB5_FLAVOUR="Apple"
1478 AC_DEFINE(USE_MIT_KRB5,1,[MIT Kerberos support is available])
1481 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1482 KRB5INCS="$LIB_KRB5_CFLAGS"
1484 # check for other specific broken implementations
1485 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1486 LIBS="$LIBS $KRB5LIBS"
1488 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1489 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1490 AC_CHECK_HEADERS(gssapi/gssapi_generic.h)
1491 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1492 AC_CHECK_HEADERS(profile.h)
1494 SQUID_CHECK_KRB5_FUNCS
1496 if test "x$with_mit_krb5" = "xyes" -a "x$KRB5LIBS" = "x"; then
1497 AC_MSG_ERROR([Required Kerberos library not found])
1498 elif test "x$KRB5LIBS" = "x"; then
1502 SQUID_STATE_ROLLBACK([squid_krb5_save])
1505 # detect Solaris Kerberos dependencies
1506 if test "x$with_solaris_krb5" = "xyes" -a "x$KRB5LIBS" = "x"; then
1507 SQUID_STATE_SAVE([squid_krb5_save])
1508 LIBS="$LIBS $LIB_KRB5_PATH"
1510 # no pkg-config for solaris native Kerberos
1511 # look for krb5-config (unless cross-compiling)
1512 if test "$cross_compiling" = "no"; then
1513 if test "x$krb5confpath" = "x" ; then
1514 AC_PATH_PROG(krb5_config,krb5-config,no)
1515 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1516 ac_krb5_config="$ac_cv_path_krb5_config"
1519 ac_krb5_config="$krb5confpath/krb5-config"
1522 if test "x$ac_krb5_config" != "x" && test -x "$ac_krb5_config"; then
1524 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1525 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1526 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1527 # Solaris 10 Update 11 patches the krb5-config tool to produce stderr messages on stdout.
1528 SOLARIS_BROKEN_KRB5CONFIG_GSSAPI="`$ac_krb5_config --libs gssapi 2>/dev/null | grep "krb5-config"`"
1529 if test "x$SOLARIS_BROKEN_KRB5CONFIG_GSSAPI" = "x"; then
1530 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1531 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1534 ## For some OS pkg-config is broken or unavailable.
1535 ## Detect libraries the hard way.
1537 CXXFLAGS="-I/usr/include/kerberosv5 $CXXFLAGS"
1539 SQUID_STATE_SAVE([squid_solaris_save])
1541 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1542 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1543 AC_MSG_WARN([library 'krb5' is required for Solaris Kerberos])
1544 missing_required=yes
1547 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
1548 AC_MSG_WARN([library 'gss' is required for Solaris Kerberos])
1549 missing_required=yes
1551 SQUID_STATE_ROLLBACK([squid_solaris_save])
1552 if test "x$missing_required" = "xyes"; then
1557 if test "x$LIB_KRB5_LIBS" != "x"; then
1558 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1559 KRB5INCS="$LIB_KRB5_CFLAGS"
1560 AC_DEFINE(USE_SOLARIS_KRB5,1,[Solaris Kerberos support is available])
1561 KRB5_FLAVOUR="Solaris"
1563 # check for other specific broken implementations
1564 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1565 LIBS="$LIBS $KRB5LIBS"
1567 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1568 AC_CHECK_HEADERS(gssapi/gssapi.h gssapi/gssapi_ext.h)
1569 AC_CHECK_HEADERS(krb5.h com_err.h)
1571 SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H
1572 if test "x$squid_cv_broken_krb5_h" = "xyes"; then
1573 AC_DEFINE(HAVE_BROKEN_SOLARIS_KRB5_H, 1, [Define to 1 if Solaris krb5.h is broken for C++])
1574 AC_MSG_WARN([You have a broken Solaris <krb5.h> system include.])
1575 AC_MSG_WARN([Please see http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6837512])
1576 AC_MSG_WARN([If you need Kerberos support you will have to patch])
1577 AC_MSG_WARN([your system. See contrib/solaris/solaris-krb5-include.patch])
1579 SQUID_CHECK_KRB5_FUNCS
1581 if test "x$with_mit_krb5" = "xyes" -a "x$KRB5LIBS" = "x"; then
1582 # Error only if Solaris flavour was detected while looking for required MIT Kerberos
1583 AC_MSG_ERROR([Required Kerberos library not found])
1584 elif test "x$KRB5LIBS" = "x"; then
1585 with_solaris_krb5=no
1588 SQUID_STATE_ROLLBACK([squid_krb5_save])
1591 dnl User may specify Heimdal Kerberos is needed from a non-standard location
1592 AC_ARG_WITH(heimdal-krb5,
1593 AS_HELP_STRING([--without-heimdal-krb5],
1594 [Compile without Heimdal Kerberos support.]), [
1595 case "$with_heimdal_krb5" in
1597 : # Nothing special to do here
1600 if test ! -d "$withval" ; then
1601 AC_MSG_ERROR([--with-heimdal-krb5 path does not point to a directory])
1603 if test -d "$with_heimdal_krb5/lib64" ; then
1604 LIB_KRB5_PATH="-L$with_heimdal_krb5/lib64 -L$with_heimdal_krb5/lib"
1606 LIB_KRB5_PATH="-L$with_heimdal_krb5/lib"
1608 CXXFLAGS="-I$with_heimdal_krb5/include $CXXFLAGS"
1609 krb5confpath="$with_heimdal_krb5/bin"
1610 with_heimdal_krb5=yes
1613 AH_TEMPLATE(USE_HEIMDAL_KRB5,[Heimdal Kerberos support is available])
1614 if test "x$with_heimdal_krb5" != "xno" -a "x$KRB5LIBS" = "x"; then
1615 # find installed libs via pkg-config or krb5-config
1616 PKG_CHECK_EXISTS(heimdal-krb5, [squid_pc_krb5_name="heimdal-krb5"])
1617 if test "x$squid_pc_krb5_name" = "x"; then
1618 PKG_CHECK_EXISTS(heimdal-gssapi, [squid_pc_krb5_name="heimdal-gssapi"])
1620 if test "x$squid_pc_krb5_name" = "x" -a "$cross_compiling" = "no"; then
1621 # Look for krb5-config (unless cross-compiling)
1622 AC_PATH_PROG(krb5_config,krb5-config,no)
1623 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1624 krb5confpath="`dirname $ac_cv_path_krb5_config`"
1625 ac_heimdal="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i heimdal`"
1626 if test "x$with_heimdal_krb5" = "xyes" -a $ac_heimdal = 0; then
1627 AC_MSG_ERROR([Could not find pkg-config or krb5-config for Heimdal Kerberos])
1630 if test "x$with_heimdal_krb5" = "xyes"; then
1631 AC_MSG_ERROR([Could not find krb5-config in path])
1633 AC_MSG_WARN([Could not find krb5-config in path])
1634 with_heimdal_krb5=no
1639 if test "x$with_heimdal_krb5" != "xno" -a "x$KRB5LIBS" = "x"; then
1640 SQUID_STATE_SAVE([squid_krb5_save])
1641 LIBS="$LIBS $LIB_KRB5_PATH"
1643 # auto-detect using pkg-config
1644 PKG_CHECK_MODULES([LIB_KRB5], $squid_pc_krb5_name,,[
1645 # look for krb5-config (unless cross-compiling)
1646 if test "$cross_compiling" = "no"; then
1647 if test "x$krb5confpath" = "x" ; then
1648 AC_PATH_PROG(krb5_config,krb5-config,no)
1649 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1650 ac_krb5_config="$ac_cv_path_krb5_config"
1653 ac_krb5_config="$krb5confpath/krb5-config"
1656 if test "x$ac_krb5_config" != "x" -a -x "$ac_krb5_config"; then
1658 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1659 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1660 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1661 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1662 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1664 ## For some OS pkg-config is broken or unavailable.
1665 ## Detect libraries the hard way.
1666 SQUID_STATE_SAVE([squid_heimdal_save])
1668 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1669 AC_CHECK_LIB(resolv, [main], [LIB_KRB5_LIBS="-lresolv $LIB_KRB5_LIBS"],[
1670 AC_MSG_WARN([library 'resolv' is required for Heimdal Kerberos])
1671 missing_required=yes
1674 AC_CHECK_LIB(crypt, [main], [LIB_KRB5_LIBS="-lcrypt $LIB_KRB5_LIBS"],[
1675 AC_MSG_WARN([library 'crypt' is required for Heimdal Kerberos])
1676 missing_required=yes
1679 AC_CHECK_LIB(roken, [main], [LIB_KRB5_LIBS="-lroken $LIB_KRB5_LIBS"],[
1680 AC_MSG_WARN([library 'roken' is required for Heimdal Kerberos])
1681 missing_required=yes
1684 AC_CHECK_LIB(heimbase, [main], [LIB_KRB5_LIBS="-lheimbase $LIB_KRB5_LIBS"],[
1685 AC_MSG_WARN([library 'heimbase' may be required for Heimdal Kerberos])
1688 AC_CHECK_LIB(wind, [main], [LIB_KRB5_LIBS="-lwind $LIB_KRB5_LIBS"],[
1689 AC_MSG_WARN([library 'wind' may be required for Heimdal Kerberos])
1692 AC_CHECK_LIB(crypto, [main], [LIB_KRB5_LIBS="-lcrypto $LIB_KRB5_LIBS"],[
1693 AC_MSG_WARN([library 'crypto' is required for Heimdal Kerberos])
1694 missing_required=yes
1697 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
1698 AC_MSG_WARN([library 'com_err' is required for Heimdal Kerberos])
1699 missing_required=yes
1702 AC_CHECK_LIB(hx509, [main], [LIB_KRB5_LIBS="-lhx509 $LIB_KRB5_LIBS"],[
1703 AC_MSG_WARN([library 'hx509' may be required for Heimdal Kerberos])
1706 AC_CHECK_LIB(asn1, [main], [LIB_KRB5_LIBS="-lasn1 $LIB_KRB5_LIBS"],[
1707 AC_MSG_WARN([library 'asn1' is required for Heimdal Kerberos])
1708 missing_required=yes
1711 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1712 AC_MSG_WARN([library 'krb5' is required for Heimdal Kerberos])
1713 missing_required=yes
1716 AC_CHECK_LIB(heimntlm, [main], [LIB_KRB5_LIBS="-lheimntlm $LIB_KRB5_LIBS"],[
1717 AC_MSG_WARN([library 'heimntlm' may be required for Heimdal Kerberos])
1720 AC_CHECK_LIB(gssapi, [main], [LIB_KRB5_LIBS="-lgssapi $LIB_KRB5_LIBS"],[
1721 AC_MSG_WARN([library 'gssapi' is required for Heimdal Kerberos])
1722 missing_required=yes
1724 SQUID_STATE_ROLLBACK([squid_heimdal_save])
1725 if test "x$missing_required" = "xyes"; then
1730 if test "x$LIB_KRB5_LIBS" != "x"; then
1731 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1732 KRB5INCS="$LIB_KRB5_CFLAGS"
1733 AC_DEFINE(USE_HEIMDAL_KRB5,1,[Heimdal Kerberos support is available])
1734 KRB5_FLAVOUR="Heimdal"
1736 # check for other specific broken implementations
1737 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1738 LIBS="$LIBS $KRB5LIBS"
1740 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1741 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1742 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1744 SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H
1745 if test "x$squid_cv_broken_heimdal_krb5_h" = "xyes"; then
1746 AC_DEFINE(HAVE_BROKEN_HEIMDAL_KRB5_H, 1, [Define to 1 if Heimdal krb5.h is broken for C++])
1748 SQUID_CHECK_KRB5_FUNCS
1750 if test "x$KRB5LIBS" = "x"; then
1751 if test test "x$with_heimdal_krb5" = "xyes"; then
1752 AC_MSG_ERROR([Required Heimdal Kerberos library not found])
1754 AC_MSG_WARN([Heimdal Kerberos library not found])
1757 SQUID_STATE_ROLLBACK([squid_krb5_save])
1760 dnl User may specify GNU gss is needed from a non-standard location
1762 AS_HELP_STRING([--without-gnugss],
1763 [Compile without the GNU gss libraries.]), [
1764 case "$with_gnugss" in
1766 : # Nothing special to do here
1769 if test ! -d "$withval" ; then
1770 AC_MSG_ERROR([--with-gnugss path does not point to a directory])
1772 if test ! -d "$with_gnugss/lib64" ; then
1773 LIB_KRB5_PATH="-L$with_gnugss/lib64 -L$with_gnugss/lib"
1775 LIB_KRB5_PATH="-L$with_gnugss/lib"
1777 CXXFLAGS="-I$with_gnugss/include $CXXFLAGS"
1782 AH_TEMPLATE(USE_GNUGSS,[GNU gss support is available])
1783 if test "x$with_gnugss" != "xno" -a "x$KRB5LIBS" = "x"; then
1784 SQUID_STATE_SAVE([squid_krb5_save])
1785 LIBS="$LIBS $LIB_KRB5_PATH"
1787 # auto-detect using pkg-config
1788 PKG_CHECK_MODULES([LIB_KRB5],[gss],,[
1789 ## For some OS pkg-config is broken or unavailable.
1790 ## Detect libraries the hard way.
1792 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1793 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
1794 AC_MSG_WARN([library 'com_err' is required for GNU Kerberos])
1798 if test "x$LIB_KRB5_LIBS" != "x"; then
1799 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1800 KRB5INCS="$LIB_KRB5_CFLAGS"
1801 AC_DEFINE(USE_GNUGSS,1,[GNU Kerberos support is available])
1802 KRB5_FLAVOUR="GNU GSS"
1804 # check for other specific broken implementations
1805 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1806 LIBS="$LIBS $KRB5LIBS"
1808 AC_MSG_NOTICE([Try to find Kerbeors headers in given path])
1809 AC_CHECK_HEADERS(gss.h)
1811 SQUID_CHECK_WORKING_GSSAPI
1812 SQUID_DEFINE_BOOL(HAVE_GSSAPI,$squid_cv_working_gssapi,[GSSAPI support])
1814 SQUID_CHECK_SPNEGO_SUPPORT
1815 SQUID_DEFINE_BOOL(HAVE_SPNEGO,$squid_cv_have_spnego,[SPNEGO support])
1817 SQUID_CHECK_WORKING_KRB5
1818 SQUID_DEFINE_BOOL(HAVE_KRB5,$squid_cv_working_krb5,[KRB5 support])
1820 if test "x$KRB5LIBS" = "x"; then
1821 if test test "x$with_gnugss" = "xyes"; then
1822 AC_MSG_ERROR([Required GNU GSS Kerberos library not found])
1824 AC_MSG_WARN([GNU GSS Kerberos library not found])
1827 SQUID_STATE_ROLLBACK([squid_krb5_save])
1830 if test "x$KRB5LIBS" != "x"; then
1833 AC_MSG_NOTICE([$KRB5_FLAVOUR Kerberos library support: ${with_krb5:=no} ${LIB_KRB5_PATH} ${LIB_KRB5_LIBS}])
1837 dnl On MinGW OpenLDAP is not available, so LDAP helpers can be linked
1838 dnl only with Windows LDAP libraries using -lwldap32
1839 case "$squid_host_os" in
1845 AC_CHECK_LIB(ldap, ldap_init, [LDAPLIB="-lldap"])
1846 dnl LDAP helpers need to know if -llber is needed or not
1847 AC_CHECK_LIB(lber, ber_init, [LBERLIB="-llber"])
1848 dnl if no ldap lib found check for mozilla version
1849 if test "x$ac_cv_lib_ldap_ldap_init" != x""yes; then
1852 AC_CHECK_LIB(ldap60, ldap_init, [LDAPLIB="-lldap60"])
1853 LIBS="$LDAPLIB $LIBPTHREADS"
1854 AC_CHECK_LIB(prldap60, prldap_init, [LDAPLIB="-lprldap60 $LDAPLIB"])
1855 LIBS="$LDAPLIB $LIBPTHREADS"
1856 AC_CHECK_LIB(ssldap60, ldapssl_init, [LDAPLIB="-lssldap60 $LDAPLIB"])
1860 AC_CHECK_HEADERS(ldap.h lber.h)
1861 AC_CHECK_HEADERS(mozldap/ldap.h)
1864 dnl Check for LDAP_OPT_DEBUG_LEVEL
1866 AC_MSG_CHECKING([for LDAP_OPT_DEBUG_LEVEL])
1867 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1870 int i=LDAP_OPT_DEBUG_LEVEL
1872 [ AC_MSG_RESULT(yes) ],
1873 [ AC_MSG_RESULT(no) ])
1876 dnl Check for working ldap
1879 LIBS="$LDAPLIB $LBERLIB $LIBPTHREADS"
1880 AC_MSG_CHECKING([for working ldap])
1881 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1882 # define LDAP_DEPRECATED 1
1885 # elif HAVE_MOZLDAP_LDAP_H
1886 # include <mozldap/ldap.h>
1894 ldap_init((const char *)&host, port);
1899 [ AC_DEFINE(HAVE_LDAP, 1, [LDAP support])
1900 AC_MSG_RESULT(yes) ],
1901 [ AC_MSG_RESULT(no) ],
1902 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1906 dnl Check for ldap vendor
1908 AC_MSG_CHECKING([for OpenLDAP])
1909 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1913 # include <string.h>
1917 return strcmp(LDAP_VENDOR_NAME,"OpenLDAP");
1920 [ AC_DEFINE(HAVE_OPENLDAP, 1, [OpenLDAP support])
1921 AC_MSG_RESULT(yes) ],
1922 [ AC_MSG_RESULT(no) ],
1923 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1925 AC_MSG_CHECKING([for Sun LDAP SDK])
1926 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1930 # include <string.h>
1934 return strcmp(LDAP_VENDOR_NAME,"Sun Microsystems Inc.");
1937 [ AC_DEFINE(HAVE_SUN_LDAP_SDK, 1, [Sun LDAP SDK support])
1938 AC_MSG_RESULT(yes) ],
1939 [ AC_MSG_RESULT(no) ],
1940 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1942 AC_MSG_CHECKING([for Mozilla LDAP SDK])
1943 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1946 # elif HAVE_MOZLDAP_LDAP_H
1947 # include <mozldap/ldap.h>
1949 # include <string.h>
1953 return strcmp(LDAP_VENDOR_NAME,"mozilla.org");
1956 [ AC_DEFINE(HAVE_MOZILLA_LDAP_SDK, 1, [Mozilla LDAP SDK support])
1957 AC_MSG_RESULT(yes) ],
1958 [ AC_MSG_RESULT(no)],
1959 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1962 dnl Check for LDAP_REBINDPROC_CALLBACK
1964 AC_MSG_CHECKING([for LDAP_REBINDPROC_CALLBACK])
1965 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1968 # elif HAVE_MOZLDAP_LDAP_H
1969 # include <mozldap/ldap.h>
1972 LDAP_REBINDPROC_CALLBACK ldap_rebind;
1974 [ AC_DEFINE(HAVE_LDAP_REBINDPROC_CALLBACK,1,[Define to 1 if you have LDAP_REBINDPROC_CALLBACK])
1975 AC_MSG_RESULT(yes) ],
1976 [ AC_MSG_RESULT(no) ])
1979 dnl Check for LDAP_REBIND_PROC
1981 AC_MSG_CHECKING([for LDAP_REBIND_PROC])
1982 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1985 # elif HAVE_MOZLDAP_LDAP_H
1986 # include <mozldap/ldap.h>
1989 LDAP_REBIND_PROC ldap_rebind;
1991 [ AC_DEFINE(HAVE_LDAP_REBIND_PROC,1,[Define to 1 if you have LDAP_REBIND_PROC])
1992 AC_MSG_RESULT(yes) ],
1993 [ AC_MSG_RESULT(no) ])
1996 dnl Check for LDAP_REBIND_FUNCTION
1998 AC_MSG_CHECKING([for LDAP_REBIND_FUNCTION])
1999 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2000 # define LDAP_REFERRALS
2003 # elif HAVE_MOZLDAP_LDAP_H
2004 # include <mozldap/ldap.h>
2007 LDAP_REBIND_FUNCTION ldap_rebind;
2009 [ AC_DEFINE(HAVE_LDAP_REBIND_FUNCTION,1,[Define to 1 if you have LDAP_REBIND_FUNCTION])
2010 AC_MSG_RESULT(yes) ],
2011 [ AC_MSG_RESULT(no) ])
2014 dnl Check for LDAP_SCOPE_DEFAULT
2016 AC_MSG_CHECKING([for LDAP_SCOPE_DEFAULT])
2017 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2020 # elif HAVE_MOZLDAP_LDAP_H
2021 # include <mozldap/ldap.h>
2024 int i=LDAP_SCOPE_DEFAULT;
2026 [ AC_DEFINE(HAVE_LDAP_SCOPE_DEFAULT,1,[Define to 1 if you have LDAP_SCOPE_DEFAULT])
2027 AC_MSG_RESULT(yes) ],
2028 [ AC_MSG_RESULT(no) ])
2031 dnl Check for ldap_url_desc.lud_scheme
2033 AC_CHECK_MEMBER(struct ldap_url_desc.lud_scheme,
2034 AC_DEFINE(HAVE_LDAP_URL_LUD_SCHEME,1,
2035 [Define to 1 if you have LDAPURLDesc.lud_scheme]),,[#include <ldap.h>])
2038 dnl Check for ldapssl_client_init
2040 AC_CHECK_LIB(ldap,ldapssl_client_init,
2041 AC_DEFINE(HAVE_LDAPSSL_CLIENT_INIT,1,[Define to 1 if you have ldapssl_client_init]),)
2044 dnl Check for ldap_url_desc2str
2046 AC_CHECK_LIB(ldap,ldap_url_desc2str,
2047 AC_DEFINE(HAVE_LDAP_URL_DESC2STR,1,[Define to 1 if you have ldap_url_desc2str]),)
2050 dnl Check for ldap_url_parse
2052 AC_CHECK_LIB(ldap,ldap_url_parse,
2053 AC_DEFINE(HAVE_LDAP_URL_PARSE,1,[Define to 1 if you have ldap_url_parse]),)
2056 dnl Check for ldap_start_tls_s
2058 AC_CHECK_LIB(ldap,ldap_start_tls_s,
2059 AC_DEFINE(HAVE_LDAP_START_TLS_S,1,[Define to 1 if you have ldap_start_tls_s]),)
2066 AC_ARG_ENABLE(forw-via-db,
2067 AS_HELP_STRING([--enable-forw-via-db],[Enable Forw/Via database]), [
2068 SQUID_YESNO([$enableval],[unrecognized argument to --enable-forw-via-db: $enableval])
2070 SQUID_DEFINE_BOOL(USE_FORW_VIA_DB,${enable_forw_via_db:=no},
2071 [Enable Forw/Via database])
2072 AC_MSG_NOTICE([Forw/Via database enabled: $enable_forw_via_db])
2074 AC_ARG_ENABLE(cache-digests,
2075 AS_HELP_STRING([--enable-cache-digests],
2076 [Use Cache Digests. See http://wiki.squid-cache.org/SquidFaq/CacheDigests]),
2078 SQUID_YESNO($enableval,
2079 [unrecognized argument to --enable-cache-digests: $enableval])
2081 SQUID_DEFINE_BOOL(USE_CACHE_DIGESTS,${enable_cache_digests:=no},
2082 [Use Cache Digests for locating objects in neighbor caches.])
2083 AC_MSG_NOTICE([Cache Digests enabled: $enable_cache_digests])
2086 ################################
2087 # check for netio plugin stuff #
2088 ################################
2089 dnl order of these options handling is relevant in case the user
2090 dnl supplies more than one --enable option. Options handled later
2091 dnl override those handled earlier for io loop method manual override
2092 AC_ARG_ENABLE(select,
2093 AS_HELP_STRING([--disable-select],[Disable select(2) support.]),
2095 SQUID_YESNO($enableval,[--disable-select takes no extra argument])
2096 if test "x$enableval" = "xyes"; then
2097 if test "x$squid_host_os" = "xmingw"; then
2098 squid_opt_io_loop_engine="select_win32"
2100 squid_opt_io_loop_engine="select"
2104 AC_MSG_NOTICE([enabling select syscall for net I/O: ${enable_select:=auto}])
2107 AS_HELP_STRING([--disable-poll],[Disable poll(2) support.]),
2109 SQUID_YESNO($enableval,[--disable-poll takes no extra argument])
2110 test "x$enableval" = "xyes" && squid_opt_io_loop_engine="poll"
2112 AC_MSG_NOTICE([enabling poll syscall for net I/O: ${enable_poll:=auto}])
2114 AC_ARG_ENABLE(kqueue,
2115 AS_HELP_STRING([--disable-kqueue],
2116 [Disable kqueue(2) support.]), [
2117 SQUID_YESNO($enableval,[--enable-kqueue takes no extra argument])
2119 if test "x${enable_kqueue:=auto}" != "xno" ; then
2120 AC_CHECK_HEADERS([sys/event.h],[],[
2121 if test "x${enable_kqueue}" = "xyes" ; then
2122 AC_MSG_ERROR([kqueue support requires sys/event.h header file.])
2125 AC_CHECK_FUNCS(kqueue,[],[
2126 if test "x${enable_kqueue}" = "xyes" ; then
2127 AC_MSG_ERROR([kqueue support missing in libc library.])
2130 if test "x$ac_cv_func_kqueue" = "xyes" -a "x$ac_cv_header_sys_event_h" = "xyes" ; then
2131 squid_opt_io_loop_engine="kqueue"
2136 AC_MSG_NOTICE([enabling kqueue for net I/O: ${enable_kqueue:=auto}])
2139 AC_ARG_ENABLE(epoll,
2140 AS_HELP_STRING([--disable-epoll],[Disable Linux epoll(2) support.]),
2142 SQUID_YESNO($enableval,[--disable-epoll takes no extra argument])
2143 test "x$enableval" = "xyes" && squid_opt_io_loop_engine="epoll"
2145 AC_MSG_NOTICE([enabling epoll syscall for net I/O: ${enable_epoll:=auto}])
2147 # auto-detect and verify epoll header and library present and working
2148 # logic mapping and loop method selection are performed later
2149 if test "x$enable_epoll" != "xno" ; then
2151 # check if libs are needed to support epoll
2152 # note: this code block seems quite generic. Could it be extracted
2153 # into a squid specific configure function?
2154 SQUID_STATE_SAVE(squid_epoll_state)
2155 AC_SEARCH_LIBS(epoll_ctl,[epoll])
2156 if test "x$ac_cv_search_epoll_ctl" = "xno" ; then
2157 enable_epoll=no #disable. Needed code not found
2158 elif test "x$ac_cv_search_epoll_ctl" = "xnone required" ; then
2161 EPOLL_LIBS=$ac_cv_search_epoll_ctl
2163 AC_SUBST(EPOLL_LIBS)
2164 SQUID_STATE_ROLLBACK(squid_epoll_state) #de-pollute LIBS
2166 # epoll requires sys/epoll.h
2167 AC_CHECK_HEADERS([sys/epoll.h])
2169 dnl Verify that epoll really works
2170 if test "x$ac_cv_search_epoll_ctl" != 'xno' ; then
2174 if test "x$enable_epoll" = "xyes" -a "x$squid_cv_epoll_works" = "xno" ; then
2175 AC_MSG_ERROR([Epoll does not work. Force-enabling it is not going to help.])
2179 dnl Enable /dev/poll
2180 AC_ARG_ENABLE(devpoll,
2181 AS_HELP_STRING([--disable-devpoll],[Disable Solaris /dev/poll support.]),
2183 SQUID_YESNO($enableval,[--disable-devpoll takes no extra argument])
2184 test "x$enableval" = "xyes" && squid_opt_io_loop_engine="devpoll"
2186 AC_MSG_NOTICE([enabling /dev/poll for net I/O: ${enable_devpoll:=auto}])
2188 ## auto-detect and verify devpoll header and library present and working
2189 if test "x$enable_devpoll" != "xno"; then
2191 # /dev/poll requires ioctl() and write()
2192 AC_CHECK_FUNCS(ioctl)
2193 AC_CHECK_FUNCS(write)
2195 # /dev/poll requires sys/devpoll.h
2196 AC_CHECK_HEADERS([sys/devpoll.h],,[
2197 if test "x$enable_devpoll" = "xyes"; then
2198 AC_MSG_ERROR([--enable-devpoll specified but /dev/poll headers not found])
2202 # Verify that /dev/poll really works
2203 if test "x$enable_devpoll" != 'xno' ; then
2207 if test "x$enable_devpoll" = "xyes" -a "x$squid_cv_devpoll_works" = "xno" ; then
2208 AC_MSG_ERROR([/dev/poll does not work. Force-enabling it is not going to help.])
2213 AC_ARG_ENABLE(http-violations,
2214 AS_HELP_STRING([--disable-http-violations],
2215 [This allows you to remove code which is known to
2216 violate the HTTP protocol specification.]), [
2217 SQUID_YESNO([$enableval],
2218 [unrecognized argument to --disable-http-violations: $enableval])
2220 SQUID_DEFINE_BOOL(USE_HTTP_VIOLATIONS, ${enable_http_violations:=yes},
2221 [Define to enable code which volates the HTTP standard specification])
2222 AC_MSG_NOTICE([HTTP violations support enabled: $enable_http_violations])
2224 # IPFW Transparent Proxy
2225 AC_ARG_ENABLE(ipfw-transparent,
2226 AS_HELP_STRING([--enable-ipfw-transparent],
2227 [Enable Transparent Proxy support for systems
2228 using FreeBSD IPFW-style firewalling.]), [
2229 SQUID_YESNO([$enableval],
2230 [unrecognized argument to --enable-ipfw-transparent: $enableval])
2232 SQUID_DEFINE_BOOL(IPFW_TRANSPARENT,${enable_ipfw_transparent:=no},
2233 [Enable support for Transparent Proxy on systems using FreeBSD IPFW-style firewalling.])
2234 AC_MSG_NOTICE([FreeBSD IPFW-based transparent proxying enabled: $enable_ipfw_transparent])
2236 # IP-Filter Transparent Proxy
2237 AC_ARG_ENABLE(ipf-transparent,
2238 AS_HELP_STRING([--enable-ipf-transparent],
2239 [Enable Transparent Proxy support using IPFilter-style firewalling]), [
2240 SQUID_YESNO([$enableval],
2241 [unrecognized argument to --enable-ipf-transparent: $enableval])
2243 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2244 #IPF currently broken. Default-disabled for now.
2245 AC_MSG_NOTICE([IPF-based transparent proxying requested: ${enable_ipf_transparent:=no}])
2247 dnl Enable PF Transparent Proxy
2248 AC_ARG_ENABLE(pf-transparent,
2249 AS_HELP_STRING([--enable-pf-transparent],
2250 [Enable Transparent Proxy support for systems using PF network address redirection.]), [
2251 SQUID_YESNO([$enableval],
2252 [unrecognized argument to --enable-pf-transparent: $enableval])
2254 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2255 AC_MSG_NOTICE([PF-based transparent proxying requested: ${enable_pf_transparent:=no}])
2257 dnl Enable /dev/pf support for older PF Transparent Proxy systems (OpenBSD 4.x and older)
2258 AC_ARG_WITH(nat-devpf,
2259 AS_HELP_STRING([--with-nat-devpf],
2260 [Enable /dev/pf support for NAT on older OpenBSD and FreeBSD kernels.]), [
2261 SQUID_YESNO([$enableval],
2262 [unrecognized argument to --with-nat-devpf: $enableval])
2264 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2265 AC_MSG_NOTICE([NAT lookups via /dev/pf: ${with_nat_devpf:=no}])
2267 # Linux Netfilter Transparent Proxy
2268 AC_ARG_ENABLE(linux-netfilter,
2269 AS_HELP_STRING([--enable-linux-netfilter],
2270 [Enable Transparent Proxy support for Linux (Netfilter)]), [
2271 SQUID_YESNO([$enableval],
2272 [unrecognized argument to --enable-linux-netfilter: $enableval])
2274 AC_MSG_NOTICE([Linux Netfilter support requested: ${enable_linux_netfilter:=auto}])
2275 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2278 dnl Look for libnetfilter_conntrack options (needed for QOS netfilter marking)
2279 dnl squid_opt_netfilterconntrack is set only when option is explicity specified
2280 AC_ARG_WITH(netfilter-conntrack,
2281 AS_HELP_STRING([--without-netfilter-conntrack],
2282 [Do not use Netfilter conntrack libraries for packet marking.
2283 A path to alternative library location may be specified by
2284 using --with-netfilter-conntrack=PATH. Default: auto-detect.]), [
2285 case "$with_netfilter_conntrack" in
2287 squid_opt_netfilterconntrack=$with_netfilter_conntrack
2290 if test ! -d "$withval" ; then
2291 AC_MSG_ERROR([--without-netfilter-conntrack path does not point to a directory])
2293 squid_opt_netfilterconntrackpath=$withval
2294 LDFLAGS="-L$squid_opt_netfilterconntrackpath/lib $LDFLAGS"
2295 CPPFLAGS="-I$squid_opt_netfilterconntrackpath/include $CPPFLAGS"
2296 with_netfilter_conntrack=yes
2297 squid_opt_netfilterconntrack=yes
2300 AC_MSG_NOTICE([Linux Netfilter Conntrack support requested: ${with_netfilter_conntrack:=auto}])
2301 if test "x$with_netfilter_conntrack" != "xno"; then
2302 AC_SEARCH_LIBS([nfct_query], [netfilter_conntrack],,[
2303 if test x"$with_netfilter_conntrack" = "xyes"; then
2304 AC_MSG_ERROR([--with-netfilter-conntrack specified but libnetfilter-conntrack library not found])
2306 with_netfilter_conntrack=no])
2307 AC_CHECK_HEADERS([libnetfilter_conntrack/libnetfilter_conntrack.h \
2308 libnetfilter_conntrack/libnetfilter_conntrack_tcp.h],,[
2309 if test x"$with_netfilter_conntrack" = "xyes"; then
2310 AC_MSG_ERROR([--with-netfilter-conntrack specified but libnetfilter-conntrack headers not found])
2312 with_netfilter_conntrack=no])
2313 # If nothing is broken; enable the libraries usage.
2314 if test "x$with_netfilter_conntrack" != "xno"; then
2315 with_netfilter_conntrack=yes
2320 dnl Enable Large file support
2322 squid_opt_enable_large_files=no
2324 AC_ARG_WITH(large-files,
2325 AS_HELP_STRING([--with-large-files],[Enable support for large files (logs etc).]), [
2326 if test "x$withval" = "xyes"; then
2327 squid_opt_enable_large_files=yes
2331 dnl UNIX Build environment
2332 dnl AS_HELP_STRING is not suited here because it cannot to specify newlines
2333 AC_ARG_WITH(build-environment,
2334 AS_HELP_STRING([--with-build-environment=model],
2335 [The build environment to use. Normally one of
2336 POSIX_V6_ILP32_OFF32 (32 bits),
2337 POSIX_V6_ILP32_OFFBIG (32 bits with large file support),
2338 POSIX_V6_LP64_OFF64 (64 bits),
2339 POSIX_V6_LPBIG_OFFBIG (large pointers and files),
2340 XBS5_ILP32_OFF32 i(legacy, 32 bits),
2341 XBS5_ILP32_OFFBIG (legacy, 32 bits with large file support),
2342 XBS5_LP64_OFF64 (legacy, 64 bits),
2343 XBS5_LPBIG_OFFBIG (legacy, large pointers and files)
2344 or default (The default for your OS)]), [
2347 AC_MSG_FAILURE([--with-build-environment expects a build environment string as used by getconf])
2350 buildmodel="$withval"
2355 #hack. Let's early-detect sizeof(long)
2356 AC_CHECK_SIZEOF(long)
2358 if test "x$squid_opt_enable_large_files" = "xyes" -a "x$buildmodel" = "x"; then
2359 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
2360 if test "`getconf _$model 2>/dev/null || true`" = 1 || test "`getconf $model 2>/dev/null || true`" ; then
2365 if test "x$buildmodel" = "x"; then
2366 AC_MSG_WARN([No suitable build environment found for large files. Trying to use _FILE_OFFSET_BITS=64])
2369 if test "x$buildmodel" = "xdefault" -o "x$buildmodel" = "x"; then
2370 # define _FILE_OFFSET_BITS if requested and needed
2371 if test "x$squid_opt_enable_large_files" = "xyes" -a $ac_cv_sizeof_long -le 4 ; then
2372 AC_MSG_NOTICE([Enabling -D_FILE_OFFSET_BITS=64])
2373 CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
2374 CXXFLAGS="-D_FILE_OFFSET_BITS=64 $CXXFLAGS"
2377 AC_MSG_NOTICE([Using $buildmodel build environment])
2378 if test "`getconf _$buildmodel 2>/dev/null || true`" = 1 || test "`getconf $buildmodel 2>/dev/null || true`" ; then
2381 AC_MSG_ERROR(Build environment $buildmodel not known to getconf.)
2383 CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
2384 CXXFLAGS="`getconf ${buildmodel}_CFLAGS` $CXXFLAGS"
2385 LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
2386 LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
2387 if test "x$squid_host_os" = "xsolaris" ; then
2389 # On Solaris getconf returns for CFLAGS -xarch=generic64, -Xa and -Usun options, and
2390 # for LDFLAGS -xarch=generic64, but:
2391 # "-Xa" is supported only by Sun cc, so we need to remove it when using gcc
2392 # For gcc "-xarch=generic64" must be replaced with "-m64"
2393 # The 'sun' define is needed by ipfilter includes, so we must remove "-Usun"
2394 if test "x$GCC" = "xyes"; then
2395 AC_MSG_NOTICE([Removing -Xa for gcc/g++ on $host])
2396 CFLAGS="`echo $CFLAGS | sed -e 's/-Xa//'`"
2397 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Xa//'`"
2398 AC_MSG_NOTICE([Replacing -xarch=generic64 with -m64 for gcc/g++ on $host])
2399 CFLAGS="`echo $CFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
2400 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
2401 LDFLAGS="`echo $LDFLAGS | sed -e 's/-xarch=generic64//'`"
2403 AC_MSG_NOTICE([Removing -Usun on $host])
2404 CFLAGS="`echo $CFLAGS | sed -e 's/-Usun//'`"
2405 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Usun//'`"
2409 dnl Enable Leak Finding Functions
2410 AC_ARG_ENABLE(leakfinder,
2411 AS_HELP_STRING([--enable-leakfinder],
2412 [Enable Leak Finding code. Enabling this alone does nothing;
2413 you also have to modify the source code to use the leak
2414 finding functions. Probably Useful for hackers only.]), [
2415 SQUID_YESNO([$enableval],
2416 [unrecognized argument to --enable-leakfinder: $enableval])
2418 AC_MSG_NOTICE([Leak Finder enabled: ${enable_leakfinder:=no}])
2419 SQUID_DEFINE_BOOL(USE_LEAKFINDER,$enable_leakfinder,
2420 [Enable code for assisting in finding memory leaks. Not for the faint of heart])
2421 AM_CONDITIONAL(ENABLE_LEAKFINDER, [test "x$enable_leakfinder" = "xyes"])
2424 AC_ARG_ENABLE(follow-x-forwarded-for,
2425 AS_HELP_STRING([--enable-follow-x-forwarded-for],
2426 [Enable support for following the X-Forwarded-For
2427 HTTP header to try to find the IP address of the
2428 original or indirect client when a request has
2429 been forwarded through other proxies.]), [
2430 SQUID_YESNO([$enableval],
2431 [unrecognized argument to --enable-follow-x-forwarded-for: $enableval])
2433 AC_MSG_NOTICE([Support for X-Forwarded-For enabled: ${enable_follow_x_forwarded_for:=yes}])
2434 SQUID_DEFINE_BOOL(FOLLOW_X_FORWARDED_FOR,$enable_follow_x_forwarded_for,
2435 [Enable following X-Forwarded-For headers])
2437 AC_ARG_ENABLE(ident-lookups,
2438 AS_HELP_STRING([--disable-ident-lookups],
2439 [Remove code that supports performing Ident (RFC 931) lookups.]), [
2440 SQUID_YESNO([$enableval],[unrecognized argument to --disable-ident-lookups: $enableval])
2442 AC_MSG_NOTICE([Support for Ident lookups enabled: ${enable_ident_lookups:=yes}])
2443 SQUID_DEFINE_BOOL(USE_IDENT,$enable_ident_lookups,[Support for Ident (RFC 931) lookups])
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")
2477 AC_ARG_ENABLE(auth-basic,
2478 AS_HELP_STRING([--enable-auth-basic="list of helpers"],
2479 [Enable the basic authentication scheme, and build the specified helpers.
2480 Not providing an explicit list of helpers will attempt build of
2481 all possible helpers. Default is to do so.
2482 To disable the basic authentication scheme, use --disable-auth-basic.
2483 To enable but build no helpers, specify "none".
2484 To see available helpers, see the src/auth/basic/ directory. ]),[
2485 #nothing to do really
2487 m4_include([src/auth/basic/helpers.m4])
2489 AC_ARG_ENABLE(auth-digest,
2490 AS_HELP_STRING([--enable-auth-digest="list of helpers"],
2491 [Enable the Digest authentication scheme, and build the specified helpers.
2492 Not providing an explicit list of helpers will attempt build of
2493 all possible helpers. Default is to do so.
2494 To disable the Digest authentication scheme, use --disable-auth-digest.
2495 To enable but build no helpers, specify "none".
2496 To see available helpers, see the src/auth/digest/ directory. ]),[
2497 #nothing to do, really
2499 m4_include([src/auth/digest/helpers.m4])
2501 AC_ARG_ENABLE(auth-negotiate,
2502 AS_HELP_STRING([--enable-auth-negotiate="list of helpers"],
2503 [Enable the Negotiate authentication scheme, and build the specified
2505 Not providing an explicit list of helpers will attempt build of
2506 all possible helpers. Default is to do so.
2507 To disable the Negotiate authentication scheme,
2508 use --disable-auth-negotiate.
2509 To enable but build no helpers, specify "none".
2510 To see available helpers, see the src/auth/negotiate/ directory. ]),[
2511 #nothing to do, really
2513 m4_include([src/auth/negotiate/helpers.m4])
2515 AC_ARG_ENABLE(auth-ntlm,
2516 AS_HELP_STRING([--enable-auth-ntlm="list of helpers"],
2517 [Enable the NTLM authentication scheme, and build the specified helpers.
2518 Not providing an explicit list of helpers will attempt build of
2519 all possible helpers. Default is to do so.
2520 To disable the NTLM authentication scheme, use --disable-auth-ntlm.
2521 To enable but build no helpers, specify "none".
2522 To see available helpers, see the src/auth/ntlm/ directory. ]),[
2524 m4_include([src/auth/ntlm/helpers.m4])
2526 dnl Authentication libraries to build
2527 dnl This list will not be needed when each auth library has its own Makefile
2528 dnl this is to be placed AFTER each auth module's handler
2530 for module in $AUTH_MODULES; do
2531 AUTH_LIBS_TO_BUILD="$AUTH_LIBS_TO_BUILD ${module}/lib${module}.la"
2533 AC_SUBST(AUTH_MODULES)
2534 AC_SUBST(AUTH_LIBS_TO_BUILD)
2535 AM_CONDITIONAL(ENABLE_SMBLIB, $require_smblib)
2537 dnl Select logging daemon helpers to build
2538 AC_ARG_ENABLE(log-daemon-helpers,
2539 AS_HELP_STRING([--enable-log-daemon-helpers="list of helpers"],
2540 [This option selects which logging daemon helpers to
2541 build and install as part of the normal build process
2542 For a list of available helpers see the src/log/
2544 #nothing to do, really
2546 m4_include([src/log/helpers.m4])
2548 AC_ARG_ENABLE(external-acl-helpers,
2549 AS_HELP_STRING([--enable-external-acl-helpers="list of helpers"],
2550 [Enable external_acl helpers support and the helpers themselves.
2551 Default is to build all buildable helpers and enable support.
2552 To disable support, use --disable-external-acl-helpers.
2553 To build no helpers, specify "none".
2554 To see available helpers, see the src/acl/external/
2556 #nothing to do, really
2558 m4_include([src/acl/external/helpers.m4])
2560 dnl Select url_rewrite helpers to build
2561 AC_ARG_ENABLE(url-rewrite-helpers,
2562 AS_HELP_STRING([--enable-url-rewrite-helpers="list of helpers"],
2563 [This option selects which url_rewrite helpers to
2564 build and install as part of the normal build
2565 process. The default is to attempt the build of all possible
2566 helpers. Use --disable-url-rewrite-helpers to build none.
2567 For a list of available helpers see the
2568 src/http/url_rewriters/ directory.]),[
2570 m4_include([src/http/url_rewriters/helpers.m4])
2572 dnl Select security helpers to build
2573 AC_ARG_ENABLE(security-cert-validators,
2574 AS_HELP_STRING([--enable-security-cert-validators="list of helpers"],
2575 [This option selects which security certificate validator
2576 helpers to build and install as part of the normal build
2577 process. The default is to attempt the build of all possible
2578 helpers. Use --disable-security-cert-validators to
2579 build none. For a list of available helpers see the
2580 src/security/cert_validators/ directory.]),[
2582 m4_include([src/security/cert_validators/helpers.m4])
2584 AC_ARG_ENABLE(security-cert-generators,
2585 AS_HELP_STRING([--enable-security-cert-generators="list of helpers"],
2586 [This option selects which security certificate validator
2587 helpers to build and install as part of the normal build
2588 process. The default is to attempt the build of all possible
2589 helpers. Use --disable-security-cert-genrators to
2590 build none. For a list of available helpers see the
2591 src/security/cert_generators/ directory.]),[
2593 m4_include([src/security/cert_generators/helpers.m4])
2595 dnl Select storeid_rewrite helpers to build
2596 AC_ARG_ENABLE(storeid-rewrite-helpers,
2597 AS_HELP_STRING([--enable-storeid-rewrite-helpers="list of helpers"],
2598 [This option selects which Store-ID rewrite helpers to
2599 build and install as part of the normal build
2600 process. The default is to attempt the build of all possible
2601 helpers. Use --disable-storeid-rewrite-helpers to build none.
2602 For a list of available helpers see the
2603 src/store/id_rewriters/ directory.]),[
2605 m4_include([src/store/id_rewriters/helpers.m4])
2607 AC_ARG_WITH(valgrind-debug,
2608 AS_HELP_STRING([--with-valgrind-debug],
2609 [Include debug instrumentation for use with valgrind]),
2611 SQUID_YESNO([$withval],
2612 [unrecognized argument to --with-valgrind-debug: $withval])
2613 if test "x$withval" != "xno" ; then
2614 AC_CHECK_HEADERS(valgrind/memcheck.h,[],[
2615 AC_MSG_ERROR([Valgrind support requested, needed headers not found.])
2619 SQUID_DEFINE_BOOL(WITH_VALGRIND,${with_valgrind_debug:=no},
2620 [Valgrind memory debugger support])
2621 AC_MSG_NOTICE([Valgrind debug support enabled: $with_valgrind_debug])
2623 dnl Disable "memPools" code
2624 #AC_ARG_ENABLE(chunkedmempools,
2625 # AS_HELP_STRING([--enable-chunkedmempools],
2626 # [Enable experimental chunked memPools. Note that this option
2627 # simply sets the default behaviour. Specific classes can override this
2628 # at runtime, and only lib/MemPool.c needs to be altered
2629 # to change the squid-wide default for all classes.]), [
2630 #SQUID_YESNO([$enableval],
2631 # [--enable-chunkedmempools option takes no arguments])
2633 SQUID_DEFINE_BOOL(USE_CHUNKEDMEMPOOLS,${enable_chunkedmempools:=no},
2634 [Enable chunked Memory Pools support (experimental)])
2635 #AC_MSG_NOTICE([Chunked MemPools enabled: $enable_chunkedmempools])
2637 dnl Enable WIN32 Service compile mode
2638 AC_ARG_ENABLE(win32-service,
2639 AS_HELP_STRING([--enable-win32-service],
2640 [Compile Squid as a WIN32 Service.
2641 Works only on MS-Windows platforms]), [
2642 SQUID_YESNO([$enableval],
2643 [unrecognized argument to --enable-win32-service: $enableval])
2645 SQUID_DEFINE_BOOL(USE_WIN32_SERVICE,${enable_win32_service:=no},
2646 [Enable code supporting MS Windows service mode])
2647 AC_MSG_NOTICE([MS Windows service mode enabled: $enable_win32_service])
2650 # Disable "unlinkd" code
2651 AC_ARG_ENABLE(unlinkd,
2652 AS_HELP_STRING([--disable-unlinkd],[Do not use unlinkd]), [
2653 SQUID_YESNO([$enableval],
2654 [unrecognized argument to --disable-unlinkd: $enableval])
2656 SQUID_DEFINE_BOOL(USE_UNLINKD,${enable_unlinkd:=yes},
2657 [Enable useage of unlinkd])
2658 AM_CONDITIONAL(ENABLE_UNLINKD,test "x$enable_unlinkd" = "xyes")
2659 AC_MSG_NOTICE([unlinkd enabled: $enable_unlinkd])
2661 # Enable backtraces on fatal errors
2662 AC_ARG_ENABLE(stacktraces,
2663 AS_HELP_STRING([--enable-stacktraces],
2664 [Enable automatic call backtrace on fatal errors]), [
2665 SQUID_YESNO([$enableval],
2666 [unrecognized argument to --enable-stacktraces: $enableval])
2668 SQUID_DEFINE_BOOL(PRINT_STACK_TRACE,${enable_stacktraces:=no},
2669 [Print stack traces on fatal errors])
2670 AC_MSG_NOTICE([Automatically print stack trace on fatal errors: $enable_stacktraces])
2673 # CPU Profiling options handling
2674 AC_ARG_ENABLE(cpu-profiling,
2675 AS_HELP_STRING([--enable-cpu-profiling],
2676 [Enable instrumentation to try and understand how CPU power
2677 is spent by squid, by enabling specific probes in selected
2679 New probes can only be added by modifying the source code.
2680 It is meant to help developers in optimizing performance
2681 of Squid internal functions.
2682 If you are not developer you should not enable this,
2683 as it slows squid down somewhat.
2684 See lib/Profiler.c for more details.]), [
2685 SQUID_YESNO([$enableval],
2686 [unrecognized argument to --enable-cpu-profiling: $enableval])
2688 # Default OFF. This is a debug feature. Only check and enable if forced ON.
2689 if test "x$enable_cpu_profiling" = "xyes"; then
2690 SQUID_CHECK_FUNCTIONAL_CPU_PROFILER
2691 if test "x$squid_cv_cpu_profiler_works" = "xno"; then
2692 AC_MSG_ERROR([CPU profiling will not be functional in this build.])
2695 SQUID_DEFINE_BOOL(USE_XPROF_STATS,${enable_cpu_profiling:=no},
2696 [Define to enable CPU profiling within Squid])
2697 AM_CONDITIONAL(ENABLE_XPROF_STATS,
2698 test "x$enable_cpu_profiling" = "xyes")
2699 AC_MSG_NOTICE([CPU profiling enabled: $enable_cpu_profiling])
2701 # Enable X-Accelerator-Vary for Vary support within an accelerator setup
2702 AC_ARG_ENABLE(x-accelerator-vary,
2703 AS_HELP_STRING([--enable-x-accelerator-vary],
2704 [Enable support for the X-Accelerator-Vary
2705 HTTP header. Can be used to indicate
2706 variance within an accelerator setup.
2707 Typically used together with other code
2708 that adds custom HTTP headers to the requests.]), [
2709 SQUID_YESNO([$enableval],
2710 [unrecognized argument to --enable-x-accelerator-vary: $enableval])
2712 SQUID_DEFINE_BOOL(X_ACCELERATOR_VARY,${enable_x_accelerator_vary:=no},
2713 [Enable support for the X-Accelerator-Vary HTTP header])
2714 AC_MSG_NOTICE([X-Accelerator-Vary support enabled: $enable_x_accelerator_vary])
2717 if $CPPUNITCONFIG --help >/dev/null; then
2718 squid_cv_cppunit_version="`$CPPUNITCONFIG --version`"
2719 AC_MSG_NOTICE([using system installed cppunit version $squid_cv_cppunit_version])
2720 unset squid_cv_cppunit_version
2721 SQUID_CPPUNIT_LIBS="`$CPPUNITCONFIG --libs`"
2723 SQUID_CPPUNIT_INC="`$CPPUNITCONFIG --cflags`"
2725 AC_MSG_WARN([cppunit does not appear to be installed. squid does not require this, but code testing with 'make check' will fail.])
2727 SQUID_CPPUNIT_LIBS=''
2728 SQUID_CPPUNIT_INC=''
2731 AC_ARG_WITH(cppunit-basedir,
2732 AS_HELP_STRING([--with-cppunit-basedir=PATH],
2733 [Path where the cppunit headers are libraries can be found ]), [
2734 if test -f "$withval/include/cppunit/TestCase.h"; then
2735 AC_MSG_NOTICE([Using cppunit includes from $withval])
2736 SQUID_CPPUNIT_INC="-I${withval}/include"
2738 AC_MSG_ERROR(Cannot find cppunit at $withval)
2740 if test -f "$withval/lib/libcppunit.la"; then
2741 AC_MSG_NOTICE([Using cppunit lib from $withval])
2742 SQUID_CPPUNIT_LA="${withval}/lib/libcppunit.la"
2743 SQUID_CPPUNIT_LIBS='$(SQUID_CPPUNIT_LA)'
2745 AC_MSG_ERROR(Cannot find cppunit at $withval)
2748 SQUID_STATE_SAVE(squid_cppunit_state)
2749 CXXFLAGS="$CXXFLAGS $SQUID_CPPUNIT_INC"
2750 AC_CHECK_HEADERS(cppunit/extensions/HelperMacros.h)
2751 SQUID_STATE_ROLLBACK(squid_cppunit_state)
2752 AC_SUBST(SQUID_CPPUNIT_LIBS)
2753 AC_SUBST(SQUID_CPPUNIT_LA)
2754 AC_SUBST(SQUID_CPPUNIT_INC)
2756 # Force some compilers to use ANSI features
2760 if test "x$ac_cv_prog_CC" = "xcc" ; then
2761 AC_MSG_NOTICE([adding '-Ae' to cc args for $host])
2769 dnl automake handles this AC_PATH_PROG(MAKEDEPEND, makedepend, $TRUE)
2773 AC_MSG_NOTICE([Disabling ranlib for HP-UX...])
2778 dnl Check for headers
2803 linux/posix_types.h \
2811 netinet/in_systm.h \
2863 linux/netfilter_ipv4.h \
2864 linux/netfilter_ipv6/ip6_tables.h \
2866 SQUID_DEFAULT_INCLUDES
2870 /* Netfilter ip(6)tables v1.4.0 has broken headers */
2871 #if HAVE_NETINET_IN_H
2872 #include <netinet/in.h>
2876 dnl *BSD dont include the dependencies for all their net/ and netinet/ files
2877 dnl We must include a few basic type headers for them to work.
2892 SQUID_BSDNET_INCLUDES)
2898 AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
2901 #include <sys/time.h>
2908 dnl Override rusage() detect on MinGW because is emulated in source code
2909 case "$squid_host_os" in
2911 AC_DEFINE(HAVE_STRUCT_RUSAGE)
2912 ac_cv_func_getrusage='yes'
2913 AC_MSG_NOTICE([Using own rusage on Windows.])
2916 AC_CHECK_TYPE(struct rusage,AC_DEFINE(HAVE_STRUCT_RUSAGE,1,[The system provides struct rusage]),,[
2918 #include <sys/time.h>
2920 #if HAVE_SYS_RESOURCE_H
2921 #include <sys/resource.h>
2926 AC_CHECK_MEMBERS([struct iphdr.ip_hl],,,[
2927 #if HAVE_SYS_TYPES_H
2928 #include <sys/types.h>
2930 #include <netinet/in.h>
2931 #include <netinet/in_systm.h>
2932 #include <netinet/ip.h>
2933 #if defined (__linux__) || defined (__CYGWIN__)
2942 dnl Check for typedefs
2943 AC_CHECK_SIZEOF(void *)
2945 # check for a bunch of types
2959 AC_CHECK_TYPE([bool])
2960 #need the defines for PRId64
2961 AC_CHECK_SIZEOF(int64_t)
2962 AC_CHECK_SIZEOF(long)
2963 #need the defines for PRIuSIZE
2964 AC_CHECK_SIZEOF(size_t)
2965 #need the define for overflow checks
2966 AC_CHECK_SIZEOF(off_t)
2967 AC_CHECK_SIZEOF(size_t)
2969 dnl Some C++11 types we try to use
2971 AX_CXX_TYPE_UNIQUE_PTR
2972 AX_CXX_TYPE_UNIFORM_DISTRIBUTIONS
2973 SQUID_CXX_STD_UNDERLYING_TYPE
2975 dnl On Solaris 9 x86, gcc may includes a "fixed" set of old system include files
2976 dnl that is incompatible with the updated Solaris header files.
2977 dnl For this reason, we must check if pad128_t and upad128_t are defined.
2978 AC_CHECK_TYPE(pad128_t,
2979 AC_DEFINE(HAVE_PAD128_T,1,[pad128_t is defined in system headers]),
2980 ,SQUID_DEFAULT_INCLUDES)
2982 AC_CHECK_TYPE(upad128_t,
2983 AC_DEFINE(HAVE_UPAD128_T,1,[upad128_t is defined in system headers]),
2984 ,SQUID_DEFAULT_INCLUDES)
2986 AC_CHECK_TYPE(mode_t, AC_DEFINE(HAVE_MODE_T,1,[mode_t is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
2987 AC_CHECK_TYPE(fd_mask, AC_DEFINE(HAVE_FD_MASK,1,[fd_mask is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
2989 AC_CHECK_TYPE(socklen_t,AC_DEFINE(HAVE_SOCKLEN_T,1,[socklen_t is defined by the system headers]),,[
2990 #include <sys/types.h>
2991 #include <sys/socket.h>
2997 AC_CHECK_TYPE(mtyp_t,AC_DEFINE(HAVE_MTYP_T,1,
2998 [mtyp_t is defined by the system headers]),,[#include <sys/types.h>
2999 #include <sys/ipc.h>
3000 #include <sys/msg.h>])
3002 # check for compiler support of %zu printf macro
3003 AH_TEMPLATE(PRIuSIZE,[Compiler supports %zu printf macro])
3004 AC_MSG_CHECKING([for compiler %zu support])
3005 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3007 ]],[[size_t n=1;printf("%zu",n);]])],[
3008 AC_DEFINE(PRIuSIZE,"zu")
3010 ],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
3013 dnl Check for special functions
3017 dnl Check for libcap header (assume its not broken unless
3018 AC_ARG_WITH(libcap, AS_HELP_STRING([--without-libcap],
3019 [disable usage of Linux capabilities library to control privileges]), [
3020 SQUID_YESNO([$withval],[unrecognized argument to --without-libcap: $withval])
3021 ],[with_libcap=auto])
3023 if test "x$with_libcap" != "xno"; then
3024 # cap_clear_flag is the most recent libcap function we require
3025 AC_CHECK_HEADERS(sys/capability.h)
3026 AC_CHECK_LIB(cap, cap_clear_flag)
3027 SQUID_CHECK_FUNCTIONAL_LIBCAP2
3029 # if it can't be supported..
3030 if test "x$ac_cv_header_sys_capability_h" = "xno" -o \
3031 "x$ac_cv_lib_cap_cap_clear_flag" = "xno"; then
3032 # and it was forced on: error
3033 if test "x$with_libcap" = "xyes" ; then
3034 AC_MSG_ERROR([libcap forced enabled but not available or not usable, requires libcap-2.09 or later])
3036 # with_libcap is "auto"; it can't be supported. Disable.
3040 # header and lib are ok, we support
3046 SQUID_DEFINE_BOOL(USE_LIBCAP,$with_libcap,
3047 [use libcap to set capabilities required for TPROXY])
3048 AC_MSG_NOTICE([libcap support enabled: $with_libcap])
3049 SQUID_DEFINE_BOOL(LIBCAP_BROKEN,${squid_cv_sys_capability_works:=no},
3050 [libcap2 headers are broken and clashing with glibc])
3051 AC_MSG_NOTICE([libcap2 headers are ok: $squid_cv_sys_capability_works])
3054 dnl Check for needed libraries
3055 AC_SEARCH_LIBS([gethostbyname],[nsl resolv bind])
3056 AC_SEARCH_LIBS([res_init],[resolv])
3057 AC_SEARCH_LIBS([__res_search],[resolv])
3058 AC_SEARCH_LIBS([bind],[socket])
3059 AC_SEARCH_LIBS([opcom_stack_trace],[opcom_stack])
3060 AC_SEARCH_LIBS([strlcpy], [bsd])
3061 AC_SEARCH_LIBS([yp_match], [nsl nss_nis nss_nisplus])
3062 dnl Check for Winsock only on MinGW, on Cygwin we must use emulated BSD socket API
3063 if test "x$squid_host_os" = "xmingw" ; then
3064 SQUID_CHECK_WINSOCK_LIB
3070 #include <winsock2.h>
3073 #include <windows.h>
3076 #include <ws2tcpip.h>
3081 # check that we have unix sockets
3082 SQUID_CHECK_UNIX_SOCKET
3083 SQUID_DEFINE_BOOL(HAVE_UNIXSOCKET,$squid_cv_unixsocket,[System supports unix sockets])
3085 AC_CHECK_LIB(gnumalloc, malloc)
3086 if test "x$ac_cv_lib_gnumalloc_malloc" = "xyes"; then
3087 AC_MSG_NOTICE([Disabling extended malloc functions when using bundled gnumalloc])
3088 ac_cv_func_mallocblksize=no
3089 ac_cv_func_mallopt=no
3091 case "$squid_host_os" in
3093 AC_MSG_NOTICE([skipping libmalloc check for $host])
3096 AC_MSG_NOTICE([skipping libmalloc check for $host])
3100 AC_CHECK_LIB(malloc, main)
3105 case "$squid_host_os" in
3107 AC_MSG_NOTICE([Use MSVCRT for math functions.])
3110 dnl rint() and log() are only used in old C code for now.
3112 AC_SEARCH_LIBS([rint],[m])
3113 AC_SEARCH_LIBS([log],[m])
3118 dnl --with-maxfd present for compatibility with Squid-2.
3119 dnl undocumented in ./configure --help to encourage using the Squid-3 directive
3124 squid_filedescriptors_num=$withval
3125 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
3128 AC_MSG_ERROR(--with-maxfd expects a numeric argument)
3133 AC_ARG_WITH(filedescriptors,
3134 AS_HELP_STRING([--with-filedescriptors=NUMBER],
3135 [Force squid to support NUMBER filedescriptors]),
3139 squid_filedescriptors_num=$withval
3140 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
3143 AC_MSG_ERROR(--with-filedescriptors expects a numeric argument)
3148 SQUID_CHECK_DEFAULT_FD_SETSIZE
3150 if test "x$squid_filedescriptors_num" != "x"; then
3151 AC_MSG_NOTICE([Default number of fieldescriptors: $squid_filedescriptors_num])
3153 if test "$squid_filedescriptors_num" -lt 512 ; then
3154 AC_MSG_WARN([$squid_filedescriptors_num may not be enough filedescriptors if your])
3155 AC_MSG_WARN([cache will be very busy. Please see the FAQ page])
3156 AC_MSG_WARN([http://wiki.squid-cache.org/SquidFaq/TroubleShooting])
3157 AC_MSG_WARN([on how to increase your filedescriptor limit])
3159 AC_DEFINE_UNQUOTED(SQUID_MAXFD, $squid_filedescriptors_num,[Maximum number of open filedescriptors])
3162 dnl Enable IPv6 support
3163 AC_MSG_CHECKING([whether to enable IPv6])
3165 AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support. The default is to probe system capabilities on startup.]), [
3166 SQUID_YESNO([$enableval],[unrecognized argument to --disable-ipv6: $enableval])
3168 AC_MSG_RESULT(${enable_ipv6:=yes})
3169 SQUID_DEFINE_BOOL(USE_IPV6,$enable_ipv6,[Enable support for IPv6 ])
3171 if test "x$enable_ipv6" = "xyes" ; then
3172 SQUID_CHECK_SIN6_LEN_IN_SAI
3174 SQUID_CHECK_SS_LEN_IN_SOCKADDR_STORAGE
3175 SQUID_CHECK_SIN_LEN_IN_SOCKADDR_IN
3178 dnl Check for libdl, used by auth_modules/PAM
3179 if test "x$with_dl" = "xyes"; then
3180 AC_CHECK_LIB(dl, dlopen)
3183 dnl -lintl is needed on SCO version 3.2v4.2 for strftime()
3184 dnl Robert Side <rside@aiinc.bc.ca>
3185 dnl Mon, 18 Jan 1999 17:48:00 GMT
3188 AC_CHECK_LIB(intl, strftime)
3193 dnl this is not fully functional if db.h is for a differend db version
3196 dnl check that dbopen is actually defined in the header
3197 dnl FIXME: in case of failure undef db-related includes etc.
3198 AC_CHECK_DECL(dbopen,,,[
3199 #if HAVE_SYS_TYPES_H
3200 #include <sys/types.h>
3212 SQUID_CHECK_DBOPEN_NEEDS_LIBDB
3213 if test "x$ac_cv_dbopen_libdb" = "xyes"; then
3218 dnl System-specific library modifications
3222 if test "x$GCC" = "xyes"; then
3223 AC_MSG_NOTICE([Removing -O for gcc on $host])
3224 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9g]]*//'`"
3229 AC_MSG_NOTICE([Removing -lsocket for IRIX...])
3230 LIBS=`echo $LIBS | sed -e s/-lsocket//`
3231 AC_MSG_NOTICE([Removing -lnsl for IRIX...])
3232 LIBS=`echo $LIBS | sed -e s/-lnsl//`
3233 ac_cv_lib_nsl_main=no
3234 AC_MSG_NOTICE([Removing -lbsd for IRIX...])
3235 LIBS=`echo $LIBS | sed -e s/-lbsd//`
3237 dnl From: c0032033@ws.rz.tu-bs.de (Joerg Schumacher)
3238 dnl Date: Thu, 17 Oct 1996 04:09:30 +0200
3239 dnl Please change your configure script. AIX doesn't need -lbsd.
3241 AC_MSG_NOTICE([Removing -lbsd for AIX...])
3242 LIBS=`echo $LIBS | sed -e s/-lbsd//`
3244 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_rtti],[-rtti],[[
3250 public:virtual ~Foo(){}
3252 class Bar:public Foo{
3253 public:Bar():Foo(){}
3256 Foo * myFoo=new Bar();
3257 Bar * myBar=dynamic_cast<Bar *>(myFoo);
3258 assert(myBar != NULL);
3260 if test "$ac_cv_require_rtti" = "yes"; then
3261 SQUID_CFLAGS="-rtti $SQUID_CFLAGS"
3262 SQUID_CXXFLAGS="-rtti $SQUID_CXXFLAGS"
3266 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_qcpluscmt],[-qcpluscmt],[[]],[[//c++ cmt]])
3268 if test "$ac_cv_require_qcpluscmt" = "yes"; then
3269 SQUID_CFLAGS="-qcpluscmt $SQUID_CFLAGS"
3274 SQUID_CFLAGS="$SQUID_CFLAGS -D_SQUID_MOTOROLA_"
3275 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_SQUID_MOTOROLA_"
3276 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1,
3277 [If gettimeofday is known to take only one argument])
3279 [*-*-solaris2.[0-4]])
3280 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)
3282 [*-sony-newsos[56]*])
3283 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)
3287 dnl This has to be before AC_CHECK_FUNCS
3288 # Disable poll() on certain platforms. Override by setting ac_cv_func_poll
3289 # when running configure.
3290 if test "x$ac_cv_func_poll" = "x" ; then
3294 AC_MSG_NOTICE([disabling poll for $host...])
3295 ac_cv_func_poll='no'
3298 # Henrik Nordstrom (hno@squid-cache.org) 19980817
3299 # poll is problematic on Linux. We disable it
3300 # by default until Linux gets it right.
3301 rev=`uname -r | awk -F. '{printf "%03d%03d",$1,$2}'`
3302 if test $rev -lt 002002; then
3303 AC_MSG_NOTICE([disabling poll for $host < 2.2...])
3304 ac_cv_func_poll='no'
3307 [powerpc-ibm-aix4.1.*])
3308 # Mike Laster (mlaster@metavillage.com) 19981021
3309 AC_MSG_NOTICE([disabling poll for $host...])
3310 ac_cv_func_poll='no'
3313 # Robert Side <rside@aiinc.bc.ca>
3314 # Mon, 18 Jan 1999 17:48:00 GMT
3315 AC_MSG_NOTICE([disabling poll for $host...])
3316 ac_cv_func_poll='no'
3321 dnl Check for library functions
3323 backtrace_symbols_fd \
3346 pthread_attr_setschedparam \
3347 pthread_attr_setscope \
3348 pthread_setschedparam \
3372 dnl ... and some we provide local replacements for
3381 AC_CHECK_DECLS([getaddrinfo,getnameinfo,inet_ntop,inet_pton,InetNtopA,InetPtonA],,,[
3383 * BSD requires sys/types.h, sys/socket.h, netinet/in.h, netdb.h, arpa/inet.h
3384 * Linux requires sys/types.h, sys/socket.h, arpa/inet.h
3385 * Windows requires sys/socket.h, winsock2.h, ws2tcpip.h
3387 #if HAVE_SYS_TYPES_H
3388 #include <sys/types.h>
3390 #if HAVE_NETINET_IN_H
3391 #include <netinet/in.h>
3393 #if HAVE_SYS_SOCKET_H
3394 #include <sys/socket.h>
3399 #if HAVE_ARPA_INET_H
3400 #include <arpa/inet.h>
3403 #include <winsock2.h>
3406 #include <ws2tcpip.h>
3410 # Magic which checks whether we are forcing a type of comm loop we
3411 # are actually going to (ab)use.
3412 # Mostly ripped from squid-commloops, thanks to adrian and benno
3414 if test "x$squid_opt_io_loop_engine" != "x"; then
3415 AC_MSG_NOTICE([choosing user-specified net I/O API $squid_opt_io_loop_engine])
3416 elif test "x$enable_epoll" != "xno" -a "x$squid_cv_epoll_works" = "xyes" ; then
3417 squid_opt_io_loop_engine="epoll"
3418 elif test "x$enable_kqueue" != "xno" ; then
3419 squid_opt_io_loop_engine="kqueue"
3420 elif test "x$enable_devpoll" != "xno" ; then
3421 squid_opt_io_loop_engine="devpoll"
3422 elif test "x$enable_poll" != "xno" -a "x$ac_cv_func_poll" = "xyes" ; then
3423 squid_opt_io_loop_engine="poll"
3424 elif test "x$enable_select" != "xno" -a "x$ac_cv_func_select" = "xyes"; then
3425 squid_opt_io_loop_engine="select"
3426 elif test "x$enable_select" != "xno" -a "x$squid_host_os" = "xmingw"; then
3427 squid_opt_io_loop_engine="select_win32"
3429 AC_MSG_WARN([Eep! Cannot find epoll, kqueue, /dev/poll, poll or select!])
3430 AC_MSG_WARN([Will try select and hope for the best.])
3431 squid_opt_io_loop_engine="select"
3434 AC_MSG_NOTICE([Using ${squid_opt_io_loop_engine} for the IO loop.])
3436 AM_CONDITIONAL(ENABLE_POLL, test "x$squid_opt_io_loop_engine" = "xpoll")
3437 AM_CONDITIONAL(ENABLE_EPOLL, test "x$squid_opt_io_loop_engine" = "xepoll")
3438 AM_CONDITIONAL(ENABLE_SELECT, test "x$squid_opt_io_loop_engine" = "xselect")
3439 AM_CONDITIONAL(ENABLE_SELECT_WIN32, test "x$squid_opt_io_loop_engine" = "xselect_win32")
3440 AM_CONDITIONAL(ENABLE_KQUEUE, test "x$squid_opt_io_loop_engine" = "xkqueue")
3441 AM_CONDITIONAL(ENABLE_DEVPOLL, test "x$squid_opt_io_loop_engine" = "xdevpoll")
3443 case $squid_opt_io_loop_engine in
3444 epoll) AC_DEFINE(USE_EPOLL,1,[Use epoll() for the IO loop]) ;;
3445 devpoll) AC_DEFINE(USE_DEVPOLL,1,[Use /dev/poll for the IO loop]) ;;
3446 poll) AC_DEFINE(USE_POLL,1,[Use poll() for the IO loop]) ;;
3447 kqueue) AC_DEFINE(USE_KQUEUE,1,[Use kqueue() for the IO loop]) ;;
3448 select_win32) AC_DEFINE(USE_SELECT_WIN32,1,[Use Winsock select() for the IO loop]) ;;
3449 select) AC_DEFINE(USE_SELECT,1,[Use select() for the IO loop]) ;;
3452 if test "x$ac_cv_func_sched_getaffinity" = "xyes" -a "x$ac_cv_func_sched_setaffinity" = "xyes" ; then
3453 AC_DEFINE(HAVE_CPU_AFFINITY,1,[Support setting CPU affinity for workers])
3456 SQUID_CHECK_SETRESUID_WORKS
3457 if test "x$squid_cv_resuid_works" = "xyes" ; then
3458 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.])
3461 AC_CHECK_HEADERS(mswsock.h)
3462 AC_MSG_CHECKING([for constant CMSG_SPACE])
3463 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
3464 #if HAVE_SYS_SOCKET_H
3465 #include <sys/socket.h>
3468 #include <mswsock.h>
3471 int a[CMSG_SPACE(int)];
3474 AC_DEFINE(HAVE_CONSTANT_CMSG_SPACE, 1, [Define to 1 if CMSG_SPACE is constant])
3479 AC_CHECK_TYPE(struct cmsghdr,AC_DEFINE(HAVE_CMSGHDR,1,[The system provides struct cmsghdr]),,[
3480 #if HAVE_SYS_SOCKET_H
3481 #include <sys/socket.h>
3484 #include <mswsock.h>
3487 #include <winsock2.h>
3491 AC_CHECK_TYPE(struct iovec,AC_DEFINE(HAVE_IOVEC,1,[The system provides struct iovec]),,[
3492 #if HAVE_SYS_SOCKET_H
3493 #include <sys/socket.h>
3496 #include <winsock2.h>
3499 #include <sys/uio.h>
3503 AC_CHECK_TYPE(struct msghdr,AC_DEFINE(HAVE_MSGHDR,1,[The system provides struct msghdr]),,[
3504 #if HAVE_SYS_SOCKET_H
3505 #include <sys/socket.h>
3508 #include <mswsock.h>
3511 #include <winsock2.h>
3515 AC_CHECK_TYPE(struct sockaddr_un,AC_DEFINE(HAVE_SOCKADDR_UN,1,[The system provides sockaddr_un]),,[
3519 #if HAVE_SYS_SOCKET_H
3520 #include <sys/socket.h>
3523 #include <winsock2.h>
3527 SQUID_CHECK_FUNC_STRNSTR
3528 SQUID_CHECK_FUNC_VACOPY
3529 SQUID_CHECK_FUNC___VACOPY
3531 dnl IP-Filter support requires ipf header files. These aren't
3532 dnl installed by default, so we need to check for them
3533 if test "x$enable_ipf_transparent" != "xno" ; then
3534 SQUID_CHECK_BROKEN_SOLARIS_IPFILTER
3535 AC_MSG_CHECKING(for availability of IP-Filter header files)
3536 # hold on to your hats...
3537 if test "x$ac_cv_header_ip_compat_h" = "xyes" -o \
3538 "x$ac_cv_header_ip_fil_compat_h" = "xyes" -o \
3539 "x$ac_cv_header_netinet_ip_compat_h" = "xyes" -o \
3540 "x$ac_cv_header_netinet_ip_fil_compat_h" = "xyes" ; then
3541 have_ipfilter_compat_header="yes"
3543 if test "x$have_ipfilter_compat_header" = "xyes" -a \
3544 "x$ac_cv_header_ip_fil_h" = "xyes" -a \
3545 "x$ac_cv_header_ip_nat_h" = "xyes" ; then
3546 enable_ipf_transparent="yes"
3547 elif test "x$have_ipfilter_compat_header" = "xyes" -a \
3548 "x$ac_cv_header_netinet_ip_fil_h" = "xyes" -a \
3549 "x$ac_cv_header_netinet_ip_nat_h" = "xyes" ; then
3550 enable_ipf_transparent="yes"
3552 enable_ipf_transparent="no"
3554 AC_MSG_RESULT($IPF_TRANSPARENT)
3556 ## On Solaris Ipfilter includes expect that SOLARIS2 is defined with the
3557 ## Solaris minor version (8, 9, 10, ...)
3558 if test "x$enable_ipf_transparent" = "xyes" -a "x$squid_host_os" = "xsolaris" ; then
3559 solrev=`uname -r | sh -c 'IFS=. read j n x; echo $n'`
3560 CFLAGS="-DSOLARIS2=$solrev $CFLAGS"
3561 CXXFLAGS="-DSOLARIS2=$solrev $CXXFLAGS"
3565 AC_MSG_NOTICE([IPF-based transparent proxying enabled: $enable_ipf_transparent])
3566 SQUID_DEFINE_BOOL(IPF_TRANSPARENT,$enable_ipf_transparent,
3567 [Enable support for IPF-style transparent proxying])
3569 dnl PF /dev/pf support requires a header file.
3570 if test "x$with_nat_devpf" != "xno" ; then
3571 if test "x$ac_cv_header_net_pfvar_h" = "xyes" -o \
3572 "x$ac_cv_header_net_pf_pfvar_h" = "xyes"; then
3573 if test "x$with_nat_devpf" = "xauto" ; then
3577 if test "x$with_nat_devpf" = "xyes" ; then
3578 AC_MSG_ERROR([PF /dev/pf based NAT requested but needed header not found])
3583 SQUID_DEFINE_BOOL(PF_TRANSPARENT,${enable_pf_transparent:=no},
3584 [Enable support for PF-style transparent proxying])
3585 SQUID_DEFINE_BOOL(USE_NAT_DEVPF,${with_nat_devpf:=no},
3586 [Enable support for /dev/pf NAT lookups])
3588 if test "x$enable_linux_netfilter" != "xno" ; then
3589 if test "x$ac_cv_header_linux_netfilter_ipv4_h" = "xyes"; then
3590 if test "x$enable_linux_netfilter" = "xauto" ; then
3591 enable_linux_netfilter=yes
3594 if test "x$enable_linux_netfilter" = "xauto" ; then
3595 enable_linux_netfilter=no
3597 AC_MSG_ERROR([Linux Netfilter support requested but needed headers not found])
3601 SQUID_DEFINE_BOOL(LINUX_NETFILTER,$enable_linux_netfilter,
3602 [Enable support for Transparent Proxy on Linux via Netfilter])
3604 dnl Netfilter TPROXY depends on libcap but the NAT parts can still work.
3605 AC_MSG_NOTICE([Support for Netfilter-based interception proxy requested: $enable_linux_netfilter])
3606 if test "x$enable_linux_netfilter" = "xyes" -a "x$with_libcap" != "xyes" ; then
3607 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for TPROXY])
3608 AC_MSG_WARN([Linux Transparent Proxy (version 4+) support WILL NOT be enabled])
3609 AC_MSG_WARN([Reduced support to NAT Interception Proxy])
3613 if test "x$squid_opt_netfilterconntrack" = "xyes" -a "x$with_libcap" != "xyes" ; then
3614 AC_MSG_ERROR([Linux netfilter conntrack requires libcap support (libcap 2.09+)])
3616 if test "x$with_netfilter_conntrack" = "xyes" -a "x$with_libcap" != "xyes" ; then
3617 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for netfilter mark support])
3618 AC_MSG_WARN([Linux netfilter marking support WILL NOT be enabled])
3619 with_netfilter_conntrack=no
3621 AC_MSG_NOTICE([Linux Netfilter Conntrack support enabled: ${with_netfilter_conntrack} ${squid_opt_netfilterconntrackpath}])
3624 AC_ARG_ENABLE(zph-qos,
3625 AS_HELP_STRING([--enable-zph-qos],[Enable ZPH QOS support]), [
3626 SQUID_YESNO([$enableval],
3627 [unrecognized argument to --enable-zph-qos: $enableval])
3629 SQUID_DEFINE_BOOL(USE_QOS_TOS,${enable_zph_qos:=yes},
3630 [Enable Zero Penalty Hit QOS. When set, Squid will alter the
3631 TOS field of HIT responses to help policing network traffic])
3632 AC_MSG_NOTICE([ZPH QOS enabled: $enable_zph_qos])
3633 if test x"$enable_zph_qos" = "xyes" ; then
3634 AC_MSG_NOTICE([QOS netfilter mark preservation enabled: $with_netfilter_conntrack])
3635 SQUID_DEFINE_BOOL(USE_LIBNETFILTERCONNTRACK,${with_netfilter_conntrack:=no},
3636 [Enable support for QOS netfilter mark preservation])
3640 AC_CHECK_LIB(regex, regexec, [REGEXLIB="-lregex"],[REGEXLIB=''])
3641 AC_ARG_ENABLE(gnuregex,
3642 AS_HELP_STRING([--enable-gnuregex],
3643 [Compile GNUregex. Unless you have reason to use
3644 this option, you should not enable it.
3645 This library file is usually only required on Windows and
3646 very old Unix boxes which do not have their own regex
3647 library built in.]), [
3648 SQUID_YESNO([$enableval],[unrecognized argument to --enable-gnuregex: $enableval])
3650 # force-enable on old solaris and nextstep
3651 if test "x${enable_gnuregex:=auto}" = "xauto" ; then
3653 *-sun-solaris2.[[0-4]])
3654 enable_gnuregex="yes"
3657 enable_gnuregex="yes"
3662 # try detecting if it is needed
3663 if test "x$enable_gnuregex" = "xauto" ; then
3664 SQUID_CHECK_REGEX_WORKS
3665 if test "x$squid_cv_regex_works" = "xyes" ; then
3671 AC_MSG_CHECKING(if GNUregex needs to be compiled)
3672 AC_MSG_RESULT($enable_gnuregex)
3673 if test "x$enable_gnuregex" = "xyes"; then
3674 # for some reason (force-enable, test..) gnuregex was found as needed. Override any system lib
3677 #if no reason was found to enable gnuregex, disable it
3678 if test "x$enable_gnuregex" = "xauto" ; then
3681 SQUID_DEFINE_BOOL(USE_GNUREGEX,$enable_gnuregex,[Define if we should use GNU regex])
3684 SQUID_DETECT_UDP_SND_BUFSIZE
3685 SQUID_DETECT_UDP_RECV_BUFSIZE
3686 SQUID_DETECT_TCP_SND_BUFSIZE
3687 SQUID_DETECT_TCP_RECV_BUFSIZE
3689 SQUID_CHECK_RECV_ARG_TYPE
3690 SQUID_CHECK_NEED_SYS_ERRLIST
3691 SQUID_CHECK_MAXPATHLEN
3693 SQUID_CHECK_LIBRESOLV_DNS_TTL_HACK
3694 SQUID_CHECK_RESOLVER_FIELDS
3696 AC_CHECK_HEADERS(sys/statvfs.h)
3697 if test "x$ac_cv_header_sys_statvfs_h" = "xyes" ; then
3698 SQUID_CHECK_WORKING_STATVFS
3700 if test "x$ac_cv_func_statvfs" != "xyes" ; then
3701 AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/vfs.h sys/statfs.h)
3702 AC_CHECK_FUNCS(statfs)
3703 SQUID_CHECK_F_FRSIZE_IN_STATFS
3706 dnl Squid will not usually attempt to translate templates when building
3707 AC_ARG_ENABLE(translation,
3708 AS_HELP_STRING([--enable-translation],[Generate the localized error page templates and manuals.
3709 Which can also be downloaded from http://www.squid-cache.org/Versions/langpack/.]), [
3710 SQUID_YESNO([$enableval],
3711 [unrecognized argument to --enable-translation: $enableval])
3713 if test "x${enable_translation:=no}" = "xyes" ; then
3714 AX_WITH_PROG([PO2HTML],[po2html])
3715 AX_WITH_PROG([PO2TEXT],[po2txt])
3723 dnl Squid now has limited locale handling ...
3725 AC_ARG_ENABLE(auto-locale,
3726 AS_HELP_STRING([--disable-auto-locale],[This prevents Squid providing localized error pages based on the
3727 clients request headers.
3728 When disabled Squid requires explicit language configuration.]), [
3729 SQUID_YESNO([$enableval],
3730 [unrecognized argument to --disable-auto-locale: $enableval])
3732 AC_MSG_NOTICE([Multi-Language support enabled: ${enable_auto_locale:=yes}])
3733 SQUID_DEFINE_BOOL(USE_ERR_LOCALES,$enable_auto_locale,
3734 [Use multi-language support on error pages])
3737 dnl Need the debugging version of malloc if available
3739 if test "x$ac_cv_lib_malloc_main" = "xyes" ; then
3740 if test -r /usr/lib/debug/malloc.o ; then
3741 XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/malloc.o"
3743 if test -r /usr/lib/debug/mallocmap.o ; then
3744 XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/mallocmap.o"
3749 if test "x$XTRA_LIBS" = "x"; then
3752 XTRA_LIBS=`echo $XTRA_LIBS | sed -e "s/ */ /g"`
3757 AC_SUBST(SQUID_CFLAGS)
3758 AC_SUBST(SQUID_CXXFLAGS)
3760 AC_ARG_VAR([BUILDCXXFLAGS],[C++ compiler flags for building compile-time tools. e.g. cf_gen])
3761 if test "x$BUILDCXXFLAGS" = "x"; then
3762 # if we are NOT cross-compiling, use the default build flags for cf_gen and friends
3763 # otherwise rely on the user-provided value
3764 if test "x$squid_cv_check_marchnative" = "xyes"; then
3765 # always valid for the Build compiler.
3766 BUILDCXXFLAGS="-march=native"
3768 BUILDCXXFLAGS="$BUILDCXXFLAGS $CXXFLAGS"
3770 AC_SUBST(BUILDCXXFLAGS)
3772 AC_MSG_NOTICE([BUILD LIBRARIES: $LIBS])
3773 AC_MSG_NOTICE([BUILD EXTRA LIBRARIES: $XTRA_LIBS])
3774 AC_MSG_NOTICE([BUILD OBJECTS: $OBJS])
3775 AC_MSG_NOTICE([BUILD EXTRA OBJECTS: $XTRA_OBJS])
3776 AC_MSG_NOTICE([BUILD C FLAGS: $CFLAGS])
3777 AC_MSG_NOTICE([BUILD EXTRA C FLAGS: $SQUID_CFLAGS])
3778 AC_MSG_NOTICE([BUILD C++ FLAGS: $CXXFLAGS])
3779 AC_MSG_NOTICE([BUILD EXTRA C++ FLAGS: $SQUID_CXXFLAGS])
3780 AC_MSG_NOTICE([BUILD Tools C++ FLAGS: $BUILDCXXFLAGS])
3782 dnl Clean up after OSF/1 core dump bug
3790 doc/manuals/Makefile
3791 doc/release-notes/Makefile
3795 lib/libTrie/Makefile
3796 lib/libTrie/test/Makefile
3797 lib/ntlmauth/Makefile
3798 lib/profiler/Makefile
3801 lib/snmplib/Makefile
3805 src/acl/external/Makefile
3806 src/acl/external/AD_group/Makefile
3807 src/acl/external/delayer/Makefile
3808 src/acl/external/eDirectory_userip/Makefile
3809 src/acl/external/file_userip/Makefile
3810 src/acl/external/kerberos_ldap_group/Makefile
3811 src/acl/external/LDAP_group/Makefile
3812 src/acl/external/LM_group/Makefile
3813 src/acl/external/session/Makefile
3814 src/acl/external/SQL_session/Makefile
3815 src/acl/external/unix_group/Makefile
3816 src/acl/external/wbinfo_group/Makefile
3817 src/acl/external/time_quota/Makefile
3818 src/adaptation/Makefile
3819 src/adaptation/icap/Makefile
3820 src/adaptation/ecap/Makefile
3823 src/auth/basic/Makefile
3824 src/auth/basic/DB/Makefile
3825 src/auth/basic/fake/Makefile
3826 src/auth/basic/getpwnam/Makefile
3827 src/auth/basic/LDAP/Makefile
3828 src/auth/basic/NCSA/Makefile
3829 src/auth/basic/NIS/Makefile
3830 src/auth/basic/PAM/Makefile
3831 src/auth/basic/POP3/Makefile
3832 src/auth/basic/RADIUS/Makefile
3833 src/auth/basic/SASL/Makefile
3834 src/auth/basic/SMB/Makefile
3835 src/auth/basic/SMB_LM/Makefile
3836 src/auth/basic/SSPI/Makefile
3837 src/auth/digest/Makefile
3838 src/auth/digest/eDirectory/Makefile
3839 src/auth/digest/file/Makefile
3840 src/auth/digest/LDAP/Makefile
3841 src/auth/negotiate/Makefile
3842 src/auth/negotiate/kerberos/Makefile
3843 src/auth/negotiate/SSPI/Makefile
3844 src/auth/negotiate/wrapper/Makefile
3845 src/auth/ntlm/Makefile
3846 src/auth/ntlm/fake/Makefile
3847 src/auth/ntlm/SMB_LM/Makefile
3848 src/auth/ntlm/SSPI/Makefile
3850 src/clients/Makefile
3854 src/DiskIO/AIO/Makefile
3855 src/DiskIO/Blocking/Makefile
3856 src/DiskIO/DiskDaemon/Makefile
3857 src/DiskIO/DiskThreads/Makefile
3858 src/DiskIO/IpcIo/Makefile
3859 src/DiskIO/Mmapped/Makefile
3867 src/http/one/Makefile
3868 src/http/url_rewriters/Makefile
3869 src/http/url_rewriters/fake/Makefile
3870 src/http/url_rewriters/LFS/Makefile
3877 src/log/file/Makefile
3883 src/security/Makefile
3884 src/security/cert_generators/Makefile
3885 src/security/cert_generators/file/Makefile
3886 src/security/cert_validators/Makefile
3887 src/security/cert_validators/fake/Makefile
3888 src/servers/Makefile
3892 src/store/id_rewriters/Makefile
3893 src/store/id_rewriters/file/Makefile
3896 tools/helper-mux/Makefile
3897 tools/purge/Makefile
3898 tools/squidclient/Makefile
3899 tools/systemd/Makefile
3900 tools/sysvinit/Makefile
3903 # must configure libltdl subdir unconditionally for "make distcheck" to work
3904 #AC_CONFIG_SUBDIRS(libltdl)