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