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