1 ## Copyright (C) 1996-2023 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],[7.0.0-VCS],[https://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 dist-xz])
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/ldap.m4])
25 m4_include([acinclude/pam.m4])
26 m4_include([acinclude/pkg.m4])
27 m4_include([acinclude/tdb.m4])
28 m4_include([acinclude/lib-checks.m4])
29 m4_include([acinclude/ax_cxx_compile_stdcxx.m4])
30 m4_include([acinclude/win32-sspi.m4])
32 PRESET_CFLAGS="$CFLAGS"
33 PRESET_CXXFLAGS="$CXXFLAGS"
34 PRESET_LDFLAGS="$LDFLAGS"
36 dnl Set default LDFLAGS
37 AS_IF([test "x$LDFLAGS" = "x"],[LDFLAGS="-g"])
39 # check for host OS detail
41 AC_MSG_CHECKING([simplified host os])
42 simple_host_os=`echo $host_os|sed 's/[0-9].*//g;s/-.*//g'`
43 squid_host_os_version=`echo $host_os|tr -d "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-"`
44 AS_IF([test -n "$squid_host_os_version"],[
45 squid_host_os="`echo $simple_host_os| sed s/$squid_host_os_version//g`"
47 squid_host_os="$simple_host_os"
49 AC_MSG_RESULT($squid_host_os (version $squid_host_os_version))
50 # on windows squid_host_os is either mingw or cygwin, version is 32
56 # AC_USE_SYSTEM_EXTENSIONS should be called before any macros that run the C compiler.
57 AC_USE_SYSTEM_EXTENSIONS
61 # Clang 3.2 on some CPUs requires -march-native to detect correctly.
62 # GCC 4.3+ can also produce faster executables when its used.
63 # But building inside a virtual machine environment has been found to
64 # cause random Illegal Instruction errors due to mis-detection of CPU.
65 AC_ARG_ENABLE(arch-native,
66 AS_HELP_STRING([--disable-arch-native],[Some compilers offer CPU-specific
67 optimizations with the -march=native parameter.
68 This flag disables the optimization. The default is to
69 auto-detect compiler support and use where available.]), [
70 SQUID_YESNO([$enableval],[--enable-arch-native])
72 AC_MSG_NOTICE([CPU arch native optimization enabled: ${enable_arch_native:=auto}])
73 AS_IF([test "x${enable_arch_native}" != "xno"],[
74 SQUID_CC_CHECK_ARGUMENT([squid_cv_check_marchnative],[-march=native])
77 # If the user did not specify a C++ version.
78 user_cxx=`echo "$PRESET_CXXFLAGS" | grep -o -E "(-)std="`
79 AS_IF([test "x$user_cxx" = "x"],[
80 # Check for C++17 compiler support
82 AX_CXX_COMPILE_STDCXX([17],[noext],[mandatory])
85 # Prerequisite: CXX has been finalized.
86 # BUILDCXXFLAGS are defined later, after CXXFLAGS have been finalized.
87 AC_ARG_VAR([BUILDCXX],[path to compiler for building compile-time tools. e.g. cf_gen])
88 AS_IF([test "x$HOSTCXX" != "x" -a "x$BUILDCXX" = "x"],[
89 AC_MSG_WARN([Cross-compiling with HOSTCXX is deprecated. Use BUILDCXX instead.])
92 AS_IF([test "x$BUILDCXX" = "x"],[
94 AS_IF([test "x$squid_cv_check_marchnative" = "xyes"],[
95 CXXFLAGS="$CXXFLAGS -march=native"
107 AC_PATH_PROG(SH, sh, /bin/sh)
108 AC_PATH_PROG(FALSE, false, /usr/bin/false)
109 AC_PATH_PROG(TRUE, true, /usr/bin/true)
110 AC_PATH_PROG(MV, mv, $FALSE)
111 AC_PATH_PROG(MKDIR, mkdir, $FALSE)
112 AC_PATH_PROG(LN, ln, cp)
113 AC_PATH_PROG(CHMOD, chmod, $FALSE)
114 AC_PATH_PROG(TR, tr, $FALSE)
115 AC_PATH_PROG(RM, rm, $FALSE)
116 dnl Libtool 2.2.6 requires: rm -f
121 AC_PATH_PROG(PERL, perl, none)
122 AS_IF([test "x$ac_cv_path_PERL" = "xnone"],[
123 AC_MSG_FAILURE([Perl is required to compile Squid. Please install Perl and then re-run configure ])
125 AC_PATH_PROG(POD2MAN, pod2man, $FALSE)
126 AM_CONDITIONAL(ENABLE_POD2MAN_DOC, test "x${ac_cv_path_POD2MAN}" != "x$FALSE")
128 AC_PATH_PROG(AR, ar, $FALSE)
132 AC_PATH_PROG(LINUXDOC, linuxdoc, $FALSE)
133 AM_CONDITIONAL(ENABLE_RELEASE_DOCS, test "x${ac_cv_path_LINUXDOC}" != "x$FALSE")
135 SQUID_RELEASE=`echo $VERSION | cut -d. -f1`
136 AC_SUBST(SQUID_RELEASE)
138 # pre-define DEFAULT_PREFIX, some modules need it.
139 AS_IF([test "${prefix}" = "NONE"],[squid_prefix=$ac_default_prefix],[squid_prefix=$prefix])
140 AC_DEFINE_UNQUOTED(DEFAULT_PREFIX,[$squid_prefix],[The install prefix])
142 AC_ARG_ENABLE(strict-error-checking,
143 AS_HELP_STRING([--disable-strict-error-checking],[By default squid is compiled
144 with all possible static compiler error-checks enabled.
145 This flag disables the behavior]), [
146 SQUID_YESNO([$enableval],[--enable-strict-error-checking])
148 AC_MSG_NOTICE([strict error checking enabled: ${enable_strict_error_checking:=yes}])
150 # LT_INIT requires libtool v2, might as well state it loud
153 AS_IF([test "x$ac_top_build_prefix" != "x"],[
154 # LTDL v3-v7 macros assume the autoconf 2.62 variable top_build_prefix is defined
155 # But from autoconf 2.64 its called ac_top_build_prefix and not automatically added to the Makefile
156 # This fixes Linux LTDLv3-v7, and BSD LTDL v2.2
157 top_build_prefix=${ac_top_build_prefix}
158 AC_SUBST(top_build_prefix)
162 dnl LibTool environment is now prepared for setup. Check that it is usable and initialize.
165 # Do we need these unconditionally for "make distcheck" to work?
169 AC_MSG_CHECKING(whether to use loadable modules)
170 AS_IF([test "x${enable_shared:=yes}" = "xyes"],[AC_DEFINE(USE_LOADABLE_MODULES,1,[Support Loadable Modules])])
171 AM_CONDITIONAL(ENABLE_LOADABLE_MODULES, test "x${enable_shared:=yes}" = "xyes")
172 AC_MSG_RESULT([$enable_shared])
174 SQUID_CC_GUESS_VARIANT
175 SQUID_CC_GUESS_OPTIONS
177 dnl find out the exe extension for this platform.
178 dnl If it is not empty, use it for CGI as well.
181 AS_IF([test "x$EXEEXT" = "x"],[CGIEXT=".cgi"],[CGIEXT=""])
184 AM_CONDITIONAL(ENABLE_WIN32SPECIFIC,[test "x$squid_host_os" = "xmingw"])
185 AM_CONDITIONAL(ENABLE_WIN32_IPC,[test "x$squid_host_os" = "xmingw"])
187 AS_CASE(["$squid_host_os"],
189 CFLAGS="$CFLAGS -mthreads"
190 CXXFLAGS="$CXXFLAGS -mthreads -static-libgcc -static-libstdc++"
191 dnl Check for Winsock only on MinGW
192 SQUID_CHECK_WINSOCK_LIB
193 AC_CHECK_HEADERS([ws2tcpip.h winsock2.h windows.h io.h],,,[
195 #include <ws2tcpip.h>
198 #include <winsock2.h>
204 MINGW_LIBS="-lmingwex"
206 AC_CHECK_FUNCS([fsync])
210 # FreeBSD places local libraries and packages in /usr/local
211 CFLAGS="$CFLAGS -I/usr/local/include"
212 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
213 LDFLAGS="$LDFLAGS -L/usr/local/lib -Wl,-R/usr/local/lib"
218 AC_DEFINE_UNQUOTED(CONFIG_HOST_TYPE, "$host",[Host type from configure])
220 AC_DEFINE_UNQUOTED(SQUID_CONFIGURE_OPTIONS, "$ac_configure_args",
221 [configure command line used to configure Squid])
223 CACHE_EFFECTIVE_USER="nobody"
224 AC_ARG_WITH(default-user,
225 AS_HELP_STRING([--with-default-user=USER],[System user account for squid permissions. Default: nobody]),
226 [ CACHE_EFFECTIVE_USER="$withval" ]
228 AC_SUBST(CACHE_EFFECTIVE_USER)
230 DEFAULT_LOG_DIR="$localstatedir/logs"
232 AS_HELP_STRING([--with-logdir=PATH],
233 [Default location for squid logs. default: PREFIX/var/logs]),[
235 [yes|no],[AC_MSG_ERROR([--with-logdir requires a directory PATH. --with-logdir=PATH])],
236 [DEFAULT_LOG_DIR="$withval"]
239 AC_SUBST(DEFAULT_LOG_DIR)
241 DEFAULT_PID_FILE="$localstatedir/run/@SERVICE_NAME@.pid"
243 AS_HELP_STRING([--with-pidfile=PATH],
244 [Default location for squid pid file. Default: PREFIX/var/run/squid.pid]),[
246 [yes|no],[AC_MSG_ERROR([--with-pidfile requires a file PATH. --with-pidfile=PATH])],
247 [DEFAULT_PID_FILE="$withval"]
250 AC_SUBST(DEFAULT_PID_FILE)
252 DEFAULT_SWAP_DIR="$localstatedir/cache/squid"
254 AS_HELP_STRING([--with-swapdir=PATH],
255 [Default location for squid cache directories. Default: PREFIX/var/cache/squid]),[
257 [yes|no],[AC_MSG_ERROR([--with-swapdir requires a directory PATH. --with-swapdir=PATH])],
258 [DEFAULT_SWAP_DIR="$withval"]
261 AC_SUBST(DEFAULT_SWAP_DIR)
263 dnl Set Default CFLAGS
264 AS_IF([test "x$PRESET_CFLAGS" = "x"],[
265 AS_IF([test "$squid_cv_compiler" = "gcc"],[
266 # TODO check if these exceptions are still necessary
269 # sunos has too many warnings for -Wall to be useful
271 [CFLAGS="$squid_cv_cc_option_wall $CFLAGS"]
275 [*mips-sgi-irix6.*],[
276 # suggested by Rafael Seidl <rafaels@cthulhu.engr.sgi.com>
277 CFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
278 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
279 -Wl,-woff,85,-woff,84,-woff,134 \
280 -nostdinc -I/usr/include -D_BSD_SIGNALS $CFLAGS"
281 CXXFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
282 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
283 -Wl,-woff,85,-woff,84,-woff,134 \
284 -nostdinc -I/usr/include -D_BSD_SIGNALS $CXXFLAGS"
289 AC_MSG_CHECKING([compiler name-version])
290 squid_cv_cc_name=`$CC --version | head -1 | cut -f1 -d" "`
291 AS_CASE([$squid_cv_cc_name],
292 [gcc|clang],[squid_cv_cc_majversion=`$CC -dumpversion | cut -f1 -d.`],
293 [squid_cv_cc_majversion="unknown"]
295 squid_cv_cc_simplified="$squid_cv_cc_name-$squid_cv_cc_majversion"
296 AC_MSG_RESULT($squid_cv_cc_simplified)
301 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([$squid_cv_cc_option_wall])
304 AS_IF([test "$squid_cv_cc_simplified" = "gcc-4"],[
305 AC_MSG_NOTICE([skipping -Wextra on $squid_cv_cc_simplified])
307 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wextra])
309 # Now disable or configure certain warnings enabled by -Wextra
311 # -Wunused-private-field causes a huge number of false positives
312 # in unit tests. Disable that
313 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wno-unused-private-field])
315 # ...=5: Do not trust comments about fallthrough cases (GCC).
316 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wimplicit-fallthrough=5])
317 AS_IF([test "x$squid_cv_cc_arg_wimplicit_fallthrough_5" != "xyes"], [
318 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wno-implicit-fallthrough])
322 # useful warnings that may not be included in -Wall -Wextra
323 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wpointer-arith])
324 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wwrite-strings])
325 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wcomments])
326 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wshadow])
327 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wmissing-declarations])
328 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Woverloaded-virtual])
330 dnl CentOS (and RHEL) still define ntohs() using deprecated C++ features
331 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_wno_deprecated_register],[-Werror -Wno-deprecated-register],[[#include <arpa/inet.h>]],[[int fox=ntohs(1);]])
333 AS_IF([test "x$enable_strict_error_checking" != "xno"],[
334 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_option_werror"
335 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cxx_option_werror"
338 AS_IF([test "x$ac_cv_require_wno_deprecated_register" = "xyes"],[
339 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -Wno-deprecated-register"
342 # squid_cv_cc_arg_pipe is set by SQUID_CC_GUESS_OPTIONS
343 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cc_arg_pipe"
344 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_arg_pipe"
346 # possibly include some build info tag into squid -v
347 SQUID_EMBED_BUILD_INFO
349 AC_ARG_ENABLE(optimizations,
350 AS_HELP_STRING([--disable-optimizations],
351 [Do not compile Squid with compiler optimizations enabled.
352 Optimization is good for production builds, but not
353 good for debugging. During development, use
354 --disable-optimizations to reduce compilation times
355 and allow easier debugging.]), [
356 AS_IF([test "x$enableval" = "xno"],[
357 AC_MSG_NOTICE([Disabling compiler optimizations (-O flag)])
358 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9g]]*//'`"
359 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-O[[0-9g]]*//'`"
363 dnl Nasty hack to get autoconf 2.64 on Linux to run.
364 dnl all other uses of RUN_IFELSE are wrapped inside CACHE_CHECK which breaks on 2.64
365 AC_RUN_IFELSE([AC_LANG_SOURCE([[ int main(int argc, char **argv) { return 0; } ]])],[],[],[:])
367 AH_TEMPLATE(XMALLOC_STATISTICS,[Define to have malloc statistics])
368 AC_ARG_ENABLE(xmalloc-statistics,
369 AS_HELP_STRING([--enable-xmalloc-statistics],
370 [Show malloc statistics in status page]), [
371 SQUID_YESNO([$enableval],[--enable-xmalloc-statistics])
373 SQUID_DEFINE_BOOL(XMALLOC_STATISTICS,${enable_xmalloc_statistics:=no},
374 [Show malloc statistics in status page])
375 AC_MSG_NOTICE([xmalloc stats display: $enable_xmalloc_statistics])
377 squid_opt_aufs_threads=""
378 AC_ARG_WITH(aufs-threads,
379 AS_HELP_STRING([--with-aufs-threads=N_THREADS],
380 [Tune the number of worker threads for the aufs object store.]), [
382 [@<:@0-9@:>@*],[squid_opt_aufs_threads=$withval],
383 AC_MSG_ERROR(--with-aufs-threads expects a numeric argument)
386 AS_IF([test "x$squid_opt_aufs_threads" != "x"],[
387 AC_MSG_NOTICE([With $squid_opt_aufs_threads aufs threads])
388 AC_DEFINE_UNQUOTED(AUFS_IO_THREADS,$squid_opt_aufs_threads,
389 [Defines how many threads aufs uses for I/O])
392 ## TODO check if this is necessary, LT_INIT does these checks
393 SQUID_AUTO_LIB(dl,[dynamic linking],[LIBDL])
394 SQUID_CHECK_LIB_WORKS(dl,[
395 LDFLAGS="$LIBDL_PATH $LDFLAGS"
396 AC_CHECK_LIB(dl, dlopen,[LIBDL_LIBS="-ldl"])
397 LIBS="$LIBDL_LIBS $LIBS"
400 AC_DEFUN([LIBATOMIC_CHECKER],[
401 AC_MSG_CHECKING(whether linking $1 -latomic works)
407 main(int argc, char **) {
409 std::atomic<uint8_t>(uint8_t(argc)).exchange(0) &&
410 std::atomic<uint64_t>{}.is_lock_free()
415 libatomic_checker_result="yes"],[
417 libatomic_checker_result="no"
420 ## check for atomics library before anything that might need it
421 SQUID_STATE_SAVE(LIBATOMIC)
422 LIBATOMIC_CHECKER(without)
423 AS_IF([test "x$libatomic_checker_result" = "xno"],[
424 LIBS="$LIBS -latomic"
425 LIBATOMIC_CHECKER(with)
426 AS_IF([test "x$libatomic_checker_result" = "xyes"],[
427 ATOMICLIB="-latomic"],[
428 AC_MSG_ERROR([Required library libatomic not found.])
430 SQUID_STATE_ROLLBACK(LIBATOMIC)
433 SQUID_AUTO_LIB(psapi,[Windows PSAPI.dll],[LIBPSAPI])
434 AS_IF([test "x$with_psapi" != "xno"],[
435 SQUID_STATE_SAVE(squid_psapi_state)
436 CPPFLAGS="$LIBPSAPI_CFLAGS $CPPFLAGS"
437 LIBS="$LIBPSAPI_PATH $LIBS"
438 AC_CHECK_LIB([psapi],[K32GetProcessMemoryInfo],[LIBPSAPI_LIBS="-lpsapi"])
439 AC_CHECK_HEADER([psapi.h],,,[
444 SQUID_STATE_ROLLBACK(squid_psapi_state)
445 AS_IF([test "x$LIBPSAPI_LIBS" != "x"],[
446 CXXFLAGS="$LIBPSAPI_CFLAGS $CXXFLAGS"
447 LIBPSAPI_LIBS="$LIBPSAPI_PATH $LIBPSAPI_LIBS"
448 ],[test "x$with_psapi" = "xyes"],[
449 AC_MSG_ERROR([Required library PSAPI.dll not found])
451 AC_MSG_NOTICE([Library PSAPI.dll not found.])
454 AC_MSG_NOTICE([Using Windows PSAPI.dll library: ${with_psapi:=auto}])
455 AC_SUBST(LIBPSAPI_LIBS)
457 AC_SEARCH_LIBS([shm_open], [rt])
458 AS_IF([test "x$ac_cv_search_shm_open" != "xno"],[
459 AC_DEFINE(HAVE_SHM,1,[Support shared memory features])
462 squid_disk_module_candidates=
463 AC_ARG_ENABLE(disk-io,
464 AS_HELP_STRING([--enable-disk-io="list of modules"],
465 [Build support for the list of disk I/O modules.
466 Set without a value or omitted, all available modules will be built.
467 See src/DiskIO for a list of available modules, or
468 Programmers Guide section on DiskIO
469 for details on how to build your custom disk module]),
470 AS_CASE(["$enableval"],
472 [no|none],[enable_disk_io="no"],
475 squid_disk_module_candidates="$enableval"
478 AS_IF([test "x${enable_disk_io:=yes}" = "xyes"],[
479 SQUID_LOOK_FOR_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
480 AS_IF([test "x$ac_cv_search_shm_open" = "xno"],[
481 squid_disk_module_candidates=`echo "$squid_disk_module_candidates" | sed 's/IpcIo//g'`
484 SQUID_CLEANUP_MODULES_LIST([squid_disk_module_candidates])
485 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
486 AC_MSG_NOTICE([DiskIO modules built: ${squid_disk_module_candidates:-none}])
487 SQUID_DEFINE_BOOL(USE_DISKIO,$enable_disk_io,[DiskIO modules are expected to be available.])
489 dnl Some autoconf.h defines we might enable later...
490 AC_ARG_WITH(pthreads,AS_HELP_STRING([--without-pthreads],[Disable POSIX Threads]))
491 AC_ARG_WITH(aio, AS_HELP_STRING([--without-aio],[Do not use POSIX AIO. Default: auto-detect]))
494 squid_opt_use_diskthreads=
497 dnl Setup the module paths etc.
500 AH_TEMPLATE(HAVE_DISKIO_MODULE_AIO, [Whether POSIX AIO Disk I/O module is built])
501 AH_TEMPLATE(HAVE_DISKIO_MODULE_BLOCKING, [Whether Blocking Disk I/O module is built])
502 AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKDAEMON, [Whether DiskDaemon Disk I/O module is built])
503 AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKTHREADS, [Whether DiskThreads Disk I/O module is built])
504 AH_TEMPLATE(HAVE_DISKIO_MODULE_IPCIO, [Whether IpcIo Disk I/O module is built])
505 AH_TEMPLATE(HAVE_DISKIO_MODULE_MMAPPED, [Whether Mmapped Disk I/O module is built])
506 for module in $squid_disk_module_candidates none; do
508 AS_IF([test "x$module" = "xnone"],[continue])
509 AS_IF([! test -d "$srcdir/src/DiskIO/$module"],[AC_MSG_ERROR([disk-io $module does not exist])])
512 dnl Check for POSIX AIO availability
513 squid_opt_use_aio="yes"
515 AS_IF([test "x$with_aio" != "xno"],[
517 AC_CHECK_HEADERS(aio.h,[have_aio_header=yes])
518 dnl On some systems POSIX AIO functions are in librt
519 dnl On some systems POSIX AIO functions are in libaio
520 AC_CHECK_LIB(rt,aio_read,[AIOLIB="-lrt"],AC_CHECK_LIB(aio,aio_read,[AIOLIB="-laio"],[]))
521 dnl Enable AIO if the library and headers are found
522 AS_IF([test "x$AIOLIB" != "x" -a "x$have_aio_header" = "xyes"],[
523 AC_MSG_NOTICE([Native POSIX AIO support detected.])
524 squid_opt_use_aio="yes"
526 dnl Windows does things differently. We provide wrappers.
527 dnl TODO: Windows really needs its own DiskIO module or its Overlaped IO
528 AS_IF([test "$squid_host_os" = "mingw"],[
529 squid_opt_use_aio="yes"
530 AC_MSG_NOTICE([Windows being built. Maybe-enable POSIX AIO.])
532 squid_opt_use_aio="no"
533 AC_MSG_NOTICE([Native POSIX AIO support not detected. AIO automatically disabled.])
537 AC_MSG_NOTICE([POSIX AIO support manually disabled.])
538 squid_opt_use_aio="no"
540 dnl Use the POSIX AIO pieces if we actually need them.
541 AS_IF([test "x$squid_opt_use_aio" = "xyes"],[
542 DISK_MODULES="$DISK_MODULES AIO"
543 AC_DEFINE([HAVE_DISKIO_MODULE_AIO],1,[POSIX AIO Disk I/O module is built])
544 AS_IF([test "$squid_host_os" = "mingw"],[
546 AC_MSG_NOTICE([Replacing AIO DiskIO module with: Windows overlapped I/O support])
548 AC_MSG_NOTICE([Enabling AIO DiskIO module])
551 AC_MSG_NOTICE([AIO DiskIO Module disabled. Missing POSIX AIO support.])
552 squid_disk_module_candidates_AIO=no
557 AC_MSG_NOTICE([Enabling Blocking DiskIO module])
558 DISK_MODULES="$DISK_MODULES Blocking"
559 AC_DEFINE([HAVE_DISKIO_MODULE_BLOCKING],1,[Blocking Disk I/O module is built])
563 AS_IF([test "$squid_host_os" = "mingw"],[
564 AC_MSG_NOTICE([DiskDaemon not supported on MinGW])
565 squid_disk_module_candidates_DiskDaemon=no
567 AC_MSG_NOTICE([Enabling DiskDaemon DiskIO module])
568 DISK_MODULES="$DISK_MODULES DiskDaemon"
569 AC_DEFINE([HAVE_DISKIO_MODULE_DISKDAEMON],1,[DiskDaemon Disk I/O module is built])
574 squid_opt_use_diskthreads="yes"
576 SQUID_STATE_SAVE([diskthreads_state],[SQUID_CFLAGS SQUID_CXXFLAGS])
577 AS_IF([test "x$with_pthreads" != "xno"],[
578 dnl TODO: this needs to be extended to handle more systems and better
579 dnl REF: http://www.openldap.org/lists/openldap-bugs/200006/msg00070.html
580 dnl REF: http://autoconf-archive.cryp.to/acx_pthread.html
581 AS_CASE(["$squid_host_os"],
584 AC_MSG_NOTICE([Windows threads support automatically enabled])
588 AS_IF([test `echo "$squid_host_os_version" | tr -d .` -lt 70],[
589 AC_MSG_NOTICE(pthread library requires FreeBSD 7 or later)
590 squid_opt_use_diskthreads="no"
592 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
593 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
594 AS_IF([test "x$GCC" = "xyes" -a "x$PRESET_LDFLAGS" = "x"],[LDFLAGS="$LDFLAGS -pthread"])
599 AS_IF([test `echo "$squid_host_os_version" | tr -d .` -lt 52],[
600 AC_MSG_NOTICE(pthread library requires OpenBSD 5.2 or later)
601 squid_opt_use_diskthreads="no"
603 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
604 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
605 LDFLAGS="$LDFLAGS -lpthread"
610 AS_IF([test "x$GCC" = "xyes"],[
611 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -pthreads"
612 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -pthreads"
613 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
614 AC_MSG_NOTICE(pthread library required but cannot be found.)
615 squid_opt_use_diskthreads="no"
618 dnl test for -lpthread first. libc version is a stub apparently on Solaris.
619 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -lpthread"
620 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -lpthread"
621 AC_SEARCH_LIBS([pthread_create],[pthread thread],[
622 LIBPTHREADS="" #in LIBS
624 AC_MSG_NOTICE(pthread library required but cannot be found.)
625 squid_opt_use_diskthreads="no"
631 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
632 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
633 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
634 AC_MSG_NOTICE(pthread library required but cannot be found.)
635 squid_opt_use_diskthreads="no"
640 AC_MSG_NOTICE([Native pthreads support manually disabled.])
641 squid_opt_use_diskthreads="no"
643 AS_IF([test "x$squid_opt_use_diskthreads" = "xyes"],[
644 AC_MSG_NOTICE([Enabling DiskThreads DiskIO module])
645 DISK_MODULES="$DISK_MODULES DiskThreads"
646 AC_DEFINE([HAVE_DISKIO_MODULE_DISKTHREADS],1,[DiskThreads Disk I/O module is built])
648 AC_MSG_NOTICE([Native pthreads support disabled. DiskThreads module automaticaly disabled.])
649 SQUID_STATE_ROLLBACK([diskthreads_state])
650 squid_disk_module_candidates_DiskThreads=no
655 AS_IF([test "x$ac_cv_search_shm_open" = "xno"],[
656 AC_MSG_NOTICE([DiskIO IpcIo module requires shared memory support])
657 squid_disk_module_candidates_IpcIo=no
659 AC_MSG_NOTICE([Enabling IpcIo DiskIO module])
660 DISK_MODULES="$DISK_MODULES IpcIo"
661 AC_DEFINE([HAVE_DISKIO_MODULE_IPCIO],1,[IpcIo Disk I/O module is built])
666 dnl TODO: use availability of sys/mman.h and/or mmap to define
667 dnl OR support windows mmap functions
668 AS_IF([test "x$squid_host_os" = "xmingw"],[
669 AC_MSG_NOTICE([Mmapped DiskIO is not available on Mingw])
670 squid_disk_module_candidates_Mmapped=no
672 AC_MSG_NOTICE([Enabling Mmapped DiskIO module])
673 DISK_MODULES="$DISK_MODULES Mmapped"
674 AC_DEFINE([HAVE_DISKIO_MODULE_MMAPPED],1,[Mmapped Disk I/O module is built])
679 AC_MSG_NOTICE([Enabling $module DiskIO module])
680 DISK_LIBS="$DISK_LIBS lib${module}.la"
681 DISK_MODULES="$DISK_MODULES ${module}"
684 AC_MSG_NOTICE([IO Modules built: $DISK_MODULES])
685 AC_SUBST(DISK_MODULES)
687 AM_CONDITIONAL(ENABLE_DISKIO_AIO, test "x$squid_disk_module_candidates_AIO" = "xyes")
689 AM_CONDITIONAL(ENABLE_WIN32_AIO, test "x$squid_disk_module_candidates_AIO" = "xyes" -a "x$ENABLE_WIN32_AIO" = "x1")
690 AM_CONDITIONAL(ENABLE_DISKIO_BLOCKING, test "x$squid_disk_module_candidates_Blocking" = "xyes")
691 AM_CONDITIONAL(ENABLE_DISKIO_DISKDAEMON, test "x$squid_disk_module_candidates_DiskDaemon" = "xyes")
692 AM_CONDITIONAL(ENABLE_DISKIO_DISKTHREADS, test "x$squid_disk_module_candidates_DiskThreads" = "xyes")
693 AC_SUBST(LIBPTHREADS)
694 AM_CONDITIONAL(ENABLE_WIN32_AIOPS, test "x$squid_disk_module_candidates_DiskThreads" = "xyes" -a "x$ENABLE_WIN32_AIOPS" = "x1")
695 AM_CONDITIONAL(ENABLE_DISKIO_IPCIO, test "x$squid_disk_module_candidates_IpcIo" = "xyes")
696 AM_CONDITIONAL(ENABLE_DISKIO_MMAPPED, test "x$squid_disk_module_candidates_Mmapped" = "xyes")
698 dnl Check what Storage formats are wanted.
699 dnl This version will error out with a message saying why if a required DiskIO is missing.
700 AC_ARG_ENABLE([storeio],
701 AS_HELP_STRING([--enable-storeio="list of modules"],
702 [Build support for the list of store I/O modules.
703 The default is only to build the "ufs" module.
704 See src/fs for a list of available modules, or
705 Programmers Guide section <not yet written>
706 for details on how to build your custom store module]), [
707 AS_CASE(["$enableval"],
709 [no|none],[enable_storeio="no"],
712 # ufs is really always needed as it has low-level routines
713 # if it is a dupe it will be cleaned-up later
714 squid_storeio_module_candidates="$enableval ufs"
717 AS_IF([test "x${enable_storeio:=yes}" = "xyes"],[
718 SQUID_LOOK_FOR_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
720 SQUID_CLEANUP_MODULES_LIST([squid_storeio_module_candidates])
721 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
722 AC_MSG_NOTICE([Store modules built: ${squid_storeio_module_candidates:-none}])
724 for fs in ${squid_storeio_module_candidates:-none}; do
727 AS_IF([test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
728 "x$squid_disk_module_candidates_DiskDaemon" != "xyes"],[
729 AC_MSG_ERROR([Storage diskd module requires DiskIO module: Blocking or DiskDaemon])
733 AS_IF([test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
734 "x$squid_disk_module_candidates_DiskThreads" != "xyes"],[
735 AC_MSG_ERROR([Storage module aufs requires DiskIO module: Blocking or DiskThreads])
739 AS_IF([test "x$squid_disk_module_candidates_IpcIo" != "xyes" -a \
740 "x$squid_disk_module_candidates_Blocking" != "xyes"],[
741 AC_MSG_ERROR([Storage module Rock requires DiskIO module: Blocking or IpcIo])
743 squid_do_build_rock=true
746 AS_IF([test "x$squid_disk_module_candidates_Blocking" != "xyes"],[
747 AC_MSG_ERROR([Storage module ufs requires DiskIO module: Blocking])
749 squid_do_build_ufs=true
754 AM_CONDITIONAL(ENABLE_FS_UFS, test "x$squid_do_build_ufs" = "xtrue")
755 AM_CONDITIONAL(ENABLE_FS_ROCK, test "x$squid_do_build_rock" = "xtrue")
756 dnl hack: need to define those even if not used in the build system to
757 dnl make sure that global FS objects are linked to the squid binary.
758 AH_TEMPLATE(HAVE_FS_UFS, "Define to 1 if ufs filesystem module is build")
759 AH_TEMPLATE(HAVE_FS_AUFS, "Define to 1 if aufs filesystem module is build")
760 AH_TEMPLATE(HAVE_FS_DISKD, "Define to 1 if diskd filesystem module is build")
761 AH_TEMPLATE(HAVE_FS_ROCK, "Define to 1 if rock filesystem module is build")
764 dnl got final squid_storeio_module_candidates, build library lists
765 dnl This list will not be needed when each fs library has its own Makefile
767 dnl File system libraries to link executables with.
768 dnl These are the same as STORE_LIBS_TO_BUILD, but with a path
770 for fs in $squid_storeio_module_candidates; do
771 STORE_LIBS_TO_BUILD="$STORE_LIBS_TO_BUILD lib${fs}.la"
772 STORE_LIBS_TO_ADD="$STORE_LIBS_TO_ADD fs/lib${fs}.la"
773 SQUID_TOUPPER_VAR_CONTENTS([fs])
774 AC_DEFINE_UNQUOTED(HAVE_FS_${fs}, 1)
777 AC_SUBST(STORE_LIBS_TO_BUILD)
778 AC_SUBST(STORE_LIBS_TO_ADD)
779 AC_SUBST(STORE_TESTS)
782 dnl At lest one removal policy is always needed.
783 dnl 'lru' removal policy is currently hard-coded by name for tests
784 dnl so we must set it as default.
786 AC_ARG_ENABLE(removal-policies,
787 AS_HELP_STRING([--enable-removal-policies="list of policies"],
788 [Build support for the list of removal policies.
789 The default is only to build the "lru" module.
790 See src/repl for a list of available modules, or
791 Programmers Guide section 9.9 for details on how
792 to build your custom policy]), [
793 AS_CASE(["$enableval"],
794 [yes],[ SQUID_LOOK_FOR_MODULES([$srcdir/src/repl],[REPL_POLICIES]) ],
796 [ REPL_POLICIES="$enableval" ]
799 SQUID_CLEANUP_MODULES_LIST([REPL_POLICIES])
800 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/repl],[REPL_POLICIES])
801 AC_MSG_NOTICE([Removal policies to build: $REPL_POLICIES])
802 REPL_OBJS="repl/lib`echo \"$REPL_POLICIES\" | sed -e 's% %.a repl/lib%g'`.a"
803 REPL_LIBS=`echo "$REPL_OBJS" | sed -e 's%repl/%%g'`
804 AC_SUBST(REPL_POLICIES)
808 AM_CONDITIONAL(ENABLE_PINGER, false)
810 AS_HELP_STRING([--enable-icmp],[Enable ICMP pinging and Network Measurement]),[
811 AS_IF([test "x$enableval" = "xyes"],[
812 AC_MSG_NOTICE([ICMP enabled])
813 AC_DEFINE(USE_ICMP,1,[Define to use Squid ICMP and Network Measurement features (highly recommended!)])
814 AM_CONDITIONAL(ENABLE_PINGER, true)
818 AM_CONDITIONAL(ENABLE_DELAY_POOLS, false)
819 AC_ARG_ENABLE(delay-pools,
820 AS_HELP_STRING([--enable-delay-pools],[Enable delay pools to limit bandwidth usage]),[
821 AS_IF([test "x$enableval" = "xyes"],[
822 AC_MSG_NOTICE([Delay pools enabled])
823 AC_DEFINE([USE_DELAY_POOLS],1,[Traffic management via "delay pools".])
824 AM_CONDITIONAL(ENABLE_DELAY_POOLS, true)
828 dnl disable generic/common adaptation support by default
829 squid_opt_use_adaptation=no
831 squid_opt_use_esi=auto
832 AH_TEMPLATE([USE_SQUID_ESI],[Define to enable the ESI processor])
834 AS_HELP_STRING([--disable-esi],
835 [Disable ESI for accelerators. ESI requires expat or xml2 library.
836 Enabling ESI will cause squid reverse proxies to be capable
837 of the Edge Acceleration Specification (www.esi.org).]),
838 [squid_opt_use_esi=$enableval],[])
840 # ESI support libraries: expat
841 AH_TEMPLATE(HAVE_LIBEXPAT,[Define to 1 if you have the expat library])
842 SQUID_AUTO_LIB(expat,[ESI expat library],[LIBEXPAT])
843 AS_IF([test "x$squid_opt_use_esi" != "xno" -a "x$with_expat" != "xno"],[
844 SQUID_STATE_SAVE(squid_expat_state)
845 PKG_CHECK_MODULES([LIBEXPAT],[expat],[],[
846 AC_CHECK_LIB([expat],[main],[LIBEXPAT_LIBS="-lexpat"])
848 CPPFLAGS="$LIBEXPAT_CFLAGS $CPPFLAGS"
849 AC_CHECK_HEADERS(expat.h)
850 SQUID_STATE_ROLLBACK(squid_expat_state)
851 AS_IF([test "x$LIBEXPAT_LIBS" != "x"],[
852 squid_opt_use_esi=yes
853 LIBEXPAT_LIBS="$LIBEXPAT_PATH $LIBEXPAT_LIBS"
854 AC_DEFINE(HAVE_LIBEXPAT,1,[Define to 1 if you have the expat library])
856 [test "x$with_expat" = "xyes"],[AC_MSG_ERROR([Required library expat not found.])],
857 [AC_MSG_NOTICE([Library expat not found.])]
860 AM_CONDITIONAL(ENABLE_LIBEXPAT,[test "x$LIBEXPAT_LIBS" != "x"])
861 AC_SUBST(LIBEXPAT_LIBS)
863 # ESI support libraries: xml2
864 AH_TEMPLATE(HAVE_LIBXML2,[Define to 1 if you have the xml2 library])
865 SQUID_AUTO_LIB(xml2,[ESI xml2 library],[LIBXML2])
866 AS_IF([test "x$squid_opt_use_esi" != "xno" -a "x$with_xml2" != "xno"],[
867 SQUID_STATE_SAVE([squid_libxml2_save])
868 PKG_CHECK_MODULES([LIBXML2],[libxml-2.0],[],[
869 AC_CHECK_LIB([xml2],[main],[LIBXML2_LIBS="$LIBXML2_PATH -lxml2"])
871 CPPFLAGS="$LIBXML2_CFLAGS $CPPFLAGS"
872 AC_CHECK_HEADERS(libxml/parser.h libxml/HTMLparser.h libxml/HTMLtree.h)
873 SQUID_STATE_ROLLBACK([squid_libxml2_save])
875 AS_IF([test "x$LIBXML2_LIBS" != "x"],[
876 squid_opt_use_esi=yes
877 CPPFLAGS="$LIBXML2_CFLAGS $CPPFLAGS"
878 LIBXML2_LIBS="$LIBXML2_PATH $LIBXML2_LIBS"
879 AC_DEFINE(HAVE_LIBXML2,1,[Define to 1 if you have the xml2 library])
880 ],[test "x$with_xml2" = "xyes"],[
881 AC_MSG_ERROR([Required library xml2 not found])
883 AC_MSG_NOTICE([Library xml2 not found.])
886 AM_CONDITIONAL(ENABLE_LIBXML2,[test "x$LIBXML2_LIBS" != "x"])
887 AC_SUBST(LIBXML2_LIBS)
889 AS_IF([test "x$squid_opt_use_esi" = "xyes"],[
890 AS_IF([test "x$LIBXML2_LIBS" = "x" -a "x$LIBEXPAT_LIBS" = "x"],[
891 AC_MSG_ERROR([ESI processor requires libxml2 or libexpat])
893 AC_MSG_NOTICE([Enabling ESI processor: $LIBEXPAT_LIBS $LIBXML2_LIBS])
894 AC_DEFINE(USE_SQUID_ESI,1,[Compile the ESI processor])
896 AS_IF(test "x$squid_opt_use_esi" = "xno",[
897 AC_MSG_NOTICE([Disabling ESI processor.])
899 AC_MSG_NOTICE([Disabling ESI processor. libxml2 and libexpat not found.])
902 AM_CONDITIONAL(ENABLE_ESI, test "x$squid_opt_use_esi" = "xyes")
904 AC_ARG_ENABLE(icap-client,
905 AS_HELP_STRING([--disable-icap-client],[Disable the ICAP client.]),[
906 SQUID_YESNO([$enableval],[--enable-icap-client])
908 SQUID_DEFINE_BOOL(ICAP_CLIENT,${enable_icap_client:=yes}, [Enable ICAP client features in Squid])
909 AS_IF(test "x$enable_icap_client" != "xno", squid_opt_use_adaptation="yes")
910 AM_CONDITIONAL(ENABLE_ICAP_CLIENT, test "x$enable_icap_client" != "xno")
913 AS_HELP_STRING([--enable-ecap],[support loadable content adaptation modules]),[
914 SQUID_YESNO([$enableval],[--enable-ecap])],[
917 dnl Perform configuration consistency checks for eCAP
918 AS_IF([test "x$enable_ecap" != "xno"],[
919 AS_IF([test "x$enable_shared" != "xyes"],[
920 AC_MSG_ERROR([eCAP support requires loadable modules. Please do not use --disable-shared with --enable-ecap.])
923 AS_IF([test -n "$PKG_CONFIG"],[
924 dnl eCAP support requires libecap.
925 dnl This Squid supports libecap v1.0.x.
926 dnl Use EXT_ prefix to distinguish external libecap (that we check for
927 dnl here) from our own convenience ecap library in Makefiles.
928 PKG_CHECK_MODULES([EXT_LIBECAP],[libecap >= 1.0 libecap < 1.1])
930 AC_MSG_NOTICE([eCAP support requires pkg-config to verify the correct library version. Trouble may follow.])
933 SQUID_STATE_SAVE(squid_ecap_state)
934 AC_MSG_CHECKING([whether -lecap will link])
935 CXXFLAGS="$CXXFLAGS $EXT_LIBECAP_CFLAGS"
936 LIBS="$LIBS $EXT_LIBECAP_LIBS"
937 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <libecap/common/names.h>]],[[
938 const libecap::Name test("test", libecap::Name::NextId());
941 squid_opt_use_adaptation=yes
944 AS_IF([test "x$enable_ecap" = "xyes"],[
945 AC_MSG_ERROR([eCAP library will not link.
946 You may need to rebuild libecap using the same version of GCC as Squid.
947 There have been breaking ABI changes in the libstdc++ STL with GCC 5.])
949 AC_MSG_NOTICE([eCAP library will not link.
950 You may need to rebuild libecap using the same version of GCC as Squid.
951 There have been breaking ABI changes in the libstdc++ STL with GCC 5.])
955 SQUID_STATE_ROLLBACK(squid_ecap_state)
957 SQUID_DEFINE_BOOL(USE_ECAP,${enable_ecap:=no},[Whether to use eCAP support])
958 AM_CONDITIONAL(ENABLE_ECAP, test "x$enable_ecap" = "xyes")
960 dnl enable adaptation if requested by specific adaptation mechanisms
962 AS_IF([test "x$squid_opt_use_adaptation" = "xyes"],[ADAPTATION_LIBS="adaptation/libadaptation.la"])
963 SQUID_DEFINE_BOOL(USE_ADAPTATION,${squid_opt_use_adaptation:=no}, [common adaptation support])
964 AM_CONDITIONAL(ENABLE_ADAPTATION, test "x$squid_opt_use_adaptation" = "xyes")
965 AC_SUBST(ADAPTATION_LIBS)
967 AS_IF([test "x$squid_host_os" = "xmingw"],[enable_wccp=no])
969 AS_HELP_STRING([--disable-wccp],[Disable Web Cache Coordination Protocol]),[
970 SQUID_YESNO([$enableval],[--enable-wccp])
972 SQUID_DEFINE_BOOL(USE_WCCP, ${enable_wccp:=yes}, [Define to enable WCCP])
973 AC_MSG_NOTICE([Web Cache Coordination Protocol enabled: $enable_wccp])
975 AS_IF([test "x$squid_host_os" = "xmingw"],[enable_wccpv2=no])
976 AC_ARG_ENABLE(wccpv2,
977 AS_HELP_STRING([--disable-wccpv2],
978 [Disable Web Cache Coordination V2 Protocol]), [
979 SQUID_YESNO([$enableval],[--enable-wccpv2])
981 SQUID_DEFINE_BOOL(USE_WCCPv2,${enable_wccpv2:=yes},
982 [Define to enable WCCP V2])
983 AC_MSG_NOTICE([Web Cache Coordination V2 Protocol enabled: $enable_wccpv2])
986 AS_HELP_STRING([--disable-snmp],[Disable SNMP monitoring support]), [
987 SQUID_YESNO([$enableval],[--enable-snmp])
989 SQUID_DEFINE_BOOL(SQUID_SNMP,${enable_snmp:=yes},
990 [Define to enable SNMP monitoring of Squid])
991 AM_CONDITIONAL(ENABLE_SNMP, [test "x$enable_snmp" = "xyes"])
992 AS_IF([test "x$enable_snmp" = "xyes"],[SNMPLIB="../lib/snmplib/libsnmplib.la"])
993 AC_MSG_NOTICE([SNMP support enabled: $enable_snmp])
997 AS_HELP_STRING([--disable-eui],
998 [Disable use of ARP / MAC/ EUI (ether address)]), [
999 SQUID_YESNO([$enableval],[--enable-eui])
1001 AS_IF([test "x${enable_eui:=yes}" = "xyes"],[
1002 SQUID_STATE_SAVE(LIBEUI)
1003 # GLIBC 2.30 deprecates sysctl.h. Test with the same flags that (may) break includes later.
1004 CFLAGS=$SQUID_CFLAGS
1005 CXXFLAGS=$SQUID_CXXFLAGS
1006 AS_CASE(["$squid_host_os"],
1007 [linux|solaris|freebsd|openbsd|netbsd|cygwin],[:],
1008 [mingw],[EUILIB="-liphlpapi"],
1009 [AC_MSG_WARN([EUI support probably will not work on host $host.])]
1011 # iphlpapi.h check delayed after winsock2.h
1026 #include <sys/types.h>
1027 #include <sys/socket.h>
1030 # OpenBSD, FreeBSD and NetBSD requires sys/param.h to be included before sysctl.h and net/if_dl.h
1035 #if HAVE_SYS_PARAM_H
1036 #include <sys/param.h>
1039 SQUID_STATE_ROLLBACK(LIBEUI)
1042 AC_MSG_NOTICE([EUI (MAC address) controls enabled: $enable_eui])
1043 SQUID_DEFINE_BOOL(USE_SQUID_EUI,$enable_eui,
1044 [Define this to include code which lets you use ethernet addresses. This code uses API initially defined in 4.4-BSD.])
1045 AM_CONDITIONAL(ENABLE_EUI, [test "x$enable_eui" = "xyes" ])
1049 AS_HELP_STRING([--disable-htcp],[Disable HTCP protocol support]), [
1050 SQUID_YESNO([$enableval],[--enable-htcp])
1052 SQUID_DEFINE_BOOL(USE_HTCP,${enable_htcp:=yes},
1053 [Define this to include code for the Hypertext Cache Protocol (HTCP)])
1054 AM_CONDITIONAL(ENABLE_HTCP, [test "x$enable_htcp" = "xyes"])
1055 AC_MSG_NOTICE([HTCP support enabled: $enable_htcp])
1057 # Cryptograhic libraries
1058 SQUID_AUTO_LIB(nettle,[Nettle crypto],[LIBNETTLE])
1059 SQUID_CHECK_LIB_WORKS(nettle,[
1060 SQUID_STATE_SAVE(squid_nettle_state)
1061 PKG_CHECK_MODULES([LIBNETTLE],[nettle >= 3.4],[
1062 CPPFLAGS="$LIBNETTLE_CFLAGS $CPPFLAGS"
1063 AC_CHECK_HEADERS(nettle/base64.h nettle/md5.h)
1065 SQUID_STATE_ROLLBACK(squid_nettle_state)
1068 dnl Check for libcrypt
1070 dnl Some of our helpers use crypt(3) which may be in libc, or in
1071 dnl libcrypt (eg FreeBSD)
1072 AC_CHECK_LIB(crypt, crypt, [CRYPTLIB="-lcrypt"])
1073 dnl Solaris10 provides MD5 natively through libmd5
1074 AC_CHECK_LIB(md5, MD5Init, [CRYPTLIB="$CRYPTLIB -lmd5"])
1077 SQUID_AUTO_LIB(gnutls,[GnuTLS crypto],[LIBGNUTLS])
1078 SQUID_CHECK_LIB_WORKS(gnutls,[
1079 SQUID_STATE_SAVE(squid_gnutls_state)
1080 PKG_CHECK_MODULES([LIBGNUTLS],[gnutls >= 3.4.0],[
1081 CPPFLAGS="$LIBGNUTLS_CFLAGS $CPPFLAGS"
1082 AC_CHECK_HEADERS(gnutls/gnutls.h gnutls/x509.h gnutls/abstract.h)
1084 SQUID_STATE_ROLLBACK(squid_gnutls_state)
1088 dnl User may specify OpenSSL is needed from a non-standard location
1089 SQUID_OPTIONAL_LIB(openssl,[OpenSSL],[LIBOPENSSL])
1090 AH_TEMPLATE(USE_OPENSSL,[OpenSSL support is available])
1091 ## OpenSSL is default disable due to licensing issues on some OS
1092 AS_IF([test "x$with_openssl" = "xyes"],[
1093 CPPFLAGS="$LIBOPENSSL_CFLAGS $CPPFLAGS"
1105 openssl/opensslv.h \
1115 # User may have provided a custom location for OpenSSL. Otherwise...
1116 SQUID_STATE_SAVE(squid_openssl_state)
1117 LIBS="$LIBS $LIBOPENSSL_PATH"
1119 # auto-detect using pkg-config
1120 PKG_CHECK_MODULES([LIBOPENSSL],[openssl],,[
1121 ## For some OS pkg-config is broken or unavailable.
1122 ## Detect libraries the hard way.
1124 # Windows MinGW has some special libraries ...
1125 AS_IF([test "x$squid_host_os" = "xmingw"],[
1126 LIBOPENSSL_LIBS='-lssleay32 -leay32 -lgdi32 $LIBOPENSSL_LIBS'
1127 AC_MSG_NOTICE([Windows OpenSSL library support: yes -lssleay32 -leay32 -lgdi32])
1130 AC_CHECK_LIB(crypto,[CRYPTO_new_ex_data],[LIBOPENSSL_LIBS="-lcrypto $LIBOPENSSL_LIBS"],[
1131 AC_MSG_ERROR([library 'crypto' is required for OpenSSL])
1133 AC_CHECK_LIB(ssl,[SSL_CTX_new],[LIBOPENSSL_LIBS="-lssl $LIBOPENSSL_LIBS"],[
1134 AC_MSG_ERROR([library 'ssl' is required for OpenSSL])
1138 SQUID_STATE_ROLLBACK(squid_openssl_state) #de-pollute LIBS
1140 AS_IF([test "x$LIBOPENSSL_LIBS" != "x"],[
1141 CXXFLAGS="$LIBOPENSSL_CFLAGS $CXXFLAGS"
1142 SSLLIB="$LIBOPENSSL_PATH $LIBOPENSSL_LIBS $SSLLIB"
1143 AC_DEFINE(USE_OPENSSL,1,[OpenSSL support is available])
1145 # check for API functions
1146 SQUID_CHECK_LIBCRYPTO_API
1147 SQUID_CHECK_LIBSSL_API
1148 SQUID_CHECK_OPENSSL_TLS_METHODS
1149 SQUID_STATE_SAVE(check_SSL_CTX_get0_certificate)
1150 LIBS="$LIBS $SSLLIB"
1151 AC_CHECK_LIB(ssl, SSL_CTX_get0_certificate, [
1152 AC_DEFINE(HAVE_SSL_CTX_GET0_CERTIFICATE, 1, [SSL_CTX_get0_certificate is available])
1154 missing_SSL_CTX_get0_certificate=yes
1156 SQUID_STATE_ROLLBACK(check_SSL_CTX_get0_certificate)
1158 # check for other specific broken implementations
1159 AS_IF([test "x$missing_SSL_CTX_get0_certificate" = "xyes"],SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS)
1160 SQUID_CHECK_OPENSSL_CONST_SSL_METHOD
1161 SQUID_CHECK_OPENSSL_CONST_CRYPTO_EX_DATA
1162 SQUID_CHECK_OPENSSL_CONST_SSL_SESSION_CB_ARG
1163 SQUID_CHECK_OPENSSL_CONST_X509_GET0_SIGNATURE_ARGS
1164 SQUID_CHECK_OPENSSL_TXTDB
1166 AS_IF([test "x$SSLLIB" = "x"],[AC_MSG_ERROR([Required OpenSSL library not found])])
1168 AC_MSG_NOTICE([OpenSSL library support: ${with_openssl:=no} ${LIBOPENSSL_PATH} ${LIBOPENSSL_LIBS}])
1169 AM_CONDITIONAL(ENABLE_SSL,[ test "x$with_openssl" = "xyes" ])
1172 dnl User may specify MIT Kerberos is needed from a non-standard location
1173 SQUID_AUTO_LIB(mit-krb5,[MIT Kerberos],[LIB_KRB5])
1174 AH_TEMPLATE(USE_APPLE_KRB5,[Apple Kerberos support is available])
1175 AH_TEMPLATE(USE_MIT_KRB5,[MIT Kerberos support is available])
1176 AH_TEMPLATE(USE_SOLARIS_KRB5,[Solaris Kerberos support is available])
1178 ## find out if pkg-config or krb5-config will work
1179 AS_IF([test "x$with_mit_krb5" != "xno"],[
1180 CXXFLAGS="$LIB_KRB5_CFLAGS $CXXFLAGS"
1181 krb5confpath="$with_mit_krb5/bin"
1182 # find installed libs via pkg-config or krb5-config
1184 PKG_CHECK_EXISTS(mit-krb5-gssapi mit-krb5, [squid_pc_krb5_name="mit-krb5-gssapi mit-krb5"],[
1185 PKG_CHECK_EXISTS(gssapi-krb5 krb5, [squid_pc_krb5_name="gssapi-krb5 krb5"])
1187 AS_IF([test "x$squid_pc_krb5_name" = "x" -a "$cross_compiling" = "no"],[
1188 # Look for krb5-config (unless cross-compiling)
1189 AC_PATH_PROG(krb5_config,krb5-config,no,$krb5confpath)
1190 AS_IF([test "x$ac_cv_path_krb5_config" != "xno"],[
1191 krb5confpath="`dirname $ac_cv_path_krb5_config`"
1192 ac_heimdal="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i heimdal`"
1193 ac_solaris="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i solaris`"
1194 ac_apple="`$ac_cv_path_krb5_config --vendor 2>/dev/null | grep -c -i apple`"
1195 AS_IF([test $ac_solaris -gt 0],[with_solaris_krb5=yes],
1196 [test $ac_apple -gt 0],[with_apple_krb5=yes],
1197 [test $ac_heimdal -gt 0],[with_mit_krb5=no]
1200 AS_IF([test "x$with_mit_krb5" = "xyes"],[
1201 AC_MSG_ERROR([Could not find krb5-config in path])
1209 # detect MIT Kerberos dependencies (except on Solaris)
1210 AS_IF([test "x$with_mit_krb5" != "xno" -a "x$with_solaris_krb5" != "xyes"],[
1211 SQUID_STATE_SAVE([squid_krb5_save])
1212 LIBS="$LIBS $LIB_KRB5_PATH"
1214 # auto-detect using pkg-config
1215 PKG_CHECK_MODULES([LIB_KRB5], $squid_pc_krb5_name,,[
1216 # look for krb5-config (unless cross-compiling)
1217 AS_IF([test "$cross_compiling" = "no"],[
1218 AS_IF([test "x$krb5confpath" = "x"],[
1219 AC_PATH_PROG(krb5_config,krb5-config,no)
1220 AS_IF([test "x$ac_cv_path_krb5_config" != "xno"],[ac_krb5_config="$ac_cv_path_krb5_config"])
1222 ac_krb5_config="$krb5confpath/krb5-config"
1225 AS_IF([test "x$ac_krb5_config" != "x" -a -x "$ac_krb5_config"],[
1227 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1228 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1229 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1230 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1231 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1233 ## For some OS pkg-config is broken or unavailable.
1234 ## Detect libraries the hard way.
1236 SQUID_STATE_SAVE([squid_mit_save])
1238 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1239 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
1240 AC_MSG_WARN([library 'com_err' is required for MIT Kerberos])
1241 missing_required=yes
1244 AC_CHECK_LIB(k5crypto, [main], [LIB_KRB5_LIBS="-lk5crypto $LIB_KRB5_LIBS"],[
1245 AC_MSG_WARN([library 'k5crypto' is required for MIT Kerberos])
1246 missing_required=yes
1249 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1250 AC_MSG_WARN([library 'krb5' is required for MIT Kerberos])
1251 missing_required=yes
1254 AC_CHECK_LIB(gssapi_krb5, [main], [LIB_KRB5_LIBS="-lgssapi_krb5 $LIB_KRB5_LIBS"],[
1255 AC_MSG_WARN([library 'gssapi_krb5' is required for MIT Kerberos])
1256 missing_required=yes
1258 SQUID_STATE_ROLLBACK([squid_mit_save])
1259 AS_IF([test "x$missing_required" = "xyes"],[LIB_KRB5_LIBS=""])
1263 AS_IF([test "x$LIB_KRB5_LIBS" != "x"],[
1264 AS_IF([test "x$with_apple_krb5" = "xyes"],[
1265 AC_DEFINE(USE_APPLE_KRB5,1,[Apple Kerberos support is available])
1266 KRB5_FLAVOUR="Apple"
1268 AC_DEFINE(USE_MIT_KRB5,1,[MIT Kerberos support is available])
1271 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1272 KRB5INCS="$LIB_KRB5_CFLAGS"
1274 # check for other specific broken implementations
1275 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1276 LIBS="$LIBS $KRB5LIBS"
1278 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1279 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1280 AC_CHECK_HEADERS(gssapi/gssapi_generic.h)
1281 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1282 AC_CHECK_HEADERS(profile.h)
1284 SQUID_CHECK_KRB5_FUNCS
1286 AS_IF([test "x$with_mit_krb5" = "xyes" -a "x$KRB5LIBS" = "x"],[
1287 AC_MSG_ERROR([Required Kerberos library not found])
1288 ],[test "x$KRB5LIBS" = "x"],[
1292 SQUID_STATE_ROLLBACK([squid_krb5_save])
1295 # detect Solaris Kerberos dependencies
1296 AS_IF([test "x$with_solaris_krb5" = "xyes" -a "x$KRB5LIBS" = "x"],[
1297 SQUID_STATE_SAVE([squid_krb5_save])
1298 LIBS="$LIBS $LIB_KRB5_PATH"
1300 # no pkg-config for solaris native Kerberos
1301 # look for krb5-config (unless cross-compiling)
1302 AS_IF([test "$cross_compiling" = "no"],[
1303 AS_IF([test "x$krb5confpath" = "x"],[
1304 AC_PATH_PROG(krb5_config,krb5-config,no)
1305 AS_IF([test "x$ac_cv_path_krb5_config" != "xno"],[ac_krb5_config="$ac_cv_path_krb5_config"])
1307 ac_krb5_config="$krb5confpath/krb5-config"
1310 AS_IF([test "x$ac_krb5_config" != "x" -a -x "$ac_krb5_config"],[
1312 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1313 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1314 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1315 # Solaris 10 Update 11 patches the krb5-config tool to produce stderr messages on stdout.
1316 SOLARIS_BROKEN_KRB5CONFIG_GSSAPI="`$ac_krb5_config --libs gssapi 2>/dev/null | grep "krb5-config"`"
1317 AS_IF([test "x$SOLARIS_BROKEN_KRB5CONFIG_GSSAPI" = "x"],[
1318 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1319 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1322 ## For some OS pkg-config is broken or unavailable.
1323 ## Detect libraries the hard way.
1325 CXXFLAGS="-I/usr/include/kerberosv5 $CXXFLAGS"
1327 SQUID_STATE_SAVE([squid_solaris_save])
1329 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1330 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1331 AC_MSG_WARN([library 'krb5' is required for Solaris Kerberos])
1332 missing_required=yes
1335 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
1336 AC_MSG_WARN([library 'gss' is required for Solaris Kerberos])
1337 missing_required=yes
1339 SQUID_STATE_ROLLBACK([squid_solaris_save])
1340 AS_IF([test "x$missing_required" = "xyes"],[LIB_KRB5_LIBS=""])
1343 AS_IF([test "x$LIB_KRB5_LIBS" != "x"],[
1344 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1345 KRB5INCS="$LIB_KRB5_CFLAGS"
1346 AC_DEFINE(USE_SOLARIS_KRB5,1,[Solaris Kerberos support is available])
1347 KRB5_FLAVOUR="Solaris"
1349 # check for other specific broken implementations
1350 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1351 LIBS="$LIBS $KRB5LIBS"
1353 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1354 AC_CHECK_HEADERS(gssapi/gssapi.h gssapi/gssapi_ext.h)
1355 AC_CHECK_HEADERS(krb5.h com_err.h)
1357 SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H
1358 AS_IF([test "x$squid_cv_broken_krb5_h" = "xyes"],[
1359 AC_DEFINE(HAVE_BROKEN_SOLARIS_KRB5_H, 1, [Define to 1 if Solaris krb5.h is broken for C++])
1360 AC_MSG_WARN([You have a broken Solaris <krb5.h> system include.])
1361 AC_MSG_WARN([Please see http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6837512])
1362 AC_MSG_WARN([If you need Kerberos support you will have to patch])
1363 AC_MSG_WARN([your system. See contrib/solaris/solaris-krb5-include.patch])
1365 SQUID_CHECK_KRB5_FUNCS
1367 AS_IF([test "x$with_mit_krb5" = "xyes" -a "x$KRB5LIBS" = "x"],[
1368 # Error only if Solaris flavour was detected while looking for required MIT Kerberos
1369 AC_MSG_ERROR([Required Kerberos library not found])
1370 ],[test "x$KRB5LIBS" = "x"],[
1371 with_solaris_krb5=no
1374 SQUID_STATE_ROLLBACK([squid_krb5_save])
1377 # Kerberos support libraries: Heimdal
1378 SQUID_AUTO_LIB(heimdal-krb5,[Heimdal Kerberos],[LIBHEIMDAL_KRB5])
1379 SQUID_CHECK_LIB_WORKS(heimdal-krb5,[
1380 AS_IF([test "x$KRB5LIBS" = "x"],[
1381 SQUID_STATE_SAVE(squid_heimdal_krb5_save)
1382 PKG_CHECK_MODULES([LIBHEIMDAL_KRB5],[heimdal-krb5 heimdal-gssapi],[
1383 CPPFLAGS="$LIBHEIMDAL_KRB5_CFLAGS $CPPFLAGS"
1384 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1385 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1387 LIBS="$LIBHEIMDAL_KRB5_PATH $LIBHEIMDAL_KRB5_LIBS $LIBS"
1388 SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H
1389 SQUID_CHECK_KRB5_FUNCS
1391 SQUID_STATE_ROLLBACK(squid_heimdal_krb5_save)
1395 # Kerberos support libraries: GNU GSS
1396 SQUID_AUTO_LIB(gss,[GNU gss],[LIBGSS])
1397 SQUID_CHECK_LIB_WORKS(gss,[
1398 AS_IF([test "x$KRB5LIBS" = "x" -a "x$LIBHEIMDAL_KRB5_LIBS" = "x"],[
1399 SQUID_STATE_SAVE(squid_gss_save)
1400 PKG_CHECK_MODULES([LIBGSS],[gss],[
1401 CPPFLAGS="$LIBGSS_CFLAGS $CPPFLAGS"
1402 AC_CHECK_HEADERS(gss.h)
1403 LIBS="$LIBGSS_PATH $LIBS"
1404 SQUID_CHECK_WORKING_GSSAPI
1405 SQUID_DEFINE_BOOL(HAVE_GSSAPI,$squid_cv_working_gssapi,[GSSAPI support])
1406 SQUID_CHECK_SPNEGO_SUPPORT
1407 SQUID_DEFINE_BOOL(HAVE_SPNEGO,$squid_cv_have_spnego,[SPNEGO support])
1408 SQUID_CHECK_WORKING_KRB5
1409 SQUID_DEFINE_BOOL(HAVE_KRB5,$squid_cv_working_krb5,[KRB5 support])
1411 SQUID_STATE_ROLLBACK(squid_gss_save)
1415 AS_IF([test "x$KRB5LIBS" != "x"],[with_krb5=yes])
1416 AC_MSG_NOTICE([$KRB5_FLAVOUR Kerberos library support: ${with_krb5:=no} ${LIB_KRB5_PATH} ${LIB_KRB5_LIBS}])
1420 SQUID_AUTO_LIB(ldap,[LDAP],[LIBLDAP])
1421 SQUID_CHECK_LIB_WORKS(ldap,[
1422 dnl On MinGW OpenLDAP is not available, so LDAP helpers can be linked
1423 dnl only with Windows LDAP libraries using -lwldap32
1424 AS_IF([test "$squid_host_os" = "mingw"],[
1425 LIBLDAP_LIBS="-lwldap32"
1427 SQUID_STATE_SAVE(squid_ldap_state)
1428 LIBS="$LIBLDAP_PATH $LIBPTHREADS $LIBS"
1429 PKG_CHECK_MODULES([LIBLDAP],[ldap],[],[
1430 AC_CHECK_LIB(lber, ber_init, [LIBLBER="-llber"])
1431 AC_CHECK_LIB(ldap, ldap_init, [LIBLDAP_LIBS="-lldap $LIBLBER"])
1432 dnl if no ldap lib found check for mozilla version
1433 AS_IF([test "x$ac_cv_lib_ldap_ldap_init" != "xyes"],[
1434 SQUID_STATE_SAVE(squid_ldap_mozilla)
1435 LIBS="$LIBLDAP_PATH $LIBPTHREADS"
1436 AC_CHECK_LIB(ldap60, ldap_init, [LIBLDAP_LIBS="-lldap60 $LIBLBER"])
1437 LIBS="$LIBLDAP_PATH $LIBLDAP_LIBS $LIBPTHREADS"
1438 AC_CHECK_LIB(prldap60, prldap_init, [LIBLDAP_LIBS="-lprldap60 $LIBLDAP_LIBS"])
1439 LIBS="$LIBLDAP_PATH $LIBLDAP_LIBS $LIBPTHREADS"
1440 AC_CHECK_LIB(ssldap60, ldapssl_init, [LIBLDAP_LIBS="-lssldap60 $LIBLDAP_LIBS"])
1441 SQUID_STATE_ROLLBACK(squid_ldap_mozilla)
1444 AC_CHECK_HEADERS(ldap.h lber.h)
1445 AC_CHECK_HEADERS(mozldap/ldap.h)
1446 SQUID_CHECK_LDAP_API
1450 SQUID_AUTO_LIB(systemd,[systemd API for start-up notification],[LIBSYSTEMD])
1451 AH_TEMPLATE(USE_SYSTEMD,[systemd support is available])
1452 SQUID_CHECK_LIB_WORKS(systemd,[
1453 SQUID_STATE_SAVE(squid_systemd_state)
1454 LIBS="$LIBS $LIBSYSTEMD_PATH"
1455 PKG_CHECK_MODULES(LIBSYSTEMD,[libsystemd],,[
1457 PKG_CHECK_MODULES(LIBSYSTEMD,[libsystemd-daemon],,[:])
1459 AC_CHECK_HEADERS(systemd/sd-daemon.h)
1460 SQUID_STATE_ROLLBACK(squid_systemd_state)
1462 AS_IF([test "x$LIBSYSTEMD_LIBS" != "x"],[
1463 AC_DEFINE(USE_SYSTEMD,1,[systemd support is available])
1467 AC_ARG_ENABLE(forw-via-db,
1468 AS_HELP_STRING([--enable-forw-via-db],[Enable Forw/Via database]), [
1469 SQUID_YESNO([$enableval],[--enable-forw-via-db])
1471 SQUID_DEFINE_BOOL(USE_FORW_VIA_DB,${enable_forw_via_db:=no},
1472 [Enable Forw/Via database])
1473 AC_MSG_NOTICE([Forw/Via database enabled: $enable_forw_via_db])
1475 AC_ARG_ENABLE(cache-digests,
1476 AS_HELP_STRING([--enable-cache-digests],
1477 [Use Cache Digests. See https://wiki.squid-cache.org/SquidFaq/CacheDigests]),[
1478 SQUID_YESNO([$enableval],[--enable-cache-digests])
1480 SQUID_DEFINE_BOOL(USE_CACHE_DIGESTS,${enable_cache_digests:=no},
1481 [Use Cache Digests for locating objects in neighbor caches.])
1482 AC_MSG_NOTICE([Cache Digests enabled: $enable_cache_digests])
1485 ################################
1486 # check for netio plugin stuff #
1487 ################################
1488 dnl order of these options handling is relevant in case the user
1489 dnl supplies more than one --enable option. Options handled later
1490 dnl override those handled earlier for io loop method manual override
1491 AC_ARG_ENABLE(select,
1492 AS_HELP_STRING([--disable-select],[Disable select(2) support.]),[
1493 SQUID_YESNO([$enableval],[--enable-select])
1494 AS_IF([test "x$enableval" = "xyes"],[squid_opt_io_loop_engine="select"])
1496 AC_MSG_NOTICE([enabling select syscall for net I/O: ${enable_select:=auto}])
1499 AS_HELP_STRING([--disable-poll],[Disable poll(2) support.]),[
1500 SQUID_YESNO([$enableval],[--enable-poll])
1501 AS_IF([test "x$enableval" = "xyes"],[squid_opt_io_loop_engine="poll"])
1503 AC_MSG_NOTICE([enabling poll syscall for net I/O: ${enable_poll:=auto}])
1505 AC_ARG_ENABLE(kqueue,
1506 AS_HELP_STRING([--disable-kqueue],
1507 [Disable kqueue(2) support.]), [
1508 SQUID_YESNO([$enableval],[--enable-kqueue])
1510 AS_IF([test "x${enable_kqueue:=auto}" != "xno"],[
1511 AC_CHECK_HEADERS([sys/event.h],[],[
1512 AS_IF([test "x${enable_kqueue}" = "xyes"],[
1513 AC_MSG_ERROR([kqueue support requires sys/event.h header file.])
1516 AC_CHECK_FUNCS(kqueue,[],[
1517 AS_IF([test "x${enable_kqueue}" = "xyes"],[
1518 AC_MSG_ERROR([kqueue support missing in libc library.])
1521 AS_IF([test "x$ac_cv_func_kqueue" = "xyes" -a "x$ac_cv_header_sys_event_h" = "xyes"],[
1522 squid_opt_io_loop_engine="kqueue"
1527 AC_MSG_NOTICE([enabling kqueue for net I/O: ${enable_kqueue:=auto}])
1530 AC_ARG_ENABLE(epoll,
1531 AS_HELP_STRING([--disable-epoll],[Disable Linux epoll(2) support.]),
1533 SQUID_YESNO([$enableval],[--enable-epoll])
1534 AS_IF([test "x$enableval" = "xyes"],[squid_opt_io_loop_engine="epoll"])
1536 AC_MSG_NOTICE([enabling epoll syscall for net I/O: ${enable_epoll:=auto}])
1538 # auto-detect and verify epoll header and library present and working
1539 # logic mapping and loop method selection are performed later
1540 AS_IF([test "x$enable_epoll" != "xno"],[
1541 # check if libs are needed to support epoll
1542 SQUID_STATE_SAVE(squid_epoll_state)
1543 AC_SEARCH_LIBS(epoll_ctl,[epoll])
1544 AS_IF([test "x$ac_cv_search_epoll_ctl" = "xno"],[enable_epoll=no],
1545 [test "x$ac_cv_search_epoll_ctl" = "xnone required"],[EPOLL_LIBS=""],
1546 [EPOLL_LIBS=$ac_cv_search_epoll_ctl]
1548 AC_SUBST(EPOLL_LIBS)
1549 SQUID_STATE_ROLLBACK(squid_epoll_state) #de-pollute LIBS
1551 # epoll requires sys/epoll.h
1552 AC_CHECK_HEADERS([sys/epoll.h])
1554 dnl Verify that epoll really works
1555 AS_IF([test "x$ac_cv_search_epoll_ctl" != "xno"], SQUID_CHECK_EPOLL)
1557 AS_IF([test "x$enable_epoll" = "xyes" -a "x$squid_cv_epoll_works" = "xno"],[
1558 AC_MSG_ERROR([Epoll does not work. Force-enabling it is not going to help.])
1562 dnl Enable /dev/poll
1563 AC_ARG_ENABLE(devpoll,
1564 AS_HELP_STRING([--disable-devpoll],[Disable Solaris /dev/poll support.]),[
1565 SQUID_YESNO([$enableval],[--enable-devpoll])
1566 AS_IF([test "x$enableval" = "xyes"],[squid_opt_io_loop_engine="devpoll"])
1568 AC_MSG_NOTICE([enabling /dev/poll for net I/O: ${enable_devpoll:=auto}])
1570 ## auto-detect and verify devpoll header and library present and working
1571 AS_IF([test "x$enable_devpoll" != "xno"],[
1572 # /dev/poll requires ioctl() and write()
1573 AC_CHECK_FUNCS(ioctl)
1574 AC_CHECK_FUNCS(write)
1576 # /dev/poll requires sys/devpoll.h
1577 AC_CHECK_HEADERS([sys/devpoll.h],,[
1578 AS_IF([test "x$enable_devpoll" = "xyes"],[
1579 AC_MSG_ERROR([--enable-devpoll specified but /dev/poll headers not found])
1584 # Verify that /dev/poll really works
1585 AS_IF([test "x$enable_devpoll" != "xno"], SQUID_CHECK_DEVPOLL)
1587 AS_IF([test "x$enable_devpoll" = "xyes" -a "x$squid_cv_devpoll_works" = "xno"],[
1588 AC_MSG_ERROR([/dev/poll does not work. Force-enabling it is not going to help.])
1592 AC_ARG_ENABLE(http-violations,
1593 AS_HELP_STRING([--disable-http-violations],
1594 [This allows you to remove code which is known to
1595 violate the HTTP protocol specification.]), [
1596 SQUID_YESNO([$enableval],[--enable-http-violations])
1598 SQUID_DEFINE_BOOL(USE_HTTP_VIOLATIONS, ${enable_http_violations:=yes},
1599 [Define to enable code which volates the HTTP standard specification])
1600 AC_MSG_NOTICE([HTTP violations support enabled: $enable_http_violations])
1602 # IPFW Transparent Proxy
1603 AC_ARG_ENABLE(ipfw-transparent,
1604 AS_HELP_STRING([--enable-ipfw-transparent],
1605 [Enable Transparent Proxy support for systems
1606 using FreeBSD IPFW-style firewalling.]), [
1607 SQUID_YESNO([$enableval],[--enable-ipfw-transparent])
1609 SQUID_DEFINE_BOOL(IPFW_TRANSPARENT,${enable_ipfw_transparent:=no},
1610 [Enable support for Transparent Proxy on systems using FreeBSD IPFW-style firewalling.])
1611 AC_MSG_NOTICE([FreeBSD IPFW-based transparent proxying enabled: $enable_ipfw_transparent])
1613 # IP-Filter Transparent Proxy
1614 AC_ARG_ENABLE(ipf-transparent,
1615 AS_HELP_STRING([--enable-ipf-transparent],
1616 [Enable Transparent Proxy support using IPFilter-style firewalling]), [
1617 SQUID_YESNO([$enableval],[--enable-ipf-transparent])
1619 #will be AC_DEFINEd later, after checking for appropriate infrastructure
1620 #IPF currently broken. Default-disabled for now.
1621 AC_MSG_NOTICE([IPF-based transparent proxying requested: ${enable_ipf_transparent:=no}])
1623 dnl Enable PF Transparent Proxy
1624 AC_ARG_ENABLE(pf-transparent,
1625 AS_HELP_STRING([--enable-pf-transparent],
1626 [Enable Transparent Proxy support for systems using PF network address redirection.]), [
1627 SQUID_YESNO([$enableval],[--enable-pf-transparent])
1629 #will be AC_DEFINEd later, after checking for appropriate infrastructure
1630 AC_MSG_NOTICE([PF-based transparent proxying requested: ${enable_pf_transparent:=no}])
1632 dnl Enable /dev/pf support for older PF Transparent Proxy systems (OpenBSD 4.x and older)
1633 AC_ARG_WITH(nat-devpf,
1634 AS_HELP_STRING([--with-nat-devpf],
1635 [Enable /dev/pf support for NAT on older OpenBSD and FreeBSD kernels.]), [
1636 SQUID_YESNO([$withval],[--with-nat-devpf])
1638 #will be AC_DEFINEd later, after checking for appropriate infrastructure
1639 AC_MSG_NOTICE([NAT lookups via /dev/pf: ${with_nat_devpf:=no}])
1641 # Linux Netfilter Transparent Proxy
1642 AC_ARG_ENABLE(linux-netfilter,
1643 AS_HELP_STRING([--enable-linux-netfilter],
1644 [Enable Transparent Proxy support for Linux (Netfilter)]), [
1645 SQUID_YESNO([$enableval],[--enable-linux-netfilter])
1647 AC_MSG_NOTICE([Linux Netfilter support requested: ${enable_linux_netfilter:=auto}])
1648 #will be AC_DEFINEd later, after checking for appropriate infrastructure
1651 dnl Look for libnetfilter_conntrack options (needed for QOS netfilter marking)
1652 SQUID_AUTO_LIB(netfilter-conntrack,[Netfilter conntrack],[LIBNETFILTER_CONNTRACK])
1653 SQUID_CHECK_LIB_WORKS(netfilter-conntrack,[
1654 LDFLAGS="$LIBNETFILTER_CONNTRACK_PATH $LDFLAGS"
1655 CPPFLAGS="$LIBNETFILTER_CONNTRACK_CFLAGS $CPPFLAGS"
1656 AC_SEARCH_LIBS([nfct_query],[netfilter_conntrack],[LIBNETFILTER_CONNTRACK_LIBS="-lnetfilter_conntrack"])
1657 AC_CHECK_HEADERS([ \
1658 libnetfilter_conntrack/libnetfilter_conntrack.h \
1659 libnetfilter_conntrack/libnetfilter_conntrack_tcp.h
1660 ],,[LIBNETFILTER_CONNTRACK_LIBS=""])
1663 dnl Enable Large file support
1666 AC_ARG_WITH(large-files,
1667 AS_HELP_STRING([--with-large-files],[Enable support for large files (logs etc).]), [
1668 SQUID_YESNO([$withval],[--with-large-files])
1669 squid_opt_enable_large_files=$withval
1672 dnl UNIX Build environment
1673 dnl AS_HELP_STRING is not suited here because it cannot to specify newlines
1674 AC_ARG_WITH(build-environment,
1675 AS_HELP_STRING([--with-build-environment=model],
1676 [The build environment to use. Normally one of
1677 POSIX_V6_ILP32_OFF32 (32 bits),
1678 POSIX_V6_ILP32_OFFBIG (32 bits with large file support),
1679 POSIX_V6_LP64_OFF64 (64 bits),
1680 POSIX_V6_LPBIG_OFFBIG (large pointers and files),
1681 XBS5_ILP32_OFF32 i(legacy, 32 bits),
1682 XBS5_ILP32_OFFBIG (legacy, 32 bits with large file support),
1683 XBS5_LP64_OFF64 (legacy, 64 bits),
1684 XBS5_LPBIG_OFFBIG (legacy, large pointers and files)
1685 or default (The default for your OS)]), [
1686 AS_CASE(["$withval"],
1687 [yes|no],[AC_MSG_FAILURE([--with-build-environment expects a build environment string as used by getconf])],
1688 [buildmodel="$withval"]
1692 #hack. Let's early-detect sizeof(long)
1693 AC_CHECK_SIZEOF(long)
1695 AS_IF([test "x$squid_opt_enable_large_files" = "xyes" -a "x$buildmodel" = "x"],[
1696 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
1697 AS_IF([test "`getconf _$model 2>/dev/null || true`" = 1 -o "`getconf $model 2>/dev/null || true`"],[
1702 AS_IF([test "x$buildmodel" = "x"],[
1703 AC_MSG_WARN([No suitable build environment found for large files. Trying to use _FILE_OFFSET_BITS=64])
1706 AS_IF([test "x$buildmodel" = "xdefault" -o "x$buildmodel" = "x"],[
1707 # define _FILE_OFFSET_BITS if requested and needed
1708 AS_IF([test "x$squid_opt_enable_large_files" = "xyes" -a $ac_cv_sizeof_long -le 4],[
1709 AC_MSG_NOTICE([Enabling -D_FILE_OFFSET_BITS=64])
1710 CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
1711 CXXFLAGS="-D_FILE_OFFSET_BITS=64 $CXXFLAGS"
1714 AC_MSG_NOTICE([Using $buildmodel build environment])
1715 AS_IF([ ! test "`getconf _$buildmodel 2>/dev/null || true`" = 1 -o "`getconf $buildmodel 2>/dev/null || true`"],[
1716 AC_MSG_ERROR([Build environment $buildmodel not known to getconf.])
1718 CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
1719 CXXFLAGS="`getconf ${buildmodel}_CFLAGS` $CXXFLAGS"
1720 LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
1721 LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
1723 AS_IF([test "x$squid_host_os" = "xsolaris"],[
1724 # On Solaris getconf returns for CFLAGS -xarch=generic64, -Xa and -Usun options, and
1725 # for LDFLAGS -xarch=generic64, but:
1726 # "-Xa" is supported only by Sun cc, so we need to remove it when using gcc
1727 # For gcc "-xarch=generic64" must be replaced with "-m64"
1728 # The 'sun' define is needed by ipfilter includes, so we must remove "-Usun"
1729 AS_IF([test "x$GCC" = "xyes"],[
1730 AC_MSG_NOTICE([Removing -Xa for gcc/g++ on $host])
1731 CFLAGS="`echo $CFLAGS | sed -e 's/-Xa//'`"
1732 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Xa//'`"
1733 AC_MSG_NOTICE([Replacing -xarch=generic64 with -m64 for gcc/g++ on $host])
1734 CFLAGS="`echo $CFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
1735 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
1736 LDFLAGS="`echo $LDFLAGS | sed -e 's/-xarch=generic64//'`"
1738 AC_MSG_NOTICE([Removing -Usun on $host])
1739 CFLAGS="`echo $CFLAGS | sed -e 's/-Usun//'`"
1740 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Usun//'`"
1744 AC_ARG_ENABLE(follow-x-forwarded-for,
1745 AS_HELP_STRING([--disable-follow-x-forwarded-for],
1746 [Do not follow the X-Forwarded-For
1747 HTTP header to try to find the IP address of the
1748 original or indirect client when a request has
1749 been forwarded through other proxies.]), [
1750 SQUID_YESNO([$enableval],[--enable-follow-x-forwarded-for])
1752 AC_MSG_NOTICE([Support for X-Forwarded-For enabled: ${enable_follow_x_forwarded_for:=yes}])
1753 SQUID_DEFINE_BOOL(FOLLOW_X_FORWARDED_FOR,$enable_follow_x_forwarded_for,
1754 [Enable following X-Forwarded-For headers])
1756 AC_ARG_ENABLE(ident-lookups,
1757 AS_HELP_STRING([--disable-ident-lookups],
1758 [Remove code that supports performing Ident (RFC 931) lookups.]), [
1759 SQUID_YESNO([$enableval],[--enable-ident-lookups])
1761 AC_MSG_NOTICE([Support for Ident lookups enabled: ${enable_ident_lookups:=yes}])
1762 SQUID_DEFINE_BOOL(USE_IDENT,$enable_ident_lookups,[Support for Ident (RFC 931) lookups])
1764 dnl Select Default hosts file location
1765 AC_ARG_ENABLE(default-hostsfile,
1766 AS_HELP_STRING([--enable-default-hostsfile=path],
1767 [Select default location for hosts file.
1768 See hosts_file directive in squid.conf for details]), [
1769 # TODO: handle the "yes" case cleanly
1770 AS_CASE(["$enableval"],
1771 [no|none],[squid_opt_default_hosts="none"],
1773 squid_opt_default_hosts=$enableval
1774 AS_IF([ ! test -f "$enableval"],[
1775 AC_MSG_WARN([Unable to find file $enableval. I hope you know what you are doing.])
1779 AC_MSG_NOTICE([Default hosts file set to: ${squid_opt_default_hosts:=/etc/hosts}])
1780 DEFAULT_HOSTS=$squid_opt_default_hosts
1781 AC_SUBST(DEFAULT_HOSTS)
1783 # Select auth schemes modules to build
1785 AS_HELP_STRING([--disable-auth],
1786 [Do not support authentication. When supported, the list of schemes
1787 and helpers to be enabled is defined elsewhere]), [
1788 SQUID_YESNO([$enableval],[--enable-auth])
1790 AC_MSG_NOTICE([Authentication support enabled: ${enable_auth:=yes}])
1791 SQUID_DEFINE_BOOL(USE_AUTH,$enable_auth,[Enable support for authentication])
1792 AM_CONDITIONAL(ENABLE_AUTH, test "x$enable_auth" != "xno")
1797 AC_ARG_ENABLE(auth-basic,
1798 AS_HELP_STRING([--enable-auth-basic="list of helpers"],
1799 [Enable the basic authentication scheme, and build the specified helpers.
1800 Not providing an explicit list of helpers will attempt build of
1801 all possible helpers. Default is to do so.
1802 To disable the basic authentication scheme, use --disable-auth-basic.
1803 To enable but build no helpers, specify "none".
1804 To see available helpers, see the src/auth/basic/ directory. ]),[
1805 #nothing to do really
1807 m4_include([src/auth/basic/helpers.m4])
1809 AC_ARG_ENABLE(auth-digest,
1810 AS_HELP_STRING([--enable-auth-digest="list of helpers"],
1811 [Enable the Digest authentication scheme, and build the specified helpers.
1812 Not providing an explicit list of helpers will attempt build of
1813 all possible helpers. Default is to do so.
1814 To disable the Digest authentication scheme, use --disable-auth-digest.
1815 To enable but build no helpers, specify "none".
1816 To see available helpers, see the src/auth/digest/ directory. ]),[
1817 #nothing to do, really
1819 m4_include([src/auth/digest/helpers.m4])
1821 AC_ARG_ENABLE(auth-negotiate,
1822 AS_HELP_STRING([--enable-auth-negotiate="list of helpers"],
1823 [Enable the Negotiate authentication scheme, and build the specified
1825 Not providing an explicit list of helpers will attempt build of
1826 all possible helpers. Default is to do so.
1827 To disable the Negotiate authentication scheme,
1828 use --disable-auth-negotiate.
1829 To enable but build no helpers, specify "none".
1830 To see available helpers, see the src/auth/negotiate/ directory. ]),[
1831 #nothing to do, really
1833 m4_include([src/auth/negotiate/helpers.m4])
1835 AC_ARG_ENABLE(auth-ntlm,
1836 AS_HELP_STRING([--enable-auth-ntlm="list of helpers"],
1837 [Enable the NTLM authentication scheme, and build the specified helpers.
1838 Not providing an explicit list of helpers will attempt build of
1839 all possible helpers. Default is to do so.
1840 To disable the NTLM authentication scheme, use --disable-auth-ntlm.
1841 To enable but build no helpers, specify "none".
1842 To see available helpers, see the src/auth/ntlm/ directory. ]),[
1844 m4_include([src/auth/ntlm/helpers.m4])
1846 dnl Authentication libraries to build
1847 dnl This list will not be needed when each auth library has its own Makefile
1848 dnl this is to be placed AFTER each auth module's handler
1850 for module in $AUTH_MODULES; do
1851 AUTH_LIBS_TO_BUILD="$AUTH_LIBS_TO_BUILD ${module}/lib${module}.la"
1853 AC_SUBST(AUTH_MODULES)
1854 AC_SUBST(AUTH_LIBS_TO_BUILD)
1855 AM_CONDITIONAL(ENABLE_SMBLIB, test "x$require_smblib" = "xyes")
1856 AM_CONDITIONAL(ENABLE_SSPI, test "x$require_sspi" = "xyes")
1858 dnl Select logging daemon helpers to build
1859 AC_ARG_ENABLE(log-daemon-helpers,
1860 AS_HELP_STRING([--enable-log-daemon-helpers="list of helpers"],
1861 [This option selects which logging daemon helpers to
1862 build and install as part of the normal build process
1863 For a list of available helpers see the src/log/
1865 #nothing to do, really
1867 m4_include([src/log/helpers.m4])
1869 AC_ARG_ENABLE(external-acl-helpers,
1870 AS_HELP_STRING([--enable-external-acl-helpers="list of helpers"],
1871 [Enable external_acl helpers support and the helpers themselves.
1872 Default is to build all buildable helpers and enable support.
1873 To disable support, use --disable-external-acl-helpers.
1874 To build no helpers, specify "none".
1875 To see available helpers, see the src/acl/external/
1877 #nothing to do, really
1879 m4_include([src/acl/external/helpers.m4])
1881 dnl Select url_rewrite helpers to build
1882 AC_ARG_ENABLE(url-rewrite-helpers,
1883 AS_HELP_STRING([--enable-url-rewrite-helpers="list of helpers"],
1884 [This option selects which url_rewrite helpers to
1885 build and install as part of the normal build
1886 process. The default is to attempt the build of all possible
1887 helpers. Use --disable-url-rewrite-helpers to build none.
1888 For a list of available helpers see the
1889 src/http/url_rewriters/ directory.]),[
1891 m4_include([src/http/url_rewriters/helpers.m4])
1893 dnl Select security helpers to build
1894 AC_ARG_ENABLE(security-cert-validators,
1895 AS_HELP_STRING([--enable-security-cert-validators="list of helpers"],
1896 [This option selects which security certificate validator
1897 helpers to build and install as part of the normal build
1898 process. The default is to attempt the build of all possible
1899 helpers. Use --disable-security-cert-validators to
1900 build none. For a list of available helpers see the
1901 src/security/cert_validators/ directory.]),[
1903 m4_include([src/security/cert_validators/helpers.m4])
1905 AC_ARG_ENABLE(security-cert-generators,
1906 AS_HELP_STRING([--enable-security-cert-generators="list of helpers"],
1907 [This option selects which security certificate validator
1908 helpers to build and install as part of the normal build
1909 process. The default is to attempt the build of all possible
1910 helpers. Use --disable-security-cert-genrators to
1911 build none. For a list of available helpers see the
1912 src/security/cert_generators/ directory.]),[
1914 m4_include([src/security/cert_generators/helpers.m4])
1916 dnl Select storeid_rewrite helpers to build
1917 AC_ARG_ENABLE(storeid-rewrite-helpers,
1918 AS_HELP_STRING([--enable-storeid-rewrite-helpers="list of helpers"],
1919 [This option selects which Store-ID rewrite helpers to
1920 build and install as part of the normal build
1921 process. The default is to attempt the build of all possible
1922 helpers. Use --disable-storeid-rewrite-helpers to build none.
1923 For a list of available helpers see the
1924 src/store/id_rewriters/ directory.]),[
1926 m4_include([src/store/id_rewriters/helpers.m4])
1928 AC_ARG_WITH(valgrind-debug,
1929 AS_HELP_STRING([--with-valgrind-debug],
1930 [Include debug instrumentation for use with valgrind]),
1932 SQUID_YESNO([$withval],[--with-valgrind-debug])
1933 AS_IF([test "x$withval" != "xno"],[
1934 AC_CHECK_HEADERS(valgrind/memcheck.h,[],[
1935 AC_MSG_ERROR([Valgrind support requested, needed headers not found.])
1939 SQUID_DEFINE_BOOL(WITH_VALGRIND,${with_valgrind_debug:=no},
1940 [Valgrind memory debugger support])
1941 AC_MSG_NOTICE([Valgrind debug support enabled: $with_valgrind_debug])
1943 dnl Enable WIN32 Service compile mode
1944 AC_ARG_ENABLE(win32-service,
1945 AS_HELP_STRING([--enable-win32-service],
1946 [Compile Squid as a WIN32 Service.
1947 Works only on MS-Windows platforms]), [
1948 SQUID_YESNO([$enableval],[--enable-win32-service])
1950 SQUID_DEFINE_BOOL(USE_WIN32_SERVICE,${enable_win32_service:=no},
1951 [Enable code supporting MS Windows service mode])
1952 AC_MSG_NOTICE([MS Windows service mode enabled: $enable_win32_service])
1955 # Disable "unlinkd" code
1956 AC_ARG_ENABLE(unlinkd,
1957 AS_HELP_STRING([--disable-unlinkd],[Do not use unlinkd]), [
1958 SQUID_YESNO([$enableval],[--enable-unlinkd])
1960 SQUID_DEFINE_BOOL(USE_UNLINKD,${enable_unlinkd:=yes},
1961 [Enable useage of unlinkd])
1962 AM_CONDITIONAL(ENABLE_UNLINKD,test "x$enable_unlinkd" = "xyes")
1963 AC_MSG_NOTICE([unlinkd enabled: $enable_unlinkd])
1965 # Enable backtraces on fatal errors
1966 AC_ARG_ENABLE(stacktraces,
1967 AS_HELP_STRING([--enable-stacktraces],
1968 [Enable automatic call backtrace on fatal errors]), [
1969 SQUID_YESNO([$enableval],[--enable-stacktraces])
1971 SQUID_DEFINE_BOOL(PRINT_STACK_TRACE,${enable_stacktraces:=no},
1972 [Print stack traces on fatal errors])
1973 AC_MSG_NOTICE([Automatically print stack trace on fatal errors: $enable_stacktraces])
1975 # Enable X-Accelerator-Vary for Vary support within an accelerator setup
1976 AC_ARG_ENABLE(x-accelerator-vary,
1977 AS_HELP_STRING([--enable-x-accelerator-vary],
1978 [Enable support for the X-Accelerator-Vary
1979 HTTP header. Can be used to indicate
1980 variance within an accelerator setup.
1981 Typically used together with other code
1982 that adds custom HTTP headers to the requests.]), [
1983 SQUID_YESNO([$enableval],[--enable-x-accelerator-vary])
1985 SQUID_DEFINE_BOOL(X_ACCELERATOR_VARY,${enable_x_accelerator_vary:=no},
1986 [Enable support for the X-Accelerator-Vary HTTP header])
1987 AC_MSG_NOTICE([X-Accelerator-Vary support enabled: $enable_x_accelerator_vary])
1989 SQUID_AUTO_LIB(cppunit,[cppunit test framework],[LIBCPPUNIT])
1990 SQUID_CHECK_LIB_WORKS(cppunit,[
1991 PKG_CHECK_MODULES([LIBCPPUNIT],[cppunit],[
1992 squid_cv_cppunit_version="`pkg-config --modversion cppunit`"
1993 AC_MSG_NOTICE([using system installed cppunit version $squid_cv_cppunit_version])
1994 AS_UNSET(squid_cv_cppunit_version)
1996 SQUID_STATE_SAVE(squid_cppunit_state)
1997 CXXFLAGS="${CXXFLAGS} ${LIBCPPUNIT_CFLAGS}"
1998 LIBS="${LIBS} ${LIBCPPUNIT_LIBS}"
1999 AC_CHECK_HEADERS(cppunit/extensions/HelperMacros.h)
2000 SQUID_STATE_ROLLBACK(squid_cppunit_state)
2002 AC_MSG_WARN([cppunit does not appear to be installed. Squid does not require this, but code testing with 'make check' will fail.])
2006 dnl Check for headers
2027 linux/posix_types.h \
2035 netinet/in_systm.h \
2087 linux/netfilter_ipv4.h \
2088 linux/netfilter_ipv6/ip6_tables.h \
2090 SQUID_DEFAULT_INCLUDES
2094 /* Netfilter ip(6)tables v1.4.0 has broken headers */
2095 #if HAVE_NETINET_IN_H
2096 #include <netinet/in.h>
2100 dnl *BSD do not include the dependencies for all their net/ and netinet/ files
2101 dnl We must include a few basic type headers for them to work.
2116 SQUID_BSDNET_INCLUDES)
2121 AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
2127 AC_CHECK_TYPE(struct rusage,AC_DEFINE(HAVE_STRUCT_RUSAGE,1,[The system provides struct rusage]),,[
2129 #include <sys/time.h>
2131 #if HAVE_SYS_RESOURCE_H
2132 #include <sys/resource.h>
2136 AC_CHECK_MEMBERS([struct iphdr.ip_hl],,,[
2137 #if HAVE_SYS_TYPES_H
2138 #include <sys/types.h>
2140 #include <netinet/in.h>
2141 #include <netinet/in_systm.h>
2142 #include <netinet/ip.h>
2143 #if defined (__linux__) || defined (__CYGWIN__)
2152 dnl Check for typedefs
2153 AC_CHECK_SIZEOF(void *)
2155 # check for a bunch of types
2169 AC_CHECK_TYPE([bool])
2170 #need the defines for PRId64
2171 AC_CHECK_SIZEOF(int64_t)
2172 AC_CHECK_SIZEOF(long)
2173 #need the define for overflow checks
2174 AC_CHECK_SIZEOF(off_t)
2175 AC_CHECK_SIZEOF(size_t)
2177 dnl On Solaris 9 x86, gcc may includes a "fixed" set of old system include files
2178 dnl that is incompatible with the updated Solaris header files.
2179 dnl For this reason, we must check if pad128_t and upad128_t are defined.
2180 AC_CHECK_TYPE(pad128_t,
2181 AC_DEFINE(HAVE_PAD128_T,1,[pad128_t is defined in system headers]),
2182 ,SQUID_DEFAULT_INCLUDES)
2184 AC_CHECK_TYPE(upad128_t,
2185 AC_DEFINE(HAVE_UPAD128_T,1,[upad128_t is defined in system headers]),
2186 ,SQUID_DEFAULT_INCLUDES)
2188 AC_CHECK_TYPE(mode_t, AC_DEFINE(HAVE_MODE_T,1,[mode_t is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
2189 AC_CHECK_TYPE(fd_mask, AC_DEFINE(HAVE_FD_MASK,1,[fd_mask is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
2191 AC_CHECK_TYPE(socklen_t,AC_DEFINE(HAVE_SOCKLEN_T,1,[socklen_t is defined by the system headers]),,[
2192 #include <sys/types.h>
2193 #include <sys/socket.h>
2198 AC_CHECK_TYPE(mtyp_t,AC_DEFINE(HAVE_MTYP_T,1,
2199 [mtyp_t is defined by the system headers]),,[#include <sys/types.h>
2200 #include <sys/ipc.h>
2201 #include <sys/msg.h>])
2203 AC_CHECK_TYPE(cpu_set_t,
2204 AC_DEFINE(HAVE_CPU_SET_T,1,[cpu_set_t is defined by the system headers]),,[
2210 dnl Check for special functions
2213 SQUID_AUTO_LIB(cap,[Linux capabilities],[LIBCAP])
2214 SQUID_CHECK_LIB_WORKS(cap,[
2215 SQUID_STATE_SAVE(squid_libcap_state)
2216 CXXFLAGS="$LIBCAP_CFLAGS $CXXFLAGS"
2217 LDFLAGS="$LIBCAP_PATH $LDFLAGS"
2218 PKG_CHECK_MODULES([LIBCAP],[libcap >= 2.09],[],[
2219 # cap_clear_flag is the most recent libcap function we require
2220 AC_CHECK_LIB([cap],[cap_clear_flag],[LIBCAP_LIBS="$LIBCAP_LIBS -lcap"])
2222 SQUID_CHECK_FUNCTIONAL_LIBCAP2
2223 AC_MSG_NOTICE([libcap headers are ok: $squid_cv_sys_capability_works])
2224 AS_IF([test "x$squid_cv_sys_capability_works" = "xno"],[LIBCAP_LIBS=""])
2225 SQUID_STATE_ROLLBACK(squid_libcap_state)
2227 AS_IF([test "x$LIBCAP_LIBS" != "x"],[
2228 AC_DEFINE(USE_LIBCAP,1,[Linux capabilities library support])
2232 dnl Check for needed libraries
2233 AC_SEARCH_LIBS([gethostbyname],[nsl resolv bind])
2234 AC_SEARCH_LIBS([res_init],[resolv])
2235 AC_SEARCH_LIBS([__res_search],[resolv])
2236 AC_SEARCH_LIBS([bind],[socket])
2237 AC_SEARCH_LIBS([opcom_stack_trace],[opcom_stack])
2238 AC_SEARCH_LIBS([yp_match], [nsl nss_nis nss_nisplus])
2240 # check that we have unix sockets
2241 SQUID_CHECK_UNIX_SOCKET
2242 SQUID_DEFINE_BOOL(HAVE_UNIXSOCKET,$squid_cv_unixsocket,[System supports unix sockets])
2244 AC_CHECK_LIB(gnumalloc, malloc)
2245 AS_IF([test "x$ac_cv_lib_gnumalloc_malloc" = "xyes"],[
2246 AC_MSG_NOTICE([Disabling extended malloc functions when using bundled gnumalloc])
2247 ac_cv_func_mallocblksize=no
2248 ac_cv_func_mallopt=no
2250 AS_CASE(["$squid_host_os"],
2251 [solaris],[AC_MSG_NOTICE([skipping libmalloc check for $host])],
2252 [freebsd],[AC_MSG_NOTICE([skipping libmalloc check for $host])],
2253 [AC_CHECK_LIB(malloc, main)]
2257 AS_IF([test "$squid_host_os" = "mingw"],[
2258 AC_MSG_NOTICE([Use MSVCRT for math functions.])
2260 dnl log() are only used in old C code for now.
2262 AC_SEARCH_LIBS([log],[m])
2266 dnl --with-maxfd present for compatibility with Squid-2.
2267 dnl undocumented in ./configure --help to encourage using the Squid-3 directive
2268 AC_ARG_WITH(maxfd,,[
2271 squid_filedescriptors_num=$withval
2272 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
2274 [AC_MSG_ERROR(--with-maxfd expects a numeric argument)]
2278 AC_ARG_WITH(filedescriptors,
2279 AS_HELP_STRING([--with-filedescriptors=NUMBER],
2280 [Force squid to support NUMBER filedescriptors]),[
2283 squid_filedescriptors_num=$withval
2284 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])],
2285 [AC_MSG_ERROR([--with-filedescriptors expects a numeric argument])]
2289 SQUID_CHECK_DEFAULT_FD_SETSIZE
2293 dnl Enable IPv6 support
2294 AC_MSG_CHECKING([whether to enable IPv6])
2296 AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support. The default is to probe system capabilities on startup.]), [
2297 SQUID_YESNO([$enableval],[--enable-ipv6])
2299 AC_MSG_RESULT(${enable_ipv6:=yes})
2300 SQUID_DEFINE_BOOL(USE_IPV6,$enable_ipv6,[Enable support for IPv6 ])
2302 AS_IF([test "x$enable_ipv6" = "xyes"],[SQUID_CHECK_SIN6_LEN_IN_SAI])
2303 SQUID_CHECK_SS_LEN_IN_SOCKADDR_STORAGE
2304 SQUID_CHECK_SIN_LEN_IN_SOCKADDR_IN
2306 dnl System-specific library modifications
2307 AH_TEMPLATE(GETTIMEOFDAY_NO_TZP,[Whether gettimeofday takes only one argument])
2310 # -lintl is needed on SCO version 3.2v4.2 for strftime()
2311 # Robert Side <rside@aiinc.bc.ca>
2312 # Mon, 18 Jan 1999 17:48:00 GMT
2313 AC_CHECK_LIB(intl, strftime)
2316 [i386-*-solaris2.*],[
2317 AS_IF([test "x$GCC" = "xyes"],[
2318 AC_MSG_NOTICE([Removing -O for gcc on $host])
2319 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9g]]*//'`"
2324 AC_MSG_NOTICE([Removing -lsocket for IRIX...])
2325 LIBS=`echo $LIBS | sed -e s/-lsocket//`
2326 AC_MSG_NOTICE([Removing -lnsl for IRIX...])
2327 LIBS=`echo $LIBS | sed -e s/-lnsl//`
2328 ac_cv_lib_nsl_main=no
2332 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_rtti],[-rtti],[[
2338 public:virtual ~Foo(){}
2340 class Bar:public Foo{
2341 public:Bar():Foo(){}
2344 Foo * myFoo=new Bar();
2345 Bar * myBar=dynamic_cast<Bar *>(myFoo);
2346 assert(myBar != NULL);
2348 AS_IF([test "$ac_cv_require_rtti" = "yes"],[
2349 SQUID_CFLAGS="-rtti $SQUID_CFLAGS"
2350 SQUID_CXXFLAGS="-rtti $SQUID_CXXFLAGS"
2354 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_qcpluscmt],[-qcpluscmt],[[]],[[//c++ cmt]])
2356 AS_IF([test "$ac_cv_require_qcpluscmt" = "yes"],[
2357 SQUID_CFLAGS="-qcpluscmt $SQUID_CFLAGS"
2361 [*-*-solaris2.[[0-4]]],[AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)],
2363 [*-sony-newsos[[56]]*],[AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)]
2366 dnl This has to be before AC_CHECK_FUNCS
2367 # Disable poll() on certain platforms. Override by setting ac_cv_func_poll
2368 # when running configure.
2369 AS_IF([test "x$ac_cv_func_poll" = "x"],[
2373 AC_MSG_NOTICE([disabling poll for $host...])
2374 ac_cv_func_poll='no'
2378 # Henrik Nordstrom (hno@squid-cache.org) 19980817
2379 # poll is problematic on Linux. We disable it
2380 # by default until Linux gets it right.
2381 rev=`uname -r | awk -F. '{printf "%03d%03d",$1,$2}'`
2382 AS_IF([test $rev -lt 002002],[
2383 AC_MSG_NOTICE([disabling poll for $host < 2.2...])
2384 ac_cv_func_poll='no'
2388 [powerpc-ibm-aix4.1.*],[
2389 # Mike Laster (mlaster@metavillage.com) 19981021
2390 AC_MSG_NOTICE([disabling poll for $host...])
2391 ac_cv_func_poll='no'
2396 dnl Check for library functions
2398 backtrace_symbols_fd \
2421 pthread_attr_setschedparam \
2422 pthread_attr_setscope \
2423 pthread_setschedparam \
2449 dnl ... and some we provide local replacements for
2458 # Magic which checks whether we are forcing a type of comm loop we
2459 # are actually going to (ab)use.
2460 # Mostly ripped from squid-commloops, thanks to adrian and benno
2462 AS_IF([test "x$squid_opt_io_loop_engine" != "x"],
2463 AC_MSG_NOTICE([choosing user-specified net I/O API $squid_opt_io_loop_engine]),
2464 [test "x$enable_epoll" != "xno" -a "x$squid_cv_epoll_works" = "xyes"],
2465 squid_opt_io_loop_engine="epoll",
2466 [test "x$enable_kqueue" != "xno"],
2467 squid_opt_io_loop_engine="kqueue",
2468 [test "x$enable_devpoll" != "xno"],
2469 squid_opt_io_loop_engine="devpoll",
2470 [test "x$enable_poll" != "xno" -a "x$ac_cv_func_poll" = "xyes"],
2471 squid_opt_io_loop_engine="poll",
2472 [test "x$enable_select" != "xno" -a "x$ac_cv_func_select" = "xyes"],
2473 squid_opt_io_loop_engine="select",
2475 AC_MSG_WARN([Eep! Cannot find epoll, kqueue, /dev/poll, poll or select!])
2476 AC_MSG_WARN([Will try select and hope for the best.])
2477 squid_opt_io_loop_engine="select"
2481 AC_MSG_NOTICE([Using ${squid_opt_io_loop_engine} for the IO loop.])
2483 AM_CONDITIONAL(ENABLE_POLL, test "x$squid_opt_io_loop_engine" = "xpoll")
2484 AM_CONDITIONAL(ENABLE_EPOLL, test "x$squid_opt_io_loop_engine" = "xepoll")
2485 AM_CONDITIONAL(ENABLE_SELECT, test "x$squid_opt_io_loop_engine" = "xselect")
2486 AM_CONDITIONAL(ENABLE_KQUEUE, test "x$squid_opt_io_loop_engine" = "xkqueue")
2487 AM_CONDITIONAL(ENABLE_DEVPOLL, test "x$squid_opt_io_loop_engine" = "xdevpoll")
2489 AS_CASE([$squid_opt_io_loop_engine],
2490 [epoll],[AC_DEFINE(USE_EPOLL,1,[Use epoll() for the IO loop])],
2491 [devpoll],[AC_DEFINE(USE_DEVPOLL,1,[Use /dev/poll for the IO loop])],
2492 [poll],[AC_DEFINE(USE_POLL,1,[Use poll() for the IO loop])],
2493 [kqueue],[AC_DEFINE(USE_KQUEUE,1,[Use kqueue() for the IO loop])],
2494 [select],[AC_DEFINE(USE_SELECT,1,[Use select() for the IO loop])],
2497 AS_IF([test "x$ac_cv_func_sched_getaffinity" = "xyes" -a "x$ac_cv_func_sched_setaffinity" = "xyes"],[
2498 AC_DEFINE(HAVE_CPU_AFFINITY,1,[Support setting CPU affinity for workers])
2501 AC_CHECK_HEADERS(mswsock.h)
2502 AC_MSG_CHECKING([for constant CMSG_SPACE])
2503 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
2504 #if HAVE_SYS_SOCKET_H
2505 #include <sys/socket.h>
2508 #include <mswsock.h>
2511 int a[CMSG_SPACE(int)];
2514 AC_DEFINE(HAVE_CONSTANT_CMSG_SPACE, 1, [Define to 1 if CMSG_SPACE is constant])
2519 AC_CHECK_TYPE(struct cmsghdr,AC_DEFINE(HAVE_CMSGHDR,1,[The system provides struct cmsghdr]),,[
2520 #if HAVE_SYS_SOCKET_H
2521 #include <sys/socket.h>
2524 #include <mswsock.h>
2527 #include <winsock2.h>
2531 AC_CHECK_TYPE(struct iovec,AC_DEFINE(HAVE_IOVEC,1,[The system provides struct iovec]),,[
2532 #if HAVE_SYS_SOCKET_H
2533 #include <sys/socket.h>
2536 #include <winsock2.h>
2539 #include <sys/uio.h>
2543 AC_CHECK_TYPE(struct msghdr,AC_DEFINE(HAVE_MSGHDR,1,[The system provides struct msghdr]),,[
2544 #if HAVE_SYS_SOCKET_H
2545 #include <sys/socket.h>
2548 #include <mswsock.h>
2551 #include <winsock2.h>
2555 AC_CHECK_TYPE(struct sockaddr_un,AC_DEFINE(HAVE_SOCKADDR_UN,1,[The system provides sockaddr_un]),,[
2559 #if HAVE_SYS_SOCKET_H
2560 #include <sys/socket.h>
2563 #include <winsock2.h>
2567 SQUID_CHECK_FUNC_STRNSTR
2569 dnl IP-Filter support requires ipf header files. These aren't
2570 dnl installed by default, so we need to check for them
2571 AS_IF([test "x$enable_ipf_transparent" != "xno"],[
2572 SQUID_CHECK_BROKEN_SOLARIS_IPFILTER
2573 AC_MSG_CHECKING(for availability of IP-Filter header files)
2574 # hold on to your hats...
2576 [test "x$ac_cv_header_ip_compat_h" = "xyes" -o \
2577 "x$ac_cv_header_ip_fil_compat_h" = "xyes" -o \
2578 "x$ac_cv_header_netinet_ip_compat_h" = "xyes" -o \
2579 "x$ac_cv_header_netinet_ip_fil_compat_h" = "xyes"],
2580 [have_ipfilter_compat_header="yes"])
2583 [test "x$have_ipfilter_compat_header" = "xyes" -a \
2584 "x$ac_cv_header_ip_fil_h" = "xyes" -a \
2585 "x$ac_cv_header_ip_nat_h" = "xyes"],[enable_ipf_transparent="yes"],
2587 [test "x$have_ipfilter_compat_header" = "xyes" -a \
2588 "x$ac_cv_header_netinet_ip_fil_h" = "xyes" -a \
2589 "x$ac_cv_header_netinet_ip_nat_h" = "xyes"],[enable_ipf_transparent="yes"],
2590 [enable_ipf_transparent="no"])
2592 AC_MSG_RESULT($IPF_TRANSPARENT)
2594 ## On Solaris Ipfilter includes expect that SOLARIS2 is defined with the
2595 ## Solaris minor version (8, 9, 10, ...)
2596 AS_IF([test "x$enable_ipf_transparent" = "xyes" -a "x$squid_host_os" = "xsolaris"],[
2597 solrev=`uname -r | sh -c 'IFS=. read j n x; echo $n'`
2598 CFLAGS="-DSOLARIS2=$solrev $CFLAGS"
2599 CXXFLAGS="-DSOLARIS2=$solrev $CXXFLAGS"
2602 AC_MSG_NOTICE([IPF-based transparent proxying enabled: $enable_ipf_transparent])
2603 SQUID_DEFINE_BOOL(IPF_TRANSPARENT,$enable_ipf_transparent,
2604 [Enable support for IPF-style transparent proxying])
2606 dnl PF /dev/pf support requires a header file.
2607 AS_IF([test "x$with_nat_devpf" != "xno"],[
2608 AS_IF([test "x$ac_cv_header_net_pfvar_h" = "xyes" -o \
2609 "x$ac_cv_header_net_pf_pfvar_h" = "xyes"],[
2610 AS_IF([test "x$with_nat_devpf" = "xauto"],[with_nat_devpf="no"])
2612 AS_IF([test "x$with_nat_devpf" = "xyes"],[
2613 AC_MSG_ERROR([PF /dev/pf based NAT requested but needed header not found])
2618 SQUID_DEFINE_BOOL(PF_TRANSPARENT,${enable_pf_transparent:=no},
2619 [Enable support for PF-style transparent proxying])
2620 SQUID_DEFINE_BOOL(USE_NAT_DEVPF,${with_nat_devpf:=no},
2621 [Enable support for /dev/pf NAT lookups])
2623 AS_IF([test "x$enable_linux_netfilter" != "xno"],[
2624 AS_IF([test "x$ac_cv_header_linux_netfilter_ipv4_h" = "xyes"],[
2625 AS_IF([test "x$enable_linux_netfilter" = "xauto"],[enable_linux_netfilter=yes])
2627 AS_IF([test "x$enable_linux_netfilter" = "xauto"],[
2628 enable_linux_netfilter=no
2630 AC_MSG_ERROR([Linux Netfilter support requested but needed headers not found])
2634 SQUID_DEFINE_BOOL(LINUX_NETFILTER,$enable_linux_netfilter,
2635 [Enable support for Transparent Proxy on Linux via Netfilter])
2637 dnl Netfilter TPROXY depends on libcap but the NAT parts can still work.
2638 AC_MSG_NOTICE([Support for Netfilter-based interception proxy requested: $enable_linux_netfilter])
2639 AS_IF([test "x$enable_linux_netfilter" = "xyes" -a "x$with_cap" != "xyes"],[
2640 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for TPROXY])
2641 AC_MSG_WARN([Linux Transparent Proxy (version 4+) support WILL NOT be enabled])
2642 AC_MSG_WARN([Reduced support to NAT Interception Proxy])
2645 AS_IF([test "x$with_netfilter_conntrack" = "xyes" -a "x$with_cap" != "xyes"],[
2646 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for netfilter mark support])
2647 AC_MSG_WARN([Linux netfilter marking support WILL NOT be enabled])
2648 with_netfilter_conntrack=no
2650 AC_MSG_NOTICE([Linux Netfilter Conntrack support enabled: ${with_netfilter_conntrack}])
2653 AC_ARG_ENABLE(zph-qos,
2654 AS_HELP_STRING([--disable-zph-qos],[Disable ZPH QOS support]), [
2655 SQUID_YESNO([$enableval],[--enable-zph-qos])
2657 SQUID_DEFINE_BOOL(USE_QOS_TOS,${enable_zph_qos:=yes},
2658 [Enable Zero Penalty Hit QOS. When set, Squid will alter the
2659 TOS field of HIT responses to help policing network traffic])
2660 AC_MSG_NOTICE([ZPH QOS enabled: $enable_zph_qos])
2661 AS_IF([test "x$enable_zph_qos" = "xyes"],[
2662 AC_MSG_NOTICE([QOS netfilter mark preservation enabled: $with_netfilter_conntrack])
2663 SQUID_DEFINE_BOOL(USE_LIBNETFILTERCONNTRACK,${with_netfilter_conntrack:=no},
2664 [Enable support for QOS netfilter mark preservation])
2667 AC_CHECK_LIB(regex, regexec, [REGEXLIB="-lregex"],[REGEXLIB=''])
2670 SQUID_DETECT_UDP_SND_BUFSIZE
2671 SQUID_DETECT_UDP_RECV_BUFSIZE
2672 SQUID_DETECT_TCP_SND_BUFSIZE
2673 SQUID_DETECT_TCP_RECV_BUFSIZE
2675 SQUID_CHECK_NEED_SYS_ERRLIST
2676 SQUID_CHECK_MAXPATHLEN
2678 SQUID_CHECK_LIBRESOLV_DNS_TTL_HACK
2679 SQUID_CHECK_RESOLVER_FIELDS
2681 AC_CHECK_HEADERS(sys/statvfs.h)
2682 AS_IF([test "x$ac_cv_header_sys_statvfs_h" = "xyes"],[SQUID_CHECK_WORKING_STATVFS])
2683 AS_IF([test "x$ac_cv_func_statvfs" != "xyes"],[
2684 AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/vfs.h sys/statfs.h)
2685 AC_CHECK_FUNCS(statfs)
2686 SQUID_CHECK_F_FRSIZE_IN_STATFS
2689 dnl Squid will not usually attempt to translate templates when building
2690 AC_ARG_ENABLE(translation,
2691 AS_HELP_STRING([--enable-translation],[Generate the localized error page templates and manuals.
2692 Which can also be downloaded from http://www.squid-cache.org/Versions/langpack/.]), [
2693 SQUID_YESNO([$enableval],[--enable-translation])
2695 AS_IF([test "x${enable_translation:=no}" = "xyes"],[
2696 AX_WITH_PROG([PO2HTML],[po2html])
2697 AX_WITH_PROG([PO2TEXT],[po2txt])
2704 AM_CONDITIONAL(ENABLE_TRANSLATION, test "x${enable_translation:=no}" = "xyes")
2706 dnl Squid now has limited locale handling ...
2708 AC_ARG_ENABLE(auto-locale,
2709 AS_HELP_STRING([--disable-auto-locale],[This prevents Squid providing localized error pages based on the
2710 clients request headers.
2711 When disabled Squid requires explicit language configuration.]), [
2712 SQUID_YESNO([$enableval],[--enable-auto-locale])
2714 AC_MSG_NOTICE([Multi-Language support enabled: ${enable_auto_locale:=yes}])
2715 SQUID_DEFINE_BOOL(USE_ERR_LOCALES,$enable_auto_locale,
2716 [Use multi-language support on error pages])
2719 dnl Need the debugging version of malloc if available
2721 AS_IF([test "x$ac_cv_lib_malloc_main" = "xyes"],[
2722 AS_IF([test -r /usr/lib/debug/malloc.o],[XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/malloc.o"])
2723 AS_IF([test -r /usr/lib/debug/mallocmap.o],[XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/mallocmap.o"]);
2727 AS_IF([test "x$XTRA_LIBS" = "x"],[
2730 XTRA_LIBS=`echo $XTRA_LIBS | sed -e "s/ */ /g"`
2735 AC_SUBST(SQUID_CFLAGS)
2736 AC_SUBST(SQUID_CXXFLAGS)
2738 # Prerequisite: CXXFLAGS have been finalized.
2739 AC_ARG_VAR([BUILDCXXFLAGS],[C++ compiler flags for building compile-time tools. e.g. cf_gen])
2740 AS_IF([test "x$BUILDCXXFLAGS" = "x"],[
2741 # if we are NOT cross-compiling, use the default build flags for cf_gen and friends
2742 # otherwise rely on the user-provided value
2743 AS_IF([test "x$squid_cv_check_marchnative" = "xyes"],[
2744 # always valid for the Build compiler.
2745 BUILDCXXFLAGS="-march=native"
2747 BUILDCXXFLAGS="$BUILDCXXFLAGS $CXXFLAGS"
2749 AC_SUBST(BUILDCXXFLAGS)
2751 AC_MSG_NOTICE([BUILD LIBRARIES: $LIBS])
2752 AC_MSG_NOTICE([BUILD EXTRA LIBRARIES: $XTRA_LIBS])
2753 AC_MSG_NOTICE([BUILD OBJECTS: $OBJS])
2754 AC_MSG_NOTICE([BUILD EXTRA OBJECTS: $XTRA_OBJS])
2755 AC_MSG_NOTICE([BUILD C FLAGS: $CFLAGS])
2756 AC_MSG_NOTICE([BUILD EXTRA C FLAGS: $SQUID_CFLAGS])
2757 AC_MSG_NOTICE([BUILD C++ FLAGS: $CXXFLAGS])
2758 AC_MSG_NOTICE([BUILD EXTRA C++ FLAGS: $SQUID_CXXFLAGS])
2759 AC_MSG_NOTICE([BUILD Tools C++ FLAGS: $BUILDCXXFLAGS])
2761 dnl Clean up after OSF/1 core dump bug
2769 doc/manuals/Makefile
2770 doc/release-notes/Makefile
2774 lib/libTrie/Makefile
2775 lib/libTrie/test/Makefile
2776 lib/ntlmauth/Makefile
2779 lib/snmplib/Makefile
2784 src/acl/external/Makefile
2785 src/acl/external/AD_group/Makefile
2786 src/acl/external/delayer/Makefile
2787 src/acl/external/eDirectory_userip/Makefile
2788 src/acl/external/file_userip/Makefile
2789 src/acl/external/kerberos_ldap_group/Makefile
2790 src/acl/external/kerberos_sid_group/Makefile
2791 src/acl/external/LDAP_group/Makefile
2792 src/acl/external/LM_group/Makefile
2793 src/acl/external/session/Makefile
2794 src/acl/external/SQL_session/Makefile
2795 src/acl/external/unix_group/Makefile
2796 src/acl/external/wbinfo_group/Makefile
2797 src/acl/external/time_quota/Makefile
2798 src/adaptation/Makefile
2799 src/adaptation/icap/Makefile
2800 src/adaptation/ecap/Makefile
2803 src/auth/basic/Makefile
2804 src/auth/basic/DB/Makefile
2805 src/auth/basic/fake/Makefile
2806 src/auth/basic/getpwnam/Makefile
2807 src/auth/basic/LDAP/Makefile
2808 src/auth/basic/NCSA/Makefile
2809 src/auth/basic/NIS/Makefile
2810 src/auth/basic/PAM/Makefile
2811 src/auth/basic/POP3/Makefile
2812 src/auth/basic/RADIUS/Makefile
2813 src/auth/basic/SASL/Makefile
2814 src/auth/basic/SMB/Makefile
2815 src/auth/basic/SMB_LM/Makefile
2816 src/auth/basic/SSPI/Makefile
2817 src/auth/digest/Makefile
2818 src/auth/digest/eDirectory/Makefile
2819 src/auth/digest/file/Makefile
2820 src/auth/digest/LDAP/Makefile
2821 src/auth/negotiate/Makefile
2822 src/auth/negotiate/kerberos/Makefile
2823 src/auth/negotiate/SSPI/Makefile
2824 src/auth/negotiate/wrapper/Makefile
2825 src/auth/ntlm/Makefile
2826 src/auth/ntlm/fake/Makefile
2827 src/auth/ntlm/SMB_LM/Makefile
2828 src/auth/ntlm/SSPI/Makefile
2830 src/clients/Makefile
2835 src/DiskIO/AIO/Makefile
2836 src/DiskIO/Blocking/Makefile
2837 src/DiskIO/DiskDaemon/Makefile
2838 src/DiskIO/DiskThreads/Makefile
2839 src/DiskIO/IpcIo/Makefile
2840 src/DiskIO/Mmapped/Makefile
2850 src/http/one/Makefile
2851 src/http/url_rewriters/Makefile
2852 src/http/url_rewriters/fake/Makefile
2853 src/http/url_rewriters/LFS/Makefile
2860 src/log/file/Makefile
2867 src/security/Makefile
2868 src/security/cert_generators/Makefile
2869 src/security/cert_generators/file/Makefile
2870 src/security/cert_validators/Makefile
2871 src/security/cert_validators/fake/Makefile
2872 src/servers/Makefile
2876 src/store/id_rewriters/Makefile
2877 src/store/id_rewriters/file/Makefile
2881 tools/apparmor/Makefile
2882 tools/helper-mux/Makefile
2883 tools/systemd/Makefile
2884 tools/sysvinit/Makefile
2887 # must configure libltdl subdir unconditionally for "make distcheck" to work
2888 #AC_CONFIG_SUBDIRS(libltdl)