]> git.ipfire.org Git - thirdparty/squid.git/blame - configure.ac
basic_sspi_auth: MinGW build fixes (#1399)
[thirdparty/squid.git] / configure.ac
CommitLineData
b8ae064d 1## Copyright (C) 1996-2023 The Squid Software Foundation and contributors
5d2e6f19
AJ
2##
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.
6##
7
21608247 8AC_INIT([Squid Web Proxy],[7.0.0-VCS],[http://bugs.squid-cache.org/],[squid])
d966027f 9AC_PREREQ(2.61)
62979ab1 10AC_CONFIG_HEADERS([include/autoconf.h])
71b12d7c 11AC_CONFIG_AUX_DIR(cfgaux)
8d9ce05e 12AC_CONFIG_SRCDIR([src/main.cc])
3dc6f003 13AM_INIT_AUTOMAKE([tar-ustar nostdinc subdir-objects dist-xz])
c2720d44 14AC_REVISION($Revision$)dnl
a2794549 15AC_PREFIX_DEFAULT(/usr/local/squid)
246d7ffc 16AM_MAINTAINER_MODE
a2794549 17
5d2e6f19 18m4_include([acinclude/ax_with_prog.m4])
4ecf021b 19m4_include([acinclude/init.m4])
fa522425 20m4_include([acinclude/squid-util.m4])
6a56798f 21m4_include([acinclude/compiler-flags.m4])
0abb39dd 22m4_include([acinclude/os-deps.m4])
c8093f05 23m4_include([acinclude/krb5.m4])
0d57ed2e 24m4_include([acinclude/ldap.m4])
b12b66cd 25m4_include([acinclude/nettle.m4])
3c586e38 26m4_include([acinclude/pam.m4])
2b448046 27m4_include([acinclude/pkg.m4])
acd207af 28m4_include([acinclude/tdb.m4])
91983da0 29m4_include([acinclude/lib-checks.m4])
09835feb 30m4_include([acinclude/ax_cxx_compile_stdcxx.m4])
b9ce9676 31m4_include([acinclude/win32-sspi.m4])
6a56798f 32
63e02610 33PRESET_CFLAGS="$CFLAGS"
a203dec7 34PRESET_CXXFLAGS="$CXXFLAGS"
63e02610 35PRESET_LDFLAGS="$LDFLAGS"
36
a2794549 37dnl Set default LDFLAGS
a1c22363 38AS_IF([test "x$LDFLAGS" = "x"],[LDFLAGS="-g"])
a2794549 39
0c4134e1
AJ
40# check for host OS detail
41AC_CANONICAL_HOST
42AC_MSG_CHECKING([simplified host os])
43simple_host_os=`echo $host_os|sed 's/[0-9].*//g;s/-.*//g'`
44squid_host_os_version=`echo $host_os|tr -d "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-"`
45AS_IF([test -n "$squid_host_os_version"],[
46 squid_host_os="`echo $simple_host_os| sed s/$squid_host_os_version//g`"
47],[
48 squid_host_os="$simple_host_os"
49])
50AC_MSG_RESULT($squid_host_os (version $squid_host_os_version))
51# on windows squid_host_os is either mingw or cygwin, version is 32
52
a2794549 53AC_PROG_CC
e6c4cdd6 54AM_PROG_CC_C_O
29b8d8d6 55AC_PROG_CXX
0c4134e1
AJ
56
57# AC_USE_SYSTEM_EXTENSIONS should be called before any macros that run the C compiler.
5139f0f6 58AC_USE_SYSTEM_EXTENSIONS
0c4134e1 59
62979ab1 60AC_LANG([C++])
3e7b6055 61
c8640c9a
AJ
62# Clang 3.2 on some CPUs requires -march-native to detect correctly.
63# GCC 4.3+ can also produce faster executables when its used.
64# But building inside a virtual machine environment has been found to
65# cause random Illegal Instruction errors due to mis-detection of CPU.
66AC_ARG_ENABLE(arch-native,
67 AS_HELP_STRING([--disable-arch-native],[Some compilers offer CPU-specific
68 optimizations with the -march=native parameter.
69 This flag disables the optimization. The default is to
70 auto-detect compiler support and use where available.]), [
ec308e40 71 SQUID_YESNO([$enableval],[--enable-arch-native])
c8640c9a 72])
d8a4ba7c 73AC_MSG_NOTICE([CPU arch native optimization enabled: ${enable_arch_native:=auto}])
a1c22363 74AS_IF([test "x${enable_arch_native}" != "xno"],[
c8640c9a 75 SQUID_CC_CHECK_ARGUMENT([squid_cv_check_marchnative],[-march=native])
a1c22363 76])
e9d3951b 77
09835feb
AR
78# If the user did not specify a C++ version.
79user_cxx=`echo "$PRESET_CXXFLAGS" | grep -o -E "(-)std="`
80AS_IF([test "x$user_cxx" = "x"],[
81 # Check for C++17 compiler support
82 # May change CXX.
83 AX_CXX_COMPILE_STDCXX([17],[noext],[mandatory])
84])
85
86# Prerequisite: CXX has been finalized.
87# BUILDCXXFLAGS are defined later, after CXXFLAGS have been finalized.
b2f0a375 88AC_ARG_VAR([BUILDCXX],[path to compiler for building compile-time tools. e.g. cf_gen])
a1c22363
AJ
89AS_IF([test "x$HOSTCXX" != "x" -a "x$BUILDCXX" = "x"],[
90 AC_MSG_WARN([Cross-compiling with HOSTCXX is deprecated. Use BUILDCXX instead.])
b2f0a375 91 BUILDCXX="$HOSTCXX"
a1c22363
AJ
92])
93AS_IF([test "x$BUILDCXX" = "x"],[
b2f0a375 94 BUILDCXX="$CXX"
a1c22363 95 AS_IF([test "x$squid_cv_check_marchnative" = "xyes"],[
e9d3951b 96 CXXFLAGS="$CXXFLAGS -march=native"
a1c22363
AJ
97 ])
98])
b2f0a375 99AC_SUBST(BUILDCXX)
de051d9d 100
aff48cc8 101# test for programs
aff48cc8
FC
102AC_PROG_RANLIB
103AC_PROG_CPP
104AC_PROG_INSTALL
105AC_PROG_LN_S
106AC_PROG_EGREP
107
108AC_PATH_PROG(SH, sh, /bin/sh)
109AC_PATH_PROG(FALSE, false, /usr/bin/false)
110AC_PATH_PROG(TRUE, true, /usr/bin/true)
111AC_PATH_PROG(MV, mv, $FALSE)
112AC_PATH_PROG(MKDIR, mkdir, $FALSE)
113AC_PATH_PROG(LN, ln, cp)
114AC_PATH_PROG(CHMOD, chmod, $FALSE)
6d1c1ab1 115AC_PATH_PROG(TR, tr, $FALSE)
aff48cc8
FC
116AC_PATH_PROG(RM, rm, $FALSE)
117dnl Libtool 2.2.6 requires: rm -f
118RM="$RM -f"
119
d93bf055
AJ
120PKG_PROG_PKG_CONFIG
121
aff48cc8 122AC_PATH_PROG(PERL, perl, none)
a1c22363 123AS_IF([test "x$ac_cv_path_PERL" = "xnone"],[
aff48cc8 124 AC_MSG_FAILURE([Perl is required to compile Squid. Please install Perl and then re-run configure ])
a1c22363 125])
07f370ee 126AC_PATH_PROG(POD2MAN, pod2man, $FALSE)
33d1abfe 127AM_CONDITIONAL(ENABLE_POD2MAN_DOC, test "x${ac_cv_path_POD2MAN}" != "x$FALSE")
aff48cc8 128
a1c22363 129AC_PATH_PROG(AR, ar, $FALSE)
aff48cc8 130AR_R="$AR r"
aff48cc8
FC
131AC_SUBST(AR_R)
132
86b8d400
AJ
133AC_PATH_PROG(LINUXDOC, linuxdoc, $FALSE)
134AM_CONDITIONAL(ENABLE_RELEASE_DOCS, test "x${ac_cv_path_LINUXDOC}" != "x$FALSE")
135
552d1774
AJ
136SQUID_RELEASE=`echo $VERSION | cut -d. -f1`
137AC_SUBST(SQUID_RELEASE)
138
cda5e747 139# pre-define DEFAULT_PREFIX, some modules need it.
a1c22363 140AS_IF([test "${prefix}" = "NONE"],[squid_prefix=$ac_default_prefix],[squid_prefix=$prefix])
cda5e747
AJ
141AC_DEFINE_UNQUOTED(DEFAULT_PREFIX,[$squid_prefix],[The install prefix])
142
0b45d157
FC
143AC_ARG_ENABLE(strict-error-checking,
144 AS_HELP_STRING([--disable-strict-error-checking],[By default squid is compiled
2d65bb9a 145 with all possible static compiler error-checks enabled.
cdb352bb 146 This flag disables the behavior]), [
ec308e40 147 SQUID_YESNO([$enableval],[--enable-strict-error-checking])
0b45d157 148])
cdb352bb 149AC_MSG_NOTICE([strict error checking enabled: ${enable_strict_error_checking:=yes}])
d1f95b42 150
4313559d 151# LT_INIT requires libtool v2, might as well state it loud
2663a9c8 152LT_PREREQ([2.2])
5a2409b7 153LT_INIT([dlopen])
a1c22363
AJ
154AS_IF([test "x$ac_top_build_prefix" != "x"],[
155 # LTDL v3-v7 macros assume the autoconf 2.62 variable top_build_prefix is defined
156 # But from autoconf 2.64 its called ac_top_build_prefix and not automatically added to the Makefile
157 # This fixes Linux LTDLv3-v7, and BSD LTDL v2.2
158 top_build_prefix=${ac_top_build_prefix}
159 AC_SUBST(top_build_prefix)
160])
bd9303f5 161LTDL_INIT
081863f3 162
d9a41469 163dnl LibTool environment is now prepared for setup. Check that it is usable and initialize.
081863f3 164LT_LIB_DLLOAD
3e7b6055
AR
165
166# Do we need these unconditionally for "make distcheck" to work?
167AC_SUBST(INCLTDL)
168AC_SUBST(LIBLTDL)
169
5a2409b7
AJ
170AC_MSG_CHECKING(whether to use loadable modules)
171AS_IF([test "x${enable_shared:=yes}" = "xyes"],[AC_DEFINE(USE_LOADABLE_MODULES,1,[Support Loadable Modules])])
172AM_CONDITIONAL(ENABLE_LOADABLE_MODULES, test "x${enable_shared:=yes}" = "xyes")
173AC_MSG_RESULT([$enable_shared])
174
07f370ee 175SQUID_CC_GUESS_VARIANT
fa6307ae 176SQUID_CC_GUESS_OPTIONS
f9d138eb 177
be0c7ff0
FC
178dnl find out the exe extension for this platform.
179dnl If it is not empty, use it for CGI as well.
a2794549 180AC_EXEEXT
181AC_OBJEXT
a1c22363 182AS_IF([test "x$EXEEXT" = "x"],[CGIEXT=".cgi"],[CGIEXT=""])
7aeb8001 183AC_SUBST(CGIEXT)
a2794549 184
a396d1f8 185AM_CONDITIONAL(ENABLE_WIN32SPECIFIC,[test "x$squid_host_os" = "xmingw"])
daf2ddfa 186AM_CONDITIONAL(ENABLE_WIN32_IPC,[test "x$squid_host_os" = "xmingw"])
fcabe077 187
a1c22363
AJ
188AS_CASE(["$squid_host_os"],
189 [mingw],[
a1c22363
AJ
190 CFLAGS="$CFLAGS -mthreads"
191 CXXFLAGS="$CXXFLAGS -mthreads -static-libgcc -static-libstdc++"
a1c22363
AJ
192 MINGW_LIBS="-lmingwex"
193 AC_SUBST(MINGW_LIBS)
194 ],
195
196 [freebsd],[
b5467222
CT
197 # FreeBSD places local libraries and packages in /usr/local
198 CFLAGS="$CFLAGS -I/usr/local/include"
199 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
200 LDFLAGS="$LDFLAGS -L/usr/local/lib -Wl,-R/usr/local/lib"
a1c22363
AJ
201 ]
202)
4b26fae9 203
f4aaf39c 204dnl Substitutions
6a9f6389 205AC_DEFINE_UNQUOTED(CONFIG_HOST_TYPE, "$host",[Host type from configure])
30a4f2a8 206
9603207d 207AC_DEFINE_UNQUOTED(SQUID_CONFIGURE_OPTIONS, "$ac_configure_args",
8075a4da 208 [configure command line used to configure Squid])
090089c4 209
5483d916 210CACHE_EFFECTIVE_USER="nobody"
211AC_ARG_WITH(default-user,
62979ab1 212 AS_HELP_STRING([--with-default-user=USER],[System user account for squid permissions. Default: nobody]),
5483d916 213 [ CACHE_EFFECTIVE_USER="$withval" ]
214)
215AC_SUBST(CACHE_EFFECTIVE_USER)
216
c8d2dc9b
AJ
217DEFAULT_LOG_DIR="$localstatedir/logs"
218AC_ARG_WITH(logdir,
73862432 219 AS_HELP_STRING([--with-logdir=PATH],
a1c22363
AJ
220 [Default location for squid logs. default: PREFIX/var/logs]),[
221 AS_CASE([$withval],
222 [yes|no],[AC_MSG_ERROR([--with-logdir requires a directory PATH. --with-logdir=PATH])],
223 [DEFAULT_LOG_DIR="$withval"]
224 )
225])
c8d2dc9b
AJ
226AC_SUBST(DEFAULT_LOG_DIR)
227
2f36643c 228DEFAULT_PID_FILE="$localstatedir/run/@SERVICE_NAME@.pid"
a7f6af35 229AC_ARG_WITH(pidfile,
e0eb5853 230 AS_HELP_STRING([--with-pidfile=PATH],
a1c22363
AJ
231 [Default location for squid pid file. Default: PREFIX/var/run/squid.pid]),[
232 AS_CASE([$withval],
233 [yes|no],[AC_MSG_ERROR([--with-pidfile requires a file PATH. --with-pidfile=PATH])],
234 [DEFAULT_PID_FILE="$withval"]
235 )
e0eb5853 236])
32f07882 237AC_SUBST(DEFAULT_PID_FILE)
a7f6af35 238
bf52b026
AJ
239DEFAULT_SWAP_DIR="$localstatedir/cache/squid"
240AC_ARG_WITH(swapdir,
241 AS_HELP_STRING([--with-swapdir=PATH],
a1c22363
AJ
242 [Default location for squid cache directories. Default: PREFIX/var/cache/squid]),[
243 AS_CASE([$withval],
244 [yes|no],[AC_MSG_ERROR([--with-swapdir requires a directory PATH. --with-swapdir=PATH])],
245 [DEFAULT_SWAP_DIR="$withval"]
246 )
bf52b026
AJ
247])
248AC_SUBST(DEFAULT_SWAP_DIR)
249
30a4f2a8 250dnl Set Default CFLAGS
a1c22363
AJ
251AS_IF([test "x$PRESET_CFLAGS" = "x"],[
252 AS_IF([test "$squid_cv_compiler" = "gcc"],[
253 # TODO check if these exceptions are still necessary
254 AS_CASE(["$host"],
255 [*-sun-sunos*],[
256 # sunos has too many warnings for -Wall to be useful
257 ],
258 [CFLAGS="$squid_cv_cc_option_wall $CFLAGS"]
259 )
260 ],[
261 AS_CASE(["$host"],
262 [*mips-sgi-irix6.*],[
fcabe077
FC
263 # suggested by Rafael Seidl <rafaels@cthulhu.engr.sgi.com>
264 CFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
265 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
266 -Wl,-woff,85,-woff,84,-woff,134 \
267 -nostdinc -I/usr/include -D_BSD_SIGNALS $CFLAGS"
268 CXXFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
269 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
270 -Wl,-woff,85,-woff,84,-woff,134 \
271 -nostdinc -I/usr/include -D_BSD_SIGNALS $CXXFLAGS"
a1c22363
AJ
272 ])
273 ])
274])
30a4f2a8 275
0ba77a3c
AR
276AC_MSG_CHECKING([compiler name-version])
277squid_cv_cc_name=`$CC --version | head -1 | cut -f1 -d" "`
278AS_CASE([$squid_cv_cc_name],
279 [gcc|clang],[squid_cv_cc_majversion=`$CC -dumpversion | cut -f1 -d.`],
280 [squid_cv_cc_majversion="unknown"]
281)
282squid_cv_cc_simplified="$squid_cv_cc_name-$squid_cv_cc_majversion"
283AC_MSG_RESULT($squid_cv_cc_simplified)
284
285# warning flags
286
287# -Wall
288SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([$squid_cv_cc_option_wall])
289
290# -Wextra
291AS_IF([test "$squid_cv_cc_simplified" = "gcc-4"],[
292 AC_MSG_NOTICE([skipping -Wextra on $squid_cv_cc_simplified])
293],[
294 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wextra])
295
296 # Now disable or configure certain warnings enabled by -Wextra
297
298 # -Wunused-private-field causes a huge number of false positives
299 # in unit tests. Disable that
300 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wno-unused-private-field])
301
09835feb
AR
302 # ...=5: Do not trust comments about fallthrough cases (GCC).
303 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wimplicit-fallthrough=5])
304 AS_IF([test "x$squid_cv_cc_arg_wimplicit_fallthrough_5" != "xyes"], [
0ba77a3c
AR
305 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wno-implicit-fallthrough])
306 ])
307])
308
8b082ed9 309# useful warnings that may not be included in -Wall -Wextra
0ba77a3c
AR
310SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wpointer-arith])
311SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wwrite-strings])
312SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wcomments])
313SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wshadow])
314SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wmissing-declarations])
315SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Woverloaded-virtual])
07f370ee 316
05c9db69 317dnl CentOS (and RHEL) still define ntohs() using deprecated C++ features
629cb141 318SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_wno_deprecated_register],[-Werror -Wno-deprecated-register],[[#include <arpa/inet.h>]],[[int fox=ntohs(1);]])
05c9db69 319
a1c22363 320AS_IF([test "x$enable_strict_error_checking" != "xno"],[
fcabe077 321 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_option_werror"
59a09b98 322 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cxx_option_werror"
a1c22363 323])
07f370ee 324
a1c22363 325AS_IF([test "x$ac_cv_require_wno_deprecated_register" = "xyes"],[
0568bff2 326 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -Wno-deprecated-register"
a1c22363 327])
0568bff2 328
e0eb5853
FC
329# squid_cv_cc_arg_pipe is set by SQUID_CC_GUESS_OPTIONS
330SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cc_arg_pipe"
331SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_arg_pipe"
2060fa9a 332
4fe75473
FC
333# possibly include some build info tag into squid -v
334SQUID_EMBED_BUILD_INFO
335
83079644 336AC_ARG_ENABLE(optimizations,
ffa3bad9 337 AS_HELP_STRING([--disable-optimizations],
be0c7ff0 338 [Do not compile Squid with compiler optimizations enabled.
a2f6a96c
FC
339 Optimization is good for production builds, but not
340 good for debugging. During development, use
341 --disable-optimizations to reduce compilation times
10185a38 342 and allow easier debugging.]), [
a1c22363
AJ
343 AS_IF([test "x$enableval" = "xno"],[
344 AC_MSG_NOTICE([Disabling compiler optimizations (-O flag)])
345 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9g]]*//'`"
346 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-O[[0-9g]]*//'`"
347 ])
83079644 348])
349
c9267250
AJ
350dnl Nasty hack to get autoconf 2.64 on Linux to run.
351dnl all other uses of RUN_IFELSE are wrapped inside CACHE_CHECK which breaks on 2.64
aff0e8fe 352AC_RUN_IFELSE([AC_LANG_SOURCE([[ int main(int argc, char **argv) { return 0; } ]])],[],[],[:])
c9267250 353
0d00c98b 354AH_TEMPLATE(XMALLOC_STATISTICS,[Define to have malloc statistics])
d9180414 355AC_ARG_ENABLE(xmalloc-statistics,
8075a4da
FC
356 AS_HELP_STRING([--enable-xmalloc-statistics],
357 [Show malloc statistics in status page]), [
ec308e40 358 SQUID_YESNO([$enableval],[--enable-xmalloc-statistics])
e5f4e1b0 359])
4d1d2477
FC
360SQUID_DEFINE_BOOL(XMALLOC_STATISTICS,${enable_xmalloc_statistics:=no},
361 [Show malloc statistics in status page])
362AC_MSG_NOTICE([xmalloc stats display: $enable_xmalloc_statistics])
e5f4e1b0 363
8075a4da 364squid_opt_aufs_threads=""
f85c88f3 365AC_ARG_WITH(aufs-threads,
8075a4da 366 AS_HELP_STRING([--with-aufs-threads=N_THREADS],
a1c22363
AJ
367 [Tune the number of worker threads for the aufs object store.]), [
368 AS_CASE([$withval],
c881e2b1 369 [@<:@0-9@:>@*],[squid_opt_aufs_threads=$withval],
8b0d8e31 370 AC_MSG_ERROR(--with-aufs-threads expects a numeric argument)
a1c22363
AJ
371 )
372])
373AS_IF([test "x$squid_opt_aufs_threads" != "x"],[
374 AC_MSG_NOTICE([With $squid_opt_aufs_threads aufs threads])
375 AC_DEFINE_UNQUOTED(AUFS_IO_THREADS,$squid_opt_aufs_threads,
376 [Defines how many threads aufs uses for I/O])
a3310b77 377])
cd748f27 378
24531401
AJ
379## TODO check if this is necessary, LT_INIT does these checks
380SQUID_AUTO_LIB(dl,[dynamic linking],[LIBDL])
a1c22363 381AS_IF([test "x$with_dl" != "xno"],[
24531401
AJ
382 CXXFLAGS="$LIBDL_CFLAGS $CXXFLAGS"
383 LDFLAGS="$LIBDL_PATH $LDFLAGS"
384 AC_CHECK_LIB(dl, dlopen)
a1c22363 385])
f85c88f3 386
8636e7c1
EB
387AC_DEFUN([LIBATOMIC_CHECKER],[
388 AC_MSG_CHECKING(whether linking $1 -latomic works)
389 AC_LINK_IFELSE([
390 AC_LANG_SOURCE([[
391#include <atomic>
392#include <cstdint>
393 int
b98c6823
HS
394 main(int argc, char **) {
395 return (
396 std::atomic<uint8_t>(uint8_t(argc)).exchange(0) &&
397 std::atomic<uint64_t>{}.is_lock_free()
398 ) ? 0 : 1;
8636e7c1
EB
399 }
400 ]])],[
401 AC_MSG_RESULT(yes)
402 libatomic_checker_result="yes"],[
403 AC_MSG_RESULT(no)
404 libatomic_checker_result="no"
405])])
406
4b0f8912 407## check for atomics library before anything that might need it
16530552 408SQUID_STATE_SAVE(LIBATOMIC)
8636e7c1
EB
409LIBATOMIC_CHECKER(without)
410AS_IF([test "x$libatomic_checker_result" = "xno"],[
411 LIBS="$LIBS -latomic"
412 LIBATOMIC_CHECKER(with)
413 AS_IF([test "x$libatomic_checker_result" = "xyes"],[
414 ATOMICLIB="-latomic"],[
415 AC_MSG_ERROR([Required library libatomic not found.])
416])])
16530552 417SQUID_STATE_ROLLBACK(LIBATOMIC)
4b0f8912
AJ
418AC_SUBST(ATOMICLIB)
419
a186e0d9
AJ
420SQUID_AUTO_LIB(psapi,[Windows PSAPI.dll],[LIBPSAPI])
421AS_IF([test "x$with_psapi" != "xno"],[
422 SQUID_STATE_SAVE(squid_psapi_state)
423 CPPFLAGS="$LIBPSAPI_CFLAGS $CPPFLAGS"
424 LIBS="$LIBPSAPI_PATH $LIBS"
425 AC_CHECK_LIB([psapi],[K32GetProcessMemoryInfo],[LIBPSAPI_LIBS="-lpsapi"])
426 AC_CHECK_HEADER([psapi.h],,,[
427#if HAVE_WINDOWS_H
428#include <windows.h>
429#endif
430 ])
431 SQUID_STATE_ROLLBACK(squid_psapi_state)
432 AS_IF([test "x$LIBPSAPI_LIBS" != "x"],[
433 CXXFLAGS="$LIBPSAPI_CFLAGS $CXXFLAGS"
434 LIBPSAPI_LIBS="$LIBPSAPI_PATH $LIBPSAPI_LIBS"
435 ],[test "x$with_psapi" = "xyes"],[
436 AC_MSG_ERROR([Required library PSAPI.dll not found])
437 ],[
438 AC_MSG_NOTICE([Library PSAPI.dll not found.])
439 ])
440])
441AC_MSG_NOTICE([Using Windows PSAPI.dll library: ${with_psapi:=auto}])
442AC_SUBST(LIBPSAPI_LIBS)
443
c975f532 444AC_SEARCH_LIBS([shm_open], [rt])
a1c22363 445AS_IF([test "x$ac_cv_search_shm_open" != "xno"],[
c975f532 446 AC_DEFINE(HAVE_SHM,1,[Support shared memory features])
a1c22363 447])
c975f532 448
a1c22363 449squid_disk_module_candidates=
2513178d 450AC_ARG_ENABLE(disk-io,
50fbcbd6
FC
451 AS_HELP_STRING([--enable-disk-io="list of modules"],
452 [Build support for the list of disk I/O modules.
453 Set without a value or omitted, all available modules will be built.
454 See src/DiskIO for a list of available modules, or
455 Programmers Guide section on DiskIO
a1c22363
AJ
456 for details on how to build your custom disk module]),
457 AS_CASE(["$enableval"],
458 [yes],[],
459 [no|none],[enable_disk_io="no"],
460 [
461 enable_disk_io="yes"
462 squid_disk_module_candidates="$enableval"
463 ])
464)
465AS_IF([test "x${enable_disk_io:=yes}" = "xyes"],[
466 SQUID_LOOK_FOR_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
467 AS_IF([test "x$ac_cv_search_shm_open" = "xno"],[
468 squid_disk_module_candidates=`echo "$squid_disk_module_candidates" | sed 's/IpcIo//g'`
469 ])
470])
471SQUID_CLEANUP_MODULES_LIST([squid_disk_module_candidates])
dc299f29 472SQUID_CHECK_EXISTING_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
a1c22363
AJ
473AC_MSG_NOTICE([DiskIO modules built: ${squid_disk_module_candidates:-none}])
474SQUID_DEFINE_BOOL(USE_DISKIO,$enable_disk_io,[DiskIO modules are expected to be available.])
40503c27 475
2513178d 476dnl Some autoconf.h defines we might enable later...
0b163dbb
FC
477AC_ARG_WITH(pthreads,AS_HELP_STRING([--without-pthreads],[Disable POSIX Threads]))
478AC_ARG_WITH(aio, AS_HELP_STRING([--without-aio],[Do not use POSIX AIO. Default: auto-detect]))
daf2ddfa 479ENABLE_WIN32_AIOPS=0
ffa3bad9
FC
480squid_opt_use_aio=
481squid_opt_use_diskthreads=
46577dd1 482AIOLIB=
2513178d
AJ
483
484dnl Setup the module paths etc.
2513178d
AJ
485DISK_LIBS=
486DISK_MODULES=
d9691f09
AJ
487AH_TEMPLATE(HAVE_DISKIO_MODULE_AIO, [Whether POSIX AIO Disk I/O module is built])
488AH_TEMPLATE(HAVE_DISKIO_MODULE_BLOCKING, [Whether Blocking Disk I/O module is built])
489AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKDAEMON, [Whether DiskDaemon Disk I/O module is built])
23ee12fb 490AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKTHREADS, [Whether DiskThreads Disk I/O module is built])
d9691f09
AJ
491AH_TEMPLATE(HAVE_DISKIO_MODULE_IPCIO, [Whether IpcIo Disk I/O module is built])
492AH_TEMPLATE(HAVE_DISKIO_MODULE_MMAPPED, [Whether Mmapped Disk I/O module is built])
50fbcbd6 493for module in $squid_disk_module_candidates none; do
d235bc84 494 # maybe not needed
a1c22363
AJ
495 AS_IF([test "x$module" = "xnone"],[continue])
496 AS_IF([! test -d "$srcdir/src/DiskIO/$module"],[AC_MSG_ERROR([disk-io $module does not exist])])
497 AS_CASE(["$module"],
498 [AIO],[
d9691f09
AJ
499 dnl Check for POSIX AIO availability
500 squid_opt_use_aio="yes"
501 AIOLIB=
a1c22363 502 AS_IF([test "x$with_aio" != "xno"],[
d9691f09
AJ
503 have_aio_header=no
504 AC_CHECK_HEADERS(aio.h,[have_aio_header=yes])
505 dnl On some systems POSIX AIO functions are in librt
506 dnl On some systems POSIX AIO functions are in libaio
507 AC_CHECK_LIB(rt,aio_read,[AIOLIB="-lrt"],AC_CHECK_LIB(aio,aio_read,[AIOLIB="-laio"],[]))
508 dnl Enable AIO if the library and headers are found
a1c22363 509 AS_IF([test "x$AIOLIB" != "x" -a "x$have_aio_header" = "xyes"],[
d9691f09
AJ
510 AC_MSG_NOTICE([Native POSIX AIO support detected.])
511 squid_opt_use_aio="yes"
a1c22363 512 ],[
d9691f09
AJ
513 dnl Windows does things differently. We provide wrappers.
514 dnl TODO: Windows really needs its own DiskIO module or its Overlaped IO
a1c22363
AJ
515 AS_IF([test "$squid_host_os" = "mingw"],[
516 squid_opt_use_aio="yes"
517 AC_MSG_NOTICE([Windows being built. Maybe-enable POSIX AIO.])
518 ],[
519 squid_opt_use_aio="no"
520 AC_MSG_NOTICE([Native POSIX AIO support not detected. AIO automatically disabled.])
521 ])
522 ])
523 ],[
d9691f09
AJ
524 AC_MSG_NOTICE([POSIX AIO support manually disabled.])
525 squid_opt_use_aio="no"
a1c22363 526 ])
d9691f09 527 dnl Use the POSIX AIO pieces if we actually need them.
a1c22363 528 AS_IF([test "x$squid_opt_use_aio" = "xyes"],[
d9691f09 529 DISK_MODULES="$DISK_MODULES AIO"
d9691f09 530 AC_DEFINE([HAVE_DISKIO_MODULE_AIO],1,[POSIX AIO Disk I/O module is built])
a1c22363
AJ
531 AS_IF([test "$squid_host_os" = "mingw"],[
532 ENABLE_WIN32_AIO=1
533 AC_MSG_NOTICE([Replacing AIO DiskIO module with: Windows overlapped I/O support])
534 ],[
535 AC_MSG_NOTICE([Enabling AIO DiskIO module])
536 ])
537 ],[
d9691f09 538 AC_MSG_NOTICE([AIO DiskIO Module disabled. Missing POSIX AIO support.])
fedd516f 539 squid_disk_module_candidates_AIO=no
a1c22363
AJ
540 ])
541 ],
d9691f09 542
a1c22363 543 [Blocking],[
d9691f09
AJ
544 AC_MSG_NOTICE([Enabling Blocking DiskIO module])
545 DISK_MODULES="$DISK_MODULES Blocking"
d9691f09 546 AC_DEFINE([HAVE_DISKIO_MODULE_BLOCKING],1,[Blocking Disk I/O module is built])
a1c22363
AJ
547 ],
548
549 [DiskDaemon],[
550 AS_IF([test "$squid_host_os" = "mingw"],[
551 AC_MSG_NOTICE([DiskDaemon not supported on MinGW])
552 squid_disk_module_candidates_DiskDaemon=no
553 ],[
554 AC_MSG_NOTICE([Enabling DiskDaemon DiskIO module])
555 DISK_MODULES="$DISK_MODULES DiskDaemon"
556 AC_DEFINE([HAVE_DISKIO_MODULE_DISKDAEMON],1,[DiskDaemon Disk I/O module is built])
557 ])
558 ],
559
560 [DiskThreads],[
507ca601
FC
561 squid_opt_use_diskthreads="yes"
562 LIBPTHREADS=
563 SQUID_STATE_SAVE([diskthreads_state],[SQUID_CFLAGS SQUID_CXXFLAGS])
a1c22363
AJ
564 AS_IF([test "x$with_pthreads" != "xno"],[
565 dnl TODO: this needs to be extended to handle more systems and better
566 dnl REF: http://www.openldap.org/lists/openldap-bugs/200006/msg00070.html
567 dnl REF: http://autoconf-archive.cryp.to/acx_pthread.html
568 AS_CASE(["$squid_host_os"],
569 [mingw],[
daf2ddfa 570 ENABLE_WIN32_AIOPS=1
507ca601 571 AC_MSG_NOTICE([Windows threads support automatically enabled])
a1c22363
AJ
572 ],
573
574 [freebsd],[
575 AS_IF([test `echo "$squid_host_os_version" | tr -d .` -lt 70],[
576 AC_MSG_NOTICE(pthread library requires FreeBSD 7 or later)
577 squid_opt_use_diskthreads="no"
578 ],[
a0f82085
AJ
579 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
580 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
a1c22363
AJ
581 AS_IF([test "x$GCC" = "xyes" -a "x$PRESET_LDFLAGS" = "x"],[LDFLAGS="$LDFLAGS -pthread"])
582 ])
583 ],
584
585 [openbsd],[
586 AS_IF([test `echo "$squid_host_os_version" | tr -d .` -lt 52],[
587 AC_MSG_NOTICE(pthread library requires OpenBSD 5.2 or later)
588 squid_opt_use_diskthreads="no"
589 ],[
ec264296
SH
590 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
591 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
592 LDFLAGS="$LDFLAGS -lpthread"
a1c22363
AJ
593 ])
594 ],
595
596 [solaris],[
597 AS_IF([test "x$GCC" = "xyes"],[
507ca601
FC
598 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -pthreads"
599 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -pthreads"
600 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
601 AC_MSG_NOTICE(pthread library required but cannot be found.)
602 squid_opt_use_diskthreads="no"
603 ])
a1c22363 604 ],[
507ca601
FC
605 dnl test for -lpthread first. libc version is a stub apparently on Solaris.
606 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -lpthread"
607 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -lpthread"
608 AC_SEARCH_LIBS([pthread_create],[pthread thread],[
9603207d 609 LIBPTHREADS="" #in LIBS
507ca601
FC
610 ],[
611 AC_MSG_NOTICE(pthread library required but cannot be found.)
612 squid_opt_use_diskthreads="no"
613 ])
a1c22363
AJ
614 ])
615 ],
616
617 [
507ca601
FC
618 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
619 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
620 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
40503c27
FC
621 AC_MSG_NOTICE(pthread library required but cannot be found.)
622 squid_opt_use_diskthreads="no"
623 ])
a1c22363
AJ
624 ]
625 )
626 ],[
627 AC_MSG_NOTICE([Native pthreads support manually disabled.])
628 squid_opt_use_diskthreads="no"
629 ])
630 AS_IF([test "x$squid_opt_use_diskthreads" = "xyes"],[
631 AC_MSG_NOTICE([Enabling DiskThreads DiskIO module])
632 DISK_MODULES="$DISK_MODULES DiskThreads"
633 AC_DEFINE([HAVE_DISKIO_MODULE_DISKTHREADS],1,[DiskThreads Disk I/O module is built])
634 ],[
635 AC_MSG_NOTICE([Native pthreads support disabled. DiskThreads module automaticaly disabled.])
636 SQUID_STATE_ROLLBACK([diskthreads_state])
637 squid_disk_module_candidates_DiskThreads=no
638 ])
639 ],
640
641 [IpcIo],[
642 AS_IF([test "x$ac_cv_search_shm_open" = "xno"],[
fedd516f
AJ
643 AC_MSG_NOTICE([DiskIO IpcIo module requires shared memory support])
644 squid_disk_module_candidates_IpcIo=no
a1c22363 645 ],[
23ee12fb 646 AC_MSG_NOTICE([Enabling IpcIo DiskIO module])
fedd516f 647 DISK_MODULES="$DISK_MODULES IpcIo"
fedd516f 648 AC_DEFINE([HAVE_DISKIO_MODULE_IPCIO],1,[IpcIo Disk I/O module is built])
a1c22363
AJ
649 ])
650 ],
2513178d 651
a1c22363 652 [Mmapped],[
e2cbb70e
FC
653 dnl TODO: use availability of sys/mman.h and/or mmap to define
654 dnl OR support windows mmap functions
a1c22363 655 AS_IF([test "x$squid_host_os" = "xmingw"],[
e2cbb70e 656 AC_MSG_NOTICE([Mmapped DiskIO is not available on Mingw])
fedd516f 657 squid_disk_module_candidates_Mmapped=no
a1c22363 658 ],[
e2cbb70e 659 AC_MSG_NOTICE([Enabling Mmapped DiskIO module])
e2cbb70e 660 DISK_MODULES="$DISK_MODULES Mmapped"
d9691f09 661 AC_DEFINE([HAVE_DISKIO_MODULE_MMAPPED],1,[Mmapped Disk I/O module is built])
a1c22363
AJ
662 ])
663 ],
e2851fe7 664
a1c22363 665 [
507ca601 666 AC_MSG_NOTICE([Enabling $module DiskIO module])
d9691f09 667 DISK_LIBS="$DISK_LIBS lib${module}.la"
507ca601 668 DISK_MODULES="$DISK_MODULES ${module}"
a1c22363 669 ])
2513178d
AJ
670done
671AC_MSG_NOTICE([IO Modules built: $DISK_MODULES])
672AC_SUBST(DISK_MODULES)
673AC_SUBST(DISK_LIBS)
8aafbbc1 674AM_CONDITIONAL(ENABLE_DISKIO_AIO, test "x$squid_disk_module_candidates_AIO" = "xyes")
d9691f09 675AC_SUBST(AIOLIB)
8aafbbc1
AJ
676AM_CONDITIONAL(ENABLE_WIN32_AIO, test "x$squid_disk_module_candidates_AIO" = "xyes" -a "x$ENABLE_WIN32_AIO" = "x1")
677AM_CONDITIONAL(ENABLE_DISKIO_BLOCKING, test "x$squid_disk_module_candidates_Blocking" = "xyes")
678AM_CONDITIONAL(ENABLE_DISKIO_DISKDAEMON, test "x$squid_disk_module_candidates_DiskDaemon" = "xyes")
679AM_CONDITIONAL(ENABLE_DISKIO_DISKTHREADS, test "x$squid_disk_module_candidates_DiskThreads" = "xyes")
d9691f09 680AC_SUBST(LIBPTHREADS)
8aafbbc1
AJ
681AM_CONDITIONAL(ENABLE_WIN32_AIOPS, test "x$squid_disk_module_candidates_DiskThreads" = "xyes" -a "x$ENABLE_WIN32_AIOPS" = "x1")
682AM_CONDITIONAL(ENABLE_DISKIO_IPCIO, test "x$squid_disk_module_candidates_IpcIo" = "xyes")
683AM_CONDITIONAL(ENABLE_DISKIO_MMAPPED, test "x$squid_disk_module_candidates_Mmapped" = "xyes")
2513178d
AJ
684
685dnl Check what Storage formats are wanted.
686dnl This version will error out with a message saying why if a required DiskIO is missing.
d235bc84
FC
687AC_ARG_ENABLE([storeio],
688 AS_HELP_STRING([--enable-storeio="list of modules"],
689 [Build support for the list of store I/O modules.
18cc92fb
FC
690 The default is only to build the "ufs" module.
691 See src/fs for a list of available modules, or
692 Programmers Guide section <not yet written>
507ca601 693 for details on how to build your custom store module]), [
a1c22363
AJ
694 AS_CASE(["$enableval"],
695 [yes],[],
696 [no|none],[enable_storeio="no"],
697 [
698 enable_storeio="yes"
699 # ufs is really always needed as it has low-level routines
700 # if it is a dupe it will be cleaned-up later
701 squid_storeio_module_candidates="$enableval ufs"
702 ])
703])
704AS_IF([test "x${enable_storeio:=yes}" = "xyes"],[
d235bc84 705 SQUID_LOOK_FOR_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
a1c22363 706])
dc299f29
FC
707SQUID_CLEANUP_MODULES_LIST([squid_storeio_module_candidates])
708SQUID_CHECK_EXISTING_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
a1c22363 709AC_MSG_NOTICE([Store modules built: ${squid_storeio_module_candidates:-none}])
dc299f29 710
a1c22363
AJ
711for fs in ${squid_storeio_module_candidates:-none}; do
712 AS_CASE([$fs],
713 [diskd],[
714 AS_IF([test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
715 "x$squid_disk_module_candidates_DiskDaemon" != "xyes"],[
507ca601 716 AC_MSG_ERROR([Storage diskd module requires DiskIO module: Blocking or DiskDaemon])
a1c22363
AJ
717 ])
718 ],
719 [aufs],[
720 AS_IF([test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
721 "x$squid_disk_module_candidates_DiskThreads" != "xyes"],[
507ca601 722 AC_MSG_ERROR([Storage module aufs requires DiskIO module: Blocking or DiskThreads])
a1c22363
AJ
723 ])
724 ],
725 [rock],[
726 AS_IF([test "x$squid_disk_module_candidates_IpcIo" != "xyes" -a \
727 "x$squid_disk_module_candidates_Blocking" != "xyes"],[
b5b88fb5 728 AC_MSG_ERROR([Storage module Rock requires DiskIO module: Blocking or IpcIo])
a1c22363 729 ])
b5b88fb5 730 squid_do_build_rock=true
a1c22363
AJ
731 ],
732 [ufs],[
733 AS_IF([test "x$squid_disk_module_candidates_Blocking" != "xyes"],[
b5b88fb5 734 AC_MSG_ERROR([Storage module ufs requires DiskIO module: Blocking])
a1c22363 735 ])
b5b88fb5 736 squid_do_build_ufs=true
a1c22363
AJ
737 ]
738 )
a2794549 739done
23ee12fb 740
8aafbbc1
AJ
741AM_CONDITIONAL(ENABLE_FS_UFS, test "x$squid_do_build_ufs" = "xtrue")
742AM_CONDITIONAL(ENABLE_FS_ROCK, test "x$squid_do_build_rock" = "xtrue")
9d6186b1
FC
743dnl hack: need to define those even if not used in the build system to
744dnl make sure that global FS objects are linked to the squid binary.
7b5b7ba8
CT
745AH_TEMPLATE(HAVE_FS_UFS, "Define to 1 if ufs filesystem module is build")
746AH_TEMPLATE(HAVE_FS_AUFS, "Define to 1 if aufs filesystem module is build")
747AH_TEMPLATE(HAVE_FS_DISKD, "Define to 1 if diskd filesystem module is build")
e2851fe7 748AH_TEMPLATE(HAVE_FS_ROCK, "Define to 1 if rock filesystem module is build")
7b5b7ba8
CT
749
750
dc299f29 751dnl got final squid_storeio_module_candidates, build library lists
b66455ff
AR
752dnl This list will not be needed when each fs library has its own Makefile
753STORE_LIBS_TO_BUILD=
754dnl File system libraries to link executables with.
755dnl These are the same as STORE_LIBS_TO_BUILD, but with a path
756STORE_LIBS_TO_ADD=
dc299f29 757for fs in $squid_storeio_module_candidates; do
7b5b7ba8
CT
758 STORE_LIBS_TO_BUILD="$STORE_LIBS_TO_BUILD lib${fs}.la"
759 STORE_LIBS_TO_ADD="$STORE_LIBS_TO_ADD fs/lib${fs}.la"
6d1c1ab1
FC
760 SQUID_TOUPPER_VAR_CONTENTS([fs])
761 AC_DEFINE_UNQUOTED(HAVE_FS_${fs}, 1)
b66455ff
AR
762done
763
764AC_SUBST(STORE_LIBS_TO_BUILD)
765AC_SUBST(STORE_LIBS_TO_ADD)
082a5e7a 766AC_SUBST(STORE_TESTS)
a2794549 767
24a04df9
AJ
768
769dnl At lest one removal policy is always needed.
770dnl 'lru' removal policy is currently hard-coded by name for tests
771dnl so we must set it as default.
772REPL_POLICIES="lru"
d9180414 773AC_ARG_ENABLE(removal-policies,
56ffc413
FC
774 AS_HELP_STRING([--enable-removal-policies="list of policies"],
775 [Build support for the list of removal policies.
18cc92fb
FC
776 The default is only to build the "lru" module.
777 See src/repl for a list of available modules, or
778 Programmers Guide section 9.9 for details on how
507ca601 779 to build your custom policy]), [
a1c22363
AJ
780 AS_CASE(["$enableval"],
781 [yes],[ SQUID_LOOK_FOR_MODULES([$srcdir/src/repl],[REPL_POLICIES]) ],
782 [no],[],
783 [ REPL_POLICIES="$enableval" ]
784 )
785])
786SQUID_CLEANUP_MODULES_LIST([REPL_POLICIES])
787SQUID_CHECK_EXISTING_MODULES([$srcdir/src/repl],[REPL_POLICIES])
788AC_MSG_NOTICE([Removal policies to build: $REPL_POLICIES])
789REPL_OBJS="repl/lib`echo \"$REPL_POLICIES\" | sed -e 's% %.a repl/lib%g'`.a"
790REPL_LIBS=`echo "$REPL_OBJS" | sed -e 's%repl/%%g'`
6a566b9c 791AC_SUBST(REPL_POLICIES)
6a566b9c 792AC_SUBST(REPL_OBJS)
f71946fc 793AC_SUBST(REPL_LIBS)
6a566b9c 794
d1da2d1f 795AM_CONDITIONAL(ENABLE_PINGER, false)
e5f4e1b0 796AC_ARG_ENABLE(icmp,
a1c22363
AJ
797 AS_HELP_STRING([--enable-icmp],[Enable ICMP pinging and Network Measurement]),[
798 AS_IF([test "x$enableval" = "xyes"],[
eed82608 799 AC_MSG_NOTICE([ICMP enabled])
be0c7ff0 800 AC_DEFINE(USE_ICMP,1,[Define to use Squid ICMP and Network Measurement features (highly recommended!)])
d1da2d1f 801 AM_CONDITIONAL(ENABLE_PINGER, true)
a1c22363 802 ])
e5f4e1b0 803])
804
9a0a18de 805AM_CONDITIONAL(ENABLE_DELAY_POOLS, false)
d9180414 806AC_ARG_ENABLE(delay-pools,
a1c22363
AJ
807 AS_HELP_STRING([--enable-delay-pools],[Enable delay pools to limit bandwidth usage]),[
808 AS_IF([test "x$enableval" = "xyes"],[
eed82608 809 AC_MSG_NOTICE([Delay pools enabled])
9a0a18de 810 AC_DEFINE([USE_DELAY_POOLS],1,[Traffic management via "delay pools".])
ffe4ffd8 811 AM_CONDITIONAL(ENABLE_DELAY_POOLS, true)
a1c22363 812 ])
e5f4e1b0 813])
814
5fa840c3 815dnl disable generic/common adaptation support by default
5069fb38 816squid_opt_use_adaptation=no
5fa840c3 817
799b66d1
AJ
818squid_opt_use_esi=auto
819AH_TEMPLATE([USE_SQUID_ESI],[Define to enable the ESI processor])
43ae1d95 820AC_ARG_ENABLE(esi,
799b66d1 821 AS_HELP_STRING([--disable-esi],
5cf2197f 822 [Disable ESI for accelerators. ESI requires expat or xml2 library.
7eb77a5f 823 Enabling ESI will cause squid reverse proxies to be capable
5069fb38 824 of the Edge Acceleration Specification (www.esi.org).]),
799b66d1 825 [squid_opt_use_esi=$enableval],[])
88bfe098 826
7eb77a5f 827# ESI support libraries: expat
407c0702 828AH_TEMPLATE(HAVE_LIBEXPAT,[Define to 1 if you have the expat library])
5cf2197f 829SQUID_AUTO_LIB(expat,[ESI expat library],[LIBEXPAT])
a1c22363 830AS_IF([test "x$squid_opt_use_esi" != "xno" -a "x$with_expat" != "xno"],[
407c0702
AJ
831 SQUID_STATE_SAVE(squid_expat_state)
832 PKG_CHECK_MODULES([LIBEXPAT],[expat],[],[
833 AC_CHECK_LIB([expat],[main],[LIBEXPAT_LIBS="-lexpat"])
799b66d1 834 ])
407c0702
AJ
835 CPPFLAGS="$LIBEXPAT_CFLAGS $CPPFLAGS"
836 AC_CHECK_HEADERS(expat.h)
837 SQUID_STATE_ROLLBACK(squid_expat_state)
838 AS_IF([test "x$LIBEXPAT_LIBS" != "x"],[
839 squid_opt_use_esi=yes
840 LIBEXPAT_LIBS="$LIBEXPAT_PATH $LIBEXPAT_LIBS"
841 AC_DEFINE(HAVE_LIBEXPAT,1,[Define to 1 if you have the expat library])
842 ],
843 [test "x$with_expat" = "xyes"],[AC_MSG_ERROR([Required library expat not found.])],
844 [AC_MSG_NOTICE([Library expat not found.])]
845 )
a1c22363 846])
407c0702
AJ
847AM_CONDITIONAL(ENABLE_LIBEXPAT,[test "x$LIBEXPAT_LIBS" != "x"])
848AC_SUBST(LIBEXPAT_LIBS)
ad32c661 849
866a092d
AJ
850# ESI support libraries: xml2
851AH_TEMPLATE(HAVE_LIBXML2,[Define to 1 if you have the xml2 library])
5cf2197f
AJ
852SQUID_AUTO_LIB(xml2,[ESI xml2 library],[LIBXML2])
853AS_IF([test "x$squid_opt_use_esi" != "xno" -a "x$with_xml2" != "xno"],[
8fa07024
FF
854 SQUID_STATE_SAVE([squid_libxml2_save])
855 PKG_CHECK_MODULES([LIBXML2],[libxml-2.0],[],[
866a092d 856 AC_CHECK_LIB([xml2],[main],[LIBXML2_LIBS="$LIBXML2_PATH -lxml2"])
0dc1a86a 857 ])
37be0e75 858 CPPFLAGS="$LIBXML2_CFLAGS $CPPFLAGS"
0dc1a86a 859 AC_CHECK_HEADERS(libxml/parser.h libxml/HTMLparser.h libxml/HTMLtree.h)
8fa07024
FF
860 SQUID_STATE_ROLLBACK([squid_libxml2_save])
861
a1c22363 862 AS_IF([test "x$LIBXML2_LIBS" != "x"],[
799b66d1 863 squid_opt_use_esi=yes
37be0e75 864 CPPFLAGS="$LIBXML2_CFLAGS $CPPFLAGS"
866a092d
AJ
865 LIBXML2_LIBS="$LIBXML2_PATH $LIBXML2_LIBS"
866 AC_DEFINE(HAVE_LIBXML2,1,[Define to 1 if you have the xml2 library])
5cf2197f
AJ
867 ],[test "x$with_xml2" = "xyes"],[
868 AC_MSG_ERROR([Required library xml2 not found])
a1c22363 869 ],[
5cf2197f 870 AC_MSG_NOTICE([Library xml2 not found.])
a1c22363
AJ
871 ])
872])
866a092d
AJ
873AM_CONDITIONAL(ENABLE_LIBXML2,[test "x$LIBXML2_LIBS" != "x"])
874AC_SUBST(LIBXML2_LIBS)
7eb77a5f 875
799b66d1 876AS_IF([test "x$squid_opt_use_esi" = "xyes"],[
407c0702 877 AS_IF([test "x$LIBXML2_LIBS" = "x" -a "x$LIBEXPAT_LIBS" = "x"],[
799b66d1
AJ
878 AC_MSG_ERROR([ESI processor requires libxml2 or libexpat])
879 ])
407c0702 880 AC_MSG_NOTICE([Enabling ESI processor: $LIBEXPAT_LIBS $LIBXML2_LIBS])
799b66d1
AJ
881 AC_DEFINE(USE_SQUID_ESI,1,[Compile the ESI processor])
882],[
883 AS_IF(test "x$squid_opt_use_esi" = "xno",[
884 AC_MSG_NOTICE([Disabling ESI processor.])
885 ],[
886 AC_MSG_NOTICE([Disabling ESI processor. libxml2 and libexpat not found.])
887 ])
888])
8aafbbc1 889AM_CONDITIONAL(ENABLE_ESI, test "x$squid_opt_use_esi" = "xyes")
43ae1d95 890
51952383 891AC_ARG_ENABLE(icap-client,
4f07726a 892 AS_HELP_STRING([--disable-icap-client],[Disable the ICAP client.]),[
ec308e40 893 SQUID_YESNO([$enableval],[--enable-icap-client])
4f07726a
AJ
894])
895SQUID_DEFINE_BOOL(ICAP_CLIENT,${enable_icap_client:=yes}, [Enable ICAP client features in Squid])
ebf76e07 896AS_IF(test "x$enable_icap_client" != "xno", squid_opt_use_adaptation="yes")
8aafbbc1 897AM_CONDITIONAL(ENABLE_ICAP_CLIENT, test "x$enable_icap_client" != "xno")
51952383 898
3e7b6055 899AC_ARG_ENABLE(ecap,
a1c22363 900 AS_HELP_STRING([--enable-ecap],[support loadable content adaptation modules]),[
ec308e40 901 SQUID_YESNO([$enableval],[--enable-ecap])],[
a1c22363
AJ
902 enable_ecap="no"
903])
3e7b6055 904dnl Perform configuration consistency checks for eCAP
a1c22363
AJ
905AS_IF([test "x$enable_ecap" != "xno"],[
906 AS_IF([test "x$enable_shared" != "xyes"],[
5a2409b7 907 AC_MSG_ERROR([eCAP support requires loadable modules. Please do not use --disable-shared with --enable-ecap.])
a1c22363 908 ])
4cfba571 909
a1c22363 910 AS_IF([test -n "$PKG_CONFIG"],[
6666da11 911 dnl eCAP support requires libecap.
0a720258 912 dnl This Squid supports libecap v1.0.x.
3e115aaf
AR
913 dnl Use EXT_ prefix to distinguish external libecap (that we check for
914 dnl here) from our own convenience ecap library in Makefiles.
0a720258 915 PKG_CHECK_MODULES([EXT_LIBECAP],[libecap >= 1.0 libecap < 1.1])
a1c22363 916 ],[
cbc14831 917 AC_MSG_NOTICE([eCAP support requires pkg-config to verify the correct library version. Trouble may follow.])
a1c22363 918 ])
3e7b6055 919
ebf76e07
AJ
920 SQUID_STATE_SAVE(squid_ecap_state)
921 AC_MSG_CHECKING([whether -lecap will link])
a023fd8e
AJ
922 CXXFLAGS="$CXXFLAGS $EXT_LIBECAP_CFLAGS"
923 LIBS="$LIBS $EXT_LIBECAP_LIBS"
ebf76e07
AJ
924 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <libecap/common/names.h>]],[[
925 const libecap::Name test("test", libecap::Name::NextId());
926 ]])],[
927 AC_MSG_RESULT(yes)
5069fb38 928 squid_opt_use_adaptation=yes
ebf76e07
AJ
929 ],[
930 AC_MSG_RESULT(no)
a1c22363
AJ
931 AS_IF([test "x$enable_ecap" = "xyes"],[
932 AC_MSG_ERROR([eCAP library will not link.
ebf76e07 933 You may need to rebuild libecap using the same version of GCC as Squid.
a1c22363
AJ
934 There have been breaking ABI changes in the libstdc++ STL with GCC 5.])
935 ],[
936 AC_MSG_NOTICE([eCAP library will not link.
ebf76e07
AJ
937 You may need to rebuild libecap using the same version of GCC as Squid.
938 There have been breaking ABI changes in the libstdc++ STL with GCC 5.])
a1c22363 939 enable_ecap="no"
ebf76e07
AJ
940 ])
941 ])
942 SQUID_STATE_ROLLBACK(squid_ecap_state)
a1c22363
AJ
943])
944SQUID_DEFINE_BOOL(USE_ECAP,${enable_ecap:=no},[Whether to use eCAP support])
945AM_CONDITIONAL(ENABLE_ECAP, test "x$enable_ecap" = "xyes")
3e7b6055 946
5fa840c3 947dnl enable adaptation if requested by specific adaptation mechanisms
8aafbbc1 948ADAPTATION_LIBS=""
a1c22363 949AS_IF([test "x$squid_opt_use_adaptation" = "xyes"],[ADAPTATION_LIBS="adaptation/libadaptation.la"])
8aafbbc1
AJ
950SQUID_DEFINE_BOOL(USE_ADAPTATION,${squid_opt_use_adaptation:=no}, [common adaptation support])
951AM_CONDITIONAL(ENABLE_ADAPTATION, test "x$squid_opt_use_adaptation" = "xyes")
5fa840c3 952AC_SUBST(ADAPTATION_LIBS)
3e7b6055 953
a1c22363 954AS_IF([test "x$squid_host_os" = "xmingw"],[enable_wccp=no])
5069fb38 955AC_ARG_ENABLE(wccp,
ec308e40
AJ
956 AS_HELP_STRING([--disable-wccp],[Disable Web Cache Coordination Protocol]),[
957 SQUID_YESNO([$enableval],[--enable-wccp])
5069fb38 958])
0067eb06 959SQUID_DEFINE_BOOL(USE_WCCP, ${enable_wccp:=yes}, [Define to enable WCCP])
1a6b111a 960AC_MSG_NOTICE([Web Cache Coordination Protocol enabled: $enable_wccp])
0b0cfcf2 961
a1c22363 962AS_IF([test "x$squid_host_os" = "xmingw"],[enable_wccpv2=no])
0b0cfcf2 963AC_ARG_ENABLE(wccpv2,
1a6b111a 964 AS_HELP_STRING([--disable-wccpv2],
9603207d 965 [Disable Web Cache Coordination V2 Protocol]), [
ec308e40 966 SQUID_YESNO([$enableval],[--enable-wccpv2])
0b0cfcf2 967])
0067eb06 968SQUID_DEFINE_BOOL(USE_WCCPv2,${enable_wccpv2:=yes},
1a6b111a
FC
969 [Define to enable WCCP V2])
970AC_MSG_NOTICE([Web Cache Coordination V2 Protocol enabled: $enable_wccpv2])
320e9f36 971
e5f4e1b0 972AC_ARG_ENABLE(snmp,
1d87b6b3 973 AS_HELP_STRING([--disable-snmp],[Disable SNMP monitoring support]), [
ec308e40 974 SQUID_YESNO([$enableval],[--enable-snmp])
87630341 975])
0067eb06 976SQUID_DEFINE_BOOL(SQUID_SNMP,${enable_snmp:=yes},
1a6b111a 977 [Define to enable SNMP monitoring of Squid])
f738d783 978AM_CONDITIONAL(ENABLE_SNMP, [test "x$enable_snmp" = "xyes"])
a1c22363 979AS_IF([test "x$enable_snmp" = "xyes"],[SNMPLIB="../lib/snmplib/libsnmplib.la"])
1a6b111a 980AC_MSG_NOTICE([SNMP support enabled: $enable_snmp])
e5f4e1b0 981AC_SUBST(SNMPLIB)
e5f4e1b0 982
d9180414 983AC_ARG_ENABLE(cachemgr-hostname,
5069fb38
FC
984 AS_HELP_STRING([--enable-cachemgr-hostname=hostname],
985 [Make cachemgr.cgi default to this host.
1d87b6b3 986 If unspecified, uses the name of the build-host]), [
a1c22363
AJ
987 AS_CASE([$enableval],
988 [yes],[
989 AC_DEFINE(CACHEMGR_HOSTNAME,[getfullhostname()],
990 [If you are upset that the cachemgr.cgi form comes up with the hostname field blank, then define this to getfullhostname()])
991 AC_MSG_NOTICE([Cachemgr default hostname == host where cachemgr runs])
992 ],
993 [no],[:],
994 [
995 AC_DEFINE_UNQUOTED(CACHEMGR_HOSTNAME,"${enableval}")
996 AC_MSG_NOTICE([Cachemgr default hostname set to ${enableval}])
997 ])
e5f4e1b0 998])
999
ee0927b6 1000AC_ARG_ENABLE(eui,
1a6b111a 1001 AS_HELP_STRING([--disable-eui],
c8da66ba 1002 [Disable use of ARP / MAC/ EUI (ether address)]), [
ec308e40 1003 SQUID_YESNO([$enableval],[--enable-eui])
1a6b111a 1004])
a1c22363 1005AS_IF([test "x${enable_eui:=yes}" = "xyes"],[
195ec847
AJ
1006 SQUID_STATE_SAVE(LIBEUI)
1007 # GLIBC 2.30 deprecates sysctl.h. Test with the same flags that (may) break includes later.
1008 CFLAGS=$SQUID_CFLAGS
1009 CXXFLAGS=$SQUID_CXXFLAGS
a1c22363
AJ
1010 AS_CASE(["$squid_host_os"],
1011 [linux|solaris|freebsd|openbsd|netbsd|cygwin],[:],
1012 [mingw],[EUILIB="-liphlpapi"],
1013 [AC_MSG_WARN([EUI support probably will not work on host $host.])]
1014 )
b966288b 1015 # iphlpapi.h check delayed after winsock2.h
507ca601 1016 AC_CHECK_HEADERS( \
32341684 1017 windows.h \
507ca601 1018 sys/sockio.h \
32341684
AJ
1019 sys/param.h,
1020 [], [], [[
1021#if HAVE_WINDOWS_H
1022include <windows.h>
54d47324 1023#endif
32341684 1024]]
507ca601 1025 )
29759678
FC
1026 AC_CHECK_HEADERS( \
1027 net/if_arp.h \
9603207d 1028 net/route.h,
29759678
FC
1029 [], [], [[
1030#include <sys/types.h>
1031#include <sys/socket.h>
1032]])
1033
43c1320a
AJ
1034 # OpenBSD, FreeBSD and NetBSD requires sys/param.h to be included before sysctl.h and net/if_dl.h
1035 AC_CHECK_HEADERS( \
1036 net/if_dl.h \
1037 sys/sysctl.h,
1038 [], [], [[
54d47324 1039#if HAVE_SYS_PARAM_H
29759678
FC
1040#include <sys/param.h>
1041#endif
1042 ]])
195ec847 1043 SQUID_STATE_ROLLBACK(LIBEUI)
a1c22363 1044])
2ef664d8 1045AC_SUBST(EUILIB)
1a6b111a 1046AC_MSG_NOTICE([EUI (MAC address) controls enabled: $enable_eui])
0067eb06 1047SQUID_DEFINE_BOOL(USE_SQUID_EUI,$enable_eui,
1a6b111a 1048 [Define this to include code which lets you use ethernet addresses. This code uses API initially defined in 4.4-BSD.])
8aafbbc1 1049AM_CONDITIONAL(ENABLE_EUI, [test "x$enable_eui" = "xyes" ])
1a6b111a 1050
e5f4e1b0 1051
74075210 1052AC_ARG_ENABLE(htcp,
47d80734 1053 AS_HELP_STRING([--disable-htcp],[Disable HTCP protocol support]), [
ec308e40 1054 SQUID_YESNO([$enableval],[--enable-htcp])
74075210 1055])
0f658b5b 1056SQUID_DEFINE_BOOL(USE_HTCP,${enable_htcp:=yes},
47d80734 1057 [Define this to include code for the Hypertext Cache Protocol (HTCP)])
fcabe077 1058AM_CONDITIONAL(ENABLE_HTCP, [test "x$enable_htcp" = "xyes"])
1a6b111a
FC
1059AC_MSG_NOTICE([HTCP support enabled: $enable_htcp])
1060
09cd7204 1061# Cryptograhic libraries
24531401 1062SQUID_AUTO_LIB(nettle,[Nettle crypto],[LIBNETTLE])
a1c22363 1063AS_IF(test "x$with_nettle" != "xno"],[
b12b66cd
AJ
1064 SQUID_STATE_SAVE(squid_nettle_state)
1065 PKG_CHECK_MODULES([LIBNETTLE],[nettle >= 3.4],[],[
1066 CPPFLAGS="$LIBNETTLE_CFLAGS $CPPFLAGS"
1067 AC_CHECK_LIB(nettle,[nettle_md5_init],[LIBNETTLE_LIBS="-lnettle"])
1068 ])
1069 AC_CHECK_HEADERS(nettle/base64.h nettle/md5.h)
1070 SQUID_CHECK_NETTLE_BASE64
1071 SQUID_STATE_ROLLBACK(squid_nettle_state)
1072 AS_IF([test "x$LIBNETTLE_LIBS" != "x"],[
1073 CXXFLAGS="$LIBNETTLE_CFLAGS $CXXFLAGS"
1074 LIBNETTLE_LIBS="$LIBNETTLE_PATH $LIBNETTLE_LIBS"
1075 ],[test "x$with_nettle" = "xyes"],[
1076 AC_MSG_ERROR([Required library nettle not found])
1077 ],[
1078 AC_MSG_NOTICE([Library nettle not found.])
a1c22363
AJ
1079 ])
1080])
09cd7204 1081AC_MSG_NOTICE([Using Nettle cryptographic library: ${with_nettle:=yes}])
b12b66cd 1082AC_SUBST(LIBNETTLE_LIBS)
a9dfcab8 1083
e59a64d7
AJ
1084dnl Check for libcrypt
1085CRYPTLIB=
1086dnl Some of our helpers use crypt(3) which may be in libc, or in
1087dnl libcrypt (eg FreeBSD)
1088AC_CHECK_LIB(crypt, crypt, [CRYPTLIB="-lcrypt"])
1089dnl Solaris10 provides MD5 natively through libmd5
1090AC_CHECK_LIB(md5, MD5Init, [CRYPTLIB="$CRYPTLIB -lmd5"])
1091AC_SUBST(CRYPTLIB)
1092
b4f805f6
AJ
1093SSLLIB=""
1094
24531401 1095SQUID_AUTO_LIB(gnutls,[GnuTLS crypto],[LIBGNUTLS])
b4f805f6 1096AH_TEMPLATE(USE_GNUTLS,[GnuTLS support is available])
a1c22363 1097AS_IF([test "x$with_gnutls" != "xno"],[
7c760558 1098 SQUID_STATE_SAVE(squid_gnutls_state)
b4f805f6
AJ
1099
1100 # User may have provided a custom location for GnuTLS. Otherwise...
24531401 1101 CPPFLAGS="$LIBGNUTLS_CFLAGS $CPPFLAGS"
b4f805f6
AJ
1102 LIBS="$LIBS $LIBGNUTLS_PATH"
1103
1104 # auto-detect using pkg-config
516ec633 1105 PKG_CHECK_MODULES([LIBGNUTLS],[gnutls >= 3.4.0],[
7c760558
FC
1106 CPPFLAGS="$CPPFLAGS $LIBGNUTLS_CFLAGS"
1107 ],[
b4f805f6 1108 ## find the package without pkg-config
c113986e 1109 ## check that the library is actually new enough.
516ec633
AJ
1110 ## by testing for a 3.4.0+ function which we use
1111 AC_CHECK_LIB(gnutls,gnutls_pcert_export_x509,[LIBGNUTLS_LIBS="-lgnutls"])
b4f805f6 1112 ])
580160fb
FC
1113 # if any of the required headers is not found, signal we can't support gnutls
1114 AC_CHECK_HEADERS([gnutls/gnutls.h gnutls/x509.h gnutls/abstract.h], [], [LIBGNUTLS_LIBS=""])
b4f805f6
AJ
1115
1116 SQUID_STATE_ROLLBACK(squid_gnutls_state) #de-pollute LIBS
1117
a1c22363 1118 AS_IF([test "x$with_gnutls" = "xyes" -a "x$LIBGNUTLS_LIBS" = "x"],[
b4f805f6 1119 AC_MSG_ERROR([Required GnuTLS library not found])
a1c22363
AJ
1120 ])
1121 AS_IF([test "x$LIBGNUTLS_LIBS" != "x"],[
b4f805f6
AJ
1122 CXXFLAGS="$LIBGNUTLS_CFLAGS $CXXFLAGS"
1123 SSLLIB="$LIBGNUTLS_PATH $LIBGNUTLS_LIBS $SSLLIB"
1124 AC_DEFINE(USE_GNUTLS,1,[GnuTLS support is available])
a1c22363 1125 ],[
b4f805f6 1126 with_gnutls=no
a1c22363
AJ
1127 ])
1128])
b4f805f6
AJ
1129AC_MSG_NOTICE([GnuTLS library support: ${with_gnutls:=auto} ${LIBGNUTLS_PATH} ${LIBGNUTLS_LIBS}])
1130
3d4022fa 1131dnl User may specify OpenSSL is needed from a non-standard location
24531401 1132SQUID_OPTIONAL_LIB(openssl,[OpenSSL],[LIBOPENSSL])
cb4f4424 1133AH_TEMPLATE(USE_OPENSSL,[OpenSSL support is available])
c41db002 1134## OpenSSL is default disable due to licensing issues on some OS
a1c22363 1135AS_IF([test "x$with_openssl" = "xyes"],[
24531401 1136 CPPFLAGS="$LIBOPENSSL_CFLAGS $CPPFLAGS"
c41db002 1137 AC_CHECK_HEADERS( \
24b30fdc 1138 openssl/asn1.h \
8693472e 1139 openssl/bio.h \
24b30fdc 1140 openssl/bn.h \
eacc1666 1141 openssl/crypto.h \
742236c7 1142 openssl/decoder.h \
24b30fdc 1143 openssl/dh.h \
c41db002 1144 openssl/err.h \
24b30fdc
EQ
1145 openssl/evp.h \
1146 openssl/lhash.h \
c41db002
AJ
1147 openssl/md5.h \
1148 openssl/opensslv.h \
24b30fdc 1149 openssl/rsa.h \
c41db002 1150 openssl/ssl.h \
24b30fdc 1151 openssl/x509.h \
c41db002
AJ
1152 openssl/x509v3.h \
1153 openssl/engine.h \
1154 openssl/txt_db.h \
1155 )
1156
e0b98074 1157 # User may have provided a custom location for OpenSSL. Otherwise...
84c3fc14
AJ
1158 SQUID_STATE_SAVE(squid_openssl_state)
1159 LIBS="$LIBS $LIBOPENSSL_PATH"
1160
1161 # auto-detect using pkg-config
1162 PKG_CHECK_MODULES([LIBOPENSSL],[openssl],,[
1163 ## For some OS pkg-config is broken or unavailable.
1164 ## Detect libraries the hard way.
1165
1166 # Windows MinGW has some special libraries ...
a1c22363 1167 AS_IF([test "x$squid_host_os" = "xmingw"],[
84c3fc14
AJ
1168 LIBOPENSSL_LIBS='-lssleay32 -leay32 -lgdi32 $LIBOPENSSL_LIBS'
1169 AC_MSG_NOTICE([Windows OpenSSL library support: yes -lssleay32 -leay32 -lgdi32])
a1c22363 1170 ])
e0b98074 1171
84c3fc14
AJ
1172 AC_CHECK_LIB(crypto,[CRYPTO_new_ex_data],[LIBOPENSSL_LIBS="-lcrypto $LIBOPENSSL_LIBS"],[
1173 AC_MSG_ERROR([library 'crypto' is required for OpenSSL])
37a20074 1174 ],$LIBOPENSSL_LIBS)
403c4682 1175 AC_CHECK_LIB(ssl,[SSL_CTX_new],[LIBOPENSSL_LIBS="-lssl $LIBOPENSSL_LIBS"],[
84c3fc14 1176 AC_MSG_ERROR([library 'ssl' is required for OpenSSL])
37a20074 1177 ],$LIBOPENSSL_LIBS)
84c3fc14 1178 ])
e0b98074 1179
84c3fc14 1180 # This is a workaround for RedHat 9 brain damage..
a1c22363 1181 AS_IF([test -d /usr/kerberos/include -a -f /usr/include/openssl/kssl.h],[
84c3fc14
AJ
1182 AC_MSG_NOTICE([OpenSSL depends on Kerberos])
1183 LIBOPENSSL_LIBS="-L/usr/kerberos/lib $LIBOPENSSL_LIBS"
1184 CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
a1c22363 1185 ])
84c3fc14 1186 SQUID_STATE_ROLLBACK(squid_openssl_state) #de-pollute LIBS
1f7c9178 1187
a1c22363 1188 AS_IF([test "x$LIBOPENSSL_LIBS" != "x"],[
c41db002 1189 CXXFLAGS="$LIBOPENSSL_CFLAGS $CXXFLAGS"
84c3fc14 1190 SSLLIB="$LIBOPENSSL_PATH $LIBOPENSSL_LIBS $SSLLIB"
cb4f4424 1191 AC_DEFINE(USE_OPENSSL,1,[OpenSSL support is available])
c41db002 1192
b8649ee4 1193 # check for API functions
17e98f24
AJ
1194 SQUID_CHECK_LIBCRYPTO_API
1195 SQUID_CHECK_LIBSSL_API
8d56fe55 1196 SQUID_CHECK_OPENSSL_TLS_METHODS
b8649ee4
CT
1197 SQUID_STATE_SAVE(check_SSL_CTX_get0_certificate)
1198 LIBS="$LIBS $SSLLIB"
1199 AC_CHECK_LIB(ssl, SSL_CTX_get0_certificate, [
1200 AC_DEFINE(HAVE_SSL_CTX_GET0_CERTIFICATE, 1, [SSL_CTX_get0_certificate is available])
1201 ], [
1202 missing_SSL_CTX_get0_certificate=yes
1203 ])
1204 SQUID_STATE_ROLLBACK(check_SSL_CTX_get0_certificate)
1205
c41db002 1206 # check for other specific broken implementations
a1c22363 1207 AS_IF([test "x$missing_SSL_CTX_get0_certificate" = "xyes"],SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS)
c41db002 1208 SQUID_CHECK_OPENSSL_CONST_SSL_METHOD
7d841344
AJ
1209 SQUID_CHECK_OPENSSL_CONST_CRYPTO_EX_DATA
1210 SQUID_CHECK_OPENSSL_CONST_SSL_SESSION_CB_ARG
70cfe22f 1211 SQUID_CHECK_OPENSSL_CONST_X509_GET0_SIGNATURE_ARGS
c41db002 1212 SQUID_CHECK_OPENSSL_TXTDB
a1c22363
AJ
1213 ])
1214 AS_IF([test "x$SSLLIB" = "x"],[AC_MSG_ERROR([Required OpenSSL library not found])])
1215])
84c3fc14 1216AC_MSG_NOTICE([OpenSSL library support: ${with_openssl:=no} ${LIBOPENSSL_PATH} ${LIBOPENSSL_LIBS}])
c41db002 1217AM_CONDITIONAL(ENABLE_SSL,[ test "x$with_openssl" = "xyes" ])
1f7c9178 1218AC_SUBST(SSLLIB)
1219
1a22a39e 1220dnl User may specify MIT Kerberos is needed from a non-standard location
24531401 1221SQUID_AUTO_LIB(mit-krb5,[MIT Kerberos],[LIB_KRB5])
75f3c557 1222AH_TEMPLATE(USE_APPLE_KRB5,[Apple Kerberos support is available])
1a22a39e
MM
1223AH_TEMPLATE(USE_MIT_KRB5,[MIT Kerberos support is available])
1224AH_TEMPLATE(USE_SOLARIS_KRB5,[Solaris Kerberos support is available])
1225
75c5f82b 1226## find out if pkg-config or krb5-config will work
a1c22363 1227AS_IF([test "x$with_mit_krb5" != "xno"],[
24531401
AJ
1228 CXXFLAGS="$LIB_KRB5_CFLAGS $CXXFLAGS"
1229 krb5confpath="$with_mit_krb5/bin"
1a22a39e 1230 # find installed libs via pkg-config or krb5-config
75c5f82b 1231 squid_pc_krb5_name=
7c664dbc
AJ
1232 PKG_CHECK_EXISTS(mit-krb5-gssapi mit-krb5, [squid_pc_krb5_name="mit-krb5-gssapi mit-krb5"],[
1233 PKG_CHECK_EXISTS(gssapi-krb5 krb5, [squid_pc_krb5_name="gssapi-krb5 krb5"])
1234 ])
a1c22363 1235 AS_IF([test "x$squid_pc_krb5_name" = "x" -a "$cross_compiling" = "no"],[
77f4953d 1236 # Look for krb5-config (unless cross-compiling)
c4b12583 1237 AC_PATH_PROG(krb5_config,krb5-config,no,$krb5confpath)
a1c22363 1238 AS_IF([test "x$ac_cv_path_krb5_config" != "xno"],[
1a22a39e
MM
1239 krb5confpath="`dirname $ac_cv_path_krb5_config`"
1240 ac_heimdal="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i heimdal`"
1241 ac_solaris="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i solaris`"
75f3c557 1242 ac_apple="`$ac_cv_path_krb5_config --vendor 2>/dev/null | grep -c -i apple`"
a1c22363
AJ
1243 AS_IF([test $ac_solaris -gt 0],[with_solaris_krb5=yes],
1244 [test $ac_apple -gt 0],[with_apple_krb5=yes],
1245 [test $ac_heimdal -gt 0],[with_mit_krb5=no]
1246 )
1247 ],[
1248 AS_IF([test "x$with_mit_krb5" = "xyes"],[
75c5f82b 1249 AC_MSG_ERROR([Could not find krb5-config in path])
a1c22363 1250 ],[
75c5f82b 1251 with_mit_krb5=no
a1c22363
AJ
1252 ])
1253 ])
1254 ])
1255])
1a22a39e 1256
ed3a42d0 1257# detect MIT Kerberos dependencies (except on Solaris)
a1c22363 1258AS_IF([test "x$with_mit_krb5" != "xno" -a "x$with_solaris_krb5" != "xyes"],[
1a22a39e
MM
1259 SQUID_STATE_SAVE([squid_krb5_save])
1260 LIBS="$LIBS $LIB_KRB5_PATH"
1261
1262 # auto-detect using pkg-config
75c5f82b 1263 PKG_CHECK_MODULES([LIB_KRB5], $squid_pc_krb5_name,,[
77f4953d 1264 # look for krb5-config (unless cross-compiling)
a1c22363
AJ
1265 AS_IF([test "$cross_compiling" = "no"],[
1266 AS_IF([test "x$krb5confpath" = "x"],[
77f4953d 1267 AC_PATH_PROG(krb5_config,krb5-config,no)
a1c22363
AJ
1268 AS_IF([test "x$ac_cv_path_krb5_config" != "xno"],[ac_krb5_config="$ac_cv_path_krb5_config"])
1269 ],[
77f4953d 1270 ac_krb5_config="$krb5confpath/krb5-config"
a1c22363
AJ
1271 ])
1272 ])
1273 AS_IF([test "x$ac_krb5_config" != "x" -a -x "$ac_krb5_config"],[
1a22a39e
MM
1274 # Get libs, etc
1275 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1276 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1277 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1278 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1279 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
a1c22363 1280 ],[
1a22a39e
MM
1281 ## For some OS pkg-config is broken or unavailable.
1282 ## Detect libraries the hard way.
1283
b2bdde72 1284 SQUID_STATE_SAVE([squid_mit_save])
ff78f3c3 1285 missing_required=
1a22a39e
MM
1286 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1287 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
ff78f3c3
AJ
1288 AC_MSG_WARN([library 'com_err' is required for MIT Kerberos])
1289 missing_required=yes
1a22a39e 1290 ])
b2bdde72 1291 LIBS=$LIB_KRB5_LIBS
1a22a39e 1292 AC_CHECK_LIB(k5crypto, [main], [LIB_KRB5_LIBS="-lk5crypto $LIB_KRB5_LIBS"],[
ff78f3c3
AJ
1293 AC_MSG_WARN([library 'k5crypto' is required for MIT Kerberos])
1294 missing_required=yes
1a22a39e 1295 ])
b2bdde72 1296 LIBS=$LIB_KRB5_LIBS
1a22a39e 1297 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
ff78f3c3
AJ
1298 AC_MSG_WARN([library 'krb5' is required for MIT Kerberos])
1299 missing_required=yes
1a22a39e 1300 ])
b2bdde72 1301 LIBS=$LIB_KRB5_LIBS
1a22a39e 1302 AC_CHECK_LIB(gssapi_krb5, [main], [LIB_KRB5_LIBS="-lgssapi_krb5 $LIB_KRB5_LIBS"],[
ff78f3c3
AJ
1303 AC_MSG_WARN([library 'gssapi_krb5' is required for MIT Kerberos])
1304 missing_required=yes
1a22a39e 1305 ])
b2bdde72 1306 SQUID_STATE_ROLLBACK([squid_mit_save])
a1c22363
AJ
1307 AS_IF([test "x$missing_required" = "xyes"],[LIB_KRB5_LIBS=""])
1308 ])
1a22a39e
MM
1309 ])
1310
a1c22363
AJ
1311 AS_IF([test "x$LIB_KRB5_LIBS" != "x"],[
1312 AS_IF([test "x$with_apple_krb5" = "xyes"],[
75f3c557 1313 AC_DEFINE(USE_APPLE_KRB5,1,[Apple Kerberos support is available])
9603207d 1314 KRB5_FLAVOUR="Apple"
a1c22363 1315 ],[
75f3c557 1316 AC_DEFINE(USE_MIT_KRB5,1,[MIT Kerberos support is available])
9603207d 1317 KRB5_FLAVOUR="MIT"
a1c22363 1318 ])
1a22a39e
MM
1319 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1320 KRB5INCS="$LIB_KRB5_CFLAGS"
9603207d 1321
1a22a39e
MM
1322 # check for other specific broken implementations
1323 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1324 LIBS="$LIBS $KRB5LIBS"
1325
1326 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1327 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1328 AC_CHECK_HEADERS(gssapi/gssapi_generic.h)
1329 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1330 AC_CHECK_HEADERS(profile.h)
1331
1a22a39e 1332 SQUID_CHECK_KRB5_FUNCS
a1c22363
AJ
1333 ])
1334 AS_IF([test "x$with_mit_krb5" = "xyes" -a "x$KRB5LIBS" = "x"],[
1a22a39e 1335 AC_MSG_ERROR([Required Kerberos library not found])
a1c22363 1336 ],[test "x$KRB5LIBS" = "x"],[
75c5f82b
AJ
1337 with_mit_krb5=no
1338 with_apple_krb5=no
a1c22363 1339 ])
1a22a39e 1340 SQUID_STATE_ROLLBACK([squid_krb5_save])
a1c22363 1341])
1a22a39e 1342
75c5f82b 1343# detect Solaris Kerberos dependencies
a1c22363 1344AS_IF([test "x$with_solaris_krb5" = "xyes" -a "x$KRB5LIBS" = "x"],[
1a22a39e
MM
1345 SQUID_STATE_SAVE([squid_krb5_save])
1346 LIBS="$LIBS $LIB_KRB5_PATH"
1347
1348 # no pkg-config for solaris native Kerberos
77f4953d 1349 # look for krb5-config (unless cross-compiling)
a1c22363
AJ
1350 AS_IF([test "$cross_compiling" = "no"],[
1351 AS_IF([test "x$krb5confpath" = "x"],[
77f4953d 1352 AC_PATH_PROG(krb5_config,krb5-config,no)
a1c22363
AJ
1353 AS_IF([test "x$ac_cv_path_krb5_config" != "xno"],[ac_krb5_config="$ac_cv_path_krb5_config"])
1354 ],[
77f4953d 1355 ac_krb5_config="$krb5confpath/krb5-config"
a1c22363
AJ
1356 ])
1357 ])
1358 AS_IF([test "x$ac_krb5_config" != "x" -a -x "$ac_krb5_config"],[
1a22a39e
MM
1359 # Get libs, etc
1360 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1361 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1362 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
b2da83da
AJ
1363 # Solaris 10 Update 11 patches the krb5-config tool to produce stderr messages on stdout.
1364 SOLARIS_BROKEN_KRB5CONFIG_GSSAPI="`$ac_krb5_config --libs gssapi 2>/dev/null | grep "krb5-config"`"
a1c22363 1365 AS_IF([test "x$SOLARIS_BROKEN_KRB5CONFIG_GSSAPI" = "x"],[
b2da83da
AJ
1366 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1367 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
a1c22363
AJ
1368 ])
1369 ],[
1a22a39e
MM
1370 ## For some OS pkg-config is broken or unavailable.
1371 ## Detect libraries the hard way.
1372
1373 CXXFLAGS="-I/usr/include/kerberosv5 $CXXFLAGS"
1374
b2bdde72 1375 SQUID_STATE_SAVE([squid_solaris_save])
ff78f3c3 1376 missing_required=
1a22a39e
MM
1377 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1378 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
ff78f3c3
AJ
1379 AC_MSG_WARN([library 'krb5' is required for Solaris Kerberos])
1380 missing_required=yes
1a22a39e 1381 ])
b2bdde72 1382 LIBS=$LIB_KRB5_LIBS
1a22a39e 1383 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
ff78f3c3
AJ
1384 AC_MSG_WARN([library 'gss' is required for Solaris Kerberos])
1385 missing_required=yes
1a22a39e 1386 ])
b2bdde72 1387 SQUID_STATE_ROLLBACK([squid_solaris_save])
a1c22363
AJ
1388 AS_IF([test "x$missing_required" = "xyes"],[LIB_KRB5_LIBS=""])
1389 ])
1a22a39e 1390
a1c22363 1391 AS_IF([test "x$LIB_KRB5_LIBS" != "x"],[
1a22a39e
MM
1392 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1393 KRB5INCS="$LIB_KRB5_CFLAGS"
1394 AC_DEFINE(USE_SOLARIS_KRB5,1,[Solaris Kerberos support is available])
9603207d 1395 KRB5_FLAVOUR="Solaris"
1396
1a22a39e
MM
1397 # check for other specific broken implementations
1398 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1399 LIBS="$LIBS $KRB5LIBS"
1400
1401 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1402 AC_CHECK_HEADERS(gssapi/gssapi.h gssapi/gssapi_ext.h)
1403 AC_CHECK_HEADERS(krb5.h com_err.h)
1404
1405 SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H
a1c22363 1406 AS_IF([test "x$squid_cv_broken_krb5_h" = "xyes"],[
1a22a39e
MM
1407 AC_DEFINE(HAVE_BROKEN_SOLARIS_KRB5_H, 1, [Define to 1 if Solaris krb5.h is broken for C++])
1408 AC_MSG_WARN([You have a broken Solaris <krb5.h> system include.])
1409 AC_MSG_WARN([Please see http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6837512])
1410 AC_MSG_WARN([If you need Kerberos support you will have to patch])
1411 AC_MSG_WARN([your system. See contrib/solaris/solaris-krb5-include.patch])
a1c22363 1412 ])
1a22a39e 1413 SQUID_CHECK_KRB5_FUNCS
a1c22363
AJ
1414 ])
1415 AS_IF([test "x$with_mit_krb5" = "xyes" -a "x$KRB5LIBS" = "x"],[
75c5f82b 1416 # Error only if Solaris flavour was detected while looking for required MIT Kerberos
1a22a39e 1417 AC_MSG_ERROR([Required Kerberos library not found])
a1c22363 1418 ],[test "x$KRB5LIBS" = "x"],[
75c5f82b
AJ
1419 with_solaris_krb5=no
1420 with_mit_krb5=no
a1c22363 1421 ])
1a22a39e 1422 SQUID_STATE_ROLLBACK([squid_krb5_save])
a1c22363 1423])
1a22a39e 1424
75c5f82b 1425dnl User may specify Heimdal Kerberos is needed from a non-standard location
24531401 1426SQUID_AUTO_LIB(heimdal-krb5,[Heimdal Kerberos],[LIB_KRB5])
75c5f82b 1427AH_TEMPLATE(USE_HEIMDAL_KRB5,[Heimdal Kerberos support is available])
a1c22363 1428AS_IF([test "x$with_heimdal_krb5" != "xno" -a "x$KRB5LIBS" = "x"],[
24531401
AJ
1429 CXXFLAGS="$LIB_KRB5_CFLAGS $CXXFLAGS"
1430 krb5confpath="$with_heimdal_krb5/bin"
75c5f82b
AJ
1431 # find installed libs via pkg-config or krb5-config
1432 PKG_CHECK_EXISTS(heimdal-krb5, [squid_pc_krb5_name="heimdal-krb5"])
a1c22363 1433 AS_IF([test "x$squid_pc_krb5_name" = "x"],[
75c5f82b 1434 PKG_CHECK_EXISTS(heimdal-gssapi, [squid_pc_krb5_name="heimdal-gssapi"])
a1c22363
AJ
1435 ])
1436 AS_IF([test "x$squid_pc_krb5_name" = "x" -a "$cross_compiling" = "no"],[
75c5f82b 1437 # Look for krb5-config (unless cross-compiling)
c4b12583 1438 AC_PATH_PROG(krb5_config,krb5-config,no,$krb5confpath)
a1c22363 1439 AS_IF([test "x$ac_cv_path_krb5_config" != "xno"],[
75c5f82b
AJ
1440 krb5confpath="`dirname $ac_cv_path_krb5_config`"
1441 ac_heimdal="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i heimdal`"
a1c22363 1442 AS_IF([test "x$with_heimdal_krb5" = "xyes" -a $ac_heimdal = 0],[
75c5f82b 1443 AC_MSG_ERROR([Could not find pkg-config or krb5-config for Heimdal Kerberos])
a1c22363
AJ
1444 ])
1445 ],[
1446 AS_IF([test "x$with_heimdal_krb5" = "xyes"],[
75c5f82b 1447 AC_MSG_ERROR([Could not find krb5-config in path])
a1c22363 1448 ],[
75c5f82b
AJ
1449 AC_MSG_WARN([Could not find krb5-config in path])
1450 with_heimdal_krb5=no
a1c22363
AJ
1451 ])
1452 ])
1453 ])
1454])
1455AS_IF([test "x$with_heimdal_krb5" != "xno" -a "x$KRB5LIBS" = "x"],[
1a22a39e
MM
1456 SQUID_STATE_SAVE([squid_krb5_save])
1457 LIBS="$LIBS $LIB_KRB5_PATH"
1458
1459 # auto-detect using pkg-config
75c5f82b 1460 PKG_CHECK_MODULES([LIB_KRB5], $squid_pc_krb5_name,,[
77f4953d 1461 # look for krb5-config (unless cross-compiling)
a1c22363
AJ
1462 AS_IF([test "$cross_compiling" = "no"],[
1463 AS_IF([test "x$krb5confpath" = "x"],[
77f4953d 1464 AC_PATH_PROG(krb5_config,krb5-config,no)
a1c22363
AJ
1465 AS_IF([test "x$ac_cv_path_krb5_config" != "xno"],[ac_krb5_config="$ac_cv_path_krb5_config"])
1466 ],[
77f4953d 1467 ac_krb5_config="$krb5confpath/krb5-config"
a1c22363
AJ
1468 ])
1469 ])
1470 AS_IF([test "x$ac_krb5_config" != "x" -a -x "$ac_krb5_config"],[
1a22a39e
MM
1471 # Get libs, etc
1472 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1473 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1474 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1475 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1476 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
a1c22363 1477 ],[
1a22a39e
MM
1478 ## For some OS pkg-config is broken or unavailable.
1479 ## Detect libraries the hard way.
b2bdde72 1480 SQUID_STATE_SAVE([squid_heimdal_save])
87a4a80f 1481 missing_required=
1a22a39e
MM
1482 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1483 AC_CHECK_LIB(resolv, [main], [LIB_KRB5_LIBS="-lresolv $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1484 AC_MSG_WARN([library 'resolv' is required for Heimdal Kerberos])
1485 missing_required=yes
1a22a39e 1486 ])
b2bdde72 1487 LIBS=$LIB_KRB5_LIBS
1a22a39e 1488 AC_CHECK_LIB(crypt, [main], [LIB_KRB5_LIBS="-lcrypt $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1489 AC_MSG_WARN([library 'crypt' is required for Heimdal Kerberos])
1490 missing_required=yes
1a22a39e 1491 ])
b2bdde72 1492 LIBS=$LIB_KRB5_LIBS
1a22a39e 1493 AC_CHECK_LIB(roken, [main], [LIB_KRB5_LIBS="-lroken $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1494 AC_MSG_WARN([library 'roken' is required for Heimdal Kerberos])
1495 missing_required=yes
1a22a39e 1496 ])
b2bdde72 1497 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1498 AC_CHECK_LIB(heimbase, [main], [LIB_KRB5_LIBS="-lheimbase $LIB_KRB5_LIBS"],[
1499 AC_MSG_WARN([library 'heimbase' may be required for Heimdal Kerberos])
1500 ])
b2bdde72 1501 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1502 AC_CHECK_LIB(wind, [main], [LIB_KRB5_LIBS="-lwind $LIB_KRB5_LIBS"],[
1503 AC_MSG_WARN([library 'wind' may be required for Heimdal Kerberos])
1504 ])
b2bdde72 1505 LIBS=$LIB_KRB5_LIBS
1a22a39e 1506 AC_CHECK_LIB(crypto, [main], [LIB_KRB5_LIBS="-lcrypto $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1507 AC_MSG_WARN([library 'crypto' is required for Heimdal Kerberos])
1508 missing_required=yes
1a22a39e 1509 ])
b2bdde72 1510 LIBS=$LIB_KRB5_LIBS
1a22a39e 1511 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1512 AC_MSG_WARN([library 'com_err' is required for Heimdal Kerberos])
1513 missing_required=yes
1a22a39e 1514 ])
b2bdde72 1515 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1516 AC_CHECK_LIB(hx509, [main], [LIB_KRB5_LIBS="-lhx509 $LIB_KRB5_LIBS"],[
1517 AC_MSG_WARN([library 'hx509' may be required for Heimdal Kerberos])
1518 ])
b2bdde72 1519 LIBS=$LIB_KRB5_LIBS
1a22a39e 1520 AC_CHECK_LIB(asn1, [main], [LIB_KRB5_LIBS="-lasn1 $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1521 AC_MSG_WARN([library 'asn1' is required for Heimdal Kerberos])
1522 missing_required=yes
1a22a39e 1523 ])
b2bdde72 1524 LIBS=$LIB_KRB5_LIBS
1a22a39e 1525 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1526 AC_MSG_WARN([library 'krb5' is required for Heimdal Kerberos])
1527 missing_required=yes
1a22a39e 1528 ])
b2bdde72 1529 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1530 AC_CHECK_LIB(heimntlm, [main], [LIB_KRB5_LIBS="-lheimntlm $LIB_KRB5_LIBS"],[
1531 AC_MSG_WARN([library 'heimntlm' may be required for Heimdal Kerberos])
1532 ])
b2bdde72 1533 LIBS=$LIB_KRB5_LIBS
1a22a39e 1534 AC_CHECK_LIB(gssapi, [main], [LIB_KRB5_LIBS="-lgssapi $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1535 AC_MSG_WARN([library 'gssapi' is required for Heimdal Kerberos])
1536 missing_required=yes
1a22a39e 1537 ])
b2bdde72 1538 SQUID_STATE_ROLLBACK([squid_heimdal_save])
a1c22363
AJ
1539 AS_IF([test "x$missing_required" = "xyes"],[LIB_KRB5_LIBS=""])
1540 ])
1a22a39e 1541 ])
a1c22363 1542 AS_IF([test "x$LIB_KRB5_LIBS" != "x"],[
1a22a39e
MM
1543 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1544 KRB5INCS="$LIB_KRB5_CFLAGS"
1545 AC_DEFINE(USE_HEIMDAL_KRB5,1,[Heimdal Kerberos support is available])
9603207d 1546 KRB5_FLAVOUR="Heimdal"
1547
1a22a39e
MM
1548 # check for other specific broken implementations
1549 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1550 LIBS="$LIBS $KRB5LIBS"
1551
1552 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1553 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1554 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1555
1556 SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H
a1c22363 1557 AS_IF([test "x$squid_cv_broken_heimdal_krb5_h" = "xyes"],[
1a22a39e 1558 AC_DEFINE(HAVE_BROKEN_HEIMDAL_KRB5_H, 1, [Define to 1 if Heimdal krb5.h is broken for C++])
a1c22363 1559 ])
1a22a39e 1560 SQUID_CHECK_KRB5_FUNCS
a1c22363
AJ
1561 ])
1562 AS_IF([test "x$KRB5LIBS" = "x"],[
1563 AS_IF([test "x$with_heimdal_krb5" = "xyes"],[
75c5f82b 1564 AC_MSG_ERROR([Required Heimdal Kerberos library not found])
a1c22363 1565 ],[
75c5f82b 1566 AC_MSG_WARN([Heimdal Kerberos library not found])
a1c22363
AJ
1567 ])
1568 ])
1a22a39e 1569 SQUID_STATE_ROLLBACK([squid_krb5_save])
a1c22363 1570])
1a22a39e 1571
75c5f82b 1572dnl User may specify GNU gss is needed from a non-standard location
24531401 1573SQUID_AUTO_LIB(gnugss,[GNU gss],[LIB_KRB5])
75c5f82b 1574AH_TEMPLATE(USE_GNUGSS,[GNU gss support is available])
a1c22363 1575AS_IF([test "x$with_gnugss" != "xno" -a "x$KRB5LIBS" = "x"],[
24531401
AJ
1576 CXXFLAGS="$LIB_KRB5_CFLAGS $CXXFLAGS"
1577 krb5confpath=
1a22a39e
MM
1578 SQUID_STATE_SAVE([squid_krb5_save])
1579 LIBS="$LIBS $LIB_KRB5_PATH"
1580
1581 # auto-detect using pkg-config
1582 PKG_CHECK_MODULES([LIB_KRB5],[gss],,[
1583 ## For some OS pkg-config is broken or unavailable.
1584 ## Detect libraries the hard way.
1585
1586 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1587 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
75c5f82b 1588 AC_MSG_WARN([library 'com_err' is required for GNU Kerberos])
1a22a39e 1589 ])
1a22a39e
MM
1590 ])
1591
a1c22363 1592 AS_IF([test "x$LIB_KRB5_LIBS" != "x"],[
1a22a39e
MM
1593 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1594 KRB5INCS="$LIB_KRB5_CFLAGS"
1595 AC_DEFINE(USE_GNUGSS,1,[GNU Kerberos support is available])
9603207d 1596 KRB5_FLAVOUR="GNU GSS"
1a22a39e
MM
1597
1598 # check for other specific broken implementations
1599 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1600 LIBS="$LIBS $KRB5LIBS"
1601
1602 AC_MSG_NOTICE([Try to find Kerbeors headers in given path])
1603 AC_CHECK_HEADERS(gss.h)
1604
1605 SQUID_CHECK_WORKING_GSSAPI
1606 SQUID_DEFINE_BOOL(HAVE_GSSAPI,$squid_cv_working_gssapi,[GSSAPI support])
1607
1608 SQUID_CHECK_SPNEGO_SUPPORT
1609 SQUID_DEFINE_BOOL(HAVE_SPNEGO,$squid_cv_have_spnego,[SPNEGO support])
1610
1611 SQUID_CHECK_WORKING_KRB5
1612 SQUID_DEFINE_BOOL(HAVE_KRB5,$squid_cv_working_krb5,[KRB5 support])
a1c22363
AJ
1613 ])
1614 AS_IF([test "x$KRB5LIBS" = "x"],[
1615 AS_IF([test "x$with_gnugss" = "xyes"],[
75c5f82b 1616 AC_MSG_ERROR([Required GNU GSS Kerberos library not found])
a1c22363 1617 ],[
75c5f82b 1618 AC_MSG_WARN([GNU GSS Kerberos library not found])
a1c22363
AJ
1619 ])
1620 ])
1a22a39e 1621 SQUID_STATE_ROLLBACK([squid_krb5_save])
a1c22363 1622])
75c5f82b 1623
a1c22363 1624AS_IF([test "x$KRB5LIBS" != "x"],[with_krb5=yes])
1a22a39e
MM
1625AC_MSG_NOTICE([$KRB5_FLAVOUR Kerberos library support: ${with_krb5:=no} ${LIB_KRB5_PATH} ${LIB_KRB5_LIBS}])
1626AC_SUBST(KRB5INCS)
1627AC_SUBST(KRB5LIBS)
1a22a39e 1628
0d57ed2e
AJ
1629SQUID_AUTO_LIB(ldap,[LDAP],[LIBLDAP])
1630AS_IF([test "x$with_ldap" != "xno"],[
1631 dnl On MinGW OpenLDAP is not available, so LDAP helpers can be linked
1632 dnl only with Windows LDAP libraries using -lwldap32
1633 AS_IF([test "$squid_host_os" = "mingw"],[
1634 LIBLDAP_LIBS="-lwldap32"
a1c22363 1635 ],[
0d57ed2e
AJ
1636 SQUID_STATE_SAVE(squid_ldap_state)
1637 LIBS="$LIBLDAP_PATH $LIBPTHREADS $LIBS"
1638 PKG_CHECK_MODULES([LIBLDAP],[ldap],[],[
1639 AC_CHECK_LIB(lber, ber_init, [LIBLBER="-llber"])
1640 AC_CHECK_LIB(ldap, ldap_init, [LIBLDAP_LIBS="-lldap $LIBLBER"])
1641 dnl if no ldap lib found check for mozilla version
1642 AS_IF([test "x$ac_cv_lib_ldap_ldap_init" != "xyes"],[
1643 SQUID_STATE_SAVE(squid_ldap_mozilla)
1644 LIBS="$LIBLDAP_PATH $LIBPTHREADS"
1645 AC_CHECK_LIB(ldap60, ldap_init, [LIBLDAP_LIBS="-lldap60 $LIBLBER"])
1646 LIBS="$LIBLDAP_PATH $LIBLDAP_LIBS $LIBPTHREADS"
1647 AC_CHECK_LIB(prldap60, prldap_init, [LIBLDAP_LIBS="-lprldap60 $LIBLDAP_LIBS"])
1648 LIBS="$LIBLDAP_PATH $LIBLDAP_LIBS $LIBPTHREADS"
1649 AC_CHECK_LIB(ssldap60, ldapssl_init, [LIBLDAP_LIBS="-lssldap60 $LIBLDAP_LIBS"])
1650 SQUID_STATE_ROLLBACK(squid_ldap_mozilla)
1651 ])
1652 ])
1653 AC_CHECK_HEADERS(ldap.h lber.h)
1654 AC_CHECK_HEADERS(mozldap/ldap.h)
1655 SQUID_CHECK_LDAP_API
a1c22363
AJ
1656 ])
1657
0d57ed2e
AJ
1658 AS_IF([test "x$LIBLDAP_LIBS" != "x"],[
1659 CPPFLAGS="$LIBLDAP_CFLAGS $CPPFLAGS"
1660 LIBLDAP_LIBS="$LIBLDAP_PATH $LIBLDAP_LIBS"
1661 ],[test "x$with_ldap" = "xyes"],[
1662 AC_MSG_ERROR([Required library ldap not found])
a1c22363 1663 ],[
0d57ed2e 1664 AC_MSG_NOTICE([Library ldap not found.])
a1c22363 1665 ])
a1c22363 1666])
0d57ed2e 1667AC_SUBST(LIBLDAP_LIBS)
1a22a39e 1668
6c025870 1669SQUID_AUTO_LIB(systemd,[systemd API for start-up notification],[LIBSYSTEMD])
6fa8c664 1670AH_TEMPLATE(USE_SYSTEMD,[systemd support is available])
6c025870 1671AS_IF([test "x$with_systemd" != "xno"],[
6fa8c664 1672 SQUID_STATE_SAVE(squid_systemd_state)
6c025870
AJ
1673 LIBS="$LIBS $LIBSYSTEMD_PATH"
1674 PKG_CHECK_MODULES(LIBSYSTEMD,[libsystemd],,[
6fa8c664 1675 # systemd < 209
6c025870 1676 PKG_CHECK_MODULES(LIBSYSTEMD,[libsystemd-daemon],,[:])
6fa8c664 1677 ])
6fa8c664 1678 AC_CHECK_HEADERS(systemd/sd-daemon.h)
6c025870 1679 SQUID_STATE_ROLLBACK(squid_systemd_state)
6fa8c664 1680
6c025870
AJ
1681 AS_IF([test "x$LIBSYSTEMD_LIBS" != "x"],[
1682 CXXFLAGS="$LIBSYSTEMD_CFLAGS $CXXFLAGS"
1683 LIBSYSTEMD_LIBS="$LIBSYSTEMD_PATH $LIBSYSTEMD_LIBS"
6fa8c664 1684 AC_DEFINE(USE_SYSTEMD,1,[systemd support is available])
6c025870
AJ
1685 ],[test "x$with_systemd" = "xyes"],[
1686 AC_MSG_ERROR([Required systemd library not found])
a1c22363 1687 ],[
6c025870 1688 AC_MSG_NOTICE([Library for systemd support not found])
a1c22363
AJ
1689 ])
1690])
6c025870 1691AC_MSG_NOTICE([systemd library support: $with_systemd $LIBSYSTEMD_LIBS])
6fa8c664 1692
02749868 1693AC_ARG_ENABLE(forw-via-db,
47d80734 1694 AS_HELP_STRING([--enable-forw-via-db],[Enable Forw/Via database]), [
ec308e40 1695 SQUID_YESNO([$enableval],[--enable-forw-via-db])
02749868 1696])
21f6708d 1697SQUID_DEFINE_BOOL(USE_FORW_VIA_DB,${enable_forw_via_db:=no},
9676633b
FC
1698 [Enable Forw/Via database])
1699AC_MSG_NOTICE([Forw/Via database enabled: $enable_forw_via_db])
02749868 1700
6cfa8966 1701AC_ARG_ENABLE(cache-digests,
47d80734 1702 AS_HELP_STRING([--enable-cache-digests],
ec308e40
AJ
1703 [Use Cache Digests. See http://wiki.squid-cache.org/SquidFaq/CacheDigests]),[
1704 SQUID_YESNO([$enableval],[--enable-cache-digests])
484f2ebc 1705])
0067eb06 1706SQUID_DEFINE_BOOL(USE_CACHE_DIGESTS,${enable_cache_digests:=no},
47d80734 1707 [Use Cache Digests for locating objects in neighbor caches.])
9676633b 1708AC_MSG_NOTICE([Cache Digests enabled: $enable_cache_digests])
47d80734 1709
484f2ebc 1710
9676633b
FC
1711################################
1712# check for netio plugin stuff #
1713################################
1714dnl order of these options handling is relevant in case the user
1715dnl supplies more than one --enable option. Options handled later
1716dnl override those handled earlier for io loop method manual override
1717AC_ARG_ENABLE(select,
a1c22363 1718 AS_HELP_STRING([--disable-select],[Disable select(2) support.]),[
ec308e40 1719 SQUID_YESNO([$enableval],[--enable-select])
a1c22363 1720 AS_IF([test "x$enableval" = "xyes"],[
39145d19 1721 squid_opt_io_loop_engine="select"
a1c22363
AJ
1722 AS_IF([test "x$squid_host_os" = "xmingw"],[squid_opt_io_loop_engine="select_win32"])
1723 ])
9676633b
FC
1724])
1725AC_MSG_NOTICE([enabling select syscall for net I/O: ${enable_select:=auto}])
cd748f27 1726
9bb83c8b 1727AC_ARG_ENABLE(poll,
a1c22363 1728 AS_HELP_STRING([--disable-poll],[Disable poll(2) support.]),[
ec308e40 1729 SQUID_YESNO([$enableval],[--enable-poll])
8ff06f2a 1730 AS_IF([test "x$enableval" = "xyes"],[squid_opt_io_loop_engine="poll"])
9bb83c8b 1731])
9676633b 1732AC_MSG_NOTICE([enabling poll syscall for net I/O: ${enable_poll:=auto}])
9bb83c8b 1733
1b3db6d9 1734AC_ARG_ENABLE(kqueue,
26d50fd2
AJ
1735 AS_HELP_STRING([--disable-kqueue],
1736 [Disable kqueue(2) support.]), [
ec308e40 1737 SQUID_YESNO([$enableval],[--enable-kqueue])
1b3db6d9 1738])
a1c22363 1739AS_IF([test "x${enable_kqueue:=auto}" != "xno"],[
26d50fd2 1740 AC_CHECK_HEADERS([sys/event.h],[],[
a1c22363 1741 AS_IF([test "x${enable_kqueue}" = "xyes"],[
26d50fd2 1742 AC_MSG_ERROR([kqueue support requires sys/event.h header file.])
a1c22363 1743 ])
26d50fd2
AJ
1744 ])
1745 AC_CHECK_FUNCS(kqueue,[],[
a1c22363 1746 AS_IF([test "x${enable_kqueue}" = "xyes"],[
26d50fd2 1747 AC_MSG_ERROR([kqueue support missing in libc library.])
a1c22363 1748 ])
26d50fd2 1749 ])
a1c22363 1750 AS_IF([test "x$ac_cv_func_kqueue" = "xyes" -a "x$ac_cv_header_sys_event_h" = "xyes"],[
26d50fd2 1751 squid_opt_io_loop_engine="kqueue"
a1c22363 1752 ],[
26d50fd2 1753 enable_kqueue="no"
a1c22363
AJ
1754 ])
1755])
26d50fd2 1756AC_MSG_NOTICE([enabling kqueue for net I/O: ${enable_kqueue:=auto}])
1b3db6d9 1757
a46d2c0e 1758dnl Enable epoll()
a46d2c0e 1759AC_ARG_ENABLE(epoll,
62979ab1 1760 AS_HELP_STRING([--disable-epoll],[Disable Linux epoll(2) support.]),
a46d2c0e 1761[
ec308e40 1762 SQUID_YESNO([$enableval],[--enable-epoll])
a1c22363 1763AS_IF([test "x$enableval" = "xyes"],[squid_opt_io_loop_engine="epoll"])
a46d2c0e 1764])
9676633b 1765AC_MSG_NOTICE([enabling epoll syscall for net I/O: ${enable_epoll:=auto}])
2ca8b332 1766
9676633b
FC
1767# auto-detect and verify epoll header and library present and working
1768# logic mapping and loop method selection are performed later
a1c22363 1769AS_IF([test "x$enable_epoll" != "xno"],[
9676633b 1770 # check if libs are needed to support epoll
af1e01a8 1771 SQUID_STATE_SAVE(squid_epoll_state)
9676633b 1772 AC_SEARCH_LIBS(epoll_ctl,[epoll])
a1c22363
AJ
1773 AS_IF([test "x$ac_cv_search_epoll_ctl" = "xno"],[enable_epoll=no],
1774 [test "x$ac_cv_search_epoll_ctl" = "xnone required"],[EPOLL_LIBS=""],
1775 [EPOLL_LIBS=$ac_cv_search_epoll_ctl]
1776 )
9676633b
FC
1777 AC_SUBST(EPOLL_LIBS)
1778 SQUID_STATE_ROLLBACK(squid_epoll_state) #de-pollute LIBS
a46d2c0e 1779
9676633b 1780 # epoll requires sys/epoll.h
98d13964 1781 AC_CHECK_HEADERS([sys/epoll.h])
ad32c661
AJ
1782
1783 dnl Verify that epoll really works
a1c22363 1784 AS_IF([test "x$ac_cv_search_epoll_ctl" != "xno"], SQUID_CHECK_EPOLL)
2ca8b332 1785
a1c22363 1786 AS_IF([test "x$enable_epoll" = "xyes" -a "x$squid_cv_epoll_works" = "xno"],[
2ca8b332 1787 AC_MSG_ERROR([Epoll does not work. Force-enabling it is not going to help.])
a1c22363
AJ
1788 ])
1789])
a46d2c0e 1790
a1ad2f9b
AJ
1791dnl Enable /dev/poll
1792AC_ARG_ENABLE(devpoll,
a1c22363 1793 AS_HELP_STRING([--disable-devpoll],[Disable Solaris /dev/poll support.]),[
ec308e40 1794 SQUID_YESNO([$enableval],[--enable-devpoll])
a1c22363 1795 AS_IF([test "x$enableval" = "xyes"],[squid_opt_io_loop_engine="devpoll"])
a1ad2f9b
AJ
1796])
1797AC_MSG_NOTICE([enabling /dev/poll for net I/O: ${enable_devpoll:=auto}])
1798
1799## auto-detect and verify devpoll header and library present and working
a1c22363 1800AS_IF([test "x$enable_devpoll" != "xno"],[
a1ad2f9b
AJ
1801 # /dev/poll requires ioctl() and write()
1802 AC_CHECK_FUNCS(ioctl)
1803 AC_CHECK_FUNCS(write)
1804
1805 # /dev/poll requires sys/devpoll.h
1806 AC_CHECK_HEADERS([sys/devpoll.h],,[
a1c22363
AJ
1807 AS_IF([test "x$enable_devpoll" = "xyes"],[
1808 AC_MSG_ERROR([--enable-devpoll specified but /dev/poll headers not found])
1809 ])
1810 enable_devpoll=no
1811 ])
a1ad2f9b
AJ
1812
1813 # Verify that /dev/poll really works
a1c22363 1814 AS_IF([test "x$enable_devpoll" != "xno"], SQUID_CHECK_DEVPOLL)
a1ad2f9b 1815
a1c22363 1816 AS_IF([test "x$enable_devpoll" = "xyes" -a "x$squid_cv_devpoll_works" = "xno"],[
a1ad2f9b 1817 AC_MSG_ERROR([/dev/poll does not work. Force-enabling it is not going to help.])
a1c22363
AJ
1818 ])
1819])
9676633b 1820
72fd085a 1821AC_ARG_ENABLE(http-violations,
af1e01a8
FC
1822 AS_HELP_STRING([--disable-http-violations],
1823 [This allows you to remove code which is known to
47d80734 1824 violate the HTTP protocol specification.]), [
ec308e40 1825 SQUID_YESNO([$enableval],[--enable-http-violations])
72fd085a 1826])
626096be 1827SQUID_DEFINE_BOOL(USE_HTTP_VIOLATIONS, ${enable_http_violations:=yes},
47d80734 1828 [Define to enable code which volates the HTTP standard specification])
9676633b 1829AC_MSG_NOTICE([HTTP violations support enabled: $enable_http_violations])
72fd085a 1830
47d80734 1831# IPFW Transparent Proxy
68075fad 1832AC_ARG_ENABLE(ipfw-transparent,
1d26e252
FC
1833 AS_HELP_STRING([--enable-ipfw-transparent],
1834 [Enable Transparent Proxy support for systems
47d80734 1835 using FreeBSD IPFW-style firewalling.]), [
ec308e40 1836 SQUID_YESNO([$enableval],[--enable-ipfw-transparent])
68075fad 1837])
0067eb06 1838SQUID_DEFINE_BOOL(IPFW_TRANSPARENT,${enable_ipfw_transparent:=no},
2277004e 1839 [Enable support for Transparent Proxy on systems using FreeBSD IPFW-style firewalling.])
1d26e252 1840AC_MSG_NOTICE([FreeBSD IPFW-based transparent proxying enabled: $enable_ipfw_transparent])
68075fad 1841
47d80734 1842# IP-Filter Transparent Proxy
5cafc1d6 1843AC_ARG_ENABLE(ipf-transparent,
2277004e 1844 AS_HELP_STRING([--enable-ipf-transparent],
1d26e252 1845 [Enable Transparent Proxy support using IPFilter-style firewalling]), [
ec308e40 1846 SQUID_YESNO([$enableval],[--enable-ipf-transparent])
5cafc1d6 1847])
be0c7ff0 1848#will be AC_DEFINEd later, after checking for appropriate infrastructure
4bd144d2
FC
1849#IPF currently broken. Default-disabled for now.
1850AC_MSG_NOTICE([IPF-based transparent proxying requested: ${enable_ipf_transparent:=no}])
5cafc1d6 1851
2b0dd4ac 1852dnl Enable PF Transparent Proxy
1853AC_ARG_ENABLE(pf-transparent,
2277004e 1854 AS_HELP_STRING([--enable-pf-transparent],
47d80734 1855 [Enable Transparent Proxy support for systems using PF network address redirection.]), [
ec308e40 1856 SQUID_YESNO([$enableval],[--enable-pf-transparent])
2b0dd4ac 1857])
be0c7ff0 1858#will be AC_DEFINEd later, after checking for appropriate infrastructure
b2192042
AJ
1859AC_MSG_NOTICE([PF-based transparent proxying requested: ${enable_pf_transparent:=no}])
1860
1861dnl Enable /dev/pf support for older PF Transparent Proxy systems (OpenBSD 4.x and older)
1862AC_ARG_WITH(nat-devpf,
1863 AS_HELP_STRING([--with-nat-devpf],
1864 [Enable /dev/pf support for NAT on older OpenBSD and FreeBSD kernels.]), [
ec308e40 1865 SQUID_YESNO([$withval],[--with-nat-devpf])
b2192042
AJ
1866])
1867#will be AC_DEFINEd later, after checking for appropriate infrastructure
1868AC_MSG_NOTICE([NAT lookups via /dev/pf: ${with_nat_devpf:=no}])
2b0dd4ac 1869
4bd144d2 1870# Linux Netfilter Transparent Proxy
d852fbad 1871AC_ARG_ENABLE(linux-netfilter,
20ad76ab 1872 AS_HELP_STRING([--enable-linux-netfilter],
96f08e2d 1873 [Enable Transparent Proxy support for Linux (Netfilter)]), [
ec308e40 1874 SQUID_YESNO([$enableval],[--enable-linux-netfilter])
d852fbad 1875])
4bd144d2 1876AC_MSG_NOTICE([Linux Netfilter support requested: ${enable_linux_netfilter:=auto}])
be0c7ff0 1877#will be AC_DEFINEd later, after checking for appropriate infrastructure
d852fbad 1878
425de4c8
AJ
1879
1880dnl Look for libnetfilter_conntrack options (needed for QOS netfilter marking)
24531401 1881SQUID_AUTO_LIB(netfilter-conntrack,[Netfilter conntrack],[LIBNETFILTER_CONNTRACK])
f4f6c2e0 1882AC_MSG_NOTICE([Linux Netfilter Conntrack support requested: ${with_netfilter_conntrack:=auto}])
a1c22363
AJ
1883AS_IF([test "x$with_netfilter_conntrack" != "xno"],[
1884 LDFLAGS="$LIBNETFILTER_CONNTRACK_PATH $LDFLAGS"
1885 CPPFLAGS="$LIBNETFILTER_CONNTRACK_CFLAGS $CPPFLAGS"
1886 AC_SEARCH_LIBS([nfct_query], [netfilter_conntrack],,[
1887 AS_IF([test "x$with_netfilter_conntrack" = "xyes"],[
1888 AC_MSG_ERROR([--with-netfilter-conntrack specified but libnetfilter-conntrack library not found])
1889 ])
1890 with_netfilter_conntrack=no
1891 ])
1892 AC_CHECK_HEADERS([ \
1893 libnetfilter_conntrack/libnetfilter_conntrack.h \
1894 libnetfilter_conntrack/libnetfilter_conntrack_tcp.h
1895 ],,[
1896 AS_IF([test "x$with_netfilter_conntrack" = "xyes"],[
1897 AC_MSG_ERROR([--with-netfilter-conntrack specified but libnetfilter-conntrack headers not found])
1898 ])
1899 with_netfilter_conntrack=no
1900 ])
1901 AS_IF([test "x$with_netfilter_conntrack" != "xno"],[with_netfilter_conntrack=yes])
1902])
425de4c8 1903
bb7b5fd0 1904dnl Enable Large file support
2df6213e 1905buildmodel=""
2df6213e 1906
1907AC_ARG_WITH(large-files,
507ca601 1908 AS_HELP_STRING([--with-large-files],[Enable support for large files (logs etc).]), [
ec308e40 1909 SQUID_YESNO([$withval],[--with-large-files])
a1c22363 1910 squid_opt_enable_large_files=$withval
bb7b5fd0 1911])
1912
2df6213e 1913dnl UNIX Build environment
be0c7ff0 1914dnl AS_HELP_STRING is not suited here because it cannot to specify newlines
2df6213e 1915AC_ARG_WITH(build-environment,
507ca601 1916 AS_HELP_STRING([--with-build-environment=model],
9603207d 1917 [The build environment to use. Normally one of
507ca601
FC
1918 POSIX_V6_ILP32_OFF32 (32 bits),
1919 POSIX_V6_ILP32_OFFBIG (32 bits with large file support),
1920 POSIX_V6_LP64_OFF64 (64 bits),
1921 POSIX_V6_LPBIG_OFFBIG (large pointers and files),
1922 XBS5_ILP32_OFF32 i(legacy, 32 bits),
1923 XBS5_ILP32_OFFBIG (legacy, 32 bits with large file support),
1924 XBS5_LP64_OFF64 (legacy, 64 bits),
1925 XBS5_LPBIG_OFFBIG (legacy, large pointers and files)
1926 or default (The default for your OS)]), [
a1c22363
AJ
1927 AS_CASE(["$withval"],
1928 [yes|no],[AC_MSG_FAILURE([--with-build-environment expects a build environment string as used by getconf])],
1929 [buildmodel="$withval"]
1930 )
2df6213e 1931])
1932
228332d3
FC
1933#hack. Let's early-detect sizeof(long)
1934AC_CHECK_SIZEOF(long)
1935
a1c22363 1936AS_IF([test "x$squid_opt_enable_large_files" = "xyes" -a "x$buildmodel" = "x"],[
2277004e 1937 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
a1c22363 1938 AS_IF([test "`getconf _$model 2>/dev/null || true`" = 1 -o "`getconf $model 2>/dev/null || true`"],[
2277004e
FC
1939 buildmodel=$model
1940 break
a1c22363 1941 ])
2277004e 1942 done
a1c22363 1943 AS_IF([test "x$buildmodel" = "x"],[
2277004e 1944 AC_MSG_WARN([No suitable build environment found for large files. Trying to use _FILE_OFFSET_BITS=64])
a1c22363
AJ
1945 ])
1946])
1947AS_IF([test "x$buildmodel" = "xdefault" -o "x$buildmodel" = "x"],[
228332d3 1948 # define _FILE_OFFSET_BITS if requested and needed
a1c22363 1949 AS_IF([test "x$squid_opt_enable_large_files" = "xyes" -a $ac_cv_sizeof_long -le 4],[
507ca601
FC
1950 AC_MSG_NOTICE([Enabling -D_FILE_OFFSET_BITS=64])
1951 CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
1952 CXXFLAGS="-D_FILE_OFFSET_BITS=64 $CXXFLAGS"
a1c22363
AJ
1953 ])
1954],[
507ca601 1955 AC_MSG_NOTICE([Using $buildmodel build environment])
a1c22363
AJ
1956 AS_IF([ ! test "`getconf _$buildmodel 2>/dev/null || true`" = 1 -o "`getconf $buildmodel 2>/dev/null || true`"],[
1957 AC_MSG_ERROR([Build environment $buildmodel not known to getconf.])
1958 ])
507ca601
FC
1959 CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
1960 CXXFLAGS="`getconf ${buildmodel}_CFLAGS` $CXXFLAGS"
1961 LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
1962 LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
2277004e 1963
a1c22363 1964 AS_IF([test "x$squid_host_os" = "xsolaris"],[
2277004e
FC
1965# On Solaris getconf returns for CFLAGS -xarch=generic64, -Xa and -Usun options, and
1966# for LDFLAGS -xarch=generic64, but:
1967# "-Xa" is supported only by Sun cc, so we need to remove it when using gcc
1968# For gcc "-xarch=generic64" must be replaced with "-m64"
1969# The 'sun' define is needed by ipfilter includes, so we must remove "-Usun"
a1c22363 1970 AS_IF([test "x$GCC" = "xyes"],[
2277004e
FC
1971 AC_MSG_NOTICE([Removing -Xa for gcc/g++ on $host])
1972 CFLAGS="`echo $CFLAGS | sed -e 's/-Xa//'`"
1973 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Xa//'`"
1974 AC_MSG_NOTICE([Replacing -xarch=generic64 with -m64 for gcc/g++ on $host])
1975 CFLAGS="`echo $CFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
1976 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
1977 LDFLAGS="`echo $LDFLAGS | sed -e 's/-xarch=generic64//'`"
a1c22363 1978 ])
2277004e
FC
1979 AC_MSG_NOTICE([Removing -Usun on $host])
1980 CFLAGS="`echo $CFLAGS | sed -e 's/-Usun//'`"
1981 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Usun//'`"
a1c22363
AJ
1982 ])
1983])
2df6213e 1984
3d674977 1985AC_ARG_ENABLE(follow-x-forwarded-for,
6c83720b
AR
1986 AS_HELP_STRING([--disable-follow-x-forwarded-for],
1987 [Do not follow the X-Forwarded-For
19b4777c
FC
1988 HTTP header to try to find the IP address of the
1989 original or indirect client when a request has
8075a4da 1990 been forwarded through other proxies.]), [
ec308e40 1991 SQUID_YESNO([$enableval],[--enable-follow-x-forwarded-for])
8075a4da 1992])
6ec005b5 1993AC_MSG_NOTICE([Support for X-Forwarded-For enabled: ${enable_follow_x_forwarded_for:=yes}])
3a5af257 1994SQUID_DEFINE_BOOL(FOLLOW_X_FORWARDED_FOR,$enable_follow_x_forwarded_for,
47d80734 1995 [Enable following X-Forwarded-For headers])
3d674977 1996
3898f57f 1997AC_ARG_ENABLE(ident-lookups,
8075a4da 1998 AS_HELP_STRING([--disable-ident-lookups],
47d80734 1999 [Remove code that supports performing Ident (RFC 931) lookups.]), [
ec308e40 2000 SQUID_YESNO([$enableval],[--enable-ident-lookups])
8075a4da 2001])
6c5dc16a
FC
2002AC_MSG_NOTICE([Support for Ident lookups enabled: ${enable_ident_lookups:=yes}])
2003SQUID_DEFINE_BOOL(USE_IDENT,$enable_ident_lookups,[Support for Ident (RFC 931) lookups])
3898f57f 2004
9d798391 2005dnl Select Default hosts file location
2006AC_ARG_ENABLE(default-hostsfile,
8ea232f5
FC
2007 AS_HELP_STRING([--enable-default-hostsfile=path],
2008 [Select default location for hosts file.
75eaac6c 2009 See hosts_file directive in squid.conf for details]), [
a1c22363
AJ
2010 # TODO: handle the "yes" case cleanly
2011 AS_CASE(["$enableval"],
2012 [no|none],[squid_opt_default_hosts="none"],
2013 [
2014 squid_opt_default_hosts=$enableval
2015 AS_IF([ ! test -f "$enableval"],[
2016 AC_MSG_WARN([Unable to find file $enableval. I hope you know what you are doing.])
2017 ])
2018 ])
75eaac6c
FC
2019])
2020AC_MSG_NOTICE([Default hosts file set to: ${squid_opt_default_hosts:=/etc/hosts}])
2021DEFAULT_HOSTS=$squid_opt_default_hosts
2022AC_SUBST(DEFAULT_HOSTS)
9d798391 2023
47d80734 2024# Select auth schemes modules to build
94439e4e 2025AC_ARG_ENABLE(auth,
6c83720b
AR
2026 AS_HELP_STRING([--disable-auth],
2027 [Do not support authentication. When supported, the list of schemes
26ffc057 2028 and helpers to be enabled is defined elsewhere]), [
ec308e40 2029 SQUID_YESNO([$enableval],[--enable-auth])
94439e4e 2030])
26ffc057 2031AC_MSG_NOTICE([Authentication support enabled: ${enable_auth:=yes}])
2f1431ea
AJ
2032SQUID_DEFINE_BOOL(USE_AUTH,$enable_auth,[Enable support for authentication])
2033AM_CONDITIONAL(ENABLE_AUTH, test "x$enable_auth" != "xno")
26ffc057 2034AUTH_MODULES=""
dcbfe1a3 2035require_smblib="no"
b9ce9676 2036require_sspi="no"
26ffc057
FC
2037
2038AC_ARG_ENABLE(auth-basic,
2039 AS_HELP_STRING([--enable-auth-basic="list of helpers"],
2040 [Enable the basic authentication scheme, and build the specified helpers.
2041 Not providing an explicit list of helpers will attempt build of
2042 all possible helpers. Default is to do so.
2043 To disable the basic authentication scheme, use --disable-auth-basic.
d9655720 2044 To enable but build no helpers, specify "none".
03901cf8 2045 To see available helpers, see the src/auth/basic/ directory. ]),[
26ffc057
FC
2046#nothing to do really
2047])
03901cf8 2048m4_include([src/auth/basic/helpers.m4])
94439e4e 2049
12daeef6
AJ
2050AC_ARG_ENABLE(auth-digest,
2051 AS_HELP_STRING([--enable-auth-digest="list of helpers"],
2052 [Enable the Digest authentication scheme, and build the specified helpers.
26ffc057
FC
2053 Not providing an explicit list of helpers will attempt build of
2054 all possible helpers. Default is to do so.
12daeef6 2055 To disable the Digest authentication scheme, use --disable-auth-digest.
26ffc057 2056 To enable but build no helpers, specify "none".
d4d7f6dd 2057 To see available helpers, see the src/auth/digest/ directory. ]),[
12daeef6 2058#nothing to do, really
380f0a87 2059])
d4d7f6dd 2060m4_include([src/auth/digest/helpers.m4])
94439e4e 2061
26ffc057
FC
2062AC_ARG_ENABLE(auth-negotiate,
2063 AS_HELP_STRING([--enable-auth-negotiate="list of helpers"],
16c02b14 2064 [Enable the Negotiate authentication scheme, and build the specified
26ffc057
FC
2065 helpers.
2066 Not providing an explicit list of helpers will attempt build of
2067 all possible helpers. Default is to do so.
16c02b14 2068 To disable the Negotiate authentication scheme,
26ffc057
FC
2069 use --disable-auth-negotiate.
2070 To enable but build no helpers, specify "none".
16c02b14 2071 To see available helpers, see the src/auth/negotiate/ directory. ]),[
26ffc057 2072#nothing to do, really
6e785d85 2073])
16c02b14 2074m4_include([src/auth/negotiate/helpers.m4])
6e785d85 2075
12daeef6
AJ
2076AC_ARG_ENABLE(auth-ntlm,
2077 AS_HELP_STRING([--enable-auth-ntlm="list of helpers"],
2078 [Enable the NTLM authentication scheme, and build the specified helpers.
26ffc057
FC
2079 Not providing an explicit list of helpers will attempt build of
2080 all possible helpers. Default is to do so.
12daeef6 2081 To disable the NTLM authentication scheme, use --disable-auth-ntlm.
1a22a39e 2082 To enable but build no helpers, specify "none".
b817c20f 2083 To see available helpers, see the src/auth/ntlm/ directory. ]),[
1a22a39e 2084])
b817c20f 2085m4_include([src/auth/ntlm/helpers.m4])
c8093f05 2086
1a22a39e
MM
2087dnl Authentication libraries to build
2088dnl This list will not be needed when each auth library has its own Makefile
2089dnl this is to be placed AFTER each auth module's handler
2090AUTH_LIBS_TO_BUILD=
2091for module in $AUTH_MODULES; do
2092 AUTH_LIBS_TO_BUILD="$AUTH_LIBS_TO_BUILD ${module}/lib${module}.la"
2093done
2094AC_SUBST(AUTH_MODULES)
2095AC_SUBST(AUTH_LIBS_TO_BUILD)
dcbfe1a3 2096AM_CONDITIONAL(ENABLE_SMBLIB, test "x$require_smblib" = "xyes")
b9ce9676 2097AM_CONDITIONAL(ENABLE_SSPI, test "x$require_sspi" = "xyes")
3d62cc61 2098
1a22a39e
MM
2099dnl Select logging daemon helpers to build
2100AC_ARG_ENABLE(log-daemon-helpers,
2101 AS_HELP_STRING([--enable-log-daemon-helpers="list of helpers"],
4d5dd85a 2102 [This option selects which logging daemon helpers to
1a22a39e 2103 build and install as part of the normal build process
4d5dd85a 2104 For a list of available helpers see the src/log/
1a22a39e
MM
2105 directory.]),[
2106#nothing to do, really
2107])
4d5dd85a 2108m4_include([src/log/helpers.m4])
9ca29d23 2109
c6588c68 2110AC_ARG_ENABLE(external-acl-helpers,
f2d9a578 2111 AS_HELP_STRING([--enable-external-acl-helpers="list of helpers"],
e046643f 2112 [Enable external_acl helpers support and the helpers themselves.
d9655720 2113 Default is to build all buildable helpers and enable support.
8ea232f5 2114 To disable support, use --disable-external-acl-helpers.
d9655720 2115 To build no helpers, specify "none".
e046643f 2116 To see available helpers, see the src/acl/external/
8ea232f5 2117 directory]), [
d9655720 2118#nothing to do, really
c6588c68 2119])
e046643f 2120m4_include([src/acl/external/helpers.m4])
d9655720 2121
fdbb3b19 2122dnl Select url_rewrite helpers to build
fdbb3b19 2123AC_ARG_ENABLE(url-rewrite-helpers,
081863f3 2124 AS_HELP_STRING([--enable-url-rewrite-helpers="list of helpers"],
fdbb3b19
AJ
2125 [This option selects which url_rewrite helpers to
2126 build and install as part of the normal build
8ea232f5
FC
2127 process. The default is to attempt the build of all possible
2128 helpers. Use --disable-url-rewrite-helpers to build none.
2129 For a list of available helpers see the
d6d6203a 2130 src/http/url_rewriters/ directory.]),[
fdbb3b19 2131])
d6d6203a 2132m4_include([src/http/url_rewriters/helpers.m4])
fdbb3b19 2133
a27cfbe0 2134dnl Select security helpers to build
8732ea9d
AJ
2135AC_ARG_ENABLE(security-cert-validators,
2136 AS_HELP_STRING([--enable-security-cert-validators="list of helpers"],
bbf79f12
AJ
2137 [This option selects which security certificate validator
2138 helpers to build and install as part of the normal build
a27cfbe0 2139 process. The default is to attempt the build of all possible
8732ea9d 2140 helpers. Use --disable-security-cert-validators to
bbf79f12
AJ
2141 build none. For a list of available helpers see the
2142 src/security/cert_validators/ directory.]),[
a27cfbe0 2143])
4d5dd85a 2144m4_include([src/security/cert_validators/helpers.m4])
a27cfbe0 2145
cb0b3d63
AJ
2146AC_ARG_ENABLE(security-cert-generators,
2147 AS_HELP_STRING([--enable-security-cert-generators="list of helpers"],
2148 [This option selects which security certificate validator
2149 helpers to build and install as part of the normal build
2150 process. The default is to attempt the build of all possible
2151 helpers. Use --disable-security-cert-genrators to
2152 build none. For a list of available helpers see the
2153 src/security/cert_generators/ directory.]),[
2154])
2155m4_include([src/security/cert_generators/helpers.m4])
2156
0d5ee502
AM
2157dnl Select storeid_rewrite helpers to build
2158AC_ARG_ENABLE(storeid-rewrite-helpers,
2159 AS_HELP_STRING([--enable-storeid-rewrite-helpers="list of helpers"],
2160 [This option selects which Store-ID rewrite helpers to
2161 build and install as part of the normal build
2162 process. The default is to attempt the build of all possible
2163 helpers. Use --disable-storeid-rewrite-helpers to build none.
2164 For a list of available helpers see the
0c1f8b9b 2165 src/store/id_rewriters/ directory.]),[
0d5ee502 2166])
0c1f8b9b 2167m4_include([src/store/id_rewriters/helpers.m4])
0d5ee502 2168
3a125142 2169AC_ARG_WITH(valgrind-debug,
0f705e3b
FC
2170 AS_HELP_STRING([--with-valgrind-debug],
2171 [Include debug instrumentation for use with valgrind]),
4e26f472 2172[
ec308e40 2173 SQUID_YESNO([$withval],[--with-valgrind-debug])
a1c22363 2174 AS_IF([test "x$withval" != "xno"],[
4e26f472
FC
2175 AC_CHECK_HEADERS(valgrind/memcheck.h,[],[
2176 AC_MSG_ERROR([Valgrind support requested, needed headers not found.])
2177 ])
a1c22363 2178 ])
b4bab919 2179])
4e26f472
FC
2180SQUID_DEFINE_BOOL(WITH_VALGRIND,${with_valgrind_debug:=no},
2181 [Valgrind memory debugger support])
2182AC_MSG_NOTICE([Valgrind debug support enabled: $with_valgrind_debug])
b4bab919 2183
0e657244 2184dnl Enable WIN32 Service compile mode
2185AC_ARG_ENABLE(win32-service,
054a4caa 2186 AS_HELP_STRING([--enable-win32-service],
0f705e3b 2187 [Compile Squid as a WIN32 Service.
b284c470 2188 Works only on MS-Windows platforms]), [
ec308e40 2189 SQUID_YESNO([$enableval],[--enable-win32-service])
0e657244 2190])
b284c470
FC
2191SQUID_DEFINE_BOOL(USE_WIN32_SERVICE,${enable_win32_service:=no},
2192 [Enable code supporting MS Windows service mode])
2193AC_MSG_NOTICE([MS Windows service mode enabled: $enable_win32_service])
0e657244 2194
b1485ff8 2195
29f22442 2196# Disable "unlinkd" code
fe0810ac 2197AC_ARG_ENABLE(unlinkd,
0a081cb0 2198 AS_HELP_STRING([--disable-unlinkd],[Do not use unlinkd]), [
ec308e40 2199 SQUID_YESNO([$enableval],[--enable-unlinkd])
fe0810ac 2200])
0f658b5b 2201SQUID_DEFINE_BOOL(USE_UNLINKD,${enable_unlinkd:=yes},
0f705e3b 2202 [Enable useage of unlinkd])
fcabe077 2203AM_CONDITIONAL(ENABLE_UNLINKD,test "x$enable_unlinkd" = "xyes")
fbc04c0a 2204AC_MSG_NOTICE([unlinkd enabled: $enable_unlinkd])
fe0810ac 2205
0f705e3b 2206# Enable backtraces on fatal errors
ce3d30fb 2207AC_ARG_ENABLE(stacktraces,
0f705e3b
FC
2208 AS_HELP_STRING([--enable-stacktraces],
2209 [Enable automatic call backtrace on fatal errors]), [
ec308e40 2210 SQUID_YESNO([$enableval],[--enable-stacktraces])
ce3d30fb 2211])
0f658b5b 2212SQUID_DEFINE_BOOL(PRINT_STACK_TRACE,${enable_stacktraces:=no},
0f705e3b 2213 [Print stack traces on fatal errors])
78614cd4 2214AC_MSG_NOTICE([Automatically print stack trace on fatal errors: $enable_stacktraces])
0a081cb0 2215
904676a2 2216# Enable X-Accelerator-Vary for Vary support within an accelerator setup
2092c67d 2217AC_ARG_ENABLE(x-accelerator-vary,
904676a2
FC
2218 AS_HELP_STRING([--enable-x-accelerator-vary],
2219 [Enable support for the X-Accelerator-Vary
e702812e
FC
2220 HTTP header. Can be used to indicate
2221 variance within an accelerator setup.
2222 Typically used together with other code
904676a2 2223 that adds custom HTTP headers to the requests.]), [
ec308e40 2224 SQUID_YESNO([$enableval],[--enable-x-accelerator-vary])
f66a9ef4 2225])
0f658b5b 2226SQUID_DEFINE_BOOL(X_ACCELERATOR_VARY,${enable_x_accelerator_vary:=no},
904676a2 2227 [Enable support for the X-Accelerator-Vary HTTP header])
78614cd4 2228AC_MSG_NOTICE([X-Accelerator-Vary support enabled: $enable_x_accelerator_vary])
f66a9ef4 2229
24531401 2230SQUID_AUTO_LIB(cppunit,[cppunit test framework],[LIBCPPUNIT])
d93bf055 2231AS_IF([test "x$with_cppunit" != "xno"],[
24531401 2232 LIBCPPUNIT_LIBS="$LIBCPPUNIT_PATH -lcppunit"
d93bf055 2233 PKG_CHECK_MODULES([LIBCPPUNIT],[cppunit],[
f30eb8f7 2234 squid_cv_cppunit_version="`pkg-config --modversion cppunit`"
d93bf055
AJ
2235 AC_MSG_NOTICE([using system installed cppunit version $squid_cv_cppunit_version])
2236 AS_UNSET(squid_cv_cppunit_version)
2237
2238 SQUID_STATE_SAVE(squid_cppunit_state)
e77b66af
FC
2239 CXXFLAGS="${CXXFLAGS} ${LIBCPPUNIT_CFLAGS}"
2240 LIBS="${LIBS} ${LIBCPPUNIT_LIBS}"
d93bf055
AJ
2241 AC_CHECK_HEADERS(cppunit/extensions/HelperMacros.h)
2242 SQUID_STATE_ROLLBACK(squid_cppunit_state)
2243 ],[
2244 AC_MSG_WARN([cppunit does not appear to be installed. Squid does not require this, but code testing with 'make check' will fail.])
2245 ])
f5691f9c 2246])
f5691f9c 2247
090089c4 2248dnl Check for headers
db40ae20 2249AC_CHECK_HEADERS( \
3680cc44
FC
2250 arpa/inet.h \
2251 arpa/nameser.h \
2252 assert.h \
2253 bstring.h \
3680cc44 2254 crypt.h \
3680cc44 2255 ctype.h \
ee4d4e85 2256 direct.h \
a1c22363 2257 dirent.h \
3680cc44
FC
2258 errno.h \
2259 execinfo.h \
2260 fcntl.h \
2261 fnmatch.h \
2262 getopt.h \
2263 glob.h \
2264 gnumalloc.h \
2265 grp.h \
3680cc44 2266 ipl.h \
3680cc44
FC
2267 libc.h \
2268 limits.h \
2269 linux/posix_types.h \
2270 linux/types.h \
3680cc44 2271 malloc.h \
3680cc44
FC
2272 math.h \
2273 memory.h \
2274 mount.h \
2275 netdb.h \
2276 netinet/in.h \
2277 netinet/in_systm.h \
3680cc44 2278 netinet/tcp.h \
3680cc44
FC
2279 paths.h \
2280 poll.h \
321223fe 2281 priv.h \
3680cc44 2282 pwd.h \
c2afddd8 2283 regex.h \
3680cc44 2284 sched.h \
2ccf2eb2 2285 siginfo.h \
3680cc44 2286 signal.h \
3680cc44
FC
2287 stdarg.h \
2288 stddef.h \
3680cc44
FC
2289 stdio.h \
2290 stdlib.h \
3680cc44
FC
2291 string.h \
2292 strings.h \
2293 sys/bitypes.h \
3680cc44
FC
2294 sys/file.h \
2295 sys/ioctl.h \
d440d5a4 2296 sys/ipc.cc \
3680cc44
FC
2297 sys/param.h \
2298 sys/prctl.h \
321223fe 2299 sys/procctl.h \
3680cc44 2300 sys/md5.h \
c975f532 2301 sys/mman.h \
3680cc44
FC
2302 sys/msg.h \
2303 sys/resource.h \
2ccf2eb2 2304 sys/select.h \
d440d5a4 2305 sys/shm.h \
3680cc44
FC
2306 sys/socket.h \
2307 sys/stat.h \
3680cc44
FC
2308 syscall.h \
2309 sys/syscall.h \
2310 sys/time.h \
2311 sys/types.h \
2312 sys/uio.h \
2313 sys/un.h \
2314 sys/vfs.h \
2315 sys/wait.h \
2316 syslog.h \
2317 time.h \
2318 unistd.h \
2319 utime.h \
2320 varargs.h \
2321 byteswap.h \
2322 glib.h \
2323 stdint.h \
2324 inttypes.h \
cdb86165 2325 wchar.h
db40ae20 2326)
3c586e38 2327
ee80a919
AR
2328AC_CHECK_HEADERS( \
2329 linux/netfilter_ipv4.h \
2330 linux/netfilter_ipv6/ip6_tables.h \
fc68f6b1 2331,,,
dcd1dc78 2332SQUID_DEFAULT_INCLUDES
2333#if HAVE_LIMITS_H
2334#include <limits.h>
2335#endif
a74968c2
AJ
2336/* Netfilter ip(6)tables v1.4.0 has broken headers */
2337#if HAVE_NETINET_IN_H
2338#include <netinet/in.h>
2339#endif
dcd1dc78 2340)
2341
61beade2 2342dnl *BSD do not include the dependencies for all their net/ and netinet/ files
c92b4732 2343dnl We must include a few basic type headers for them to work.
d1e5191e 2344AC_CHECK_HEADERS( \
0c0d381b
FC
2345 net/if.h \
2346 netinet/if_ether.h\
2347 netinet/icmp6.h \
2348 netinet/in.h \
2349 netinet/ip.h \
2350 netinet/ip6.h \
0c0d381b
FC
2351 netinet/ip_icmp.h \
2352 netinet/ipl.h \
0c0d381b
FC
2353 net/pf/pfvar.h \
2354 net/pfvar.h \
2355 sys/mount.h\
2356 resolv.h \
d1e5191e
AJ
2357,,,
2358SQUID_BSDNET_INCLUDES)
5a3237b0 2359
aee0606f 2360AC_C_CONST
d57288d2 2361AC_C_BIGENDIAN
aee0606f 2362
6a9f6389 2363AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
a1c22363 2364#if HAVE_TIME_H
6a9f6389 2365#include <time.h>
2366#endif
5c51415d 2367])
46c883ed 2368
a186e0d9 2369AC_CHECK_TYPE(struct rusage,AC_DEFINE(HAVE_STRUCT_RUSAGE,1,[The system provides struct rusage]),,[
8ff51bba 2370#if HAVE_SYS_TIME_H
2371#include <sys/time.h>
2372#endif
b54a6789 2373#if HAVE_SYS_RESOURCE_H
2374#include <sys/resource.h>
a1c22363 2375#endif
a1c22363 2376])
b54a6789 2377
6a9f6389 2378AC_CHECK_MEMBERS([struct iphdr.ip_hl],,,[
2379#if HAVE_SYS_TYPES_H
2380#include <sys/types.h>
2381#endif
a025a745 2382#include <netinet/in.h>
2383#include <netinet/in_systm.h>
6ad85e8a 2384#include <netinet/ip.h>
b05490a8 2385#if defined (__linux__) || defined (__CYGWIN__)
6ad85e8a 2386#define ip_hl ihl
2387#endif
2388#ifndef __linux__
b05490a8 2389#ifndef __CYGWIN__
6ad85e8a 2390#define iphdr ip
b05490a8 2391#endif
6a9f6389 2392#endif])
a025a745 2393
090089c4 2394dnl Check for typedefs
77d6bd88 2395AC_CHECK_SIZEOF(void *)
090089c4 2396
41aa7d00
FC
2397# check for a bunch of types
2398AC_TYPE_INT8_T
2399AC_TYPE_UINT8_T
2400AC_TYPE_INT16_T
2401AC_TYPE_UINT16_T
2402AC_TYPE_INT32_T
2403AC_TYPE_UINT32_T
2404AC_TYPE_INT64_T
2405AC_TYPE_UINT64_T
2406AC_TYPE_PID_T
2407AC_TYPE_SIZE_T
2408AC_TYPE_SSIZE_T
2409AC_TYPE_OFF_T
2410AC_TYPE_UID_T
59a09b98 2411AC_CHECK_TYPE([bool])
41aa7d00
FC
2412#need the defines for PRId64
2413AC_CHECK_SIZEOF(int64_t)
2414AC_CHECK_SIZEOF(long)
50f9c873
AR
2415#need the define for overflow checks
2416AC_CHECK_SIZEOF(off_t)
46e172d9 2417AC_CHECK_SIZEOF(size_t)
6a9f6389 2418
588e71df 2419dnl On Solaris 9 x86, gcc may includes a "fixed" set of old system include files
2420dnl that is incompatible with the updated Solaris header files.
2421dnl For this reason, we must check if pad128_t and upad128_t are defined.
2422AC_CHECK_TYPE(pad128_t,
2423 AC_DEFINE(HAVE_PAD128_T,1,[pad128_t is defined in system headers]),
2424 ,SQUID_DEFAULT_INCLUDES)
2425
2426AC_CHECK_TYPE(upad128_t,
2427 AC_DEFINE(HAVE_UPAD128_T,1,[upad128_t is defined in system headers]),
2428 ,SQUID_DEFAULT_INCLUDES)
2429
6a9f6389 2430AC_CHECK_TYPE(mode_t, AC_DEFINE(HAVE_MODE_T,1,[mode_t is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
2431AC_CHECK_TYPE(fd_mask, AC_DEFINE(HAVE_FD_MASK,1,[fd_mask is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
adcceb47 2432
6a9f6389 2433AC_CHECK_TYPE(socklen_t,AC_DEFINE(HAVE_SOCKLEN_T,1,[socklen_t is defined by the system headers]),,[
2434#include <sys/types.h>
6637e3a5 2435#include <sys/socket.h>
6637e3a5 2436#include <stdlib.h>
2437#include <stddef.h>
a1c22363 2438])
6637e3a5 2439
cdb352bb
FC
2440AC_CHECK_TYPE(mtyp_t,AC_DEFINE(HAVE_MTYP_T,1,
2441 [mtyp_t is defined by the system headers]),,[#include <sys/types.h>
2442#include <sys/ipc.h>
2443#include <sys/msg.h>])
2444
f367e6af
AJ
2445AC_CHECK_TYPE(cpu_set_t,
2446 AC_DEFINE(HAVE_CPU_SET_T,1,[cpu_set_t is defined by the system headers]),,[
2447#if HAVE_SCHED_H
2448#include <sched.h>
2449#endif
2450])
2451
cdb352bb
FC
2452dnl Check for special functions
2453AC_FUNC_ALLOCA
2454
59eac907
AJ
2455SQUID_AUTO_LIB(cap,[Linux capabilities],[LIBCAP])
2456AS_IF([test "x$with_cap" != "xno"],[
2457 SQUID_STATE_SAVE(squid_libcap_state)
24531401
AJ
2458 CXXFLAGS="$LIBCAP_CFLAGS $CXXFLAGS"
2459 LDFLAGS="$LIBCAP_PATH $LDFLAGS"
59eac907
AJ
2460 PKG_CHECK_MODULES([LIBCAP],[libcap >= 2.09],[],[
2461 # cap_clear_flag is the most recent libcap function we require
2462 AC_CHECK_LIB([cap],[cap_clear_flag],[LIBCAP_LIBS="$LIBCAP_LIBS -lcap"])
2463 ])
45c41a07 2464 SQUID_CHECK_FUNCTIONAL_LIBCAP2
59eac907
AJ
2465 AC_MSG_NOTICE([libcap headers are ok: $squid_cv_sys_capability_works])
2466 AS_IF([test "x$squid_cv_sys_capability_works" = "xno"],[LIBCAP_LIBS=""])
2467 SQUID_STATE_ROLLBACK(squid_libcap_state)
2468
2469 AS_IF([test "x$LIBCAP_LIBS" != "x"],[
2470 with_cap=yes
2471 CPPFLAGS="$LIBCAP_CFLAGS $CPPFLAGS"
2472 LIBCAP_LIBS="$LIBCAP_PATH $LIBCAP_LIBS"
2473 AC_DEFINE(USE_LIBCAP,1,[Linux capabilities library support])
2474 ],[test "x$with_cap" = "xyes"],[
2475 AC_MSG_ERROR([Required library libcap not found])
a1c22363 2476 ],[
59eac907
AJ
2477 AC_MSG_NOTICE([Library libcap not found])
2478 with_cap=no
a1c22363
AJ
2479 ])
2480])
59eac907 2481AC_MSG_NOTICE([Linux capabilities support enabled: ${with_cap} ${LIBCAP_LIBS}])
b64b6030 2482
090089c4 2483dnl Check for needed libraries
54c95954 2484AC_SEARCH_LIBS([gethostbyname],[nsl resolv bind])
819656da
AJ
2485AC_SEARCH_LIBS([res_init],[resolv])
2486AC_SEARCH_LIBS([__res_search],[resolv])
54c95954
FC
2487AC_SEARCH_LIBS([bind],[socket])
2488AC_SEARCH_LIBS([opcom_stack_trace],[opcom_stack])
85cd85f3 2489AC_SEARCH_LIBS([yp_match], [nsl nss_nis nss_nisplus])
bfe8dedf 2490dnl Check for Winsock only on MinGW, on Cygwin we must use emulated BSD socket API
a1c22363 2491AS_IF([test "x$squid_host_os" = "xmingw"],[
0c0d381b 2492 SQUID_CHECK_WINSOCK_LIB
32341684
AJ
2493 AC_CHECK_HEADERS( \
2494 windows.h \
2495 ws2tcpip.h \
b966288b 2496 iphlpapi.h ,,,[
2ff9dfaa
AJ
2497#if HAVE_WINSOCK2_H
2498#include <winsock2.h>
2499#endif
32341684
AJ
2500#if HAVE_WINDOWS_H
2501#include <windows.h>
2502#endif
2ff9dfaa
AJ
2503#if HAVE_WS2TCPIP_H
2504#include <ws2tcpip.h>
2505#endif
a1c22363 2506 ])
2ff9dfaa 2507])
94d48591 2508
46f50de9
FC
2509# check that we have unix sockets
2510SQUID_CHECK_UNIX_SOCKET
2511SQUID_DEFINE_BOOL(HAVE_UNIXSOCKET,$squid_cv_unixsocket,[System supports unix sockets])
2512
2513AC_CHECK_LIB(gnumalloc, malloc)
a1c22363 2514AS_IF([test "x$ac_cv_lib_gnumalloc_malloc" = "xyes"],[
ef7ece58 2515 AC_MSG_NOTICE([Disabling extended malloc functions when using bundled gnumalloc])
46f50de9
FC
2516 ac_cv_func_mallocblksize=no
2517 ac_cv_func_mallopt=no
a1c22363
AJ
2518],[
2519 AS_CASE(["$squid_host_os"],
2520 [solaris],[AC_MSG_NOTICE([skipping libmalloc check for $host])],
2521 [freebsd],[AC_MSG_NOTICE([skipping libmalloc check for $host])],
2522 [AC_CHECK_LIB(malloc, main)]
2523 )
2524])
2525
2526AS_IF([test "$squid_host_os" = "mingw"],[
2527 AC_MSG_NOTICE([Use MSVCRT for math functions.])
2528],[
2529 dnl log() are only used in old C code for now.
2530 AC_LANG_PUSH([C])
2531 AC_SEARCH_LIBS([log],[m])
2532 AC_LANG_POP([C])
2533])
090089c4 2534
f467f578
FC
2535dnl --with-maxfd present for compatibility with Squid-2.
2536dnl undocumented in ./configure --help to encourage using the Squid-3 directive
a1c22363
AJ
2537AC_ARG_WITH(maxfd,,[
2538 AS_CASE([$withval],
c881e2b1 2539 [@<:@0-9@:>@*],[
f467f578 2540 squid_filedescriptors_num=$withval
acea95af 2541 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
a1c22363
AJ
2542 ],
2543 [AC_MSG_ERROR(--with-maxfd expects a numeric argument)]
2544 )
055421ee 2545])
001ad4cc 2546
f467f578
FC
2547AC_ARG_WITH(filedescriptors,
2548 AS_HELP_STRING([--with-filedescriptors=NUMBER],
c881e2b1 2549 [Force squid to support NUMBER filedescriptors]),[
a1c22363 2550 AS_CASE([$withval],
c881e2b1 2551 [@<:@0-9@:>@*],[
f467f578 2552 squid_filedescriptors_num=$withval
a1c22363
AJ
2553 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])],
2554 [AC_MSG_ERROR([--with-filedescriptors expects a numeric argument])]
2555 )
c881e2b1 2556])
f467f578
FC
2557
2558SQUID_CHECK_DEFAULT_FD_SETSIZE
acea95af 2559SQUID_CHECK_MAXFD
001ad4cc 2560
f467f578 2561
001ad4cc
AJ
2562dnl Enable IPv6 support
2563AC_MSG_CHECKING([whether to enable IPv6])
001ad4cc 2564AC_ARG_ENABLE(ipv6,
af494bc8 2565 AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support. The default is to probe system capabilities on startup.]), [
ec308e40 2566 SQUID_YESNO([$enableval],[--enable-ipv6])
001ad4cc 2567])
7d927f1f
AJ
2568AC_MSG_RESULT(${enable_ipv6:=yes})
2569SQUID_DEFINE_BOOL(USE_IPV6,$enable_ipv6,[Enable support for IPv6 ])
001ad4cc 2570
a1c22363 2571AS_IF([test "x$enable_ipv6" = "xyes"],[SQUID_CHECK_SIN6_LEN_IN_SAI])
7d553ad9
AJ
2572SQUID_CHECK_SS_LEN_IN_SOCKADDR_STORAGE
2573SQUID_CHECK_SIN_LEN_IN_SOCKADDR_IN
001ad4cc 2574
77f675ad 2575dnl System-specific library modifications
a1c22363
AJ
2576AH_TEMPLATE(GETTIMEOFDAY_NO_TZP,[Whether gettimeofday takes only one argument])
2577AS_CASE(["$host"],
2578 [*-pc-sco3.2*],[
2579 # -lintl is needed on SCO version 3.2v4.2 for strftime()
2580 # Robert Side <rside@aiinc.bc.ca>
2581 # Mon, 18 Jan 1999 17:48:00 GMT
2582 AC_CHECK_LIB(intl, strftime)
2583 ],
2584
2585 [i386-*-solaris2.*],[
2586 AS_IF([test "x$GCC" = "xyes"],[
fcabe077 2587 AC_MSG_NOTICE([Removing -O for gcc on $host])
d0441961 2588 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9g]]*//'`"
a1c22363
AJ
2589 ])
2590 ],
141eb4a6 2591
a1c22363 2592 [*-sgi-irix*],[
fcabe077
FC
2593 AC_MSG_NOTICE([Removing -lsocket for IRIX...])
2594 LIBS=`echo $LIBS | sed -e s/-lsocket//`
2595 AC_MSG_NOTICE([Removing -lnsl for IRIX...])
2596 LIBS=`echo $LIBS | sed -e s/-lnsl//`
2597 ac_cv_lib_nsl_main=no
a1c22363
AJ
2598 ],
2599
2600 [*-ibm-aix*],[
3e1ce596
KB
2601 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_rtti],[-rtti],[[
2602#include <assert.h>
2603#ifndef NULL
2604#define NULL 0
2605#endif
2606class Foo{
2607public:virtual ~Foo(){}
2608};
2609class Bar:public Foo{
2610public:Bar():Foo(){}
2611};
2612 ]],[[
2613Foo * myFoo=new Bar();
2614Bar * myBar=dynamic_cast<Bar *>(myFoo);
2615assert(myBar != NULL);
2616 ]])
a1c22363 2617 AS_IF([test "$ac_cv_require_rtti" = "yes"],[
3e1ce596
KB
2618 SQUID_CFLAGS="-rtti $SQUID_CFLAGS"
2619 SQUID_CXXFLAGS="-rtti $SQUID_CXXFLAGS"
a1c22363 2620 ])
3e1ce596
KB
2621
2622 AC_LANG_PUSH([C])
2623 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_qcpluscmt],[-qcpluscmt],[[]],[[//c++ cmt]])
fcabe077 2624 AC_LANG_POP([C])
a1c22363 2625 AS_IF([test "$ac_cv_require_qcpluscmt" = "yes"],[
3e1ce596 2626 SQUID_CFLAGS="-qcpluscmt $SQUID_CFLAGS"
a1c22363
AJ
2627 ])
2628 ],
2629
2630 [*-*-solaris2.[[0-4]]],[AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)],
3e1ce596 2631
a1c22363
AJ
2632 [*-sony-newsos[[56]]*],[AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)]
2633)
090089c4 2634
84cecfd2 2635dnl This has to be before AC_CHECK_FUNCS
2636# Disable poll() on certain platforms. Override by setting ac_cv_func_poll
2637# when running configure.
a1c22363
AJ
2638AS_IF([test "x$ac_cv_func_poll" = "x"],[
2639 AS_CASE(["$host"],
2640 [*-hp-hpux*.*],[
fcabe077
FC
2641 # Duane Wessels
2642 AC_MSG_NOTICE([disabling poll for $host...])
2643 ac_cv_func_poll='no'
a1c22363
AJ
2644 ],
2645
2646 [*-linux-*],[
fcabe077
FC
2647 # Henrik Nordstrom (hno@squid-cache.org) 19980817
2648 # poll is problematic on Linux. We disable it
2649 # by default until Linux gets it right.
2650 rev=`uname -r | awk -F. '{printf "%03d%03d",$1,$2}'`
a1c22363 2651 AS_IF([test $rev -lt 002002],[
fcabe077
FC
2652 AC_MSG_NOTICE([disabling poll for $host < 2.2...])
2653 ac_cv_func_poll='no'
a1c22363
AJ
2654 ])
2655 ],
2656
2657 [powerpc-ibm-aix4.1.*],[
fcabe077
FC
2658 # Mike Laster (mlaster@metavillage.com) 19981021
2659 AC_MSG_NOTICE([disabling poll for $host...])
2660 ac_cv_func_poll='no'
a1c22363
AJ
2661 ]
2662 )
2663])
176d10ee 2664
6716b242 2665dnl Check for library functions
2666AC_CHECK_FUNCS(\
ce3d30fb 2667 backtrace_symbols_fd \
3a144521 2668 bcopy \
4de1e2da 2669 eui64_aton \
4ac29a5b 2670 fchmod \
6716b242 2671 getdtablesize \
8505e57b 2672 getpagesize \
230c091c 2673 getpass \
30a4f2a8 2674 getrusage \
9c1d8929 2675 getspnam \
379d5751 2676 gettimeofday \
52303a3d 2677 glob \
0f5efab0 2678 mallocblksize \
6716b242 2679 mallopt \
2ae6b9b0 2680 memcpy \
30a4f2a8 2681 memmove \
ee4d4e85 2682 memrchr \
dac27377 2683 memset \
b99a6dec 2684 mkstemp \
1812b6c7 2685 mktime \
88738790 2686 mstats \
84cecfd2 2687 poll \
62ae0622 2688 prctl \
321223fe 2689 procctl \
3a144521 2690 pthread_attr_setschedparam \
cd748f27 2691 pthread_attr_setscope \
2692 pthread_setschedparam \
42b51993 2693 pthread_sigmask \
c68e9c6b 2694 putenv \
c2afddd8
AJ
2695 regcomp \
2696 regexec \
2697 regfree \
819656da
AJ
2698 res_init \
2699 __res_init \
4915be3b 2700 rint \
96c2bb61
AR
2701 sched_getaffinity \
2702 sched_setaffinity \
3a144521 2703 select \
234967c9 2704 seteuid \
c415c128 2705 setgroups \
321223fe 2706 setpflags \
30a4f2a8 2707 setpgrp \
30a4f2a8 2708 setsid \
2709 sigaction \
11430c03 2710 snprintf \
1ccc0d40 2711 socketpair \
6716b242 2712 sysconf \
2713 syslog \
234967c9 2714 timegm \
28da5e0d 2715 vsnprintf \
6716b242 2716)
f5e5c4cf 2717dnl ... and some we provide local replacements for
2718AC_REPLACE_FUNCS(\
f5e5c4cf 2719 initgroups \
2ccf2eb2 2720 psignal \
f5e5c4cf 2721 strerror \
585cddda 2722 strtoll \
f5e5c4cf 2723 tempnam \
2724)
6716b242 2725
dfb96b6b 2726AC_CHECK_DECLS([getaddrinfo,getnameinfo,inet_ntop,inet_pton,InetNtopA,InetPtonA],,,[
55d7d5e9
AJ
2727/*
2728 * BSD requires sys/types.h, sys/socket.h, netinet/in.h, netdb.h, arpa/inet.h
2729 * Linux requires sys/types.h, sys/socket.h, arpa/inet.h
2730 * Windows requires sys/socket.h, winsock2.h, ws2tcpip.h
2731 */
2732#if HAVE_SYS_TYPES_H
2733#include <sys/types.h>
2734#endif
2735#if HAVE_NETINET_IN_H
2736#include <netinet/in.h>
2737#endif
2738#if HAVE_SYS_SOCKET_H
2739#include <sys/socket.h>
2740#endif
2741#if HAVE_NETDB_H
2742#include <netdb.h>
2743#endif
2744#if HAVE_ARPA_INET_H
2745#include <arpa/inet.h>
2746#endif
2747#if HAVE_WINSOCK2_H
2748#include <winsock2.h>
2749#endif
2750#if HAVE_WS2TCPIP_H
2751#include <ws2tcpip.h>
2752#endif
2753])
2754
9676633b
FC
2755# Magic which checks whether we are forcing a type of comm loop we
2756# are actually going to (ab)use.
2757# Mostly ripped from squid-commloops, thanks to adrian and benno
1b3db6d9 2758
a1c22363
AJ
2759AS_IF([test "x$squid_opt_io_loop_engine" != "x"],
2760 AC_MSG_NOTICE([choosing user-specified net I/O API $squid_opt_io_loop_engine]),
2761 [test "x$enable_epoll" != "xno" -a "x$squid_cv_epoll_works" = "xyes"],
2762 squid_opt_io_loop_engine="epoll",
2763 [test "x$enable_kqueue" != "xno"],
2764 squid_opt_io_loop_engine="kqueue",
2765 [test "x$enable_devpoll" != "xno"],
2766 squid_opt_io_loop_engine="devpoll",
2767 [test "x$enable_poll" != "xno" -a "x$ac_cv_func_poll" = "xyes"],
2768 squid_opt_io_loop_engine="poll",
2769 [test "x$enable_select" != "xno" -a "x$ac_cv_func_select" = "xyes"],
2770 squid_opt_io_loop_engine="select",
2771 [test "x$enable_select" != "xno" -a "x$squid_host_os" = "xmingw"],
2772 squid_opt_io_loop_engine="select_win32",
2773 [
2774 AC_MSG_WARN([Eep! Cannot find epoll, kqueue, /dev/poll, poll or select!])
2775 AC_MSG_WARN([Will try select and hope for the best.])
2776 squid_opt_io_loop_engine="select"
2777 ]
2778)
d474c7a6 2779
8075a4da 2780AC_MSG_NOTICE([Using ${squid_opt_io_loop_engine} for the IO loop.])
d474c7a6 2781
8aafbbc1
AJ
2782AM_CONDITIONAL(ENABLE_POLL, test "x$squid_opt_io_loop_engine" = "xpoll")
2783AM_CONDITIONAL(ENABLE_EPOLL, test "x$squid_opt_io_loop_engine" = "xepoll")
2784AM_CONDITIONAL(ENABLE_SELECT, test "x$squid_opt_io_loop_engine" = "xselect")
2785AM_CONDITIONAL(ENABLE_SELECT_WIN32, test "x$squid_opt_io_loop_engine" = "xselect_win32")
2786AM_CONDITIONAL(ENABLE_KQUEUE, test "x$squid_opt_io_loop_engine" = "xkqueue")
2787AM_CONDITIONAL(ENABLE_DEVPOLL, test "x$squid_opt_io_loop_engine" = "xdevpoll")
d474c7a6 2788
a1c22363
AJ
2789AS_CASE([$squid_opt_io_loop_engine],
2790 [epoll],[AC_DEFINE(USE_EPOLL,1,[Use epoll() for the IO loop])],
2791 [devpoll],[AC_DEFINE(USE_DEVPOLL,1,[Use /dev/poll for the IO loop])],
2792 [poll],[AC_DEFINE(USE_POLL,1,[Use poll() for the IO loop])],
2793 [kqueue],[AC_DEFINE(USE_KQUEUE,1,[Use kqueue() for the IO loop])],
2794 [select_win32],[AC_DEFINE(USE_SELECT_WIN32,1,[Use Winsock select() for the IO loop])],
2795 [select],[AC_DEFINE(USE_SELECT,1,[Use select() for the IO loop])],
2796)
1b3db6d9 2797
a1c22363 2798AS_IF([test "x$ac_cv_func_sched_getaffinity" = "xyes" -a "x$ac_cv_func_sched_setaffinity" = "xyes"],[
96c2bb61 2799 AC_DEFINE(HAVE_CPU_AFFINITY,1,[Support setting CPU affinity for workers])
a1c22363 2800])
96c2bb61 2801
91983da0 2802SQUID_CHECK_SETRESUID_WORKS
a1c22363 2803AS_IF([test "x$squid_cv_resuid_works" = "xyes"],[
be0c7ff0 2804 AC_DEFINE(HAVE_SETRESUID,1,[Yay! Another Linux brokenness. Knowing that setresuid() exists is not enough, because RedHat 5.0 declares setresuid() but does not implement it.])
a1c22363 2805])
60939927 2806
2ff9dfaa 2807AC_CHECK_HEADERS(mswsock.h)
14c0d3ab
DK
2808AC_MSG_CHECKING([for constant CMSG_SPACE])
2809AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
2810 #if HAVE_SYS_SOCKET_H
2811 #include <sys/socket.h>
2812 #endif
2ff9dfaa
AJ
2813 #if HAVE_MSWSOCK_H
2814 #include <mswsock.h>
2815 #endif
14c0d3ab
DK
2816
2817 int a[CMSG_SPACE(int)];
2818]])], [
2819 AC_MSG_RESULT(yes)
2820 AC_DEFINE(HAVE_CONSTANT_CMSG_SPACE, 1, [Define to 1 if CMSG_SPACE is constant])
2821], [
2822 AC_MSG_RESULT(no)
2823])
2824
ecd8516d 2825AC_CHECK_TYPE(struct cmsghdr,AC_DEFINE(HAVE_CMSGHDR,1,[The system provides struct cmsghdr]),,[
c72f8c2e
AJ
2826 #if HAVE_SYS_SOCKET_H
2827 #include <sys/socket.h>
2828 #endif
2ff9dfaa
AJ
2829 #if HAVE_MSWSOCK_H
2830 #include <mswsock.h>
2831 #endif
c72f8c2e
AJ
2832 #if HAVE_WINSOCK2_H
2833 #include <winsock2.h>
2834 #endif
2835])
2836
ecd8516d 2837AC_CHECK_TYPE(struct iovec,AC_DEFINE(HAVE_IOVEC,1,[The system provides struct iovec]),,[
c72f8c2e
AJ
2838 #if HAVE_SYS_SOCKET_H
2839 #include <sys/socket.h>
2840 #endif
2841 #if HAVE_WINSOCK2_H
2842 #include <winsock2.h>
2843 #endif
9ac84dcf
FC
2844 #if HAVE_SYS_UIO_H
2845 #include <sys/uio.h>
2846 #endif
c72f8c2e
AJ
2847])
2848
ecd8516d 2849AC_CHECK_TYPE(struct msghdr,AC_DEFINE(HAVE_MSGHDR,1,[The system provides struct msghdr]),,[
c72f8c2e
AJ
2850 #if HAVE_SYS_SOCKET_H
2851 #include <sys/socket.h>
2852 #endif
2ff9dfaa
AJ
2853 #if HAVE_MSWSOCK_H
2854 #include <mswsock.h>
2855 #endif
c72f8c2e
AJ
2856 #if HAVE_WINSOCK2_H
2857 #include <winsock2.h>
2858 #endif
2859])
2860
ecd8516d 2861AC_CHECK_TYPE(struct sockaddr_un,AC_DEFINE(HAVE_SOCKADDR_UN,1,[The system provides sockaddr_un]),,[
c72f8c2e
AJ
2862 #if HAVE_SYS_UN_H
2863 #include <sys/un.h>
2864 #endif
2865 #if HAVE_SYS_SOCKET_H
2866 #include <sys/socket.h>
2867 #endif
2868 #if HAVE_WINSOCK2_H
2869 #include <winsock2.h>
2870 #endif
2871])
2872
0abb39dd 2873SQUID_CHECK_FUNC_STRNSTR
cee08cbc 2874
5cafc1d6 2875dnl IP-Filter support requires ipf header files. These aren't
2876dnl installed by default, so we need to check for them
a1c22363
AJ
2877AS_IF([test "x$enable_ipf_transparent" != "xno"],[
2878 SQUID_CHECK_BROKEN_SOLARIS_IPFILTER
2879 AC_MSG_CHECKING(for availability of IP-Filter header files)
2880 # hold on to your hats...
2881 AS_IF(
2882 [test "x$ac_cv_header_ip_compat_h" = "xyes" -o \
2883 "x$ac_cv_header_ip_fil_compat_h" = "xyes" -o \
2884 "x$ac_cv_header_netinet_ip_compat_h" = "xyes" -o \
2885 "x$ac_cv_header_netinet_ip_fil_compat_h" = "xyes"],
2886 [have_ipfilter_compat_header="yes"])
2887
2888 AS_IF(
2889 [test "x$have_ipfilter_compat_header" = "xyes" -a \
2890 "x$ac_cv_header_ip_fil_h" = "xyes" -a \
2891 "x$ac_cv_header_ip_nat_h" = "xyes"],[enable_ipf_transparent="yes"],
2892
2893 [test "x$have_ipfilter_compat_header" = "xyes" -a \
2894 "x$ac_cv_header_netinet_ip_fil_h" = "xyes" -a \
2895 "x$ac_cv_header_netinet_ip_nat_h" = "xyes"],[enable_ipf_transparent="yes"],
2896 [enable_ipf_transparent="no"])
2897
2898 AC_MSG_RESULT($IPF_TRANSPARENT)
d25bbe26
AJ
2899
2900## On Solaris Ipfilter includes expect that SOLARIS2 is defined with the
2901## Solaris minor version (8, 9, 10, ...)
a1c22363 2902 AS_IF([test "x$enable_ipf_transparent" = "xyes" -a "x$squid_host_os" = "xsolaris"],[
d25bbe26
AJ
2903 solrev=`uname -r | sh -c 'IFS=. read j n x; echo $n'`
2904 CFLAGS="-DSOLARIS2=$solrev $CFLAGS"
2905 CXXFLAGS="-DSOLARIS2=$solrev $CXXFLAGS"
a1c22363
AJ
2906 ])
2907])
1d26e252 2908AC_MSG_NOTICE([IPF-based transparent proxying enabled: $enable_ipf_transparent])
0f658b5b 2909SQUID_DEFINE_BOOL(IPF_TRANSPARENT,$enable_ipf_transparent,
1d26e252
FC
2910 [Enable support for IPF-style transparent proxying])
2911
b2192042 2912dnl PF /dev/pf support requires a header file.
a1c22363
AJ
2913AS_IF([test "x$with_nat_devpf" != "xno"],[
2914 AS_IF([test "x$ac_cv_header_net_pfvar_h" = "xyes" -o \
2915 "x$ac_cv_header_net_pf_pfvar_h" = "xyes"],[
2916 AS_IF([test "x$with_nat_devpf" = "xauto"],[with_nat_devpf="no"])
2917 ],[
2918 AS_IF([test "x$with_nat_devpf" = "xyes"],[
b2192042 2919 AC_MSG_ERROR([PF /dev/pf based NAT requested but needed header not found])
a1c22363 2920 ])
b2192042 2921 with_nat_devpf="no"
a1c22363
AJ
2922 ])
2923])
b2192042 2924SQUID_DEFINE_BOOL(PF_TRANSPARENT,${enable_pf_transparent:=no},
38ff0a40 2925 [Enable support for PF-style transparent proxying])
b2192042
AJ
2926SQUID_DEFINE_BOOL(USE_NAT_DEVPF,${with_nat_devpf:=no},
2927 [Enable support for /dev/pf NAT lookups])
2b0dd4ac 2928
a1c22363
AJ
2929AS_IF([test "x$enable_linux_netfilter" != "xno"],[
2930 AS_IF([test "x$ac_cv_header_linux_netfilter_ipv4_h" = "xyes"],[
2931 AS_IF([test "x$enable_linux_netfilter" = "xauto"],[enable_linux_netfilter=yes])
2932 ],[
2933 AS_IF([test "x$enable_linux_netfilter" = "xauto"],[
4bd144d2 2934 enable_linux_netfilter=no
a1c22363 2935 ],[
4bd144d2 2936 AC_MSG_ERROR([Linux Netfilter support requested but needed headers not found])
a1c22363
AJ
2937 ])
2938 ])
2939])
0f658b5b 2940SQUID_DEFINE_BOOL(LINUX_NETFILTER,$enable_linux_netfilter,
969d4051 2941 [Enable support for Transparent Proxy on Linux via Netfilter])
20ad76ab 2942
b50f1b2b 2943dnl Netfilter TPROXY depends on libcap but the NAT parts can still work.
4bd144d2 2944AC_MSG_NOTICE([Support for Netfilter-based interception proxy requested: $enable_linux_netfilter])
59eac907 2945AS_IF([test "x$enable_linux_netfilter" = "xyes" -a "x$with_cap" != "xyes"],[
a1c22363
AJ
2946 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for TPROXY])
2947 AC_MSG_WARN([Linux Transparent Proxy (version 4+) support WILL NOT be enabled])
2948 AC_MSG_WARN([Reduced support to NAT Interception Proxy])
2949 # AC_DEFINEd later
2950])
59eac907 2951AS_IF([test "x$with_netfilter_conntrack" = "xyes" -a "x$with_cap" != "xyes"],[
a1c22363
AJ
2952 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for netfilter mark support])
2953 AC_MSG_WARN([Linux netfilter marking support WILL NOT be enabled])
2954 with_netfilter_conntrack=no
2955])
24531401 2956AC_MSG_NOTICE([Linux Netfilter Conntrack support enabled: ${with_netfilter_conntrack}])
11e8cfe3
AB
2957
2958
2959AC_ARG_ENABLE(zph-qos,
6c83720b 2960 AS_HELP_STRING([--disable-zph-qos],[Disable ZPH QOS support]), [
ec308e40 2961 SQUID_YESNO([$enableval],[--enable-zph-qos])
11e8cfe3
AB
2962])
2963SQUID_DEFINE_BOOL(USE_QOS_TOS,${enable_zph_qos:=yes},
2964 [Enable Zero Penalty Hit QOS. When set, Squid will alter the
2965 TOS field of HIT responses to help policing network traffic])
2966AC_MSG_NOTICE([ZPH QOS enabled: $enable_zph_qos])
a1c22363
AJ
2967AS_IF(test "x$enable_zph_qos" = "xyes"],[
2968 AC_MSG_NOTICE([QOS netfilter mark preservation enabled: $with_netfilter_conntrack])
2969 SQUID_DEFINE_BOOL(USE_LIBNETFILTERCONNTRACK,${with_netfilter_conntrack:=no},
2970 [Enable support for QOS netfilter mark preservation])
2971])
c2afddd8
AJ
2972
2973AC_CHECK_LIB(regex, regexec, [REGEXLIB="-lregex"],[REGEXLIB=''])
c2afddd8
AJ
2974AC_SUBST(REGEXLIB)
2975
8e0acaf5
FC
2976SQUID_DETECT_UDP_SND_BUFSIZE
2977SQUID_DETECT_UDP_RECV_BUFSIZE
2978SQUID_DETECT_TCP_SND_BUFSIZE
2979SQUID_DETECT_TCP_RECV_BUFSIZE
6bf65235 2980
5c3c56fa
FC
2981SQUID_CHECK_NEED_SYS_ERRLIST
2982SQUID_CHECK_MAXPATHLEN
cc192b50 2983
819656da
AJ
2984SQUID_CHECK_LIBRESOLV_DNS_TTL_HACK
2985SQUID_CHECK_RESOLVER_FIELDS
2986
615540cd 2987AC_CHECK_HEADERS(sys/statvfs.h)
a1c22363
AJ
2988AS_IF([test "x$ac_cv_header_sys_statvfs_h" = "xyes"],[SQUID_CHECK_WORKING_STATVFS])
2989AS_IF([test "x$ac_cv_func_statvfs" != "xyes"],[
615540cd
AJ
2990 AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/vfs.h sys/statfs.h)
2991 AC_CHECK_FUNCS(statfs)
2992 SQUID_CHECK_F_FRSIZE_IN_STATFS
a1c22363 2993])
c68e9c6b 2994
4eb85b7a 2995dnl Squid will not usually attempt to translate templates when building
461b8219 2996AC_ARG_ENABLE(translation,
4eb85b7a 2997 AS_HELP_STRING([--enable-translation],[Generate the localized error page templates and manuals.
9603207d 2998 Which can also be downloaded from http://www.squid-cache.org/Versions/langpack/.]), [
ec308e40 2999 SQUID_YESNO([$enableval],[--enable-translation])
461b8219 3000])
a1c22363 3001AS_IF([test "x${enable_translation:=no}" = "xyes"],[
461b8219 3002 AX_WITH_PROG([PO2HTML],[po2html])
02259ff8 3003 AX_WITH_PROG([PO2TEXT],[po2txt])
a1c22363 3004],[
461b8219 3005 PO2HTML="off"
02259ff8 3006 PO2TEXT="off"
a1c22363 3007])
461b8219 3008AC_SUBST(PO2HTML)
02259ff8 3009AC_SUBST(PO2TEXT)
d146da3b 3010AM_CONDITIONAL(ENABLE_TRANSLATION, test "x${enable_translation:=no}" = "xyes")
ee1a8ac2 3011
43000484
AJ
3012dnl Squid now has limited locale handling ...
3013dnl on error pages
3014AC_ARG_ENABLE(auto-locale,
62979ab1 3015 AS_HELP_STRING([--disable-auto-locale],[This prevents Squid providing localized error pages based on the
21d5413e 3016 clients request headers.
fb46b778 3017 When disabled Squid requires explicit language configuration.]), [
ec308e40 3018 SQUID_YESNO([$enableval],[--enable-auto-locale])
8db7a54b 3019])
fb46b778
FC
3020AC_MSG_NOTICE([Multi-Language support enabled: ${enable_auto_locale:=yes}])
3021SQUID_DEFINE_BOOL(USE_ERR_LOCALES,$enable_auto_locale,
3022 [Use multi-language support on error pages])
3023
43000484 3024
090089c4 3025dnl Need the debugging version of malloc if available
3026XTRA_OBJS=''
a1c22363
AJ
3027AS_IF([test "x$ac_cv_lib_malloc_main" = "xyes"],[
3028 AS_IF([test -r /usr/lib/debug/malloc.o],[XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/malloc.o"])
3029 AS_IF([test -r /usr/lib/debug/mallocmap.o],[XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/mallocmap.o"]);
3030])
090089c4 3031AC_SUBST(XTRA_OBJS)
3032
a1c22363
AJ
3033AS_IF([test "x$XTRA_LIBS" = "x"],[
3034 XTRA_LIBS="$LIBS"
3035 dnl minor cleanup
3036 XTRA_LIBS=`echo $XTRA_LIBS | sed -e "s/ */ /g"`
3037 LIBS=''
3038])
090089c4 3039AC_SUBST(XTRA_LIBS)
3040
daed6927
FC
3041AC_SUBST(SQUID_CFLAGS)
3042AC_SUBST(SQUID_CXXFLAGS)
3043
09835feb 3044# Prerequisite: CXXFLAGS have been finalized.
b2f0a375 3045AC_ARG_VAR([BUILDCXXFLAGS],[C++ compiler flags for building compile-time tools. e.g. cf_gen])
a1c22363 3046AS_IF([test "x$BUILDCXXFLAGS" = "x"],[
b2f0a375
AJ
3047 # if we are NOT cross-compiling, use the default build flags for cf_gen and friends
3048 # otherwise rely on the user-provided value
a1c22363 3049 AS_IF([test "x$squid_cv_check_marchnative" = "xyes"],[
b2f0a375 3050 # always valid for the Build compiler.
b3080eec 3051 BUILDCXXFLAGS="-march=native"
a1c22363 3052 ])
b2f0a375 3053 BUILDCXXFLAGS="$BUILDCXXFLAGS $CXXFLAGS"
a1c22363 3054])
b2f0a375
AJ
3055AC_SUBST(BUILDCXXFLAGS)
3056
90b412dd
AJ
3057AC_MSG_NOTICE([BUILD LIBRARIES: $LIBS])
3058AC_MSG_NOTICE([BUILD EXTRA LIBRARIES: $XTRA_LIBS])
3059AC_MSG_NOTICE([BUILD OBJECTS: $OBJS])
3060AC_MSG_NOTICE([BUILD EXTRA OBJECTS: $XTRA_OBJS])
3061AC_MSG_NOTICE([BUILD C FLAGS: $CFLAGS])
3062AC_MSG_NOTICE([BUILD EXTRA C FLAGS: $SQUID_CFLAGS])
3063AC_MSG_NOTICE([BUILD C++ FLAGS: $CXXFLAGS])
3064AC_MSG_NOTICE([BUILD EXTRA C++ FLAGS: $SQUID_CXXFLAGS])
b2f0a375 3065AC_MSG_NOTICE([BUILD Tools C++ FLAGS: $BUILDCXXFLAGS])
daed6927 3066
090089c4 3067dnl Clean up after OSF/1 core dump bug
9603207d 3068rm -f core
090089c4 3069
7a03447c
AJ
3070AC_CONFIG_FILES([
3071 Makefile
3072 compat/Makefile
7a03447c 3073 contrib/Makefile
7a03447c
AJ
3074 doc/Makefile
3075 doc/manuals/Makefile
86b8d400 3076 doc/release-notes/Makefile
6b99776c 3077 errors/Makefile
6b99776c
AJ
3078 icons/Makefile
3079 lib/Makefile
3080 lib/libTrie/Makefile
3081 lib/libTrie/test/Makefile
3082 lib/ntlmauth/Makefile
6b99776c
AJ
3083 lib/rfcnb/Makefile
3084 lib/smblib/Makefile
3085 lib/snmplib/Makefile
b9ce9676 3086 lib/sspi/Makefile
6b99776c
AJ
3087 scripts/Makefile
3088 src/Makefile
3089 src/acl/Makefile
e046643f
AJ
3090 src/acl/external/Makefile
3091 src/acl/external/AD_group/Makefile
3092 src/acl/external/delayer/Makefile
3093 src/acl/external/eDirectory_userip/Makefile
3094 src/acl/external/file_userip/Makefile
3095 src/acl/external/kerberos_ldap_group/Makefile
4a544c9d 3096 src/acl/external/kerberos_sid_group/Makefile
e046643f
AJ
3097 src/acl/external/LDAP_group/Makefile
3098 src/acl/external/LM_group/Makefile
3099 src/acl/external/session/Makefile
3100 src/acl/external/SQL_session/Makefile
3101 src/acl/external/unix_group/Makefile
3102 src/acl/external/wbinfo_group/Makefile
3103 src/acl/external/time_quota/Makefile
6b99776c
AJ
3104 src/adaptation/Makefile
3105 src/adaptation/icap/Makefile
3106 src/adaptation/ecap/Makefile
3107 src/anyp/Makefile
3108 src/auth/Makefile
3109 src/auth/basic/Makefile
03901cf8
AJ
3110 src/auth/basic/DB/Makefile
3111 src/auth/basic/fake/Makefile
3112 src/auth/basic/getpwnam/Makefile
3113 src/auth/basic/LDAP/Makefile
3114 src/auth/basic/NCSA/Makefile
3115 src/auth/basic/NIS/Makefile
3116 src/auth/basic/PAM/Makefile
3117 src/auth/basic/POP3/Makefile
3118 src/auth/basic/RADIUS/Makefile
3119 src/auth/basic/SASL/Makefile
3120 src/auth/basic/SMB/Makefile
3121 src/auth/basic/SMB_LM/Makefile
3122 src/auth/basic/SSPI/Makefile
6b99776c 3123 src/auth/digest/Makefile
d4d7f6dd
AJ
3124 src/auth/digest/eDirectory/Makefile
3125 src/auth/digest/file/Makefile
3126 src/auth/digest/LDAP/Makefile
6b99776c 3127 src/auth/negotiate/Makefile
16c02b14
AJ
3128 src/auth/negotiate/kerberos/Makefile
3129 src/auth/negotiate/SSPI/Makefile
3130 src/auth/negotiate/wrapper/Makefile
6b99776c 3131 src/auth/ntlm/Makefile
b817c20f
AJ
3132 src/auth/ntlm/fake/Makefile
3133 src/auth/ntlm/SMB_LM/Makefile
3134 src/auth/ntlm/SSPI/Makefile
6b99776c
AJ
3135 src/base/Makefile
3136 src/clients/Makefile
3137 src/comm/Makefile
675b8408 3138 src/debug/Makefile
4a3b98d7 3139 src/dns/Makefile
13d8c08c 3140 src/DiskIO/Makefile
d9691f09
AJ
3141 src/DiskIO/AIO/Makefile
3142 src/DiskIO/Blocking/Makefile
3143 src/DiskIO/DiskDaemon/Makefile
3144 src/DiskIO/DiskThreads/Makefile
3145 src/DiskIO/IpcIo/Makefile
3146 src/DiskIO/Mmapped/Makefile
83b053a0 3147 src/error/Makefile
6b99776c
AJ
3148 src/esi/Makefile
3149 src/eui/Makefile
3150 src/format/Makefile
3151 src/fs/Makefile
3152 src/ftp/Makefile
3153 src/helper/Makefile
3154 src/http/Makefile
3155 src/http/one/Makefile
d6d6203a
AJ
3156 src/http/url_rewriters/Makefile
3157 src/http/url_rewriters/fake/Makefile
3158 src/http/url_rewriters/LFS/Makefile
6b99776c
AJ
3159 src/icmp/Makefile
3160 src/ident/Makefile
3161 src/ip/Makefile
3162 src/ipc/Makefile
3163 src/log/Makefile
4d5dd85a
AJ
3164 src/log/DB/Makefile
3165 src/log/file/Makefile
6b99776c
AJ
3166 src/mem/Makefile
3167 src/mgr/Makefile
3168 src/parser/Makefile
36c774f7 3169 src/proxyp/Makefile
6b99776c 3170 src/repl/Makefile
65e41a45 3171 src/sbuf/Makefile
7dcca85b 3172 src/security/Makefile
cb0b3d63
AJ
3173 src/security/cert_generators/Makefile
3174 src/security/cert_generators/file/Makefile
bbf79f12
AJ
3175 src/security/cert_validators/Makefile
3176 src/security/cert_validators/fake/Makefile
6b99776c
AJ
3177 src/servers/Makefile
3178 src/snmp/Makefile
3179 src/ssl/Makefile
2745fea5 3180 src/store/Makefile
0c1f8b9b
AJ
3181 src/store/id_rewriters/Makefile
3182 src/store/id_rewriters/file/Makefile
98cacedb 3183 src/time/Makefile
6b99776c 3184 test-suite/Makefile
94ab55b0 3185 tools/Makefile
3d276e1d 3186 tools/apparmor/Makefile
33d1abfe 3187 tools/helper-mux/Makefile
2ccf2eb2 3188 tools/purge/Makefile
a35a0ac7 3189 tools/squidclient/Makefile
422cb5da 3190 tools/systemd/Makefile
a35a0ac7 3191 tools/sysvinit/Makefile
53cbe3e4 3192])
43ae1d95 3193
3e7b6055 3194# must configure libltdl subdir unconditionally for "make distcheck" to work
081863f3 3195#AC_CONFIG_SUBDIRS(libltdl)
3e7b6055 3196
6a9f6389 3197AC_OUTPUT