1 ## Copyright (C) 1996-2018 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],[5.0.0-VCS],[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 dnl Libtool 2.2.6 requires: rm -f
123 AC_PATH_PROG(PERL, perl, none)
124 if test "x$ac_cv_path_PERL" = "xnone"; then
125 AC_MSG_FAILURE([Perl is required to compile Squid. Please install Perl and then re-run configure ])
127 AC_PATH_PROG(POD2MAN, pod2man, $FALSE)
128 AM_CONDITIONAL(ENABLE_POD2MAN_DOC, test "x${ac_cv_path_POD2MAN}" != "x$FALSE")
130 dnl set $(AR) if not provided by the build environment
131 if test "x$AR" = "x"; then
132 AC_PATH_PROG(AR, ar, $FALSE)
137 AC_PATH_PROG(LINUXDOC, linuxdoc, $FALSE)
138 AM_CONDITIONAL(ENABLE_RELEASE_DOCS, test "x${ac_cv_path_LINUXDOC}" != "x$FALSE")
140 # pre-define DEFAULT_PREFIX, some modules need it.
141 if test "${prefix}" = "NONE" ; then
142 squid_prefix=$ac_default_prefix
146 AC_DEFINE_UNQUOTED(DEFAULT_PREFIX,[$squid_prefix],[The install prefix])
148 AC_ARG_ENABLE(strict-error-checking,
149 AS_HELP_STRING([--disable-strict-error-checking],[By default squid is compiled
150 with all possible static compiler error-checks enabled.
151 This flag disables the behavior]), [
152 SQUID_YESNO([$enableval],
153 [Unrecognized argument to --disable-strict-error-checking: $enableval])
155 AC_MSG_NOTICE([strict error checking enabled: ${enable_strict_error_checking:=yes}])
157 AC_MSG_CHECKING(whether to use loadable modules)
158 AC_ARG_ENABLE(loadable-modules,
159 AS_HELP_STRING([--disable-loadable-modules],[do not support loadable modules]) , [
160 SQUID_YESNO([$enableval],
161 [Unrecognized argument to --disable-loadable-modules: $enableval])
163 AM_CONDITIONAL(ENABLE_LOADABLE_MODULES, test "x${enable_loadable_modules:=yes}" = "xyes")
164 AC_MSG_RESULT([$enable_loadable_modules])
166 if test "x$enable_loadable_modules" = "xyes";
168 AC_DEFINE(USE_LOADABLE_MODULES, 1, [Support Loadable Modules])
174 # LT_INIT requires libtool v2, might as well state it loud
176 LT_INIT([dlopen],[disable-shared])
177 if ! test "${ac_top_build_prefix}" = "";
179 # LTDL v3-v7 macros assume the autoconf 2.62 variable top_build_prefix is defined
180 # But from autoconf 2.64 its called ac_top_build_prefix and not automatically added to the Makefile
181 # This fixes Linux LTDLv3-v7, and BSD LTDL v2.2
182 top_build_prefix=${ac_top_build_prefix}
183 AC_SUBST(top_build_prefix)
187 dnl LibTool environment is now prepared for setup. Check that it is usable and initialize.
190 # Do we need these unconditionally for "make distcheck" to work?
194 if test "x$enable_loadable_modules" = "xyes";
196 # Why is this needed? Should not LT_INIT (or LT_LIB_DLLOAD) from libtool do that?
197 LIBADD_DL=${lt_cv_dlopen_libs}
198 AC_SUBST([LIBADD_DL])
201 SQUID_CC_GUESS_VARIANT
202 SQUID_CC_GUESS_OPTIONS
204 dnl find out the exe extension for this platform.
205 dnl If it is not empty, use it for CGI as well.
209 if test "x$EXEEXT" = "x" ; then
212 # automake automatically adds .exe when installing binaries
217 AM_CONDITIONAL(ENABLE_WIN32SPECIFIC,[test "x$squid_host_os" = "xmingw"])
218 AM_CONDITIONAL(ENABLE_WIN32_IPC,[test "x$squid_host_os" = "xmingw"])
220 case "$squid_host_os" in
222 AC_PATH_PROG(WIN32_PSAPI, psapi.dll, none)
223 CFLAGS="$CFLAGS -mthreads"
224 CXXFLAGS="$CXXFLAGS -mthreads -static-libgcc -static-libstdc++"
225 if test "x$ac_cv_path_WIN32_PSAPI" = "xnone"; then
226 AC_MSG_NOTICE([PSAPI.DLL is recommended to run Squid on Windows NT Platform])
227 AC_MSG_NOTICE([Please see PSAPI.DLL section on doc/win32-relnotes.html.])
229 AC_DEFINE(HAVE_WIN32_PSAPI,1,[Define if you have PSAPI.DLL on Windows systems])
232 MINGW_LIBS="-lmingwex"
236 # FreeBSD places local libraries and packages in /usr/local
237 CFLAGS="$CFLAGS -I/usr/local/include"
238 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
239 LDFLAGS="$LDFLAGS -L/usr/local/lib -Wl,-R/usr/local/lib"
246 AC_DEFINE_UNQUOTED(CONFIG_HOST_TYPE, "$host",[Host type from configure])
248 AC_DEFINE_UNQUOTED(SQUID_CONFIGURE_OPTIONS, "$ac_configure_args",
249 [configure command line used to configure Squid])
251 CACHE_EFFECTIVE_USER="nobody"
252 AC_ARG_WITH(default-user,
253 AS_HELP_STRING([--with-default-user=USER],[System user account for squid permissions. Default: nobody]),
254 [ CACHE_EFFECTIVE_USER="$withval" ]
256 AC_SUBST(CACHE_EFFECTIVE_USER)
258 DEFAULT_LOG_DIR="$localstatedir/logs"
260 AS_HELP_STRING([--with-logdir=PATH],
261 [Default location for squid logs. default: PREFIX/var/logs]), [
264 AC_MSG_ERROR( --with-logdir requires a directory PATH. --with-logdir=PATH )
267 DEFAULT_LOG_DIR="$withval"
272 AC_SUBST(DEFAULT_LOG_DIR)
274 DEFAULT_PID_FILE="$localstatedir/run/@SERVICE_NAME@.pid"
276 AS_HELP_STRING([--with-pidfile=PATH],
277 [Default location for squid pid file. Default: PREFIX/var/run/squid.pid]), [
280 AC_MSG_ERROR( --with-pidfile requires a file PATH. --with-pidfile=PATH )
283 DEFAULT_PID_FILE="$withval"
287 AC_SUBST(DEFAULT_PID_FILE)
289 DEFAULT_SWAP_DIR="$localstatedir/cache/squid"
291 AS_HELP_STRING([--with-swapdir=PATH],
292 [Default location for squid cache directories. Default: PREFIX/var/cache/squid]), [
295 AC_MSG_ERROR( --with-swapdir requires a directory PATH. --with-swapdir=PATH )
298 DEFAULT_SWAP_DIR="$withval"
302 AC_SUBST(DEFAULT_SWAP_DIR)
304 dnl Set Default CFLAGS
305 if test "x$PRESET_CFLAGS" = "x"; then
306 if test "$squid_cv_compiler" = "gcc"; then
309 # sunos has too many warnings for this to be useful
313 # Motorola cc/ld does not like -02 but is ok on -O
314 CFLAGS=`echo $CFLAGS | sed -e 's/-O[0-9]/-O/'`
317 CFLAGS="$squid_cv_cc_option_wall $CFLAGS"
323 # suggested by Rafael Seidl <rafaels@cthulhu.engr.sgi.com>
324 CFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
325 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
326 -Wl,-woff,85,-woff,84,-woff,134 \
327 -nostdinc -I/usr/include -D_BSD_SIGNALS $CFLAGS"
328 CXXFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
329 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
330 -Wl,-woff,85,-woff,84,-woff,134 \
331 -nostdinc -I/usr/include -D_BSD_SIGNALS $CXXFLAGS"
339 dnl set squid required flags
340 if test "$squid_cv_compiler" = "gcc"; then
341 case "$squid_host_os" in
343 dnl Guido Serassio (serassio@squid-cache.org) 20070811
344 dnl Using the latest MinGW (gcc 3.4.5 + mingw-runtime 3.13) cannot build with
345 dnl -Werror -Wmissing-prototypes -Wmissing-declarations
346 dnl TODO: check if the problem will be present in any other newer MinGW release.
347 SQUID_CFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow"
350 SQUID_CFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wcomments -Wshadow"
353 SQUID_CXXFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual"
359 dnl CentOS (and RHEL) still define ntohs() using deprecated C++ features
360 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_wno_deprecated_register],[-Werror -Wno-deprecated-register],[[#include <arpa/inet.h>]],[[int fox=ntohs(1);]])
362 if test "x$enable_strict_error_checking" != "xno"; then
363 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_option_werror"
364 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cxx_option_werror"
367 if test "x$ac_cv_require_wno_deprecated_register" = "xyes"; then
368 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -Wno-deprecated-register"
371 # squid_cv_cc_arg_pipe is set by SQUID_CC_GUESS_OPTIONS
372 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cc_arg_pipe"
373 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_arg_pipe"
375 # possibly include some build info tag into squid -v
376 SQUID_EMBED_BUILD_INFO
378 AC_ARG_ENABLE(optimizations,
379 AS_HELP_STRING([--disable-optimizations],
380 [Do not compile Squid with compiler optimizations enabled.
381 Optimization is good for production builds, but not
382 good for debugging. During development, use
383 --disable-optimizations to reduce compilation times
384 and allow easier debugging.]), [
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]]*//'`"
392 AC_ARG_ENABLE(debug-cbdata,
393 AS_HELP_STRING([--enable-debug-cbdata],
394 [Provide some debug information in cbdata]), [
395 SQUID_YESNO([$enableval],
396 [unrecognized argument to --enable-debug-cbdata: $enableval])
398 SQUID_DEFINE_BOOL(USE_CBDATA_DEBUG,${enable_debug_cbdata:=no},
399 [Enable support for cbdata debug information])
400 AC_MSG_NOTICE([cbdata debugging enabled: $enable_debug_cbdata])
403 dnl Nasty hack to get autoconf 2.64 on Linux to run.
404 dnl all other uses of RUN_IFELSE are wrapped inside CACHE_CHECK which breaks on 2.64
405 AC_RUN_IFELSE([AC_LANG_SOURCE([[ int main(int argc, char **argv) { return 0; } ]])],[],[],[:])
407 AH_TEMPLATE(XMALLOC_STATISTICS,[Define to have malloc statistics])
408 AC_ARG_ENABLE(xmalloc-statistics,
409 AS_HELP_STRING([--enable-xmalloc-statistics],
410 [Show malloc statistics in status page]), [
411 SQUID_YESNO([$enableval],
412 [unrecognized argument to --enable-xmalloc-statistics: $enableval])
414 SQUID_DEFINE_BOOL(XMALLOC_STATISTICS,${enable_xmalloc_statistics:=no},
415 [Show malloc statistics in status page])
416 AC_MSG_NOTICE([xmalloc stats display: $enable_xmalloc_statistics])
418 squid_opt_aufs_threads=""
419 AC_ARG_WITH(aufs-threads,
420 AS_HELP_STRING([--with-aufs-threads=N_THREADS],
421 [Tune the number of worker threads for the aufs object store.]), [
424 squid_opt_aufs_threads=$withval
427 AC_MSG_ERROR(--with-aufs-threads expects a numeric argument)
431 if test "x$squid_opt_aufs_threads" != "x"; then
432 AC_MSG_NOTICE([With $squid_opt_aufs_threads aufs threads])
433 AC_DEFINE_UNQUOTED(AUFS_IO_THREADS,$squid_opt_aufs_threads,
434 [Defines how many threads aufs uses for I/O])
437 AC_ARG_WITH(dl, AS_HELP_STRING([--with-dl],[Use dynamic linking]))
438 if test "x$with_dl" = "xyes"; then
439 AC_MSG_NOTICE([With dl])
442 ## check for atomics library before anything that might need it
443 # AC_SEARCH_LIBS pollutes LIBS
444 SQUID_STATE_SAVE(LIBATOMIC)
445 AC_SEARCH_LIBS([__atomic_load_8],[atomic],[
446 test "$ac_res" = "none required" || ATOMICLIB=$ac_res],[])
447 SQUID_STATE_ROLLBACK(LIBATOMIC)
450 AC_SEARCH_LIBS([shm_open], [rt])
451 if test "x$ac_cv_search_shm_open" != "xno" ; then
452 AC_DEFINE(HAVE_SHM,1,[Support shared memory features])
455 AC_MSG_CHECKING([for DiskIO modules to be enabled])
456 squid_disk_module_candidates=""
457 squid_opt_enable_diskio="auto" #values: no, yes, "auto"(=yes+detect modules)
458 AC_ARG_ENABLE(disk-io,
459 AS_HELP_STRING([--enable-disk-io="list of modules"],
460 [Build support for the list of disk I/O modules.
461 Set without a value or omitted, all available modules will be built.
462 See src/DiskIO for a list of available modules, or
463 Programmers Guide section on DiskIO
464 for details on how to build your custom disk module]), [
468 #do nothing, "auto" is ok
471 squid_opt_enable_diskio="no"
474 squid_opt_enable_diskio="yes"
475 squid_disk_module_candidates=" `echo $enableval| sed -e 's/,/ /g;s/ */ /g'` "
476 SQUID_CLEANUP_MODULES_LIST([squid_disk_module_candidates])
481 # if requested to autodetect, find out what we have
482 if test "x$squid_opt_enable_diskio" = "xauto"; then
483 squid_opt_enable_diskio="yes"
484 SQUID_LOOK_FOR_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
485 if test "x$ac_cv_search_shm_open" = "xno" ; then
487 squid_disk_module_candidates=`echo $squid_disk_module_candidates|sed 's/IpcIo//'`
491 AC_MSG_RESULT([${squid_disk_module_candidates:-none}])
492 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
493 SQUID_DEFINE_BOOL(USE_DISKIO,$squid_opt_enable_diskio,
494 [DiskIO modules are expected to be available.])
498 dnl Some autoconf.h defines we might enable later...
499 AC_ARG_WITH(pthreads,AS_HELP_STRING([--without-pthreads],[Disable POSIX Threads]))
500 AC_ARG_WITH(aio, AS_HELP_STRING([--without-aio],[Do not use POSIX AIO. Default: auto-detect]))
503 squid_opt_use_diskthreads=
506 dnl Setup the module paths etc.
509 AH_TEMPLATE(HAVE_DISKIO_MODULE_AIO, [Whether POSIX AIO Disk I/O module is built])
510 AH_TEMPLATE(HAVE_DISKIO_MODULE_BLOCKING, [Whether Blocking Disk I/O module is built])
511 AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKDAEMON, [Whether DiskDaemon Disk I/O module is built])
512 AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKTHREADS, [Whether DiskThreads Disk I/O module is built])
513 AH_TEMPLATE(HAVE_DISKIO_MODULE_IPCIO, [Whether IpcIo Disk I/O module is built])
514 AH_TEMPLATE(HAVE_DISKIO_MODULE_MMAPPED, [Whether Mmapped Disk I/O module is built])
515 for module in $squid_disk_module_candidates none; do
517 if test "x$module" = "xnone"; then
520 if ! test -d "$srcdir/src/DiskIO/$module"; then
521 AC_MSG_ERROR(disk-io $module does not exist)
526 dnl Check for POSIX AIO availability
527 squid_opt_use_aio="yes"
529 if test "x$with_aio" != "xno"; then
531 AC_CHECK_HEADERS(aio.h,[have_aio_header=yes])
532 dnl On some systems POSIX AIO functions are in librt
533 dnl On some systems POSIX AIO functions are in libaio
534 AC_CHECK_LIB(rt,aio_read,[AIOLIB="-lrt"],AC_CHECK_LIB(aio,aio_read,[AIOLIB="-laio"],[]))
535 dnl Enable AIO if the library and headers are found
536 if test "x$AIOLIB" != "x" && test "x$have_aio_header" = "xyes"; then
537 AC_MSG_NOTICE([Native POSIX AIO support detected.])
538 squid_opt_use_aio="yes"
540 dnl Windows does things differently. We provide wrappers.
541 dnl TODO: Windows really needs its own DiskIO module or its Overlaped IO
542 case "$squid_host_os" in
544 squid_opt_use_aio="yes"
545 AC_MSG_NOTICE([Windows being built. Maybe-enable POSIX AIO.])
548 AC_MSG_NOTICE([Native POSIX AIO support not detected. AIO automatically disabled.])
549 squid_opt_use_aio="no"
554 AC_MSG_NOTICE([POSIX AIO support manually disabled.])
555 squid_opt_use_aio="no"
557 dnl Use the POSIX AIO pieces if we actually need them.
558 if test "x$squid_opt_use_aio" = "xyes" ; then
559 DISK_MODULES="$DISK_MODULES AIO"
560 AC_DEFINE([HAVE_DISKIO_MODULE_AIO],1,[POSIX AIO Disk I/O module is built])
561 case "$squid_host_os" in
564 AC_MSG_NOTICE([Replacing AIO DiskIO module with: Windows overlapped I/O support])
567 AC_MSG_NOTICE([Enabling AIO DiskIO module])
571 AC_MSG_NOTICE([AIO DiskIO Module disabled. Missing POSIX AIO support.])
572 squid_disk_module_candidates_AIO=no
577 AC_MSG_NOTICE([Enabling Blocking DiskIO module])
578 DISK_MODULES="$DISK_MODULES Blocking"
579 AC_DEFINE([HAVE_DISKIO_MODULE_BLOCKING],1,[Blocking Disk I/O module is built])
583 case "$squid_host_os" in
585 AC_MSG_NOTICE(["DiskDaemon not supported on MinGW"])
586 squid_disk_module_candidates_DiskDaemon=no
589 AC_MSG_NOTICE([Enabling DiskDaemon DiskIO module])
590 DISK_MODULES="$DISK_MODULES DiskDaemon"
591 AC_DEFINE([HAVE_DISKIO_MODULE_DISKDAEMON],1,[DiskDaemon Disk I/O module is built])
597 squid_opt_use_diskthreads="yes"
599 SQUID_STATE_SAVE([diskthreads_state],[SQUID_CFLAGS SQUID_CXXFLAGS])
600 if test "x$with_pthreads" != "xno"; then
601 dnl TODO: this needs to be extended to handle more systems and better
602 dnl REF: http://www.openldap.org/lists/openldap-bugs/200006/msg00070.html
603 dnl REF: http://autoconf-archive.cryp.to/acx_pthread.html
604 case "$squid_host_os" in
607 AC_MSG_NOTICE([Windows threads support automatically enabled])
610 if test `echo "$squid_host_os_version" | tr -d .` -lt 70 ; then
611 AC_MSG_NOTICE(pthread library requires FreeBSD 7 or later)
612 squid_opt_use_diskthreads="no"
614 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
615 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
616 if test "x$GCC" = "xyes" -a "x$PRESET_LDFLAGS" = "x" ; then
617 LDFLAGS="$LDFLAGS -pthread"
622 if test `echo "$squid_host_os_version" | tr -d .` -lt 52 ; then
623 AC_MSG_NOTICE(pthread library requires OpenBSD 5.2 or later)
624 squid_opt_use_diskthreads="no"
626 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
627 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
628 LDFLAGS="$LDFLAGS -lpthread"
632 if test "x$GCC" = "xyes" ; then
633 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -pthreads"
634 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -pthreads"
635 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
636 AC_MSG_NOTICE(pthread library required but cannot be found.)
637 squid_opt_use_diskthreads="no"
640 dnl test for -lpthread first. libc version is a stub apparently on Solaris.
641 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -lpthread"
642 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -lpthread"
643 AC_SEARCH_LIBS([pthread_create],[pthread thread],[
644 LIBPTHREADS="" #in LIBS
646 AC_MSG_NOTICE(pthread library required but cannot be found.)
647 squid_opt_use_diskthreads="no"
652 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
653 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
654 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
655 AC_MSG_NOTICE(pthread library required but cannot be found.)
656 squid_opt_use_diskthreads="no"
661 AC_MSG_NOTICE([Native pthreads support manually disabled.])
662 squid_opt_use_diskthreads="no"
664 if test "x$squid_opt_use_diskthreads" = "xyes" ; then
665 AC_MSG_NOTICE([Enabling DiskThreads DiskIO module])
666 DISK_MODULES="$DISK_MODULES DiskThreads"
667 AC_DEFINE([HAVE_DISKIO_MODULE_DISKTHREADS],1,[DiskThreads Disk I/O module is built])
669 AC_MSG_NOTICE([Native pthreads support disabled. DiskThreads module automaticaly disabled.])
670 SQUID_STATE_ROLLBACK([diskthreads_state])
671 squid_disk_module_candidates_DiskThreads=no
676 if test "x$ac_cv_search_shm_open" = "xno" ; then
677 AC_MSG_NOTICE([DiskIO IpcIo module requires shared memory support])
678 squid_disk_module_candidates_IpcIo=no
680 AC_MSG_NOTICE([Enabling IpcIo DiskIO module])
681 DISK_MODULES="$DISK_MODULES IpcIo"
682 AC_DEFINE([HAVE_DISKIO_MODULE_IPCIO],1,[IpcIo Disk I/O module is built])
687 dnl TODO: use availability of sys/mman.h and/or mmap to define
688 dnl OR support windows mmap functions
689 if test "x$squid_host_os" = "xmingw" ; then
690 AC_MSG_NOTICE([Mmapped DiskIO is not available on Mingw])
691 squid_disk_module_candidates_Mmapped=no
693 AC_MSG_NOTICE([Enabling Mmapped DiskIO module])
694 DISK_MODULES="$DISK_MODULES Mmapped"
695 AC_DEFINE([HAVE_DISKIO_MODULE_MMAPPED],1,[Mmapped Disk I/O module is built])
700 AC_MSG_NOTICE([Enabling $module DiskIO module])
701 DISK_LIBS="$DISK_LIBS lib${module}.la"
702 DISK_MODULES="$DISK_MODULES ${module}"
706 AC_MSG_NOTICE([IO Modules built: $DISK_MODULES])
707 AC_SUBST(DISK_MODULES)
709 AM_CONDITIONAL(ENABLE_DISKIO_AIO, test "x$squid_disk_module_candidates_AIO" = "xyes")
711 AM_CONDITIONAL(ENABLE_WIN32_AIO, test "x$squid_disk_module_candidates_AIO" = "xyes" -a "x$ENABLE_WIN32_AIO" = "x1")
712 AM_CONDITIONAL(ENABLE_DISKIO_BLOCKING, test "x$squid_disk_module_candidates_Blocking" = "xyes")
713 AM_CONDITIONAL(ENABLE_DISKIO_DISKDAEMON, test "x$squid_disk_module_candidates_DiskDaemon" = "xyes")
714 AM_CONDITIONAL(ENABLE_DISKIO_DISKTHREADS, test "x$squid_disk_module_candidates_DiskThreads" = "xyes")
715 AC_SUBST(LIBPTHREADS)
716 AM_CONDITIONAL(ENABLE_WIN32_AIOPS, test "x$squid_disk_module_candidates_DiskThreads" = "xyes" -a "x$ENABLE_WIN32_AIOPS" = "x1")
717 AM_CONDITIONAL(ENABLE_DISKIO_IPCIO, test "x$squid_disk_module_candidates_IpcIo" = "xyes")
718 AM_CONDITIONAL(ENABLE_DISKIO_MMAPPED, test "x$squid_disk_module_candidates_Mmapped" = "xyes")
720 dnl Check what Storage formats are wanted.
721 dnl This version will error out with a message saying why if a required DiskIO is missing.
722 squid_opt_enable_storeio=auto
723 AC_ARG_ENABLE([storeio],
724 AS_HELP_STRING([--enable-storeio="list of modules"],
725 [Build support for the list of store I/O modules.
726 The default is only to build the "ufs" module.
727 See src/fs for a list of available modules, or
728 Programmers Guide section <not yet written>
729 for details on how to build your custom store module]), [
732 squid_opt_enable_storeio=auto
735 squid_opt_enable_storeio=no
738 squid_opt_enable_storeio=yes
739 squid_storeio_module_candidates="`echo $enableval| sed -e 's/,/ /g;s/ */ /g'`"
740 # ufs is really always needed as it has low-level routines
741 # if it is a dupe it will be cleaned-up later
742 squid_storeio_module_candidates="$squid_storeio_module_candidates ufs"
746 if test "x$squid_opt_enable_storeio" = "xauto"; then
747 squid_opt_enable_storeio=yes
748 AC_MSG_CHECKING([for available StoreIO modules])
749 SQUID_LOOK_FOR_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
750 AC_MSG_RESULT([$squid_storeio_module_candidates])
753 SQUID_CLEANUP_MODULES_LIST([squid_storeio_module_candidates])
754 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
755 AC_MSG_NOTICE([Store modules built: $squid_storeio_module_candidates])
757 for fs in $squid_storeio_module_candidates none; do
760 if test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
761 "$squid_disk_module_candidates_DiskDaemon" != "yes" ; then
762 AC_MSG_ERROR([Storage diskd module requires DiskIO module: Blocking or DiskDaemon])
766 if test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
767 "$squid_disk_module_candidates_DiskThreads" != "yes" ; then
768 AC_MSG_ERROR([Storage module aufs requires DiskIO module: Blocking or DiskThreads])
772 if test "x$squid_disk_module_candidates_IpcIo" != "xyes" -a \
773 "x$squid_disk_module_candidates_Blocking" != "xyes"; then
774 AC_MSG_ERROR([Storage module Rock requires DiskIO module: Blocking or IpcIo])
776 squid_do_build_rock=true
779 if test "x$squid_disk_module_candidates_Blocking" != "xyes"; then
780 AC_MSG_ERROR([Storage module ufs requires DiskIO module: Blocking])
782 squid_do_build_ufs=true
787 AM_CONDITIONAL(ENABLE_FS_UFS, test "x$squid_do_build_ufs" = "xtrue")
788 AM_CONDITIONAL(ENABLE_FS_ROCK, test "x$squid_do_build_rock" = "xtrue")
789 dnl hack: need to define those even if not used in the build system to
790 dnl make sure that global FS objects are linked to the squid binary.
791 AH_TEMPLATE(HAVE_FS_UFS, "Define to 1 if ufs filesystem module is build")
792 AH_TEMPLATE(HAVE_FS_AUFS, "Define to 1 if aufs filesystem module is build")
793 AH_TEMPLATE(HAVE_FS_DISKD, "Define to 1 if diskd filesystem module is build")
794 AH_TEMPLATE(HAVE_FS_ROCK, "Define to 1 if rock filesystem module is build")
797 dnl got final squid_storeio_module_candidates, build library lists
798 dnl This list will not be needed when each fs library has its own Makefile
800 dnl File system libraries to link executables with.
801 dnl These are the same as STORE_LIBS_TO_BUILD, but with a path
803 for fs in $squid_storeio_module_candidates; do
804 STORE_LIBS_TO_BUILD="$STORE_LIBS_TO_BUILD lib${fs}.la"
805 STORE_LIBS_TO_ADD="$STORE_LIBS_TO_ADD fs/lib${fs}.la"
806 SQUID_TOUPPER_VAR_CONTENTS([fs])
807 AC_DEFINE_UNQUOTED(HAVE_FS_${fs}, 1)
810 AC_SUBST(STORE_LIBS_TO_BUILD)
811 AC_SUBST(STORE_LIBS_TO_ADD)
812 AC_SUBST(STORE_TESTS)
815 dnl At lest one removal policy is always needed.
816 dnl 'lru' removal policy is currently hard-coded by name for tests
817 dnl so we must set it as default.
819 AC_ARG_ENABLE(removal-policies,
820 AS_HELP_STRING([--enable-removal-policies="list of policies"],
821 [Build support for the list of removal policies.
822 The default is only to build the "lru" module.
823 See src/repl for a list of available modules, or
824 Programmers Guide section 9.9 for details on how
825 to build your custom policy]), [
828 SQUID_LOOK_FOR_MODULES([$srcdir/src/repl],[REPL_POLICIES])
833 REPL_POLICIES="`echo $enableval| sed -e 's/,/ /g;s/ */ /g'`"
837 if test "x$REPL_POLICIES" != "x" ; then
838 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/repl],[REPL_POLICIES])
839 AC_MSG_NOTICE([Removal policies to build: $REPL_POLICIES])
840 REPL_OBJS="repl/lib`echo $REPL_POLICIES|sed -e 's% %.a repl/lib%g'`.a"
841 REPL_LIBS="`echo $REPL_OBJS|sed -e 's%repl/%%g'`"
843 AC_SUBST(REPL_POLICIES)
847 AM_CONDITIONAL(ENABLE_PINGER, false)
849 AS_HELP_STRING([--enable-icmp],[Enable ICMP pinging and Network Measurement]),
850 [ if test "x$enableval" = "xyes" ; then
851 AC_MSG_NOTICE([ICMP enabled])
852 AC_DEFINE(USE_ICMP,1,[Define to use Squid ICMP and Network Measurement features (highly recommended!)])
853 AM_CONDITIONAL(ENABLE_PINGER, true)
857 AM_CONDITIONAL(ENABLE_DELAY_POOLS, false)
858 AC_ARG_ENABLE(delay-pools,
859 AS_HELP_STRING([--enable-delay-pools],[Enable delay pools to limit bandwidth usage]),
860 [ if test "x$enableval" = "xyes" ; then
861 AC_MSG_NOTICE([Delay pools enabled])
862 AC_DEFINE([USE_DELAY_POOLS],1,[Traffic management via "delay pools".])
863 AM_CONDITIONAL(ENABLE_DELAY_POOLS, true)
867 dnl disable generic/common adaptation support by default
868 squid_opt_use_adaptation=no
870 squid_opt_use_esi=auto
871 AH_TEMPLATE([USE_SQUID_ESI],[Define to enable the ESI processor])
873 AS_HELP_STRING([--disable-esi],
874 [Disable ESI for accelerators. ESI requires expat or libxml2.
875 Enabling ESI will cause squid reverse proxies to be capable
876 of the Edge Acceleration Specification (www.esi.org).]),
877 [squid_opt_use_esi=$enableval],[])
883 # ESI support libraries: expat
884 AC_ARG_WITH(expat, AS_HELP_STRING([--without-expat],[Do not use expat for ESI. Default: auto-detect]))
885 if test "x$squid_opt_use_esi" != "xno" -a "x$with_expat" != "xno" ; then
886 AC_CHECK_LIB([expat], [main], [EXPATLIB="-lexpat"; HAVE_LIBEXPAT=1])
887 AC_CHECK_HEADERS([expat.h])
888 AC_DEFINE_UNQUOTED(HAVE_LIBEXPAT, $HAVE_LIBEXPAT, [Define to 1 if you have the expat library])
889 AS_IF(test "x$HAVE_LIBEXPAT" = "x1",[
890 squid_opt_use_esi=yes
892 AS_IF(test "x$with_expat" = "xyes",[
893 AC_MSG_ERROR([Required library expat not found.])
895 AC_MSG_NOTICE([Library expat not found.])
900 AC_ARG_WITH(libxml2, AS_HELP_STRING([--without-libxml2],[Do not use libxml2 for ESI. Default: auto-detect]))
901 if test "x$squid_opt_use_esi" != "xno" -a "x$with_libxml2" != "xno" ; then
902 AC_CHECK_LIB([xml2], [main], [XMLLIB="-lxml2"; HAVE_LIBXML2=1])
903 dnl Find the main header and include path...
904 AC_CACHE_CHECK([location of libxml2 include files], [ac_cv_libxml2_include], [
905 AC_CHECK_HEADERS([libxml/parser.h], [], [
906 AC_MSG_NOTICE([Testing in /usr/include/libxml2])
907 SAVED_CPPFLAGS="$CPPFLAGS"
908 CPPFLAGS="-I/usr/include/libxml2 $CPPFLAGS"
909 unset ac_cv_header_libxml_parser_h
910 AC_CHECK_HEADERS([libxml/parser.h], [ac_cv_libxml2_include="-I/usr/include/libxml2"], [
911 AC_MSG_NOTICE([Testing in /usr/local/include/libxml2])
912 CPPFLAGS="-I/usr/local/include/libxml2 $SAVED_CPPFLAGS"
913 unset ac_cv_header_libxml_parser_h
914 AC_CHECK_HEADERS([libxml/parser.h], [ac_cv_libxml2_include="-I/usr/local/include/libxml2"], [
915 AC_MSG_NOTICE([Failed to find libxml2 header file libxml/parser.h])
918 CPPFLAGS="$SAVED_CPPFLAGS"
921 if test "x$ac_cv_libxml2_include" != "x"; then
922 SQUID_CXXFLAGS="$ac_cv_libxml2_include $SQUID_CXXFLAGS"
923 CPPFLAGS="$ac_cv_libxml2_include $CPPFLAGS"
925 dnl Now that we know where to look find the headers...
926 AC_CHECK_HEADERS(libxml/parser.h libxml/HTMLparser.h libxml/HTMLtree.h)
927 AC_DEFINE_UNQUOTED(HAVE_LIBXML2, $HAVE_LIBXML2, [Define to 1 if you have the libxml2 library])
928 AS_IF(test "x$HAVE_LIBXML2" = "x1",[
929 squid_opt_use_esi=yes
931 AS_IF(test "x$with_libxml2" = "xyes",[
932 AC_MSG_ERROR([Required library libxml2 not found.])
934 AC_MSG_NOTICE([Library libxml2 not found.])
939 AS_IF([test "x$squid_opt_use_esi" = "xyes"],[
940 AS_IF(test "x$HAVE_LIBXML2" = "x0" -a "x$HAVE_LIBEXPAT" = "x0",[
941 AC_MSG_ERROR([ESI processor requires libxml2 or libexpat])
943 AC_MSG_NOTICE([Enabling ESI processor: $EXPATLIB $XMLLIB])
944 AC_DEFINE(USE_SQUID_ESI,1,[Compile the ESI processor])
946 AS_IF(test "x$squid_opt_use_esi" = "xno",[
947 AC_MSG_NOTICE([Disabling ESI processor.])
949 AC_MSG_NOTICE([Disabling ESI processor. libxml2 and libexpat not found.])
952 AM_CONDITIONAL(ENABLE_ESI, test "x$squid_opt_use_esi" = "xyes")
953 AM_CONDITIONAL(ENABLE_LIBEXPAT, test "x$HAVE_LIBEXPAT" = "x1")
955 AM_CONDITIONAL(ENABLE_LIBXML2, test "x$HAVE_LIBXML2" = "x1")
958 # icap argument handling
959 AC_ARG_ENABLE(icap-client,
960 AS_HELP_STRING([--disable-icap-client],[Disable the ICAP client.]),[
961 SQUID_YESNO([$enableval],[Unrecognized argument to --disable-icap-client: $enableval])
963 SQUID_DEFINE_BOOL(ICAP_CLIENT,${enable_icap_client:=yes}, [Enable ICAP client features in Squid])
964 AS_IF(test "x$enable_icap_client" != "xno", squid_opt_use_adaptation="yes")
965 AM_CONDITIONAL(ENABLE_ICAP_CLIENT, test "x$enable_icap_client" != "xno")
968 AC_MSG_CHECKING(whether to support eCAP)
970 AS_HELP_STRING([--enable-ecap],[support loadable content adaptation modules]), [
971 case "${enableval}" in
972 yes|no) squid_opt_use_ecap=$enableval ;;
973 *) AC_MSG_ERROR(bad value ${enableval} for --enable-ecap) ;;
975 AC_MSG_RESULT([$squid_opt_use_ecap, explicitly])
977 squid_opt_use_ecap=no;
978 AC_MSG_RESULT([$squid_opt_use_ecap, implicitly])
982 dnl Perform configuration consistency checks for eCAP
983 if test "x$squid_opt_use_ecap" != "xno";
985 dnl eCAP support requires loadable modules, which are enabled by default
986 if test "x$enable_loadable_modules" != "xyes"
988 AC_MSG_ERROR([eCAP support requires loadable modules. Please do not use --disable-loadable-modules with --enable-ecap.])
991 if test -n "$PKG_CONFIG"; then
992 dnl eCAP support requires libecap.
993 dnl This Squid supports libecap v1.0.x.
994 dnl Use EXT_ prefix to distinguish external libecap (that we check for
995 dnl here) from our own convenience ecap library in Makefiles.
996 PKG_CHECK_MODULES([EXT_LIBECAP],[libecap >= 1.0 libecap < 1.1])
998 AC_MSG_NOTICE([eCAP support requires pkg-config to verify the correct library version. Trouble may follow.])
1001 SQUID_STATE_SAVE(squid_ecap_state)
1002 AC_MSG_CHECKING([whether -lecap will link])
1003 CXXFLAGS="$CXXFLAGS $EXT_LIBECAP_CFLAGS"
1004 LIBS="$LIBS $EXT_LIBECAP_LIBS"
1005 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <libecap/common/names.h>]],[[
1006 const libecap::Name test("test", libecap::Name::NextId());
1009 squid_opt_use_adaptation=yes
1013 test "x$squid_opt_use_ecap" = "xyes", AC_MSG_ERROR([eCAP library will not link.
1014 You may need to rebuild libecap using the same version of GCC as Squid.
1015 There have been breaking ABI changes in the libstdc++ STL with GCC 5.]),
1017 [AC_MSG_NOTICE([eCAP library will not link.
1018 You may need to rebuild libecap using the same version of GCC as Squid.
1019 There have been breaking ABI changes in the libstdc++ STL with GCC 5.])
1020 squid_opt_use_ecap="no"
1023 SQUID_STATE_ROLLBACK(squid_ecap_state)
1025 SQUID_DEFINE_BOOL(USE_ECAP,${squid_opt_use_ecap:=no},[Whether to use eCAP support])
1026 AM_CONDITIONAL(ENABLE_ECAP, test "x$squid_opt_use_ecap" = "xyes")
1028 dnl enable adaptation if requested by specific adaptation mechanisms
1030 if test "x$squid_opt_use_adaptation" = "xyes"; then
1031 ADAPTATION_LIBS="adaptation/libadaptation.la"
1033 SQUID_DEFINE_BOOL(USE_ADAPTATION,${squid_opt_use_adaptation:=no}, [common adaptation support])
1034 AM_CONDITIONAL(ENABLE_ADAPTATION, test "x$squid_opt_use_adaptation" = "xyes")
1035 AC_SUBST(ADAPTATION_LIBS)
1037 test "x$squid_host_os" = "xmingw" && enable_wccp=no
1039 AS_HELP_STRING([--disable-wccp],[Disable Web Cache Coordination Protocol]), [
1040 SQUID_YESNO([$enableval],[unrecognized argument to --disable-wccp: $enableval])
1042 SQUID_DEFINE_BOOL(USE_WCCP, ${enable_wccp:=yes}, [Define to enable WCCP])
1043 AC_MSG_NOTICE([Web Cache Coordination Protocol enabled: $enable_wccp])
1045 test "x$squid_host_os" = "xmingw" && enable_wccpv2=no
1046 AC_ARG_ENABLE(wccpv2,
1047 AS_HELP_STRING([--disable-wccpv2],
1048 [Disable Web Cache Coordination V2 Protocol]), [
1049 SQUID_YESNO([$enableval],
1050 [unrecognized argument to --disable-wccpv2: $enableval])
1052 SQUID_DEFINE_BOOL(USE_WCCPv2,${enable_wccpv2:=yes},
1053 [Define to enable WCCP V2])
1054 AC_MSG_NOTICE([Web Cache Coordination V2 Protocol enabled: $enable_wccpv2])
1056 AC_ARG_ENABLE(kill-parent-hack,
1057 AS_HELP_STRING([--enable-kill-parent-hack],[Kill parent on shutdown]), [
1058 SQUID_YESNO([$enableval],
1059 [unrecognized argument to --enable-kill-parent-hack: $enableval])
1061 SQUID_DEFINE_BOOL(KILL_PARENT_OPT,${enable_kill_parent_hack:=no},
1062 [A dangerous feature which causes Squid to kill its parent
1063 process (presumably the RunCache script) upon receipt
1064 of SIGTERM or SIGINT. Deprecated, Use with caution.])
1065 AC_MSG_NOTICE([Kill parent on shutdown hack enabled: $enable_kill_parent_hack])
1068 AS_HELP_STRING([--disable-snmp],[Disable SNMP monitoring support]), [
1069 SQUID_YESNO([$enableval],
1070 [unrecognized argument to --disable-snmp: $enableval])
1072 SQUID_DEFINE_BOOL(SQUID_SNMP,${enable_snmp:=yes},
1073 [Define to enable SNMP monitoring of Squid])
1074 AM_CONDITIONAL(ENABLE_SNMP, [test "x$enable_snmp" = "xyes"])
1075 if test "x$enable_snmp" = "xyes"; then
1076 SNMPLIB='../lib/snmplib/libsnmplib.la'
1078 AC_MSG_NOTICE([SNMP support enabled: $enable_snmp])
1081 AC_ARG_ENABLE(cachemgr-hostname,
1082 AS_HELP_STRING([--enable-cachemgr-hostname=hostname],
1083 [Make cachemgr.cgi default to this host.
1084 If unspecified, uses the name of the build-host]), [
1087 AC_DEFINE(CACHEMGR_HOSTNAME,[getfullhostname()],
1088 [If you are upset that the cachemgr.cgi form comes up with the hostname field blank, then define this to getfullhostname()])
1089 AC_MSG_NOTICE([Cachemgr default hostname == host where cachemgr runs])
1095 AC_DEFINE_UNQUOTED(CACHEMGR_HOSTNAME,"${enableval}")
1096 AC_MSG_NOTICE([Cachemgr default hostname set to ${enableval}])
1102 AS_HELP_STRING([--disable-eui],
1103 [Disable use of ARP / MAC/ EUI (ether address)]), [
1104 SQUID_YESNO([$enableval],[--disable-eui expects no arguments])
1106 if test "x${enable_eui:=yes}" = "xyes" ; then
1107 case "$squid_host_os" in
1108 linux|solaris|freebsd|openbsd|netbsd|cygwin)
1115 AC_MSG_WARN([EUI support probably will not work on host $host.])
1118 # iphlpapi.h check delayed after winsock2.h
1133 #include <sys/types.h>
1134 #include <sys/socket.h>
1137 # OpenBSD, FreeBSD and NetBSD requires sys/param.h to be included before sysctl.h and net/if_dl.h
1142 #if HAVE_SYS_PARAM_H
1143 #include <sys/param.h>
1148 AC_MSG_NOTICE([EUI (MAC address) controls enabled: $enable_eui])
1149 SQUID_DEFINE_BOOL(USE_SQUID_EUI,$enable_eui,
1150 [Define this to include code which lets you use ethernet addresses. This code uses API initially defined in 4.4-BSD.])
1151 AM_CONDITIONAL(ENABLE_EUI, [test "x$enable_eui" = "xyes" ])
1155 AS_HELP_STRING([--disable-htcp],[Disable HTCP protocol support]), [
1156 SQUID_YESNO([$enableval],
1157 [unrecognized argument to --disable-htcp: $enableval])
1159 SQUID_DEFINE_BOOL(USE_HTCP,${enable_htcp:=yes},
1160 [Define this to include code for the Hypertext Cache Protocol (HTCP)])
1161 AM_CONDITIONAL(ENABLE_HTCP, [test "x$enable_htcp" = "xyes"])
1162 AC_MSG_NOTICE([HTCP support enabled: $enable_htcp])
1164 # Cryptograhic libraries
1166 AS_HELP_STRING([--without-nettle],[Compile without the Nettle crypto library.]),[
1167 case "$with_nettle" in
1169 : # Nothing special to do here
1172 if test ! -d "$withval" ; then
1173 AC_MSG_ERROR([--with-nettle path does not point to a directory])
1175 NETTLELIBDIR="-L$with_nettle/lib"
1176 CPPFLAGS="-I$with_nettle/include $CPPFLAGS"
1180 if test "x$with_nettle" != "xno" ; then
1181 AC_CHECK_LIB(nettle, nettle_md5_init,[
1182 NETTLELIB="$NETTLELIBDIR -lnettle"
1183 AC_CHECK_HEADERS(nettle/md5.h)
1185 if test "x$with_nettle" != "xno" ; then
1186 # Base64 uses the nettle 3.4 API
1187 # which matters on 64-bit systems
1188 AC_CHECK_HEADERS(nettle/base64.h)
1189 AC_MSG_CHECKING([for Nettle 3.4 API compatibility])
1190 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1193 # include <nettle/base64.h>
1195 char inData[10]; inData[0] = '\0';
1197 struct base64_decode_ctx ctx;
1198 base64_decode_init(&ctx);
1199 uint8_t outData[10];
1201 if (!base64_decode_update(&ctx, &dstLen, outData, srcLen, inData) ||
1202 !base64_decode_final(&ctx)) {
1205 ]])],[AC_MSG_RESULT(yes)
1206 AC_DEFINE(HAVE_NETTLE34_BASE64,1,[set to 1 if Nettle 3.4 API will link])
1207 ],[AC_MSG_RESULT(no)])
1210 AC_MSG_NOTICE([Using Nettle cryptographic library: ${with_nettle:=yes}])
1213 dnl Check for libcrypt
1215 dnl Some of our helpers use crypt(3) which may be in libc, or in
1216 dnl libcrypt (eg FreeBSD)
1217 AC_CHECK_LIB(crypt, crypt, [CRYPTLIB="-lcrypt"])
1218 dnl Solaris10 provides MD5 natively through libmd5
1219 AC_CHECK_LIB(md5, MD5Init, [CRYPTLIB="$CRYPTLIB -lmd5"])
1224 dnl User may want to disable GnuTLS
1226 AS_HELP_STRING([--without-gnutls],
1227 [Do not use GnuTLS for SSL. Default: auto-detect]), [
1228 case "$with_gnutls" in
1230 : # Nothing special to do here
1233 if test ! -d "$withval" ; then
1234 AC_MSG_ERROR([--with-gnutls path does not point to a directory])
1236 LIBGNUTLS_PATH="-L$with_gnutls/lib"
1237 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1240 AH_TEMPLATE(USE_GNUTLS,[GnuTLS support is available])
1241 if test "x$with_gnutls" != "xno"; then
1242 SQUID_STATE_SAVE(squid_gnutls_state)
1244 # User may have provided a custom location for GnuTLS. Otherwise...
1245 LIBS="$LIBS $LIBGNUTLS_PATH"
1247 # auto-detect using pkg-config
1248 PKG_CHECK_MODULES([LIBGNUTLS],[gnutls >= 3.4.0],[
1249 CPPFLAGS="$CPPFLAGS $LIBGNUTLS_CFLAGS"
1251 ## find the package without pkg-config
1252 ## check that the library is actually new enough.
1253 ## by testing for a 3.4.0+ function which we use
1254 AC_CHECK_LIB(gnutls,gnutls_pcert_export_x509,[LIBGNUTLS_LIBS="-lgnutls"])
1256 AC_CHECK_HEADERS(gnutls/gnutls.h gnutls/x509.h gnutls/abstract.h)
1258 SQUID_STATE_ROLLBACK(squid_gnutls_state) #de-pollute LIBS
1260 if test "x$with_gnutls" = "xyes" -a "x$LIBGNUTLS_LIBS" = "x"; then
1261 AC_MSG_ERROR([Required GnuTLS library not found])
1263 if test "x$LIBGNUTLS_LIBS" != "x" ; then
1264 CXXFLAGS="$LIBGNUTLS_CFLAGS $CXXFLAGS"
1265 SSLLIB="$LIBGNUTLS_PATH $LIBGNUTLS_LIBS $SSLLIB"
1266 AC_DEFINE(USE_GNUTLS,1,[GnuTLS support is available])
1271 AC_MSG_NOTICE([GnuTLS library support: ${with_gnutls:=auto} ${LIBGNUTLS_PATH} ${LIBGNUTLS_LIBS}])
1273 dnl User may specify OpenSSL is needed from a non-standard location
1274 AC_ARG_WITH(openssl,
1275 AS_HELP_STRING([--with-openssl=PATH],
1276 [Compile with the OpenSSL libraries. The path to
1277 the OpenSSL development libraries and headers
1278 installation can be specified if outside of the
1279 system standard directories]), [
1280 case "$with_openssl" in
1282 : # Nothing special to do here
1285 if test ! -d "$withval" ; then
1286 AC_MSG_ERROR([--with-openssl path does not point to a directory])
1288 LIBOPENSSL_PATH="-L$with_openssl/lib"
1289 CPPFLAGS="-I$with_openssl/include $CPPFLAGS"
1293 AH_TEMPLATE(USE_OPENSSL,[OpenSSL support is available])
1294 ## OpenSSL is default disable due to licensing issues on some OS
1295 if test "x$with_openssl" = "xyes"; then
1301 openssl/opensslv.h \
1308 # User may have provided a custom location for OpenSSL. Otherwise...
1309 SQUID_STATE_SAVE(squid_openssl_state)
1310 LIBS="$LIBS $LIBOPENSSL_PATH"
1312 # auto-detect using pkg-config
1313 PKG_CHECK_MODULES([LIBOPENSSL],[openssl],,[
1314 ## For some OS pkg-config is broken or unavailable.
1315 ## Detect libraries the hard way.
1317 # Windows MinGW has some special libraries ...
1318 if test "x$squid_host_os" = "xmingw" ; then
1319 LIBOPENSSL_LIBS='-lssleay32 -leay32 -lgdi32 $LIBOPENSSL_LIBS'
1320 AC_MSG_NOTICE([Windows OpenSSL library support: yes -lssleay32 -leay32 -lgdi32])
1323 AC_CHECK_LIB(crypto,[CRYPTO_new_ex_data],[LIBOPENSSL_LIBS="-lcrypto $LIBOPENSSL_LIBS"],[
1324 AC_MSG_ERROR([library 'crypto' is required for OpenSSL])
1326 AC_CHECK_LIB(ssl,[SSL_library_init],[LIBOPENSSL_LIBS="-lssl $LIBOPENSSL_LIBS"],[
1327 AC_MSG_ERROR([library 'ssl' is required for OpenSSL])
1331 # This is a workaround for RedHat 9 brain damage..
1332 if test -d /usr/kerberos/include -a -f /usr/include/openssl/kssl.h; then
1333 AC_MSG_NOTICE([OpenSSL depends on Kerberos])
1334 LIBOPENSSL_LIBS="-L/usr/kerberos/lib $LIBOPENSSL_LIBS"
1335 CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
1337 SQUID_STATE_ROLLBACK(squid_openssl_state) #de-pollute LIBS
1339 if test "x$LIBOPENSSL_LIBS" != "x"; then
1340 CXXFLAGS="$LIBOPENSSL_CFLAGS $CXXFLAGS"
1341 SSLLIB="$LIBOPENSSL_PATH $LIBOPENSSL_LIBS $SSLLIB"
1342 AC_DEFINE(USE_OPENSSL,1,[OpenSSL support is available])
1344 # check for API functions
1345 SQUID_CHECK_LIBCRYPTO_API
1346 SQUID_CHECK_LIBSSL_API
1347 SQUID_CHECK_OPENSSL_TLS_METHODS
1348 SQUID_STATE_SAVE(check_SSL_CTX_get0_certificate)
1349 LIBS="$LIBS $SSLLIB"
1350 AC_CHECK_LIB(ssl, SSL_CTX_get0_certificate, [
1351 AC_DEFINE(HAVE_SSL_CTX_GET0_CERTIFICATE, 1, [SSL_CTX_get0_certificate is available])
1353 missing_SSL_CTX_get0_certificate=yes
1355 SQUID_STATE_ROLLBACK(check_SSL_CTX_get0_certificate)
1357 # check for other specific broken implementations
1358 if test "x$missing_SSL_CTX_get0_certificate" = "xyes"; then
1359 SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS
1361 SQUID_CHECK_OPENSSL_CONST_SSL_METHOD
1362 SQUID_CHECK_OPENSSL_CONST_CRYPTO_EX_DATA
1363 SQUID_CHECK_OPENSSL_CONST_SSL_SESSION_CB_ARG
1364 SQUID_CHECK_OPENSSL_CONST_X509_GET0_SIGNATURE_ARGS
1365 SQUID_CHECK_OPENSSL_TXTDB
1366 SQUID_CHECK_OPENSSL_HELLO_OVERWRITE_HACK
1368 if test "x$SSLLIB" = "x"; then
1369 AC_MSG_ERROR([Required OpenSSL library not found])
1372 AC_MSG_NOTICE([OpenSSL library support: ${with_openssl:=no} ${LIBOPENSSL_PATH} ${LIBOPENSSL_LIBS}])
1373 AM_CONDITIONAL(ENABLE_SSL,[ test "x$with_openssl" = "xyes" ])
1376 dnl User may specify MIT Kerberos is needed from a non-standard location
1377 AC_ARG_WITH(mit-krb5,
1378 AS_HELP_STRING([--without-mit-krb5],
1379 [Compile without MIT Kerberos support.]), [
1380 case "$with_mit_krb5" in
1382 : # Nothing special to do here
1385 if test ! -d "$withval" ; then
1386 AC_MSG_ERROR([--with-mit-krb5 path does not point to a directory])
1388 if test -d "$with_mit_krb5/lib64" ; then
1389 LIB_KRB5_PATH="-L$with_mit_krb5/lib64 -L$with_mit_krb5/lib"
1391 LIB_KRB5_PATH="-L$with_mit_krb5/lib"
1393 CXXFLAGS="-I$with_mit_krb5/include $CXXFLAGS"
1394 krb5confpath="$with_mit_krb5/bin"
1398 AH_TEMPLATE(USE_APPLE_KRB5,[Apple Kerberos support is available])
1399 AH_TEMPLATE(USE_MIT_KRB5,[MIT Kerberos support is available])
1400 AH_TEMPLATE(USE_SOLARIS_KRB5,[Solaris Kerberos support is available])
1402 ## find out if pkg-config or krb5-config will work
1403 if test "x$with_mit_krb5" != "xno"; then
1404 # find installed libs via pkg-config or krb5-config
1406 PKG_CHECK_EXISTS(mit-krb5-gssapi mit-krb5, [squid_pc_krb5_name="mit-krb5-gssapi mit-krb5"],[
1407 PKG_CHECK_EXISTS(gssapi-krb5 krb5, [squid_pc_krb5_name="gssapi-krb5 krb5"])
1409 if test "x$squid_pc_krb5_name" = "x" -a "$cross_compiling" = "no"; then
1410 # Look for krb5-config (unless cross-compiling)
1411 AC_PATH_PROG(krb5_config,krb5-config,no)
1412 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1413 krb5confpath="`dirname $ac_cv_path_krb5_config`"
1414 ac_heimdal="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i heimdal`"
1415 ac_solaris="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i solaris`"
1416 ac_apple="`$ac_cv_path_krb5_config --vendor 2>/dev/null | grep -c -i apple`"
1417 if test $ac_solaris -gt 0 ; then
1418 with_solaris_krb5=yes
1419 elif test $ac_apple -gt 0 ; then
1421 elif test $ac_heimdal -gt 0; then
1423 if test "x$with_mit_krb5" = "xyes"; then
1424 AC_MSG_ERROR([Could not find pkg-config or krb5-config for MIT Kerberos])
1428 if test "x$with_mit_krb5" = "xyes"; then
1429 AC_MSG_ERROR([Could not find krb5-config in path])
1437 # detect MIT Kerberos dependencies (except on Solaris)
1438 if test "x$with_mit_krb5" != "xno" -a "x$with_solaris_krb5" != "xyes"; then
1439 SQUID_STATE_SAVE([squid_krb5_save])
1440 LIBS="$LIBS $LIB_KRB5_PATH"
1442 # auto-detect using pkg-config
1443 PKG_CHECK_MODULES([LIB_KRB5], $squid_pc_krb5_name,,[
1444 # look for krb5-config (unless cross-compiling)
1445 if test "$cross_compiling" = "no"; then
1446 if test "x$krb5confpath" = "x" ; then
1447 AC_PATH_PROG(krb5_config,krb5-config,no)
1448 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1449 ac_krb5_config="$ac_cv_path_krb5_config"
1452 ac_krb5_config="$krb5confpath/krb5-config"
1455 if test "x$ac_krb5_config" != "x" && test -x "$ac_krb5_config"; then
1457 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1458 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1459 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1460 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1461 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1463 ## For some OS pkg-config is broken or unavailable.
1464 ## Detect libraries the hard way.
1466 SQUID_STATE_SAVE([squid_mit_save])
1468 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1469 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
1470 AC_MSG_WARN([library 'com_err' is required for MIT Kerberos])
1471 missing_required=yes
1474 AC_CHECK_LIB(k5crypto, [main], [LIB_KRB5_LIBS="-lk5crypto $LIB_KRB5_LIBS"],[
1475 AC_MSG_WARN([library 'k5crypto' is required for MIT Kerberos])
1476 missing_required=yes
1479 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1480 AC_MSG_WARN([library 'krb5' is required for MIT Kerberos])
1481 missing_required=yes
1484 AC_CHECK_LIB(gssapi_krb5, [main], [LIB_KRB5_LIBS="-lgssapi_krb5 $LIB_KRB5_LIBS"],[
1485 AC_MSG_WARN([library 'gssapi_krb5' is required for MIT Kerberos])
1486 missing_required=yes
1488 SQUID_STATE_ROLLBACK([squid_mit_save])
1489 if test "x$missing_required" = "xyes"; then
1495 if test "x$LIB_KRB5_LIBS" != "x"; then
1496 if test "x$with_apple_krb5" = "xyes" ; then
1497 AC_DEFINE(USE_APPLE_KRB5,1,[Apple Kerberos support is available])
1498 KRB5_FLAVOUR="Apple"
1500 AC_DEFINE(USE_MIT_KRB5,1,[MIT Kerberos support is available])
1503 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1504 KRB5INCS="$LIB_KRB5_CFLAGS"
1506 # check for other specific broken implementations
1507 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1508 LIBS="$LIBS $KRB5LIBS"
1510 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1511 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1512 AC_CHECK_HEADERS(gssapi/gssapi_generic.h)
1513 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1514 AC_CHECK_HEADERS(profile.h)
1516 SQUID_CHECK_KRB5_FUNCS
1518 if test "x$with_mit_krb5" = "xyes" -a "x$KRB5LIBS" = "x"; then
1519 AC_MSG_ERROR([Required Kerberos library not found])
1520 elif test "x$KRB5LIBS" = "x"; then
1524 SQUID_STATE_ROLLBACK([squid_krb5_save])
1527 # detect Solaris Kerberos dependencies
1528 if test "x$with_solaris_krb5" = "xyes" -a "x$KRB5LIBS" = "x"; then
1529 SQUID_STATE_SAVE([squid_krb5_save])
1530 LIBS="$LIBS $LIB_KRB5_PATH"
1532 # no pkg-config for solaris native Kerberos
1533 # look for krb5-config (unless cross-compiling)
1534 if test "$cross_compiling" = "no"; then
1535 if test "x$krb5confpath" = "x" ; then
1536 AC_PATH_PROG(krb5_config,krb5-config,no)
1537 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1538 ac_krb5_config="$ac_cv_path_krb5_config"
1541 ac_krb5_config="$krb5confpath/krb5-config"
1544 if test "x$ac_krb5_config" != "x" && test -x "$ac_krb5_config"; then
1546 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1547 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1548 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1549 # Solaris 10 Update 11 patches the krb5-config tool to produce stderr messages on stdout.
1550 SOLARIS_BROKEN_KRB5CONFIG_GSSAPI="`$ac_krb5_config --libs gssapi 2>/dev/null | grep "krb5-config"`"
1551 if test "x$SOLARIS_BROKEN_KRB5CONFIG_GSSAPI" = "x"; then
1552 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1553 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1556 ## For some OS pkg-config is broken or unavailable.
1557 ## Detect libraries the hard way.
1559 CXXFLAGS="-I/usr/include/kerberosv5 $CXXFLAGS"
1561 SQUID_STATE_SAVE([squid_solaris_save])
1563 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1564 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1565 AC_MSG_WARN([library 'krb5' is required for Solaris Kerberos])
1566 missing_required=yes
1569 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
1570 AC_MSG_WARN([library 'gss' is required for Solaris Kerberos])
1571 missing_required=yes
1573 SQUID_STATE_ROLLBACK([squid_solaris_save])
1574 if test "x$missing_required" = "xyes"; then
1579 if test "x$LIB_KRB5_LIBS" != "x"; then
1580 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1581 KRB5INCS="$LIB_KRB5_CFLAGS"
1582 AC_DEFINE(USE_SOLARIS_KRB5,1,[Solaris Kerberos support is available])
1583 KRB5_FLAVOUR="Solaris"
1585 # check for other specific broken implementations
1586 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1587 LIBS="$LIBS $KRB5LIBS"
1589 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1590 AC_CHECK_HEADERS(gssapi/gssapi.h gssapi/gssapi_ext.h)
1591 AC_CHECK_HEADERS(krb5.h com_err.h)
1593 SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H
1594 if test "x$squid_cv_broken_krb5_h" = "xyes"; then
1595 AC_DEFINE(HAVE_BROKEN_SOLARIS_KRB5_H, 1, [Define to 1 if Solaris krb5.h is broken for C++])
1596 AC_MSG_WARN([You have a broken Solaris <krb5.h> system include.])
1597 AC_MSG_WARN([Please see http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6837512])
1598 AC_MSG_WARN([If you need Kerberos support you will have to patch])
1599 AC_MSG_WARN([your system. See contrib/solaris/solaris-krb5-include.patch])
1601 SQUID_CHECK_KRB5_FUNCS
1603 if test "x$with_mit_krb5" = "xyes" -a "x$KRB5LIBS" = "x"; then
1604 # Error only if Solaris flavour was detected while looking for required MIT Kerberos
1605 AC_MSG_ERROR([Required Kerberos library not found])
1606 elif test "x$KRB5LIBS" = "x"; then
1607 with_solaris_krb5=no
1610 SQUID_STATE_ROLLBACK([squid_krb5_save])
1613 dnl User may specify Heimdal Kerberos is needed from a non-standard location
1614 AC_ARG_WITH(heimdal-krb5,
1615 AS_HELP_STRING([--without-heimdal-krb5],
1616 [Compile without Heimdal Kerberos support.]), [
1617 case "$with_heimdal_krb5" in
1619 : # Nothing special to do here
1622 if test ! -d "$withval" ; then
1623 AC_MSG_ERROR([--with-heimdal-krb5 path does not point to a directory])
1625 if test -d "$with_heimdal_krb5/lib64" ; then
1626 LIB_KRB5_PATH="-L$with_heimdal_krb5/lib64 -L$with_heimdal_krb5/lib"
1628 LIB_KRB5_PATH="-L$with_heimdal_krb5/lib"
1630 CXXFLAGS="-I$with_heimdal_krb5/include $CXXFLAGS"
1631 krb5confpath="$with_heimdal_krb5/bin"
1632 with_heimdal_krb5=yes
1635 AH_TEMPLATE(USE_HEIMDAL_KRB5,[Heimdal Kerberos support is available])
1636 if test "x$with_heimdal_krb5" != "xno" -a "x$KRB5LIBS" = "x"; then
1637 # find installed libs via pkg-config or krb5-config
1638 PKG_CHECK_EXISTS(heimdal-krb5, [squid_pc_krb5_name="heimdal-krb5"])
1639 if test "x$squid_pc_krb5_name" = "x"; then
1640 PKG_CHECK_EXISTS(heimdal-gssapi, [squid_pc_krb5_name="heimdal-gssapi"])
1642 if test "x$squid_pc_krb5_name" = "x" -a "$cross_compiling" = "no"; then
1643 # Look for krb5-config (unless cross-compiling)
1644 AC_PATH_PROG(krb5_config,krb5-config,no)
1645 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1646 krb5confpath="`dirname $ac_cv_path_krb5_config`"
1647 ac_heimdal="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i heimdal`"
1648 if test "x$with_heimdal_krb5" = "xyes" -a $ac_heimdal = 0; then
1649 AC_MSG_ERROR([Could not find pkg-config or krb5-config for Heimdal Kerberos])
1652 if test "x$with_heimdal_krb5" = "xyes"; then
1653 AC_MSG_ERROR([Could not find krb5-config in path])
1655 AC_MSG_WARN([Could not find krb5-config in path])
1656 with_heimdal_krb5=no
1661 if test "x$with_heimdal_krb5" != "xno" -a "x$KRB5LIBS" = "x"; then
1662 SQUID_STATE_SAVE([squid_krb5_save])
1663 LIBS="$LIBS $LIB_KRB5_PATH"
1665 # auto-detect using pkg-config
1666 PKG_CHECK_MODULES([LIB_KRB5], $squid_pc_krb5_name,,[
1667 # look for krb5-config (unless cross-compiling)
1668 if test "$cross_compiling" = "no"; then
1669 if test "x$krb5confpath" = "x" ; then
1670 AC_PATH_PROG(krb5_config,krb5-config,no)
1671 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1672 ac_krb5_config="$ac_cv_path_krb5_config"
1675 ac_krb5_config="$krb5confpath/krb5-config"
1678 if test "x$ac_krb5_config" != "x" -a -x "$ac_krb5_config"; then
1680 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1681 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1682 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1683 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1684 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1686 ## For some OS pkg-config is broken or unavailable.
1687 ## Detect libraries the hard way.
1688 SQUID_STATE_SAVE([squid_heimdal_save])
1690 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1691 AC_CHECK_LIB(resolv, [main], [LIB_KRB5_LIBS="-lresolv $LIB_KRB5_LIBS"],[
1692 AC_MSG_WARN([library 'resolv' is required for Heimdal Kerberos])
1693 missing_required=yes
1696 AC_CHECK_LIB(crypt, [main], [LIB_KRB5_LIBS="-lcrypt $LIB_KRB5_LIBS"],[
1697 AC_MSG_WARN([library 'crypt' is required for Heimdal Kerberos])
1698 missing_required=yes
1701 AC_CHECK_LIB(roken, [main], [LIB_KRB5_LIBS="-lroken $LIB_KRB5_LIBS"],[
1702 AC_MSG_WARN([library 'roken' is required for Heimdal Kerberos])
1703 missing_required=yes
1706 AC_CHECK_LIB(heimbase, [main], [LIB_KRB5_LIBS="-lheimbase $LIB_KRB5_LIBS"],[
1707 AC_MSG_WARN([library 'heimbase' may be required for Heimdal Kerberos])
1710 AC_CHECK_LIB(wind, [main], [LIB_KRB5_LIBS="-lwind $LIB_KRB5_LIBS"],[
1711 AC_MSG_WARN([library 'wind' may be required for Heimdal Kerberos])
1714 AC_CHECK_LIB(crypto, [main], [LIB_KRB5_LIBS="-lcrypto $LIB_KRB5_LIBS"],[
1715 AC_MSG_WARN([library 'crypto' is required for Heimdal Kerberos])
1716 missing_required=yes
1719 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
1720 AC_MSG_WARN([library 'com_err' is required for Heimdal Kerberos])
1721 missing_required=yes
1724 AC_CHECK_LIB(hx509, [main], [LIB_KRB5_LIBS="-lhx509 $LIB_KRB5_LIBS"],[
1725 AC_MSG_WARN([library 'hx509' may be required for Heimdal Kerberos])
1728 AC_CHECK_LIB(asn1, [main], [LIB_KRB5_LIBS="-lasn1 $LIB_KRB5_LIBS"],[
1729 AC_MSG_WARN([library 'asn1' is required for Heimdal Kerberos])
1730 missing_required=yes
1733 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1734 AC_MSG_WARN([library 'krb5' is required for Heimdal Kerberos])
1735 missing_required=yes
1738 AC_CHECK_LIB(heimntlm, [main], [LIB_KRB5_LIBS="-lheimntlm $LIB_KRB5_LIBS"],[
1739 AC_MSG_WARN([library 'heimntlm' may be required for Heimdal Kerberos])
1742 AC_CHECK_LIB(gssapi, [main], [LIB_KRB5_LIBS="-lgssapi $LIB_KRB5_LIBS"],[
1743 AC_MSG_WARN([library 'gssapi' is required for Heimdal Kerberos])
1744 missing_required=yes
1746 SQUID_STATE_ROLLBACK([squid_heimdal_save])
1747 if test "x$missing_required" = "xyes"; then
1752 if test "x$LIB_KRB5_LIBS" != "x"; then
1753 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1754 KRB5INCS="$LIB_KRB5_CFLAGS"
1755 AC_DEFINE(USE_HEIMDAL_KRB5,1,[Heimdal Kerberos support is available])
1756 KRB5_FLAVOUR="Heimdal"
1758 # check for other specific broken implementations
1759 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1760 LIBS="$LIBS $KRB5LIBS"
1762 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1763 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1764 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1766 SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H
1767 if test "x$squid_cv_broken_heimdal_krb5_h" = "xyes"; then
1768 AC_DEFINE(HAVE_BROKEN_HEIMDAL_KRB5_H, 1, [Define to 1 if Heimdal krb5.h is broken for C++])
1770 SQUID_CHECK_KRB5_FUNCS
1772 if test "x$KRB5LIBS" = "x"; then
1773 if test "x$with_heimdal_krb5" = "xyes"; then
1774 AC_MSG_ERROR([Required Heimdal Kerberos library not found])
1776 AC_MSG_WARN([Heimdal Kerberos library not found])
1779 SQUID_STATE_ROLLBACK([squid_krb5_save])
1782 dnl User may specify GNU gss is needed from a non-standard location
1784 AS_HELP_STRING([--without-gnugss],
1785 [Compile without the GNU gss libraries.]), [
1786 case "$with_gnugss" in
1788 : # Nothing special to do here
1791 if test ! -d "$withval" ; then
1792 AC_MSG_ERROR([--with-gnugss path does not point to a directory])
1794 if test ! -d "$with_gnugss/lib64" ; then
1795 LIB_KRB5_PATH="-L$with_gnugss/lib64 -L$with_gnugss/lib"
1797 LIB_KRB5_PATH="-L$with_gnugss/lib"
1799 CXXFLAGS="-I$with_gnugss/include $CXXFLAGS"
1804 AH_TEMPLATE(USE_GNUGSS,[GNU gss support is available])
1805 if test "x$with_gnugss" != "xno" -a "x$KRB5LIBS" = "x"; then
1806 SQUID_STATE_SAVE([squid_krb5_save])
1807 LIBS="$LIBS $LIB_KRB5_PATH"
1809 # auto-detect using pkg-config
1810 PKG_CHECK_MODULES([LIB_KRB5],[gss],,[
1811 ## For some OS pkg-config is broken or unavailable.
1812 ## Detect libraries the hard way.
1814 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1815 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
1816 AC_MSG_WARN([library 'com_err' is required for GNU Kerberos])
1820 if test "x$LIB_KRB5_LIBS" != "x"; then
1821 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1822 KRB5INCS="$LIB_KRB5_CFLAGS"
1823 AC_DEFINE(USE_GNUGSS,1,[GNU Kerberos support is available])
1824 KRB5_FLAVOUR="GNU GSS"
1826 # check for other specific broken implementations
1827 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1828 LIBS="$LIBS $KRB5LIBS"
1830 AC_MSG_NOTICE([Try to find Kerbeors headers in given path])
1831 AC_CHECK_HEADERS(gss.h)
1833 SQUID_CHECK_WORKING_GSSAPI
1834 SQUID_DEFINE_BOOL(HAVE_GSSAPI,$squid_cv_working_gssapi,[GSSAPI support])
1836 SQUID_CHECK_SPNEGO_SUPPORT
1837 SQUID_DEFINE_BOOL(HAVE_SPNEGO,$squid_cv_have_spnego,[SPNEGO support])
1839 SQUID_CHECK_WORKING_KRB5
1840 SQUID_DEFINE_BOOL(HAVE_KRB5,$squid_cv_working_krb5,[KRB5 support])
1842 if test "x$KRB5LIBS" = "x"; then
1843 if test "x$with_gnugss" = "xyes"; then
1844 AC_MSG_ERROR([Required GNU GSS Kerberos library not found])
1846 AC_MSG_WARN([GNU GSS Kerberos library not found])
1849 SQUID_STATE_ROLLBACK([squid_krb5_save])
1852 if test "x$KRB5LIBS" != "x"; then
1855 AC_MSG_NOTICE([$KRB5_FLAVOUR Kerberos library support: ${with_krb5:=no} ${LIB_KRB5_PATH} ${LIB_KRB5_LIBS}])
1859 dnl On MinGW OpenLDAP is not available, so LDAP helpers can be linked
1860 dnl only with Windows LDAP libraries using -lwldap32
1861 case "$squid_host_os" in
1867 AC_CHECK_LIB(ldap, ldap_init, [LDAPLIB="-lldap"])
1868 dnl LDAP helpers need to know if -llber is needed or not
1869 AC_CHECK_LIB(lber, ber_init, [LBERLIB="-llber"])
1870 dnl if no ldap lib found check for mozilla version
1871 if test "x$ac_cv_lib_ldap_ldap_init" != x""yes; then
1874 AC_CHECK_LIB(ldap60, ldap_init, [LDAPLIB="-lldap60"])
1875 LIBS="$LDAPLIB $LIBPTHREADS"
1876 AC_CHECK_LIB(prldap60, prldap_init, [LDAPLIB="-lprldap60 $LDAPLIB"])
1877 LIBS="$LDAPLIB $LIBPTHREADS"
1878 AC_CHECK_LIB(ssldap60, ldapssl_init, [LDAPLIB="-lssldap60 $LDAPLIB"])
1882 AC_CHECK_HEADERS(ldap.h lber.h)
1883 AC_CHECK_HEADERS(mozldap/ldap.h)
1886 dnl Check for LDAP_OPT_DEBUG_LEVEL
1888 AC_MSG_CHECKING([for LDAP_OPT_DEBUG_LEVEL])
1889 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1892 int i=LDAP_OPT_DEBUG_LEVEL
1894 [ AC_MSG_RESULT(yes) ],
1895 [ AC_MSG_RESULT(no) ])
1898 dnl Check for working ldap
1901 LIBS="$LDAPLIB $LBERLIB $LIBPTHREADS"
1902 AC_MSG_CHECKING([for working ldap])
1903 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1904 # define LDAP_DEPRECATED 1
1907 # elif HAVE_MOZLDAP_LDAP_H
1908 # include <mozldap/ldap.h>
1916 ldap_init((const char *)&host, port);
1921 [ AC_DEFINE(HAVE_LDAP, 1, [LDAP support])
1922 AC_MSG_RESULT(yes) ],
1923 [ AC_MSG_RESULT(no) ],
1924 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1928 dnl Check for ldap vendor
1930 AC_MSG_CHECKING([for OpenLDAP])
1931 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1935 # include <string.h>
1939 return strcmp(LDAP_VENDOR_NAME,"OpenLDAP");
1942 [ AC_DEFINE(HAVE_OPENLDAP, 1, [OpenLDAP support])
1943 AC_MSG_RESULT(yes) ],
1944 [ AC_MSG_RESULT(no) ],
1945 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1947 AC_MSG_CHECKING([for Sun LDAP SDK])
1948 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1952 # include <string.h>
1956 return strcmp(LDAP_VENDOR_NAME,"Sun Microsystems Inc.");
1959 [ AC_DEFINE(HAVE_SUN_LDAP_SDK, 1, [Sun LDAP SDK support])
1960 AC_MSG_RESULT(yes) ],
1961 [ AC_MSG_RESULT(no) ],
1962 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1964 AC_MSG_CHECKING([for Mozilla LDAP SDK])
1965 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1968 # elif HAVE_MOZLDAP_LDAP_H
1969 # include <mozldap/ldap.h>
1971 # include <string.h>
1975 return strcmp(LDAP_VENDOR_NAME,"mozilla.org");
1978 [ AC_DEFINE(HAVE_MOZILLA_LDAP_SDK, 1, [Mozilla LDAP SDK support])
1979 AC_MSG_RESULT(yes) ],
1980 [ AC_MSG_RESULT(no)],
1981 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1984 dnl Check for LDAP_REBINDPROC_CALLBACK
1986 AC_MSG_CHECKING([for LDAP_REBINDPROC_CALLBACK])
1987 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1990 # elif HAVE_MOZLDAP_LDAP_H
1991 # include <mozldap/ldap.h>
1994 LDAP_REBINDPROC_CALLBACK ldap_rebind;
1996 [ AC_DEFINE(HAVE_LDAP_REBINDPROC_CALLBACK,1,[Define to 1 if you have LDAP_REBINDPROC_CALLBACK])
1997 AC_MSG_RESULT(yes) ],
1998 [ AC_MSG_RESULT(no) ])
2001 dnl Check for LDAP_REBIND_PROC
2003 AC_MSG_CHECKING([for LDAP_REBIND_PROC])
2004 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2007 # elif HAVE_MOZLDAP_LDAP_H
2008 # include <mozldap/ldap.h>
2011 LDAP_REBIND_PROC ldap_rebind;
2013 [ AC_DEFINE(HAVE_LDAP_REBIND_PROC,1,[Define to 1 if you have LDAP_REBIND_PROC])
2014 AC_MSG_RESULT(yes) ],
2015 [ AC_MSG_RESULT(no) ])
2018 dnl Check for LDAP_REBIND_FUNCTION
2020 AC_MSG_CHECKING([for LDAP_REBIND_FUNCTION])
2021 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2022 # define LDAP_REFERRALS
2025 # elif HAVE_MOZLDAP_LDAP_H
2026 # include <mozldap/ldap.h>
2029 LDAP_REBIND_FUNCTION ldap_rebind;
2031 [ AC_DEFINE(HAVE_LDAP_REBIND_FUNCTION,1,[Define to 1 if you have LDAP_REBIND_FUNCTION])
2032 AC_MSG_RESULT(yes) ],
2033 [ AC_MSG_RESULT(no) ])
2036 dnl Check for LDAP_SCOPE_DEFAULT
2038 AC_MSG_CHECKING([for LDAP_SCOPE_DEFAULT])
2039 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2042 # elif HAVE_MOZLDAP_LDAP_H
2043 # include <mozldap/ldap.h>
2046 int i=LDAP_SCOPE_DEFAULT;
2048 [ AC_DEFINE(HAVE_LDAP_SCOPE_DEFAULT,1,[Define to 1 if you have LDAP_SCOPE_DEFAULT])
2049 AC_MSG_RESULT(yes) ],
2050 [ AC_MSG_RESULT(no) ])
2053 dnl Check for ldap_url_desc.lud_scheme
2055 AC_CHECK_MEMBER(struct ldap_url_desc.lud_scheme,
2056 AC_DEFINE(HAVE_LDAP_URL_LUD_SCHEME,1,
2057 [Define to 1 if you have LDAPURLDesc.lud_scheme]),,[#include <ldap.h>])
2060 dnl Check for ldapssl_client_init
2062 AC_CHECK_LIB(ldap,ldapssl_client_init,
2063 AC_DEFINE(HAVE_LDAPSSL_CLIENT_INIT,1,[Define to 1 if you have ldapssl_client_init]),)
2066 dnl Check for ldap_url_desc2str
2068 AC_CHECK_LIB(ldap,ldap_url_desc2str,
2069 AC_DEFINE(HAVE_LDAP_URL_DESC2STR,1,[Define to 1 if you have ldap_url_desc2str]),)
2072 dnl Check for ldap_url_parse
2074 AC_CHECK_LIB(ldap,ldap_url_parse,
2075 AC_DEFINE(HAVE_LDAP_URL_PARSE,1,[Define to 1 if you have ldap_url_parse]),)
2078 dnl Check for ldap_start_tls_s
2080 AC_CHECK_LIB(ldap,ldap_start_tls_s,
2081 AC_DEFINE(HAVE_LDAP_START_TLS_S,1,[Define to 1 if you have ldap_start_tls_s]),)
2088 AC_ARG_ENABLE(forw-via-db,
2089 AS_HELP_STRING([--enable-forw-via-db],[Enable Forw/Via database]), [
2090 SQUID_YESNO([$enableval],[unrecognized argument to --enable-forw-via-db: $enableval])
2092 SQUID_DEFINE_BOOL(USE_FORW_VIA_DB,${enable_forw_via_db:=no},
2093 [Enable Forw/Via database])
2094 AC_MSG_NOTICE([Forw/Via database enabled: $enable_forw_via_db])
2096 AC_ARG_ENABLE(cache-digests,
2097 AS_HELP_STRING([--enable-cache-digests],
2098 [Use Cache Digests. See http://wiki.squid-cache.org/SquidFaq/CacheDigests]),
2100 SQUID_YESNO($enableval,
2101 [unrecognized argument to --enable-cache-digests: $enableval])
2103 SQUID_DEFINE_BOOL(USE_CACHE_DIGESTS,${enable_cache_digests:=no},
2104 [Use Cache Digests for locating objects in neighbor caches.])
2105 AC_MSG_NOTICE([Cache Digests enabled: $enable_cache_digests])
2108 ################################
2109 # check for netio plugin stuff #
2110 ################################
2111 dnl order of these options handling is relevant in case the user
2112 dnl supplies more than one --enable option. Options handled later
2113 dnl override those handled earlier for io loop method manual override
2114 AC_ARG_ENABLE(select,
2115 AS_HELP_STRING([--disable-select],[Disable select(2) support.]),
2117 SQUID_YESNO($enableval,[--disable-select takes no extra argument])
2118 if test "x$enableval" = "xyes"; then
2119 if test "x$squid_host_os" = "xmingw"; then
2120 squid_opt_io_loop_engine="select_win32"
2122 squid_opt_io_loop_engine="select"
2126 AC_MSG_NOTICE([enabling select syscall for net I/O: ${enable_select:=auto}])
2129 AS_HELP_STRING([--disable-poll],[Disable poll(2) support.]),
2131 SQUID_YESNO($enableval,[--disable-poll takes no extra argument])
2132 test "x$enableval" = "xyes" && squid_opt_io_loop_engine="poll"
2134 AC_MSG_NOTICE([enabling poll syscall for net I/O: ${enable_poll:=auto}])
2136 AC_ARG_ENABLE(kqueue,
2137 AS_HELP_STRING([--disable-kqueue],
2138 [Disable kqueue(2) support.]), [
2139 SQUID_YESNO($enableval,[--enable-kqueue takes no extra argument])
2141 if test "x${enable_kqueue:=auto}" != "xno" ; then
2142 AC_CHECK_HEADERS([sys/event.h],[],[
2143 if test "x${enable_kqueue}" = "xyes" ; then
2144 AC_MSG_ERROR([kqueue support requires sys/event.h header file.])
2147 AC_CHECK_FUNCS(kqueue,[],[
2148 if test "x${enable_kqueue}" = "xyes" ; then
2149 AC_MSG_ERROR([kqueue support missing in libc library.])
2152 if test "x$ac_cv_func_kqueue" = "xyes" -a "x$ac_cv_header_sys_event_h" = "xyes" ; then
2153 squid_opt_io_loop_engine="kqueue"
2158 AC_MSG_NOTICE([enabling kqueue for net I/O: ${enable_kqueue:=auto}])
2161 AC_ARG_ENABLE(epoll,
2162 AS_HELP_STRING([--disable-epoll],[Disable Linux epoll(2) support.]),
2164 SQUID_YESNO($enableval,[--disable-epoll takes no extra argument])
2165 test "x$enableval" = "xyes" && squid_opt_io_loop_engine="epoll"
2167 AC_MSG_NOTICE([enabling epoll syscall for net I/O: ${enable_epoll:=auto}])
2169 # auto-detect and verify epoll header and library present and working
2170 # logic mapping and loop method selection are performed later
2171 if test "x$enable_epoll" != "xno" ; then
2173 # check if libs are needed to support epoll
2174 # note: this code block seems quite generic. Could it be extracted
2175 # into a squid specific configure function?
2176 SQUID_STATE_SAVE(squid_epoll_state)
2177 AC_SEARCH_LIBS(epoll_ctl,[epoll])
2178 if test "x$ac_cv_search_epoll_ctl" = "xno" ; then
2179 enable_epoll=no #disable. Needed code not found
2180 elif test "x$ac_cv_search_epoll_ctl" = "xnone required" ; then
2183 EPOLL_LIBS=$ac_cv_search_epoll_ctl
2185 AC_SUBST(EPOLL_LIBS)
2186 SQUID_STATE_ROLLBACK(squid_epoll_state) #de-pollute LIBS
2188 # epoll requires sys/epoll.h
2189 AC_CHECK_HEADERS([sys/epoll.h])
2191 dnl Verify that epoll really works
2192 if test "x$ac_cv_search_epoll_ctl" != 'xno' ; then
2196 if test "x$enable_epoll" = "xyes" -a "x$squid_cv_epoll_works" = "xno" ; then
2197 AC_MSG_ERROR([Epoll does not work. Force-enabling it is not going to help.])
2201 dnl Enable /dev/poll
2202 AC_ARG_ENABLE(devpoll,
2203 AS_HELP_STRING([--disable-devpoll],[Disable Solaris /dev/poll support.]),
2205 SQUID_YESNO($enableval,[--disable-devpoll takes no extra argument])
2206 test "x$enableval" = "xyes" && squid_opt_io_loop_engine="devpoll"
2208 AC_MSG_NOTICE([enabling /dev/poll for net I/O: ${enable_devpoll:=auto}])
2210 ## auto-detect and verify devpoll header and library present and working
2211 if test "x$enable_devpoll" != "xno"; then
2213 # /dev/poll requires ioctl() and write()
2214 AC_CHECK_FUNCS(ioctl)
2215 AC_CHECK_FUNCS(write)
2217 # /dev/poll requires sys/devpoll.h
2218 AC_CHECK_HEADERS([sys/devpoll.h],,[
2219 if test "x$enable_devpoll" = "xyes"; then
2220 AC_MSG_ERROR([--enable-devpoll specified but /dev/poll headers not found])
2224 # Verify that /dev/poll really works
2225 if test "x$enable_devpoll" != 'xno' ; then
2229 if test "x$enable_devpoll" = "xyes" -a "x$squid_cv_devpoll_works" = "xno" ; then
2230 AC_MSG_ERROR([/dev/poll does not work. Force-enabling it is not going to help.])
2235 AC_ARG_ENABLE(http-violations,
2236 AS_HELP_STRING([--disable-http-violations],
2237 [This allows you to remove code which is known to
2238 violate the HTTP protocol specification.]), [
2239 SQUID_YESNO([$enableval],
2240 [unrecognized argument to --disable-http-violations: $enableval])
2242 SQUID_DEFINE_BOOL(USE_HTTP_VIOLATIONS, ${enable_http_violations:=yes},
2243 [Define to enable code which volates the HTTP standard specification])
2244 AC_MSG_NOTICE([HTTP violations support enabled: $enable_http_violations])
2246 # IPFW Transparent Proxy
2247 AC_ARG_ENABLE(ipfw-transparent,
2248 AS_HELP_STRING([--enable-ipfw-transparent],
2249 [Enable Transparent Proxy support for systems
2250 using FreeBSD IPFW-style firewalling.]), [
2251 SQUID_YESNO([$enableval],
2252 [unrecognized argument to --enable-ipfw-transparent: $enableval])
2254 SQUID_DEFINE_BOOL(IPFW_TRANSPARENT,${enable_ipfw_transparent:=no},
2255 [Enable support for Transparent Proxy on systems using FreeBSD IPFW-style firewalling.])
2256 AC_MSG_NOTICE([FreeBSD IPFW-based transparent proxying enabled: $enable_ipfw_transparent])
2258 # IP-Filter Transparent Proxy
2259 AC_ARG_ENABLE(ipf-transparent,
2260 AS_HELP_STRING([--enable-ipf-transparent],
2261 [Enable Transparent Proxy support using IPFilter-style firewalling]), [
2262 SQUID_YESNO([$enableval],
2263 [unrecognized argument to --enable-ipf-transparent: $enableval])
2265 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2266 #IPF currently broken. Default-disabled for now.
2267 AC_MSG_NOTICE([IPF-based transparent proxying requested: ${enable_ipf_transparent:=no}])
2269 dnl Enable PF Transparent Proxy
2270 AC_ARG_ENABLE(pf-transparent,
2271 AS_HELP_STRING([--enable-pf-transparent],
2272 [Enable Transparent Proxy support for systems using PF network address redirection.]), [
2273 SQUID_YESNO([$enableval],
2274 [unrecognized argument to --enable-pf-transparent: $enableval])
2276 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2277 AC_MSG_NOTICE([PF-based transparent proxying requested: ${enable_pf_transparent:=no}])
2279 dnl Enable /dev/pf support for older PF Transparent Proxy systems (OpenBSD 4.x and older)
2280 AC_ARG_WITH(nat-devpf,
2281 AS_HELP_STRING([--with-nat-devpf],
2282 [Enable /dev/pf support for NAT on older OpenBSD and FreeBSD kernels.]), [
2283 SQUID_YESNO([$enableval],
2284 [unrecognized argument to --with-nat-devpf: $enableval])
2286 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2287 AC_MSG_NOTICE([NAT lookups via /dev/pf: ${with_nat_devpf:=no}])
2289 # Linux Netfilter Transparent Proxy
2290 AC_ARG_ENABLE(linux-netfilter,
2291 AS_HELP_STRING([--enable-linux-netfilter],
2292 [Enable Transparent Proxy support for Linux (Netfilter)]), [
2293 SQUID_YESNO([$enableval],
2294 [unrecognized argument to --enable-linux-netfilter: $enableval])
2296 AC_MSG_NOTICE([Linux Netfilter support requested: ${enable_linux_netfilter:=auto}])
2297 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2300 dnl Look for libnetfilter_conntrack options (needed for QOS netfilter marking)
2301 dnl squid_opt_netfilterconntrack is set only when option is explicity specified
2302 AC_ARG_WITH(netfilter-conntrack,
2303 AS_HELP_STRING([--without-netfilter-conntrack],
2304 [Do not use Netfilter conntrack libraries for packet marking.
2305 A path to alternative library location may be specified by
2306 using --with-netfilter-conntrack=PATH. Default: auto-detect.]), [
2307 case "$with_netfilter_conntrack" in
2309 squid_opt_netfilterconntrack=$with_netfilter_conntrack
2312 if test ! -d "$withval" ; then
2313 AC_MSG_ERROR([--without-netfilter-conntrack path does not point to a directory])
2315 squid_opt_netfilterconntrackpath=$withval
2316 LDFLAGS="-L$squid_opt_netfilterconntrackpath/lib $LDFLAGS"
2317 CPPFLAGS="-I$squid_opt_netfilterconntrackpath/include $CPPFLAGS"
2318 with_netfilter_conntrack=yes
2319 squid_opt_netfilterconntrack=yes
2322 AC_MSG_NOTICE([Linux Netfilter Conntrack support requested: ${with_netfilter_conntrack:=auto}])
2323 if test "x$with_netfilter_conntrack" != "xno"; then
2324 AC_SEARCH_LIBS([nfct_query], [netfilter_conntrack],,[
2325 if test x"$with_netfilter_conntrack" = "xyes"; then
2326 AC_MSG_ERROR([--with-netfilter-conntrack specified but libnetfilter-conntrack library not found])
2328 with_netfilter_conntrack=no])
2329 AC_CHECK_HEADERS([libnetfilter_conntrack/libnetfilter_conntrack.h \
2330 libnetfilter_conntrack/libnetfilter_conntrack_tcp.h],,[
2331 if test x"$with_netfilter_conntrack" = "xyes"; then
2332 AC_MSG_ERROR([--with-netfilter-conntrack specified but libnetfilter-conntrack headers not found])
2334 with_netfilter_conntrack=no])
2335 # If nothing is broken; enable the libraries usage.
2336 if test "x$with_netfilter_conntrack" != "xno"; then
2337 with_netfilter_conntrack=yes
2342 dnl Enable Large file support
2344 squid_opt_enable_large_files=no
2346 AC_ARG_WITH(large-files,
2347 AS_HELP_STRING([--with-large-files],[Enable support for large files (logs etc).]), [
2348 if test "x$withval" = "xyes"; then
2349 squid_opt_enable_large_files=yes
2353 dnl UNIX Build environment
2354 dnl AS_HELP_STRING is not suited here because it cannot to specify newlines
2355 AC_ARG_WITH(build-environment,
2356 AS_HELP_STRING([--with-build-environment=model],
2357 [The build environment to use. Normally one of
2358 POSIX_V6_ILP32_OFF32 (32 bits),
2359 POSIX_V6_ILP32_OFFBIG (32 bits with large file support),
2360 POSIX_V6_LP64_OFF64 (64 bits),
2361 POSIX_V6_LPBIG_OFFBIG (large pointers and files),
2362 XBS5_ILP32_OFF32 i(legacy, 32 bits),
2363 XBS5_ILP32_OFFBIG (legacy, 32 bits with large file support),
2364 XBS5_LP64_OFF64 (legacy, 64 bits),
2365 XBS5_LPBIG_OFFBIG (legacy, large pointers and files)
2366 or default (The default for your OS)]), [
2369 AC_MSG_FAILURE([--with-build-environment expects a build environment string as used by getconf])
2372 buildmodel="$withval"
2377 #hack. Let's early-detect sizeof(long)
2378 AC_CHECK_SIZEOF(long)
2380 if test "x$squid_opt_enable_large_files" = "xyes" -a "x$buildmodel" = "x"; then
2381 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
2382 if test "`getconf _$model 2>/dev/null || true`" = 1 || test "`getconf $model 2>/dev/null || true`" ; then
2387 if test "x$buildmodel" = "x"; then
2388 AC_MSG_WARN([No suitable build environment found for large files. Trying to use _FILE_OFFSET_BITS=64])
2391 if test "x$buildmodel" = "xdefault" -o "x$buildmodel" = "x"; then
2392 # define _FILE_OFFSET_BITS if requested and needed
2393 if test "x$squid_opt_enable_large_files" = "xyes" -a $ac_cv_sizeof_long -le 4 ; then
2394 AC_MSG_NOTICE([Enabling -D_FILE_OFFSET_BITS=64])
2395 CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
2396 CXXFLAGS="-D_FILE_OFFSET_BITS=64 $CXXFLAGS"
2399 AC_MSG_NOTICE([Using $buildmodel build environment])
2400 if test "`getconf _$buildmodel 2>/dev/null || true`" = 1 || test "`getconf $buildmodel 2>/dev/null || true`" ; then
2403 AC_MSG_ERROR(Build environment $buildmodel not known to getconf.)
2405 CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
2406 CXXFLAGS="`getconf ${buildmodel}_CFLAGS` $CXXFLAGS"
2407 LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
2408 LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
2409 if test "x$squid_host_os" = "xsolaris" ; then
2411 # On Solaris getconf returns for CFLAGS -xarch=generic64, -Xa and -Usun options, and
2412 # for LDFLAGS -xarch=generic64, but:
2413 # "-Xa" is supported only by Sun cc, so we need to remove it when using gcc
2414 # For gcc "-xarch=generic64" must be replaced with "-m64"
2415 # The 'sun' define is needed by ipfilter includes, so we must remove "-Usun"
2416 if test "x$GCC" = "xyes"; then
2417 AC_MSG_NOTICE([Removing -Xa for gcc/g++ on $host])
2418 CFLAGS="`echo $CFLAGS | sed -e 's/-Xa//'`"
2419 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Xa//'`"
2420 AC_MSG_NOTICE([Replacing -xarch=generic64 with -m64 for gcc/g++ on $host])
2421 CFLAGS="`echo $CFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
2422 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
2423 LDFLAGS="`echo $LDFLAGS | sed -e 's/-xarch=generic64//'`"
2425 AC_MSG_NOTICE([Removing -Usun on $host])
2426 CFLAGS="`echo $CFLAGS | sed -e 's/-Usun//'`"
2427 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Usun//'`"
2431 dnl Enable Leak Finding Functions
2432 AC_ARG_ENABLE(leakfinder,
2433 AS_HELP_STRING([--enable-leakfinder],
2434 [Enable Leak Finding code. Enabling this alone does nothing;
2435 you also have to modify the source code to use the leak
2436 finding functions. Probably Useful for hackers only.]), [
2437 SQUID_YESNO([$enableval],
2438 [unrecognized argument to --enable-leakfinder: $enableval])
2440 AC_MSG_NOTICE([Leak Finder enabled: ${enable_leakfinder:=no}])
2441 SQUID_DEFINE_BOOL(USE_LEAKFINDER,$enable_leakfinder,
2442 [Enable code for assisting in finding memory leaks. Not for the faint of heart])
2443 AM_CONDITIONAL(ENABLE_LEAKFINDER, [test "x$enable_leakfinder" = "xyes"])
2446 AC_ARG_ENABLE(follow-x-forwarded-for,
2447 AS_HELP_STRING([--enable-follow-x-forwarded-for],
2448 [Enable support for following the X-Forwarded-For
2449 HTTP header to try to find the IP address of the
2450 original or indirect client when a request has
2451 been forwarded through other proxies.]), [
2452 SQUID_YESNO([$enableval],
2453 [unrecognized argument to --enable-follow-x-forwarded-for: $enableval])
2455 AC_MSG_NOTICE([Support for X-Forwarded-For enabled: ${enable_follow_x_forwarded_for:=yes}])
2456 SQUID_DEFINE_BOOL(FOLLOW_X_FORWARDED_FOR,$enable_follow_x_forwarded_for,
2457 [Enable following X-Forwarded-For headers])
2459 AC_ARG_ENABLE(ident-lookups,
2460 AS_HELP_STRING([--disable-ident-lookups],
2461 [Remove code that supports performing Ident (RFC 931) lookups.]), [
2462 SQUID_YESNO([$enableval],[unrecognized argument to --disable-ident-lookups: $enableval])
2464 AC_MSG_NOTICE([Support for Ident lookups enabled: ${enable_ident_lookups:=yes}])
2465 SQUID_DEFINE_BOOL(USE_IDENT,$enable_ident_lookups,[Support for Ident (RFC 931) lookups])
2467 dnl Select Default hosts file location
2468 AC_ARG_ENABLE(default-hostsfile,
2469 AS_HELP_STRING([--enable-default-hostsfile=path],
2470 [Select default location for hosts file.
2471 See hosts_file directive in squid.conf for details]), [
2472 if test "x$enableval" != "xnone" -a "x$enableval" != "xno" ; then
2473 if test \! -f "$enableval"; then
2474 AC_MSG_WARN([Unable to find file $enableval. I hope you know what you are doing.])
2476 squid_opt_default_hosts=$enableval
2478 squid_opt_default_hosts="none"
2481 AC_MSG_NOTICE([Default hosts file set to: ${squid_opt_default_hosts:=/etc/hosts}])
2482 DEFAULT_HOSTS=$squid_opt_default_hosts
2483 AC_SUBST(DEFAULT_HOSTS)
2485 # Select auth schemes modules to build
2487 AS_HELP_STRING([--enable-auth],
2488 [Build global support for authentication. The list of schemes
2489 and helpers to be enabled is defined elsewhere]), [
2490 SQUID_YESNO([$enableval],
2491 [unrecognized argument to --enable-auth: $enableval])
2493 AC_MSG_NOTICE([Authentication support enabled: ${enable_auth:=yes}])
2494 SQUID_DEFINE_BOOL(USE_AUTH,$enable_auth,[Enable support for authentication])
2495 AM_CONDITIONAL(ENABLE_AUTH, test "x$enable_auth" != "xno")
2499 AC_ARG_ENABLE(auth-basic,
2500 AS_HELP_STRING([--enable-auth-basic="list of helpers"],
2501 [Enable the basic authentication scheme, and build the specified helpers.
2502 Not providing an explicit list of helpers will attempt build of
2503 all possible helpers. Default is to do so.
2504 To disable the basic authentication scheme, use --disable-auth-basic.
2505 To enable but build no helpers, specify "none".
2506 To see available helpers, see the src/auth/basic/ directory. ]),[
2507 #nothing to do really
2509 m4_include([src/auth/basic/helpers.m4])
2511 AC_ARG_ENABLE(auth-digest,
2512 AS_HELP_STRING([--enable-auth-digest="list of helpers"],
2513 [Enable the Digest authentication scheme, and build the specified helpers.
2514 Not providing an explicit list of helpers will attempt build of
2515 all possible helpers. Default is to do so.
2516 To disable the Digest authentication scheme, use --disable-auth-digest.
2517 To enable but build no helpers, specify "none".
2518 To see available helpers, see the src/auth/digest/ directory. ]),[
2519 #nothing to do, really
2521 m4_include([src/auth/digest/helpers.m4])
2523 AC_ARG_ENABLE(auth-negotiate,
2524 AS_HELP_STRING([--enable-auth-negotiate="list of helpers"],
2525 [Enable the Negotiate authentication scheme, and build the specified
2527 Not providing an explicit list of helpers will attempt build of
2528 all possible helpers. Default is to do so.
2529 To disable the Negotiate authentication scheme,
2530 use --disable-auth-negotiate.
2531 To enable but build no helpers, specify "none".
2532 To see available helpers, see the src/auth/negotiate/ directory. ]),[
2533 #nothing to do, really
2535 m4_include([src/auth/negotiate/helpers.m4])
2537 AC_ARG_ENABLE(auth-ntlm,
2538 AS_HELP_STRING([--enable-auth-ntlm="list of helpers"],
2539 [Enable the NTLM authentication scheme, and build the specified helpers.
2540 Not providing an explicit list of helpers will attempt build of
2541 all possible helpers. Default is to do so.
2542 To disable the NTLM authentication scheme, use --disable-auth-ntlm.
2543 To enable but build no helpers, specify "none".
2544 To see available helpers, see the src/auth/ntlm/ directory. ]),[
2546 m4_include([src/auth/ntlm/helpers.m4])
2548 dnl Authentication libraries to build
2549 dnl This list will not be needed when each auth library has its own Makefile
2550 dnl this is to be placed AFTER each auth module's handler
2552 for module in $AUTH_MODULES; do
2553 AUTH_LIBS_TO_BUILD="$AUTH_LIBS_TO_BUILD ${module}/lib${module}.la"
2555 AC_SUBST(AUTH_MODULES)
2556 AC_SUBST(AUTH_LIBS_TO_BUILD)
2557 AM_CONDITIONAL(ENABLE_SMBLIB, test "x$require_smblib" = "xyes")
2559 dnl Select logging daemon helpers to build
2560 AC_ARG_ENABLE(log-daemon-helpers,
2561 AS_HELP_STRING([--enable-log-daemon-helpers="list of helpers"],
2562 [This option selects which logging daemon helpers to
2563 build and install as part of the normal build process
2564 For a list of available helpers see the src/log/
2566 #nothing to do, really
2568 m4_include([src/log/helpers.m4])
2570 AC_ARG_ENABLE(external-acl-helpers,
2571 AS_HELP_STRING([--enable-external-acl-helpers="list of helpers"],
2572 [Enable external_acl helpers support and the helpers themselves.
2573 Default is to build all buildable helpers and enable support.
2574 To disable support, use --disable-external-acl-helpers.
2575 To build no helpers, specify "none".
2576 To see available helpers, see the src/acl/external/
2578 #nothing to do, really
2580 m4_include([src/acl/external/helpers.m4])
2582 dnl Select url_rewrite helpers to build
2583 AC_ARG_ENABLE(url-rewrite-helpers,
2584 AS_HELP_STRING([--enable-url-rewrite-helpers="list of helpers"],
2585 [This option selects which url_rewrite helpers to
2586 build and install as part of the normal build
2587 process. The default is to attempt the build of all possible
2588 helpers. Use --disable-url-rewrite-helpers to build none.
2589 For a list of available helpers see the
2590 src/http/url_rewriters/ directory.]),[
2592 m4_include([src/http/url_rewriters/helpers.m4])
2594 dnl Select security helpers to build
2595 AC_ARG_ENABLE(security-cert-validators,
2596 AS_HELP_STRING([--enable-security-cert-validators="list of helpers"],
2597 [This option selects which security certificate validator
2598 helpers to build and install as part of the normal build
2599 process. The default is to attempt the build of all possible
2600 helpers. Use --disable-security-cert-validators to
2601 build none. For a list of available helpers see the
2602 src/security/cert_validators/ directory.]),[
2604 m4_include([src/security/cert_validators/helpers.m4])
2606 AC_ARG_ENABLE(security-cert-generators,
2607 AS_HELP_STRING([--enable-security-cert-generators="list of helpers"],
2608 [This option selects which security certificate validator
2609 helpers to build and install as part of the normal build
2610 process. The default is to attempt the build of all possible
2611 helpers. Use --disable-security-cert-genrators to
2612 build none. For a list of available helpers see the
2613 src/security/cert_generators/ directory.]),[
2615 m4_include([src/security/cert_generators/helpers.m4])
2617 dnl Select storeid_rewrite helpers to build
2618 AC_ARG_ENABLE(storeid-rewrite-helpers,
2619 AS_HELP_STRING([--enable-storeid-rewrite-helpers="list of helpers"],
2620 [This option selects which Store-ID rewrite helpers to
2621 build and install as part of the normal build
2622 process. The default is to attempt the build of all possible
2623 helpers. Use --disable-storeid-rewrite-helpers to build none.
2624 For a list of available helpers see the
2625 src/store/id_rewriters/ directory.]),[
2627 m4_include([src/store/id_rewriters/helpers.m4])
2629 AC_ARG_WITH(valgrind-debug,
2630 AS_HELP_STRING([--with-valgrind-debug],
2631 [Include debug instrumentation for use with valgrind]),
2633 SQUID_YESNO([$withval],
2634 [unrecognized argument to --with-valgrind-debug: $withval])
2635 if test "x$withval" != "xno" ; then
2636 AC_CHECK_HEADERS(valgrind/memcheck.h,[],[
2637 AC_MSG_ERROR([Valgrind support requested, needed headers not found.])
2641 SQUID_DEFINE_BOOL(WITH_VALGRIND,${with_valgrind_debug:=no},
2642 [Valgrind memory debugger support])
2643 AC_MSG_NOTICE([Valgrind debug support enabled: $with_valgrind_debug])
2645 dnl Enable WIN32 Service compile mode
2646 AC_ARG_ENABLE(win32-service,
2647 AS_HELP_STRING([--enable-win32-service],
2648 [Compile Squid as a WIN32 Service.
2649 Works only on MS-Windows platforms]), [
2650 SQUID_YESNO([$enableval],
2651 [unrecognized argument to --enable-win32-service: $enableval])
2653 SQUID_DEFINE_BOOL(USE_WIN32_SERVICE,${enable_win32_service:=no},
2654 [Enable code supporting MS Windows service mode])
2655 AC_MSG_NOTICE([MS Windows service mode enabled: $enable_win32_service])
2658 # Disable "unlinkd" code
2659 AC_ARG_ENABLE(unlinkd,
2660 AS_HELP_STRING([--disable-unlinkd],[Do not use unlinkd]), [
2661 SQUID_YESNO([$enableval],
2662 [unrecognized argument to --disable-unlinkd: $enableval])
2664 SQUID_DEFINE_BOOL(USE_UNLINKD,${enable_unlinkd:=yes},
2665 [Enable useage of unlinkd])
2666 AM_CONDITIONAL(ENABLE_UNLINKD,test "x$enable_unlinkd" = "xyes")
2667 AC_MSG_NOTICE([unlinkd enabled: $enable_unlinkd])
2669 # Enable backtraces on fatal errors
2670 AC_ARG_ENABLE(stacktraces,
2671 AS_HELP_STRING([--enable-stacktraces],
2672 [Enable automatic call backtrace on fatal errors]), [
2673 SQUID_YESNO([$enableval],
2674 [unrecognized argument to --enable-stacktraces: $enableval])
2676 SQUID_DEFINE_BOOL(PRINT_STACK_TRACE,${enable_stacktraces:=no},
2677 [Print stack traces on fatal errors])
2678 AC_MSG_NOTICE([Automatically print stack trace on fatal errors: $enable_stacktraces])
2681 # CPU Profiling options handling
2682 AC_ARG_ENABLE(cpu-profiling,
2683 AS_HELP_STRING([--enable-cpu-profiling],
2684 [Enable instrumentation to try and understand how CPU power
2685 is spent by squid, by enabling specific probes in selected
2687 New probes can only be added by modifying the source code.
2688 It is meant to help developers in optimizing performance
2689 of Squid internal functions.
2690 If you are not developer you should not enable this,
2691 as it slows squid down somewhat.
2692 See lib/Profiler.c for more details.]), [
2693 SQUID_YESNO([$enableval],
2694 [unrecognized argument to --enable-cpu-profiling: $enableval])
2696 # Default OFF. This is a debug feature. Only check and enable if forced ON.
2697 if test "x$enable_cpu_profiling" = "xyes"; then
2698 SQUID_CHECK_FUNCTIONAL_CPU_PROFILER
2699 if test "x$squid_cv_cpu_profiler_works" = "xno"; then
2700 AC_MSG_ERROR([CPU profiling will not be functional in this build.])
2703 SQUID_DEFINE_BOOL(USE_XPROF_STATS,${enable_cpu_profiling:=no},
2704 [Define to enable CPU profiling within Squid])
2705 AM_CONDITIONAL(ENABLE_XPROF_STATS,
2706 test "x$enable_cpu_profiling" = "xyes")
2707 AC_MSG_NOTICE([CPU profiling enabled: $enable_cpu_profiling])
2709 # Enable X-Accelerator-Vary for Vary support within an accelerator setup
2710 AC_ARG_ENABLE(x-accelerator-vary,
2711 AS_HELP_STRING([--enable-x-accelerator-vary],
2712 [Enable support for the X-Accelerator-Vary
2713 HTTP header. Can be used to indicate
2714 variance within an accelerator setup.
2715 Typically used together with other code
2716 that adds custom HTTP headers to the requests.]), [
2717 SQUID_YESNO([$enableval],
2718 [unrecognized argument to --enable-x-accelerator-vary: $enableval])
2720 SQUID_DEFINE_BOOL(X_ACCELERATOR_VARY,${enable_x_accelerator_vary:=no},
2721 [Enable support for the X-Accelerator-Vary HTTP header])
2722 AC_MSG_NOTICE([X-Accelerator-Vary support enabled: $enable_x_accelerator_vary])
2724 AC_ARG_WITH([cppunit], AS_HELP_STRING([--without-cppunit],[Do not use cppunit test framework]),[
2725 AS_CASE($with_cppunit, [yes|no],[],
2727 AS_IF([test ! -d "$withval"],AC_MSG_ERROR([--with-cppunit PATH does not point to a directory]))
2728 LIBCPPUNIT_CFLAGS="-I$with_cppunit/include"
2729 LIBCPPUNIT_LIBS="-L$with_cppunit/lib -lcppunit"
2732 AS_IF([test "x$with_cppunit" != "xno"],[
2733 PKG_CHECK_MODULES([LIBCPPUNIT],[cppunit],[
2734 squid_cv_cppunit_version="`pkg-config cppunit --version`"
2735 AC_MSG_NOTICE([using system installed cppunit version $squid_cv_cppunit_version])
2736 AS_UNSET(squid_cv_cppunit_version)
2738 SQUID_STATE_SAVE(squid_cppunit_state)
2739 CXXFLAGS="${CXXFLAGS} ${LIBCPPUNIT_CFLAGS}"
2740 LIBS="${LIBS} ${LIBCPPUNIT_LIBS}"
2741 AC_CHECK_HEADERS(cppunit/extensions/HelperMacros.h)
2742 SQUID_STATE_ROLLBACK(squid_cppunit_state)
2744 AC_MSG_WARN([cppunit does not appear to be installed. Squid does not require this, but code testing with 'make check' will fail.])
2748 # Force some compilers to use ANSI features
2752 if test "x$ac_cv_prog_CC" = "xcc" ; then
2753 AC_MSG_NOTICE([adding '-Ae' to cc args for $host])
2761 dnl automake handles this AC_PATH_PROG(MAKEDEPEND, makedepend, $TRUE)
2765 AC_MSG_NOTICE([Disabling ranlib for HP-UX...])
2770 dnl Check for headers
2795 linux/posix_types.h \
2803 netinet/in_systm.h \
2853 linux/netfilter_ipv4.h \
2854 linux/netfilter_ipv6/ip6_tables.h \
2856 SQUID_DEFAULT_INCLUDES
2860 /* Netfilter ip(6)tables v1.4.0 has broken headers */
2861 #if HAVE_NETINET_IN_H
2862 #include <netinet/in.h>
2866 dnl *BSD dont include the dependencies for all their net/ and netinet/ files
2867 dnl We must include a few basic type headers for them to work.
2882 SQUID_BSDNET_INCLUDES)
2888 AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
2891 #include <sys/time.h>
2898 dnl Override rusage() detect on MinGW because is emulated in source code
2899 case "$squid_host_os" in
2901 AC_DEFINE(HAVE_STRUCT_RUSAGE)
2902 ac_cv_func_getrusage='yes'
2903 AC_MSG_NOTICE([Using own rusage on Windows.])
2906 AC_CHECK_TYPE(struct rusage,AC_DEFINE(HAVE_STRUCT_RUSAGE,1,[The system provides struct rusage]),,[
2908 #include <sys/time.h>
2910 #if HAVE_SYS_RESOURCE_H
2911 #include <sys/resource.h>
2916 AC_CHECK_MEMBERS([struct iphdr.ip_hl],,,[
2917 #if HAVE_SYS_TYPES_H
2918 #include <sys/types.h>
2920 #include <netinet/in.h>
2921 #include <netinet/in_systm.h>
2922 #include <netinet/ip.h>
2923 #if defined (__linux__) || defined (__CYGWIN__)
2932 dnl Check for typedefs
2933 AC_CHECK_SIZEOF(void *)
2935 # check for a bunch of types
2949 AC_CHECK_TYPE([bool])
2950 #need the defines for PRId64
2951 AC_CHECK_SIZEOF(int64_t)
2952 AC_CHECK_SIZEOF(long)
2953 #need the defines for PRIuSIZE
2954 AC_CHECK_SIZEOF(size_t)
2955 #need the define for overflow checks
2956 AC_CHECK_SIZEOF(off_t)
2957 AC_CHECK_SIZEOF(size_t)
2959 dnl Some C++11 types we try to use
2961 AX_CXX_TYPE_UNIQUE_PTR
2962 AX_CXX_TYPE_UNIFORM_DISTRIBUTIONS
2963 SQUID_CXX_STD_UNDERLYING_TYPE
2965 dnl On Solaris 9 x86, gcc may includes a "fixed" set of old system include files
2966 dnl that is incompatible with the updated Solaris header files.
2967 dnl For this reason, we must check if pad128_t and upad128_t are defined.
2968 AC_CHECK_TYPE(pad128_t,
2969 AC_DEFINE(HAVE_PAD128_T,1,[pad128_t is defined in system headers]),
2970 ,SQUID_DEFAULT_INCLUDES)
2972 AC_CHECK_TYPE(upad128_t,
2973 AC_DEFINE(HAVE_UPAD128_T,1,[upad128_t is defined in system headers]),
2974 ,SQUID_DEFAULT_INCLUDES)
2976 AC_CHECK_TYPE(mode_t, AC_DEFINE(HAVE_MODE_T,1,[mode_t is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
2977 AC_CHECK_TYPE(fd_mask, AC_DEFINE(HAVE_FD_MASK,1,[fd_mask is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
2979 AC_CHECK_TYPE(socklen_t,AC_DEFINE(HAVE_SOCKLEN_T,1,[socklen_t is defined by the system headers]),,[
2980 #include <sys/types.h>
2981 #include <sys/socket.h>
2987 AC_CHECK_TYPE(mtyp_t,AC_DEFINE(HAVE_MTYP_T,1,
2988 [mtyp_t is defined by the system headers]),,[#include <sys/types.h>
2989 #include <sys/ipc.h>
2990 #include <sys/msg.h>])
2992 # check for compiler support of %zu printf macro
2993 AH_TEMPLATE(PRIuSIZE,[Compiler supports %zu printf macro])
2994 AC_MSG_CHECKING([for compiler %zu support])
2995 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2997 ]],[[size_t n=1;printf("%zu",n);]])],[
2998 AC_DEFINE(PRIuSIZE,"zu")
3000 ],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
3003 dnl Check for special functions
3007 dnl Check for libcap header (assume its not broken unless
3008 AC_ARG_WITH(libcap, AS_HELP_STRING([--without-libcap],
3009 [disable usage of Linux capabilities library to control privileges]), [
3010 SQUID_YESNO([$withval],[unrecognized argument to --without-libcap: $withval])
3011 ],[with_libcap=auto])
3013 if test "x$with_libcap" != "xno"; then
3014 # cap_clear_flag is the most recent libcap function we require
3015 AC_CHECK_HEADERS(sys/capability.h)
3016 AC_CHECK_LIB(cap, cap_clear_flag)
3017 SQUID_CHECK_FUNCTIONAL_LIBCAP2
3019 # if it can't be supported..
3020 if test "x$ac_cv_header_sys_capability_h" = "xno" -o \
3021 "x$ac_cv_lib_cap_cap_clear_flag" = "xno"; then
3022 # and it was forced on: error
3023 if test "x$with_libcap" = "xyes" ; then
3024 AC_MSG_ERROR([libcap forced enabled but not available or not usable, requires libcap-2.09 or later])
3026 # with_libcap is "auto"; it can't be supported. Disable.
3030 # header and lib are ok, we support
3036 SQUID_DEFINE_BOOL(USE_LIBCAP,$with_libcap,
3037 [use libcap to set capabilities required for TPROXY])
3038 AC_MSG_NOTICE([libcap support enabled: $with_libcap])
3039 SQUID_DEFINE_BOOL(LIBCAP_BROKEN,${squid_cv_sys_capability_works:=no},
3040 [libcap2 headers are broken and clashing with glibc])
3041 AC_MSG_NOTICE([libcap2 headers are ok: $squid_cv_sys_capability_works])
3044 dnl Check for needed libraries
3045 AC_SEARCH_LIBS([gethostbyname],[nsl resolv bind])
3046 AC_SEARCH_LIBS([res_init],[resolv])
3047 AC_SEARCH_LIBS([__res_search],[resolv])
3048 AC_SEARCH_LIBS([bind],[socket])
3049 AC_SEARCH_LIBS([opcom_stack_trace],[opcom_stack])
3050 AC_SEARCH_LIBS([strlcpy], [bsd])
3051 AC_SEARCH_LIBS([yp_match], [nsl nss_nis nss_nisplus])
3052 dnl Check for Winsock only on MinGW, on Cygwin we must use emulated BSD socket API
3053 if test "x$squid_host_os" = "xmingw" ; then
3054 SQUID_CHECK_WINSOCK_LIB
3060 #include <winsock2.h>
3063 #include <windows.h>
3066 #include <ws2tcpip.h>
3071 # check that we have unix sockets
3072 SQUID_CHECK_UNIX_SOCKET
3073 SQUID_DEFINE_BOOL(HAVE_UNIXSOCKET,$squid_cv_unixsocket,[System supports unix sockets])
3075 AC_CHECK_LIB(gnumalloc, malloc)
3076 if test "x$ac_cv_lib_gnumalloc_malloc" = "xyes"; then
3077 AC_MSG_NOTICE([Disabling extended malloc functions when using bundled gnumalloc])
3078 ac_cv_func_mallocblksize=no
3079 ac_cv_func_mallopt=no
3081 case "$squid_host_os" in
3083 AC_MSG_NOTICE([skipping libmalloc check for $host])
3086 AC_MSG_NOTICE([skipping libmalloc check for $host])
3090 AC_CHECK_LIB(malloc, main)
3095 case "$squid_host_os" in
3097 AC_MSG_NOTICE([Use MSVCRT for math functions.])
3100 dnl rint() and log() are only used in old C code for now.
3102 AC_SEARCH_LIBS([rint],[m])
3103 AC_SEARCH_LIBS([log],[m])
3108 dnl --with-maxfd present for compatibility with Squid-2.
3109 dnl undocumented in ./configure --help to encourage using the Squid-3 directive
3114 squid_filedescriptors_num=$withval
3115 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
3118 AC_MSG_ERROR(--with-maxfd expects a numeric argument)
3123 AC_ARG_WITH(filedescriptors,
3124 AS_HELP_STRING([--with-filedescriptors=NUMBER],
3125 [Force squid to support NUMBER filedescriptors]),
3129 squid_filedescriptors_num=$withval
3130 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
3133 AC_MSG_ERROR(--with-filedescriptors expects a numeric argument)
3138 SQUID_CHECK_DEFAULT_FD_SETSIZE
3140 if test "x$squid_filedescriptors_num" != "x"; then
3141 AC_MSG_NOTICE([Default number of fieldescriptors: $squid_filedescriptors_num])
3143 if test "$squid_filedescriptors_num" -lt 512 ; then
3144 AC_MSG_WARN([$squid_filedescriptors_num may not be enough filedescriptors if your])
3145 AC_MSG_WARN([cache will be very busy. Please see the FAQ page])
3146 AC_MSG_WARN([http://wiki.squid-cache.org/SquidFaq/TroubleShooting])
3147 AC_MSG_WARN([on how to increase your filedescriptor limit])
3149 AC_DEFINE_UNQUOTED(SQUID_MAXFD, $squid_filedescriptors_num,[Maximum number of open filedescriptors])
3152 dnl Enable IPv6 support
3153 AC_MSG_CHECKING([whether to enable IPv6])
3155 AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support. The default is to probe system capabilities on startup.]), [
3156 SQUID_YESNO([$enableval],[unrecognized argument to --disable-ipv6: $enableval])
3158 AC_MSG_RESULT(${enable_ipv6:=yes})
3159 SQUID_DEFINE_BOOL(USE_IPV6,$enable_ipv6,[Enable support for IPv6 ])
3161 if test "x$enable_ipv6" = "xyes" ; then
3162 SQUID_CHECK_SIN6_LEN_IN_SAI
3164 SQUID_CHECK_SS_LEN_IN_SOCKADDR_STORAGE
3165 SQUID_CHECK_SIN_LEN_IN_SOCKADDR_IN
3168 dnl Check for libdl, used by auth_modules/PAM
3169 if test "x$with_dl" = "xyes"; then
3170 AC_CHECK_LIB(dl, dlopen)
3173 dnl -lintl is needed on SCO version 3.2v4.2 for strftime()
3174 dnl Robert Side <rside@aiinc.bc.ca>
3175 dnl Mon, 18 Jan 1999 17:48:00 GMT
3178 AC_CHECK_LIB(intl, strftime)
3182 dnl System-specific library modifications
3186 if test "x$GCC" = "xyes"; then
3187 AC_MSG_NOTICE([Removing -O for gcc on $host])
3188 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9g]]*//'`"
3193 AC_MSG_NOTICE([Removing -lsocket for IRIX...])
3194 LIBS=`echo $LIBS | sed -e s/-lsocket//`
3195 AC_MSG_NOTICE([Removing -lnsl for IRIX...])
3196 LIBS=`echo $LIBS | sed -e s/-lnsl//`
3197 ac_cv_lib_nsl_main=no
3198 AC_MSG_NOTICE([Removing -lbsd for IRIX...])
3199 LIBS=`echo $LIBS | sed -e s/-lbsd//`
3201 dnl From: c0032033@ws.rz.tu-bs.de (Joerg Schumacher)
3202 dnl Date: Thu, 17 Oct 1996 04:09:30 +0200
3203 dnl Please change your configure script. AIX doesn't need -lbsd.
3205 AC_MSG_NOTICE([Removing -lbsd for AIX...])
3206 LIBS=`echo $LIBS | sed -e s/-lbsd//`
3208 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_rtti],[-rtti],[[
3214 public:virtual ~Foo(){}
3216 class Bar:public Foo{
3217 public:Bar():Foo(){}
3220 Foo * myFoo=new Bar();
3221 Bar * myBar=dynamic_cast<Bar *>(myFoo);
3222 assert(myBar != NULL);
3224 if test "$ac_cv_require_rtti" = "yes"; then
3225 SQUID_CFLAGS="-rtti $SQUID_CFLAGS"
3226 SQUID_CXXFLAGS="-rtti $SQUID_CXXFLAGS"
3230 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_qcpluscmt],[-qcpluscmt],[[]],[[//c++ cmt]])
3232 if test "$ac_cv_require_qcpluscmt" = "yes"; then
3233 SQUID_CFLAGS="-qcpluscmt $SQUID_CFLAGS"
3238 SQUID_CFLAGS="$SQUID_CFLAGS -D_SQUID_MOTOROLA_"
3239 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_SQUID_MOTOROLA_"
3240 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1,
3241 [If gettimeofday is known to take only one argument])
3243 [*-*-solaris2.[0-4]])
3244 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)
3246 [*-sony-newsos[56]*])
3247 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)
3251 dnl This has to be before AC_CHECK_FUNCS
3252 # Disable poll() on certain platforms. Override by setting ac_cv_func_poll
3253 # when running configure.
3254 if test "x$ac_cv_func_poll" = "x" ; then
3258 AC_MSG_NOTICE([disabling poll for $host...])
3259 ac_cv_func_poll='no'
3262 # Henrik Nordstrom (hno@squid-cache.org) 19980817
3263 # poll is problematic on Linux. We disable it
3264 # by default until Linux gets it right.
3265 rev=`uname -r | awk -F. '{printf "%03d%03d",$1,$2}'`
3266 if test $rev -lt 002002; then
3267 AC_MSG_NOTICE([disabling poll for $host < 2.2...])
3268 ac_cv_func_poll='no'
3271 [powerpc-ibm-aix4.1.*])
3272 # Mike Laster (mlaster@metavillage.com) 19981021
3273 AC_MSG_NOTICE([disabling poll for $host...])
3274 ac_cv_func_poll='no'
3277 # Robert Side <rside@aiinc.bc.ca>
3278 # Mon, 18 Jan 1999 17:48:00 GMT
3279 AC_MSG_NOTICE([disabling poll for $host...])
3280 ac_cv_func_poll='no'
3285 dnl Check for library functions
3287 backtrace_symbols_fd \
3310 pthread_attr_setschedparam \
3311 pthread_attr_setscope \
3312 pthread_setschedparam \
3336 dnl ... and some we provide local replacements for
3345 AC_CHECK_DECLS([getaddrinfo,getnameinfo,inet_ntop,inet_pton,InetNtopA,InetPtonA],,,[
3347 * BSD requires sys/types.h, sys/socket.h, netinet/in.h, netdb.h, arpa/inet.h
3348 * Linux requires sys/types.h, sys/socket.h, arpa/inet.h
3349 * Windows requires sys/socket.h, winsock2.h, ws2tcpip.h
3351 #if HAVE_SYS_TYPES_H
3352 #include <sys/types.h>
3354 #if HAVE_NETINET_IN_H
3355 #include <netinet/in.h>
3357 #if HAVE_SYS_SOCKET_H
3358 #include <sys/socket.h>
3363 #if HAVE_ARPA_INET_H
3364 #include <arpa/inet.h>
3367 #include <winsock2.h>
3370 #include <ws2tcpip.h>
3374 # Magic which checks whether we are forcing a type of comm loop we
3375 # are actually going to (ab)use.
3376 # Mostly ripped from squid-commloops, thanks to adrian and benno
3378 if test "x$squid_opt_io_loop_engine" != "x"; then
3379 AC_MSG_NOTICE([choosing user-specified net I/O API $squid_opt_io_loop_engine])
3380 elif test "x$enable_epoll" != "xno" -a "x$squid_cv_epoll_works" = "xyes" ; then
3381 squid_opt_io_loop_engine="epoll"
3382 elif test "x$enable_kqueue" != "xno" ; then
3383 squid_opt_io_loop_engine="kqueue"
3384 elif test "x$enable_devpoll" != "xno" ; then
3385 squid_opt_io_loop_engine="devpoll"
3386 elif test "x$enable_poll" != "xno" -a "x$ac_cv_func_poll" = "xyes" ; then
3387 squid_opt_io_loop_engine="poll"
3388 elif test "x$enable_select" != "xno" -a "x$ac_cv_func_select" = "xyes"; then
3389 squid_opt_io_loop_engine="select"
3390 elif test "x$enable_select" != "xno" -a "x$squid_host_os" = "xmingw"; then
3391 squid_opt_io_loop_engine="select_win32"
3393 AC_MSG_WARN([Eep! Cannot find epoll, kqueue, /dev/poll, poll or select!])
3394 AC_MSG_WARN([Will try select and hope for the best.])
3395 squid_opt_io_loop_engine="select"
3398 AC_MSG_NOTICE([Using ${squid_opt_io_loop_engine} for the IO loop.])
3400 AM_CONDITIONAL(ENABLE_POLL, test "x$squid_opt_io_loop_engine" = "xpoll")
3401 AM_CONDITIONAL(ENABLE_EPOLL, test "x$squid_opt_io_loop_engine" = "xepoll")
3402 AM_CONDITIONAL(ENABLE_SELECT, test "x$squid_opt_io_loop_engine" = "xselect")
3403 AM_CONDITIONAL(ENABLE_SELECT_WIN32, test "x$squid_opt_io_loop_engine" = "xselect_win32")
3404 AM_CONDITIONAL(ENABLE_KQUEUE, test "x$squid_opt_io_loop_engine" = "xkqueue")
3405 AM_CONDITIONAL(ENABLE_DEVPOLL, test "x$squid_opt_io_loop_engine" = "xdevpoll")
3407 case $squid_opt_io_loop_engine in
3408 epoll) AC_DEFINE(USE_EPOLL,1,[Use epoll() for the IO loop]) ;;
3409 devpoll) AC_DEFINE(USE_DEVPOLL,1,[Use /dev/poll for the IO loop]) ;;
3410 poll) AC_DEFINE(USE_POLL,1,[Use poll() for the IO loop]) ;;
3411 kqueue) AC_DEFINE(USE_KQUEUE,1,[Use kqueue() for the IO loop]) ;;
3412 select_win32) AC_DEFINE(USE_SELECT_WIN32,1,[Use Winsock select() for the IO loop]) ;;
3413 select) AC_DEFINE(USE_SELECT,1,[Use select() for the IO loop]) ;;
3416 if test "x$ac_cv_func_sched_getaffinity" = "xyes" -a "x$ac_cv_func_sched_setaffinity" = "xyes" ; then
3417 AC_DEFINE(HAVE_CPU_AFFINITY,1,[Support setting CPU affinity for workers])
3420 SQUID_CHECK_SETRESUID_WORKS
3421 if test "x$squid_cv_resuid_works" = "xyes" ; then
3422 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.])
3425 AC_CHECK_HEADERS(mswsock.h)
3426 AC_MSG_CHECKING([for constant CMSG_SPACE])
3427 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
3428 #if HAVE_SYS_SOCKET_H
3429 #include <sys/socket.h>
3432 #include <mswsock.h>
3435 int a[CMSG_SPACE(int)];
3438 AC_DEFINE(HAVE_CONSTANT_CMSG_SPACE, 1, [Define to 1 if CMSG_SPACE is constant])
3443 AC_CHECK_TYPE(struct cmsghdr,AC_DEFINE(HAVE_CMSGHDR,1,[The system provides struct cmsghdr]),,[
3444 #if HAVE_SYS_SOCKET_H
3445 #include <sys/socket.h>
3448 #include <mswsock.h>
3451 #include <winsock2.h>
3455 AC_CHECK_TYPE(struct iovec,AC_DEFINE(HAVE_IOVEC,1,[The system provides struct iovec]),,[
3456 #if HAVE_SYS_SOCKET_H
3457 #include <sys/socket.h>
3460 #include <winsock2.h>
3463 #include <sys/uio.h>
3467 AC_CHECK_TYPE(struct msghdr,AC_DEFINE(HAVE_MSGHDR,1,[The system provides struct msghdr]),,[
3468 #if HAVE_SYS_SOCKET_H
3469 #include <sys/socket.h>
3472 #include <mswsock.h>
3475 #include <winsock2.h>
3479 AC_CHECK_TYPE(struct sockaddr_un,AC_DEFINE(HAVE_SOCKADDR_UN,1,[The system provides sockaddr_un]),,[
3483 #if HAVE_SYS_SOCKET_H
3484 #include <sys/socket.h>
3487 #include <winsock2.h>
3491 SQUID_CHECK_FUNC_STRNSTR
3493 dnl IP-Filter support requires ipf header files. These aren't
3494 dnl installed by default, so we need to check for them
3495 if test "x$enable_ipf_transparent" != "xno" ; then
3496 SQUID_CHECK_BROKEN_SOLARIS_IPFILTER
3497 AC_MSG_CHECKING(for availability of IP-Filter header files)
3498 # hold on to your hats...
3499 if test "x$ac_cv_header_ip_compat_h" = "xyes" -o \
3500 "x$ac_cv_header_ip_fil_compat_h" = "xyes" -o \
3501 "x$ac_cv_header_netinet_ip_compat_h" = "xyes" -o \
3502 "x$ac_cv_header_netinet_ip_fil_compat_h" = "xyes" ; then
3503 have_ipfilter_compat_header="yes"
3505 if test "x$have_ipfilter_compat_header" = "xyes" -a \
3506 "x$ac_cv_header_ip_fil_h" = "xyes" -a \
3507 "x$ac_cv_header_ip_nat_h" = "xyes" ; then
3508 enable_ipf_transparent="yes"
3509 elif test "x$have_ipfilter_compat_header" = "xyes" -a \
3510 "x$ac_cv_header_netinet_ip_fil_h" = "xyes" -a \
3511 "x$ac_cv_header_netinet_ip_nat_h" = "xyes" ; then
3512 enable_ipf_transparent="yes"
3514 enable_ipf_transparent="no"
3516 AC_MSG_RESULT($IPF_TRANSPARENT)
3518 ## On Solaris Ipfilter includes expect that SOLARIS2 is defined with the
3519 ## Solaris minor version (8, 9, 10, ...)
3520 if test "x$enable_ipf_transparent" = "xyes" -a "x$squid_host_os" = "xsolaris" ; then
3521 solrev=`uname -r | sh -c 'IFS=. read j n x; echo $n'`
3522 CFLAGS="-DSOLARIS2=$solrev $CFLAGS"
3523 CXXFLAGS="-DSOLARIS2=$solrev $CXXFLAGS"
3527 AC_MSG_NOTICE([IPF-based transparent proxying enabled: $enable_ipf_transparent])
3528 SQUID_DEFINE_BOOL(IPF_TRANSPARENT,$enable_ipf_transparent,
3529 [Enable support for IPF-style transparent proxying])
3531 dnl PF /dev/pf support requires a header file.
3532 if test "x$with_nat_devpf" != "xno" ; then
3533 if test "x$ac_cv_header_net_pfvar_h" = "xyes" -o \
3534 "x$ac_cv_header_net_pf_pfvar_h" = "xyes"; then
3535 if test "x$with_nat_devpf" = "xauto" ; then
3539 if test "x$with_nat_devpf" = "xyes" ; then
3540 AC_MSG_ERROR([PF /dev/pf based NAT requested but needed header not found])
3545 SQUID_DEFINE_BOOL(PF_TRANSPARENT,${enable_pf_transparent:=no},
3546 [Enable support for PF-style transparent proxying])
3547 SQUID_DEFINE_BOOL(USE_NAT_DEVPF,${with_nat_devpf:=no},
3548 [Enable support for /dev/pf NAT lookups])
3550 if test "x$enable_linux_netfilter" != "xno" ; then
3551 if test "x$ac_cv_header_linux_netfilter_ipv4_h" = "xyes"; then
3552 if test "x$enable_linux_netfilter" = "xauto" ; then
3553 enable_linux_netfilter=yes
3556 if test "x$enable_linux_netfilter" = "xauto" ; then
3557 enable_linux_netfilter=no
3559 AC_MSG_ERROR([Linux Netfilter support requested but needed headers not found])
3563 SQUID_DEFINE_BOOL(LINUX_NETFILTER,$enable_linux_netfilter,
3564 [Enable support for Transparent Proxy on Linux via Netfilter])
3566 dnl Netfilter TPROXY depends on libcap but the NAT parts can still work.
3567 AC_MSG_NOTICE([Support for Netfilter-based interception proxy requested: $enable_linux_netfilter])
3568 if test "x$enable_linux_netfilter" = "xyes" -a "x$with_libcap" != "xyes" ; then
3569 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for TPROXY])
3570 AC_MSG_WARN([Linux Transparent Proxy (version 4+) support WILL NOT be enabled])
3571 AC_MSG_WARN([Reduced support to NAT Interception Proxy])
3575 if test "x$squid_opt_netfilterconntrack" = "xyes" -a "x$with_libcap" != "xyes" ; then
3576 AC_MSG_ERROR([Linux netfilter conntrack requires libcap support (libcap 2.09+)])
3578 if test "x$with_netfilter_conntrack" = "xyes" -a "x$with_libcap" != "xyes" ; then
3579 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for netfilter mark support])
3580 AC_MSG_WARN([Linux netfilter marking support WILL NOT be enabled])
3581 with_netfilter_conntrack=no
3583 AC_MSG_NOTICE([Linux Netfilter Conntrack support enabled: ${with_netfilter_conntrack} ${squid_opt_netfilterconntrackpath}])
3586 AC_ARG_ENABLE(zph-qos,
3587 AS_HELP_STRING([--enable-zph-qos],[Enable ZPH QOS support]), [
3588 SQUID_YESNO([$enableval],
3589 [unrecognized argument to --enable-zph-qos: $enableval])
3591 SQUID_DEFINE_BOOL(USE_QOS_TOS,${enable_zph_qos:=yes},
3592 [Enable Zero Penalty Hit QOS. When set, Squid will alter the
3593 TOS field of HIT responses to help policing network traffic])
3594 AC_MSG_NOTICE([ZPH QOS enabled: $enable_zph_qos])
3595 if test x"$enable_zph_qos" = "xyes" ; then
3596 AC_MSG_NOTICE([QOS netfilter mark preservation enabled: $with_netfilter_conntrack])
3597 SQUID_DEFINE_BOOL(USE_LIBNETFILTERCONNTRACK,${with_netfilter_conntrack:=no},
3598 [Enable support for QOS netfilter mark preservation])
3602 AC_CHECK_LIB(regex, regexec, [REGEXLIB="-lregex"],[REGEXLIB=''])
3603 AC_ARG_ENABLE(gnuregex,
3604 AS_HELP_STRING([--enable-gnuregex],
3605 [Compile GNUregex. Unless you have reason to use
3606 this option, you should not enable it.
3607 This library file is usually only required on Windows and
3608 very old Unix boxes which do not have their own regex
3609 library built in.]), [
3610 SQUID_YESNO([$enableval],[unrecognized argument to --enable-gnuregex: $enableval])
3612 # force-enable on old solaris and nextstep
3613 if test "x${enable_gnuregex:=auto}" = "xauto" ; then
3615 *-sun-solaris2.[[0-4]])
3616 enable_gnuregex="yes"
3619 enable_gnuregex="yes"
3624 # try detecting if it is needed
3625 if test "x$enable_gnuregex" = "xauto" ; then
3626 SQUID_CHECK_REGEX_WORKS
3627 if test "x$squid_cv_regex_works" = "xyes" ; then
3633 AC_MSG_CHECKING(if GNUregex needs to be compiled)
3634 AC_MSG_RESULT($enable_gnuregex)
3635 if test "x$enable_gnuregex" = "xyes"; then
3636 # for some reason (force-enable, test..) gnuregex was found as needed. Override any system lib
3639 #if no reason was found to enable gnuregex, disable it
3640 if test "x$enable_gnuregex" = "xauto" ; then
3643 SQUID_DEFINE_BOOL(USE_GNUREGEX,$enable_gnuregex,[Define if we should use GNU regex])
3646 SQUID_DETECT_UDP_SND_BUFSIZE
3647 SQUID_DETECT_UDP_RECV_BUFSIZE
3648 SQUID_DETECT_TCP_SND_BUFSIZE
3649 SQUID_DETECT_TCP_RECV_BUFSIZE
3651 SQUID_CHECK_RECV_ARG_TYPE
3652 SQUID_CHECK_NEED_SYS_ERRLIST
3653 SQUID_CHECK_MAXPATHLEN
3655 SQUID_CHECK_LIBRESOLV_DNS_TTL_HACK
3656 SQUID_CHECK_RESOLVER_FIELDS
3658 AC_CHECK_HEADERS(sys/statvfs.h)
3659 if test "x$ac_cv_header_sys_statvfs_h" = "xyes" ; then
3660 SQUID_CHECK_WORKING_STATVFS
3662 if test "x$ac_cv_func_statvfs" != "xyes" ; then
3663 AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/vfs.h sys/statfs.h)
3664 AC_CHECK_FUNCS(statfs)
3665 SQUID_CHECK_F_FRSIZE_IN_STATFS
3668 dnl Squid will not usually attempt to translate templates when building
3669 AC_ARG_ENABLE(translation,
3670 AS_HELP_STRING([--enable-translation],[Generate the localized error page templates and manuals.
3671 Which can also be downloaded from http://www.squid-cache.org/Versions/langpack/.]), [
3672 SQUID_YESNO([$enableval],
3673 [unrecognized argument to --enable-translation: $enableval])
3675 if test "x${enable_translation:=no}" = "xyes" ; then
3676 AX_WITH_PROG([PO2HTML],[po2html])
3677 AX_WITH_PROG([PO2TEXT],[po2txt])
3685 dnl Squid now has limited locale handling ...
3687 AC_ARG_ENABLE(auto-locale,
3688 AS_HELP_STRING([--disable-auto-locale],[This prevents Squid providing localized error pages based on the
3689 clients request headers.
3690 When disabled Squid requires explicit language configuration.]), [
3691 SQUID_YESNO([$enableval],
3692 [unrecognized argument to --disable-auto-locale: $enableval])
3694 AC_MSG_NOTICE([Multi-Language support enabled: ${enable_auto_locale:=yes}])
3695 SQUID_DEFINE_BOOL(USE_ERR_LOCALES,$enable_auto_locale,
3696 [Use multi-language support on error pages])
3699 dnl Need the debugging version of malloc if available
3701 if test "x$ac_cv_lib_malloc_main" = "xyes" ; then
3702 if test -r /usr/lib/debug/malloc.o ; then
3703 XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/malloc.o"
3705 if test -r /usr/lib/debug/mallocmap.o ; then
3706 XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/mallocmap.o"
3711 if test "x$XTRA_LIBS" = "x"; then
3714 XTRA_LIBS=`echo $XTRA_LIBS | sed -e "s/ */ /g"`
3719 AC_SUBST(SQUID_CFLAGS)
3720 AC_SUBST(SQUID_CXXFLAGS)
3722 AC_ARG_VAR([BUILDCXXFLAGS],[C++ compiler flags for building compile-time tools. e.g. cf_gen])
3723 if test "x$BUILDCXXFLAGS" = "x"; then
3724 # if we are NOT cross-compiling, use the default build flags for cf_gen and friends
3725 # otherwise rely on the user-provided value
3726 if test "x$squid_cv_check_marchnative" = "xyes"; then
3727 # always valid for the Build compiler.
3728 BUILDCXXFLAGS="-march=native"
3730 BUILDCXXFLAGS="$BUILDCXXFLAGS $CXXFLAGS"
3732 AC_SUBST(BUILDCXXFLAGS)
3734 AC_MSG_NOTICE([BUILD LIBRARIES: $LIBS])
3735 AC_MSG_NOTICE([BUILD EXTRA LIBRARIES: $XTRA_LIBS])
3736 AC_MSG_NOTICE([BUILD OBJECTS: $OBJS])
3737 AC_MSG_NOTICE([BUILD EXTRA OBJECTS: $XTRA_OBJS])
3738 AC_MSG_NOTICE([BUILD C FLAGS: $CFLAGS])
3739 AC_MSG_NOTICE([BUILD EXTRA C FLAGS: $SQUID_CFLAGS])
3740 AC_MSG_NOTICE([BUILD C++ FLAGS: $CXXFLAGS])
3741 AC_MSG_NOTICE([BUILD EXTRA C++ FLAGS: $SQUID_CXXFLAGS])
3742 AC_MSG_NOTICE([BUILD Tools C++ FLAGS: $BUILDCXXFLAGS])
3744 dnl Clean up after OSF/1 core dump bug
3752 doc/manuals/Makefile
3753 doc/release-notes/Makefile
3757 lib/libTrie/Makefile
3758 lib/libTrie/test/Makefile
3759 lib/ntlmauth/Makefile
3760 lib/profiler/Makefile
3763 lib/snmplib/Makefile
3767 src/acl/external/Makefile
3768 src/acl/external/AD_group/Makefile
3769 src/acl/external/delayer/Makefile
3770 src/acl/external/eDirectory_userip/Makefile
3771 src/acl/external/file_userip/Makefile
3772 src/acl/external/kerberos_ldap_group/Makefile
3773 src/acl/external/LDAP_group/Makefile
3774 src/acl/external/LM_group/Makefile
3775 src/acl/external/session/Makefile
3776 src/acl/external/SQL_session/Makefile
3777 src/acl/external/unix_group/Makefile
3778 src/acl/external/wbinfo_group/Makefile
3779 src/acl/external/time_quota/Makefile
3780 src/adaptation/Makefile
3781 src/adaptation/icap/Makefile
3782 src/adaptation/ecap/Makefile
3785 src/auth/basic/Makefile
3786 src/auth/basic/DB/Makefile
3787 src/auth/basic/fake/Makefile
3788 src/auth/basic/getpwnam/Makefile
3789 src/auth/basic/LDAP/Makefile
3790 src/auth/basic/NCSA/Makefile
3791 src/auth/basic/NIS/Makefile
3792 src/auth/basic/PAM/Makefile
3793 src/auth/basic/POP3/Makefile
3794 src/auth/basic/RADIUS/Makefile
3795 src/auth/basic/SASL/Makefile
3796 src/auth/basic/SMB/Makefile
3797 src/auth/basic/SMB_LM/Makefile
3798 src/auth/basic/SSPI/Makefile
3799 src/auth/digest/Makefile
3800 src/auth/digest/eDirectory/Makefile
3801 src/auth/digest/file/Makefile
3802 src/auth/digest/LDAP/Makefile
3803 src/auth/negotiate/Makefile
3804 src/auth/negotiate/kerberos/Makefile
3805 src/auth/negotiate/SSPI/Makefile
3806 src/auth/negotiate/wrapper/Makefile
3807 src/auth/ntlm/Makefile
3808 src/auth/ntlm/fake/Makefile
3809 src/auth/ntlm/SMB_LM/Makefile
3810 src/auth/ntlm/SSPI/Makefile
3812 src/clients/Makefile
3816 src/DiskIO/AIO/Makefile
3817 src/DiskIO/Blocking/Makefile
3818 src/DiskIO/DiskDaemon/Makefile
3819 src/DiskIO/DiskThreads/Makefile
3820 src/DiskIO/IpcIo/Makefile
3821 src/DiskIO/Mmapped/Makefile
3829 src/http/one/Makefile
3830 src/http/url_rewriters/Makefile
3831 src/http/url_rewriters/fake/Makefile
3832 src/http/url_rewriters/LFS/Makefile
3839 src/log/file/Makefile
3845 src/security/Makefile
3846 src/security/cert_generators/Makefile
3847 src/security/cert_generators/file/Makefile
3848 src/security/cert_validators/Makefile
3849 src/security/cert_validators/fake/Makefile
3850 src/servers/Makefile
3854 src/store/id_rewriters/Makefile
3855 src/store/id_rewriters/file/Makefile
3858 tools/apparmor/Makefile
3859 tools/helper-mux/Makefile
3860 tools/purge/Makefile
3861 tools/squidclient/Makefile
3862 tools/systemd/Makefile
3863 tools/sysvinit/Makefile
3866 # must configure libltdl subdir unconditionally for "make distcheck" to work
3867 #AC_CONFIG_SUBDIRS(libltdl)