]> git.ipfire.org Git - thirdparty/squid.git/blame - configure.ac
Sync with trunk rev.14515
[thirdparty/squid.git] / configure.ac
CommitLineData
ef57eb7b 1## Copyright (C) 1996-2016 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
78121f9a 8AC_INIT([Squid Web Proxy],[4.0.4-BZR],[http://bugs.squid-cache.org/],[squid])
d966027f 9AC_PREREQ(2.61)
62979ab1 10AC_CONFIG_HEADERS([include/autoconf.h])
71b12d7c 11AC_CONFIG_AUX_DIR(cfgaux)
8d9ce05e 12AC_CONFIG_SRCDIR([src/main.cc])
f4405bd3 13AM_INIT_AUTOMAKE([tar-ustar nostdinc subdir-objects])
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])
3c586e38 24m4_include([acinclude/pam.m4])
2b448046 25m4_include([acinclude/pkg.m4])
91983da0 26m4_include([acinclude/lib-checks.m4])
ea1cf567 27m4_include([acinclude/ax_cxx_compile_stdcxx_11.m4])
a203dec7 28m4_include([acinclude/ax_cxx_0x_types.m4])
6a56798f 29
63e02610 30PRESET_CFLAGS="$CFLAGS"
a203dec7 31PRESET_CXXFLAGS="$CXXFLAGS"
63e02610 32PRESET_LDFLAGS="$LDFLAGS"
33
a2794549 34dnl Set default LDFLAGS
fcabe077 35if test "x$LDFLAGS" = "x" ; then
73862432 36 LDFLAGS="-g"
a2794549 37fi
38
aff48cc8 39# Check for GNU cc
a2794549 40AC_PROG_CC
e6c4cdd6 41AM_PROG_CC_C_O
29b8d8d6 42AC_PROG_CXX
62979ab1 43AC_LANG([C++])
88d50a22 44AC_CANONICAL_HOST
3e7b6055 45
c8640c9a
AJ
46# Clang 3.2 on some CPUs requires -march-native to detect correctly.
47# GCC 4.3+ can also produce faster executables when its used.
48# But building inside a virtual machine environment has been found to
49# cause random Illegal Instruction errors due to mis-detection of CPU.
50AC_ARG_ENABLE(arch-native,
51 AS_HELP_STRING([--disable-arch-native],[Some compilers offer CPU-specific
52 optimizations with the -march=native parameter.
53 This flag disables the optimization. The default is to
54 auto-detect compiler support and use where available.]), [
55 SQUID_YESNO([$enableval],
56 [Unrecognized argument to --disable-arch-native: $enableval])
57])
d8a4ba7c 58AC_MSG_NOTICE([CPU arch native optimization enabled: ${enable_arch_native:=auto}])
c8640c9a
AJ
59if test "x${enable_arch_native}" != "xno"; then
60 SQUID_CC_CHECK_ARGUMENT([squid_cv_check_marchnative],[-march=native])
61fi
e9d3951b
AJ
62
63# might be cross-compiling.
b2f0a375
AJ
64# NP: BUILDCXXFLAGS defined at the end of configure after CXXFLAGS fully known.
65AC_ARG_VAR([BUILDCXX],[path to compiler for building compile-time tools. e.g. cf_gen])
66if test "x$HOSTCXX" != "x" -a "x$BUILDCXX" = "x"; then
67 AC_MSG_WARN([Cross-compiling with HOSTCXX is deprecated. Uses BUILDCXX instead.])
68 BUILDCXX="$HOSTCXX"
69fi
70if test "x$BUILDCXX" = "x"; then
71 BUILDCXX="$CXX"
e9d3951b
AJ
72 if test "x$squid_cv_check_marchnative" = "xyes"; then
73 CXXFLAGS="$CXXFLAGS -march=native"
74 fi
75fi
b2f0a375 76AC_SUBST(BUILDCXX)
de051d9d 77
40503c27 78AC_MSG_CHECKING([simplified host os])
78a60bca 79simple_host_os=`echo $host_os|sed 's/[0-9].*//g;s/-.*//g'`
035a321e 80squid_host_os_version=`echo $host_os|tr -d "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-"`
6ca34f6f
HN
81if test -n "$squid_host_os_version"; then
82 squid_host_os="`echo $simple_host_os| sed s/$squid_host_os_version//g`"
83else
84 squid_host_os="$simple_host_os"
85fi
40503c27
FC
86AC_MSG_RESULT($squid_host_os (version $squid_host_os_version))
87# on windows squid_host_os is either mingw or cygwin, version is 32
88
b2b60232
FC
89# this needs to be before any test is run, to have more standard
90# functions available on some Unix sysems (e.g. Solaris)
91if test "x$squid_host_os" = "solaris" -a "x$GCC" != "x" ; then
92 AC_USE_SYSTEM_EXTENSIONS
93fi
94
ea1cf567 95# Check for C++11 compiler support
07781e5d 96AX_CXX_COMPILE_STDCXX_11([noext],[mandatory])
a203dec7 97
aff48cc8 98# test for programs
aff48cc8
FC
99AC_PROG_RANLIB
100AC_PROG_CPP
101AC_PROG_INSTALL
102AC_PROG_LN_S
103AC_PROG_EGREP
104
105AC_PATH_PROG(SH, sh, /bin/sh)
106AC_PATH_PROG(FALSE, false, /usr/bin/false)
107AC_PATH_PROG(TRUE, true, /usr/bin/true)
108AC_PATH_PROG(MV, mv, $FALSE)
109AC_PATH_PROG(MKDIR, mkdir, $FALSE)
110AC_PATH_PROG(LN, ln, cp)
111AC_PATH_PROG(CHMOD, chmod, $FALSE)
6d1c1ab1 112AC_PATH_PROG(TR, tr, $FALSE)
aff48cc8 113AC_PATH_PROG(RM, rm, $FALSE)
ffa3bad9 114AC_PATH_PROG(CPPUNITCONFIG, cppunit-config, false)
aff48cc8
FC
115dnl Libtool 2.2.6 requires: rm -f
116RM="$RM -f"
117
118AC_PATH_PROG(PERL, perl, none)
fcabe077 119if test "x$ac_cv_path_PERL" = "xnone"; then
aff48cc8
FC
120 AC_MSG_FAILURE([Perl is required to compile Squid. Please install Perl and then re-run configure ])
121fi
07f370ee 122AC_PATH_PROG(POD2MAN, pod2man, $FALSE)
33d1abfe 123AM_CONDITIONAL(ENABLE_POD2MAN_DOC, test "x${ac_cv_path_POD2MAN}" != "x$FALSE")
aff48cc8 124
52c549d9
AJ
125dnl set $(AR) if not provided by the build environment
126if test "x$AR" = "x"; then
127 AC_PATH_PROG(AR, ar, $FALSE)
128fi
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
cda5e747
AJ
135# pre-define DEFAULT_PREFIX, some modules need it.
136if test "${prefix}" = "NONE" ; then
137 squid_prefix=$ac_default_prefix
138else
139 squid_prefix=$prefix
140fi
141AC_DEFINE_UNQUOTED(DEFAULT_PREFIX,[$squid_prefix],[The install prefix])
142
0b45d157
FC
143AC_ARG_ENABLE(strict-error-checking,
144 AS_HELP_STRING([--disable-strict-error-checking],[By default squid is compiled
2d65bb9a 145 with all possible static compiler error-checks enabled.
cdb352bb
FC
146 This flag disables the behavior]), [
147 SQUID_YESNO([$enableval],
148 [Unrecognized argument to --disable-strict-error-checking: $enableval])
0b45d157 149])
cdb352bb 150AC_MSG_NOTICE([strict error checking enabled: ${enable_strict_error_checking:=yes}])
d1f95b42 151
3e7b6055
AR
152AC_MSG_CHECKING(whether to use loadable modules)
153AC_ARG_ENABLE(loadable-modules,
73862432
FC
154 AS_HELP_STRING([--disable-loadable-modules],[do not support loadable modules]) , [
155 SQUID_YESNO([$enableval],
156 [Unrecognized argument to --disable-loadable-modules: $enableval])
157])
cb5569cd 158AM_CONDITIONAL(ENABLE_LOADABLE_MODULES, test "x${enable_loadable_modules:=yes}" = "xyes")
73862432 159AC_MSG_RESULT([$enable_loadable_modules])
3e7b6055 160
73862432 161if test "x$enable_loadable_modules" = "xyes";
3e7b6055 162then
73862432
FC
163 AC_DEFINE(USE_LOADABLE_MODULES, 1, [Support Loadable Modules])
164 AC_ENABLE_SHARED
3e7b6055 165else
73862432 166 AC_DISABLE_SHARED
3e7b6055
AR
167fi
168
4313559d 169# LT_INIT requires libtool v2, might as well state it loud
2663a9c8 170LT_PREREQ([2.2])
220d7675 171LT_INIT([dlopen],[disable-shared])
2148ef58
AJ
172if ! test "${ac_top_build_prefix}" = "";
173then
174 # LTDL v3-v7 macros assume the autoconf 2.62 variable top_build_prefix is defined
175 # But from autoconf 2.64 its called ac_top_build_prefix and not automatically added to the Makefile
176 # This fixes Linux LTDLv3-v7, and BSD LTDL v2.2
177 top_build_prefix=${ac_top_build_prefix}
178 AC_SUBST(top_build_prefix)
179fi
bd9303f5 180LTDL_INIT
081863f3 181
d9a41469 182dnl LibTool environment is now prepared for setup. Check that it is usable and initialize.
081863f3 183LT_LIB_DLLOAD
3e7b6055
AR
184
185# Do we need these unconditionally for "make distcheck" to work?
186AC_SUBST(INCLTDL)
187AC_SUBST(LIBLTDL)
188
73862432 189if test "x$enable_loadable_modules" = "xyes";
3e7b6055 190then
73862432
FC
191 # Why is this needed? Should not LT_INIT (or LT_LIB_DLLOAD) from libtool do that?
192 LIBADD_DL=${lt_cv_dlopen_libs}
193 AC_SUBST([LIBADD_DL])
3e7b6055
AR
194fi
195
07f370ee 196SQUID_CC_GUESS_VARIANT
fa6307ae 197SQUID_CC_GUESS_OPTIONS
f9d138eb 198
be0c7ff0
FC
199dnl find out the exe extension for this platform.
200dnl If it is not empty, use it for CGI as well.
a2794549 201AC_EXEEXT
202AC_OBJEXT
203
fcabe077
FC
204if test "x$EXEEXT" = "x" ; then
205 CGIEXT=".cgi"
a2794549 206else
fcabe077
FC
207 # automake automatically adds .exe when installing binaries
208 CGIEXT=""
a2794549 209fi
7aeb8001 210AC_SUBST(CGIEXT)
a2794549 211
a396d1f8 212AM_CONDITIONAL(ENABLE_WIN32SPECIFIC,[test "x$squid_host_os" = "xmingw"])
daf2ddfa 213AM_CONDITIONAL(ENABLE_WIN32_IPC,[test "x$squid_host_os" = "xmingw"])
fcabe077 214
b5467222
CT
215case "$squid_host_os" in
216mingw)
fcabe077
FC
217 AC_PATH_PROG(WIN32_PSAPI, psapi.dll, none)
218 CFLAGS="$CFLAGS -mthreads"
d66b42da 219 CXXFLAGS="$CXXFLAGS -mthreads -static-libgcc -static-libstdc++"
fcabe077
FC
220 if test "x$ac_cv_path_WIN32_PSAPI" = "xnone"; then
221 AC_MSG_NOTICE([PSAPI.DLL is recommended to run Squid on Windows NT Platform])
222 AC_MSG_NOTICE([Please see PSAPI.DLL section on doc/win32-relnotes.html.])
223 else
224 AC_DEFINE(HAVE_WIN32_PSAPI,1,[Define if you have PSAPI.DLL on Windows systems])
225 LIBS="$LIBS -lpsapi"
226 fi
227 MINGW_LIBS="-lmingwex"
228 AC_SUBST(MINGW_LIBS)
b5467222
CT
229 ;;
230freebsd)
231 # FreeBSD places local libraries and packages in /usr/local
232 CFLAGS="$CFLAGS -I/usr/local/include"
233 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
234 LDFLAGS="$LDFLAGS -L/usr/local/lib -Wl,-R/usr/local/lib"
235 ;;
236*)
237 ;;
238esac
4b26fae9 239
f4aaf39c 240dnl Substitutions
6a9f6389 241AC_DEFINE_UNQUOTED(CONFIG_HOST_TYPE, "$host",[Host type from configure])
30a4f2a8 242
8075a4da
FC
243AC_DEFINE_UNQUOTED(SQUID_CONFIGURE_OPTIONS, "$ac_configure_args",
244 [configure command line used to configure Squid])
090089c4 245
5483d916 246CACHE_EFFECTIVE_USER="nobody"
247AC_ARG_WITH(default-user,
62979ab1 248 AS_HELP_STRING([--with-default-user=USER],[System user account for squid permissions. Default: nobody]),
5483d916 249 [ CACHE_EFFECTIVE_USER="$withval" ]
250)
251AC_SUBST(CACHE_EFFECTIVE_USER)
252
c8d2dc9b
AJ
253DEFAULT_LOG_DIR="$localstatedir/logs"
254AC_ARG_WITH(logdir,
73862432 255 AS_HELP_STRING([--with-logdir=PATH],
cdb352bb 256 [Default location for squid logs. default: PREFIX/var/logs]), [
73862432
FC
257case $withval in
258 yes|no)
259 AC_MSG_ERROR( --with-logdir requires a directory PATH. --with-logdir=PATH )
260 ;;
261 *)
262 DEFAULT_LOG_DIR="$withval"
263 ;;
264esac
c8d2dc9b
AJ
265 ]
266)
267AC_SUBST(DEFAULT_LOG_DIR)
268
2f36643c 269DEFAULT_PID_FILE="$localstatedir/run/@SERVICE_NAME@.pid"
a7f6af35 270AC_ARG_WITH(pidfile,
e0eb5853 271 AS_HELP_STRING([--with-pidfile=PATH],
cdb352bb 272 [Default location for squid pid file. Default: PREFIX/var/run/squid.pid]), [
73862432
FC
273case $withval in
274 yes|no)
275 AC_MSG_ERROR( --with-pidfile requires a file PATH. --with-pidfile=PATH )
276 ;;
277 *)
32f07882 278 DEFAULT_PID_FILE="$withval"
73862432
FC
279 ;;
280 esac
e0eb5853 281])
32f07882 282AC_SUBST(DEFAULT_PID_FILE)
a7f6af35 283
bf52b026
AJ
284DEFAULT_SWAP_DIR="$localstatedir/cache/squid"
285AC_ARG_WITH(swapdir,
286 AS_HELP_STRING([--with-swapdir=PATH],
287 [Default location for squid cache directories. Default: PREFIX/var/cache/squid]), [
288case $withval in
289 yes|no)
290 AC_MSG_ERROR( --with-swapdir requires a directory PATH. --with-swapdir=PATH )
291 ;;
292 *)
293 DEFAULT_SWAP_DIR="$withval"
294 ;;
295 esac
296])
297AC_SUBST(DEFAULT_SWAP_DIR)
298
30a4f2a8 299dnl Set Default CFLAGS
fcabe077 300if test "x$PRESET_CFLAGS" = "x"; then
f70e69c6 301 if test "$squid_cv_compiler" = "gcc"; then
fcabe077
FC
302 case "$host" in
303 *-sun-sunos*)
304 # sunos has too many warnings for this to be useful
305 # motorola too
306 ;;
307 *m88k*)
308 # Motorola cc/ld does not like -02 but is ok on -O
309 CFLAGS=`echo $CFLAGS | sed -e 's/-O[0-9]/-O/'`
310 ;;
311 *)
312 CFLAGS="$squid_cv_cc_option_wall $CFLAGS"
313 ;;
314 esac
315 else
316 case "$host" in
317 *mips-sgi-irix6.*)
318 # suggested by Rafael Seidl <rafaels@cthulhu.engr.sgi.com>
319 CFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
320 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
321 -Wl,-woff,85,-woff,84,-woff,134 \
322 -nostdinc -I/usr/include -D_BSD_SIGNALS $CFLAGS"
323 CXXFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
324 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
325 -Wl,-woff,85,-woff,84,-woff,134 \
326 -nostdinc -I/usr/include -D_BSD_SIGNALS $CXXFLAGS"
327 ;;
30a4f2a8 328 *)
fcabe077
FC
329 ;;
330 esac
331 fi
30a4f2a8 332fi
333
d2e3605e 334dnl set squid required flags
f70e69c6 335if test "$squid_cv_compiler" = "gcc"; then
78a60bca
AJ
336 case "$squid_host_os" in
337 mingw)
9f68fb10 338dnl Guido Serassio (serassio@squid-cache.org) 20070811
339dnl Using the latest MinGW (gcc 3.4.5 + mingw-runtime 3.13) cannot build with
0a13cc9d 340dnl -Werror -Wmissing-prototypes -Wmissing-declarations
9f68fb10 341dnl TODO: check if the problem will be present in any other newer MinGW release.
cb35a124 342 SQUID_CFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow"
fcabe077
FC
343 ;;
344 *)
cb35a124 345 SQUID_CFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wcomments -Wshadow"
fcabe077
FC
346 ;;
347 esac
cb35a124 348 SQUID_CXXFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow"
d2e3605e 349else
fcabe077
FC
350 SQUID_CFLAGS=
351 SQUID_CXXFLAGS=
d2e3605e 352fi
07f370ee 353
05c9db69 354dnl CentOS (and RHEL) still define ntohs() using deprecated C++ features
629cb141 355SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_wno_deprecated_register],[-Werror -Wno-deprecated-register],[[#include <arpa/inet.h>]],[[int fox=ntohs(1);]])
05c9db69 356
cdb352bb 357if test "x$enable_strict_error_checking" != "xno"; then
fcabe077 358 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_option_werror"
59a09b98 359 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cxx_option_werror"
07f370ee
FC
360fi
361
0568bff2 362if test "x$ac_cv_require_wno_deprecated_register" = "xyes"; then
363 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -Wno-deprecated-register"
364fi
365
e0eb5853
FC
366# squid_cv_cc_arg_pipe is set by SQUID_CC_GUESS_OPTIONS
367SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cc_arg_pipe"
368SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_arg_pipe"
2060fa9a 369
4fe75473
FC
370# possibly include some build info tag into squid -v
371SQUID_EMBED_BUILD_INFO
372
83079644 373AC_ARG_ENABLE(optimizations,
ffa3bad9 374 AS_HELP_STRING([--disable-optimizations],
be0c7ff0 375 [Do not compile Squid with compiler optimizations enabled.
a2f6a96c
FC
376 Optimization is good for production builds, but not
377 good for debugging. During development, use
378 --disable-optimizations to reduce compilation times
cdb352bb
FC
379 and allow easier debugging. This option implies
380 --disable-inline]), [
fcabe077
FC
381if test "x$enableval" = "xno" ; then
382 AC_MSG_NOTICE([Disabling compiler optimizations (-O flag)])
383 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9]]*//'`"
384 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-O[[0-9]]*//'`"
73862432 385 enable_inline="no"
fcabe077 386fi
83079644 387])
388
ffa3bad9 389AH_TEMPLATE(_USE_INLINE_,[Include inline methods into header file])
6c0c04db 390AC_ARG_ENABLE(inline,
be0c7ff0
FC
391 AS_HELP_STRING([--disable-inline],
392 [Do not compile trivial methods as inline. Squid
a2f6a96c
FC
393 is coded with much of the code able to be inlined.
394 Inlining is good for production builds, but not
395 good for development. During development, use
396 --disable-inline to reduce compilation times and
397 allow incremental builds to be quick. For
398 production builds, or load tests, use
399 --enable-inline to have squid make all trivial
73862432
FC
400 methods inlinable by the compiler.]), [
401SQUID_YESNO([$enableval],
402 [Unrecognized argument to --disable-inline: $enableval])
6c0c04db 403])
941c31f3 404AC_MSG_NOTICE([inlining optimizations enabled: ${enable_inline:=yes}])
73862432
FC
405SQUID_DEFINE_BOOL(_USE_INLINE_,$enable_inline,
406 [Include inline methods into header file])
407# to be used by sub-commands
408export enable_inline
6c0c04db 409
fa80a8ef 410AC_ARG_ENABLE(debug-cbdata,
8075a4da
FC
411 AS_HELP_STRING([--enable-debug-cbdata],
412 [Provide some debug information in cbdata]), [
50af7161
FC
413SQUID_YESNO([$enableval],
414 [unrecognized argument to --enable-debug-cbdata: $enableval])
fa80a8ef 415])
9a0a18de 416SQUID_DEFINE_BOOL(USE_CBDATA_DEBUG,${enable_debug_cbdata:=no},
50af7161
FC
417 [Enable support for cbdata debug information])
418AC_MSG_NOTICE([cbdata debugging enabled: $enable_debug_cbdata])
419
fa80a8ef 420
c9267250
AJ
421dnl Nasty hack to get autoconf 2.64 on Linux to run.
422dnl all other uses of RUN_IFELSE are wrapped inside CACHE_CHECK which breaks on 2.64
aff0e8fe 423AC_RUN_IFELSE([AC_LANG_SOURCE([[ int main(int argc, char **argv) { return 0; } ]])],[],[],[:])
c9267250 424
0d00c98b 425AH_TEMPLATE(XMALLOC_STATISTICS,[Define to have malloc statistics])
d9180414 426AC_ARG_ENABLE(xmalloc-statistics,
8075a4da
FC
427 AS_HELP_STRING([--enable-xmalloc-statistics],
428 [Show malloc statistics in status page]), [
4d1d2477
FC
429SQUID_YESNO([$enableval],
430 [unrecognized argument to --enable-xmalloc-statistics: $enableval])
e5f4e1b0 431])
4d1d2477
FC
432SQUID_DEFINE_BOOL(XMALLOC_STATISTICS,${enable_xmalloc_statistics:=no},
433 [Show malloc statistics in status page])
434AC_MSG_NOTICE([xmalloc stats display: $enable_xmalloc_statistics])
e5f4e1b0 435
8075a4da 436squid_opt_aufs_threads=""
f85c88f3 437AC_ARG_WITH(aufs-threads,
8075a4da
FC
438 AS_HELP_STRING([--with-aufs-threads=N_THREADS],
439 [Tune the number of worker threads for the aufs object store.]), [
440case $withval in
a3310b77 441 [[0-9]]*)
50fbcbd6 442 squid_opt_aufs_threads=$withval
a3310b77 443 ;;
444 *)
8b0d8e31 445 AC_MSG_ERROR(--with-aufs-threads expects a numeric argument)
a3310b77 446 ;;
447 esac
448])
fcabe077 449if test "x$squid_opt_aufs_threads" != "x"; then
50fbcbd6
FC
450 AC_MSG_NOTICE([With $squid_opt_aufs_threads aufs threads])
451 AC_DEFINE_UNQUOTED(AUFS_IO_THREADS,$squid_opt_aufs_threads,
8075a4da 452 [Defines how many threads aufs uses for I/O])
cd748f27 453fi
454
50fbcbd6 455AC_ARG_WITH(dl, AS_HELP_STRING([--with-dl],[Use dynamic linking]))
fcabe077 456if test "x$with_dl" = "xyes"; then
eed82608 457 AC_MSG_NOTICE([With dl])
8154dd82 458fi
f85c88f3 459
4b0f8912 460## check for atomics library before anything that might need it
16530552
FC
461# AC_SEARCH_LIBS pollutes LIBS
462SQUID_STATE_SAVE(LIBATOMIC)
463AC_SEARCH_LIBS([__atomic_load_8],[atomic],[
464 test "$ac_res" = "none required" || ATOMICLIB=$ac_res],[])
465SQUID_STATE_ROLLBACK(LIBATOMIC)
4b0f8912
AJ
466AC_SUBST(ATOMICLIB)
467
c975f532
DK
468AC_SEARCH_LIBS([shm_open], [rt])
469if test "x$ac_cv_search_shm_open" != "xno" ; then
470 AC_DEFINE(HAVE_SHM,1,[Support shared memory features])
471fi
472
d235bc84 473AC_MSG_CHECKING([for DiskIO modules to be enabled])
50fbcbd6 474squid_disk_module_candidates=""
8075a4da 475squid_opt_enable_diskio="auto" #values: no, yes, "auto"(=yes+detect modules)
2513178d 476AC_ARG_ENABLE(disk-io,
50fbcbd6
FC
477 AS_HELP_STRING([--enable-disk-io="list of modules"],
478 [Build support for the list of disk I/O modules.
479 Set without a value or omitted, all available modules will be built.
480 See src/DiskIO for a list of available modules, or
481 Programmers Guide section on DiskIO
8075a4da
FC
482 for details on how to build your custom disk module]), [
483case $enableval in
2513178d 484 yes)
fe9ddf62 485 ${TRUE}
50fbcbd6 486 #do nothing, "auto" is ok
507ca601 487 ;;
2513178d 488 no)
8075a4da 489 squid_opt_enable_diskio="no"
507ca601 490 ;;
2513178d 491 *)
8075a4da 492 squid_opt_enable_diskio="yes"
47d80734 493 squid_disk_module_candidates=" `echo $enableval| sed -e 's/,/ /g;s/ */ /g'` "
d235bc84 494 SQUID_CLEANUP_MODULES_LIST([squid_disk_module_candidates])
507ca601 495 ;;
2513178d 496 esac
50fbcbd6
FC
497])
498
d235bc84 499# if requested to autodetect, find out what we have
fcabe077 500if test "x$squid_opt_enable_diskio" = "xauto"; then
8075a4da 501 squid_opt_enable_diskio="yes"
50fbcbd6 502 SQUID_LOOK_FOR_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
c975f532
DK
503 if test "x$ac_cv_search_shm_open" = "xno" ; then
504 # disable IpcIo
505 squid_disk_module_candidates=`echo $squid_disk_module_candidates|sed 's/IpcIo//'`
506 fi
50fbcbd6 507fi
d235bc84 508
47d80734 509AC_MSG_RESULT([${squid_disk_module_candidates:-none}])
dc299f29 510SQUID_CHECK_EXISTING_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
0f658b5b 511SQUID_DEFINE_BOOL(USE_DISKIO,$squid_opt_enable_diskio,
50fbcbd6 512 [DiskIO modules are expected to be available.])
2513178d 513
dc299f29 514
40503c27 515
2513178d 516dnl Some autoconf.h defines we might enable later...
0b163dbb
FC
517AC_ARG_WITH(pthreads,AS_HELP_STRING([--without-pthreads],[Disable POSIX Threads]))
518AC_ARG_WITH(aio, AS_HELP_STRING([--without-aio],[Do not use POSIX AIO. Default: auto-detect]))
daf2ddfa 519ENABLE_WIN32_AIOPS=0
ffa3bad9
FC
520squid_opt_use_aio=
521squid_opt_use_diskthreads=
46577dd1 522AIOLIB=
2513178d
AJ
523
524dnl Setup the module paths etc.
2513178d
AJ
525DISK_LIBS=
526DISK_MODULES=
d9691f09
AJ
527AH_TEMPLATE(HAVE_DISKIO_MODULE_AIO, [Whether POSIX AIO Disk I/O module is built])
528AH_TEMPLATE(HAVE_DISKIO_MODULE_BLOCKING, [Whether Blocking Disk I/O module is built])
529AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKDAEMON, [Whether DiskDaemon Disk I/O module is built])
23ee12fb 530AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKTHREADS, [Whether DiskThreads Disk I/O module is built])
d9691f09
AJ
531AH_TEMPLATE(HAVE_DISKIO_MODULE_IPCIO, [Whether IpcIo Disk I/O module is built])
532AH_TEMPLATE(HAVE_DISKIO_MODULE_MMAPPED, [Whether Mmapped Disk I/O module is built])
50fbcbd6 533for module in $squid_disk_module_candidates none; do
d235bc84 534 # maybe not needed
fcabe077 535 if test "x$module" = "xnone"; then
507ca601 536 continue
2513178d 537 fi
fcabe077 538 if ! test -d "$srcdir/src/DiskIO/$module"; then
2513178d
AJ
539 AC_MSG_ERROR(disk-io $module does not exist)
540 fi
541 case "$module" in
d9691f09
AJ
542
543 AIO)
544 dnl Check for POSIX AIO availability
545 squid_opt_use_aio="yes"
546 AIOLIB=
547 if test "x$with_aio" != "xno"; then
548 have_aio_header=no
549 AC_CHECK_HEADERS(aio.h,[have_aio_header=yes])
550 dnl On some systems POSIX AIO functions are in librt
551 dnl On some systems POSIX AIO functions are in libaio
552 AC_CHECK_LIB(rt,aio_read,[AIOLIB="-lrt"],AC_CHECK_LIB(aio,aio_read,[AIOLIB="-laio"],[]))
553 dnl Enable AIO if the library and headers are found
554 if test "x$AIOLIB" != "x" && test "x$have_aio_header" = "xyes"; then
555 AC_MSG_NOTICE([Native POSIX AIO support detected.])
556 squid_opt_use_aio="yes"
557 else
558 dnl Windows does things differently. We provide wrappers.
559 dnl TODO: Windows really needs its own DiskIO module or its Overlaped IO
560 case "$squid_host_os" in
561 mingw)
562 squid_opt_use_aio="yes"
563 AC_MSG_NOTICE([Windows being built. Maybe-enable POSIX AIO.])
564 ;;
565 *)
566 AC_MSG_NOTICE([Native POSIX AIO support not detected. AIO automatically disabled.])
567 squid_opt_use_aio="no"
568 ;;
569 esac
570 fi
571 else
572 AC_MSG_NOTICE([POSIX AIO support manually disabled.])
573 squid_opt_use_aio="no"
574 fi
575 dnl Use the POSIX AIO pieces if we actually need them.
576 if test "x$squid_opt_use_aio" = "xyes" ; then
577 DISK_MODULES="$DISK_MODULES AIO"
d9691f09
AJ
578 AC_DEFINE([HAVE_DISKIO_MODULE_AIO],1,[POSIX AIO Disk I/O module is built])
579 case "$squid_host_os" in
580 mingw)
581 ENABLE_WIN32_AIO=1
582 AC_MSG_NOTICE([Replacing AIO DiskIO module with: Windows overlapped I/O support])
583 ;;
584 *)
585 AC_MSG_NOTICE([Enabling AIO DiskIO module])
586 ;;
587 esac
588 else
589 AC_MSG_NOTICE([AIO DiskIO Module disabled. Missing POSIX AIO support.])
fedd516f 590 squid_disk_module_candidates_AIO=no
d9691f09
AJ
591 fi
592 ;;
593
594 Blocking)
595 AC_MSG_NOTICE([Enabling Blocking DiskIO module])
596 DISK_MODULES="$DISK_MODULES Blocking"
d9691f09
AJ
597 AC_DEFINE([HAVE_DISKIO_MODULE_BLOCKING],1,[Blocking Disk I/O module is built])
598 ;;
599
2513178d 600 DiskDaemon)
1d3aafe4
FC
601 case "$squid_host_os" in
602 mingw)
603 AC_MSG_NOTICE(["DiskDaemon not supported on MinGW"])
fedd516f 604 squid_disk_module_candidates_DiskDaemon=no
1d3aafe4
FC
605 ;;
606 *)
607 AC_MSG_NOTICE([Enabling DiskDaemon DiskIO module])
1d3aafe4 608 DISK_MODULES="$DISK_MODULES DiskDaemon"
d9691f09 609 AC_DEFINE([HAVE_DISKIO_MODULE_DISKDAEMON],1,[DiskDaemon Disk I/O module is built])
1d3aafe4
FC
610 ;;
611 esac
507ca601 612 ;;
d9691f09 613
2513178d 614 DiskThreads)
507ca601
FC
615 squid_opt_use_diskthreads="yes"
616 LIBPTHREADS=
617 SQUID_STATE_SAVE([diskthreads_state],[SQUID_CFLAGS SQUID_CXXFLAGS])
618 if test "x$with_pthreads" != "xno"; then
619 dnl TODO: this needs to be extended to handle more systems and better
620 dnl REF: http://www.openldap.org/lists/openldap-bugs/200006/msg00070.html
621 dnl REF: http://autoconf-archive.cryp.to/acx_pthread.html
622 case "$squid_host_os" in
623 mingw)
daf2ddfa 624 ENABLE_WIN32_AIOPS=1
507ca601
FC
625 AC_MSG_NOTICE([Windows threads support automatically enabled])
626 ;;
627 freebsd)
2a76c9c4 628 if test `echo "$squid_host_os_version" | tr -d .` -lt 70 ; then
a0f82085
AJ
629 AC_MSG_NOTICE(pthread library requires FreeBSD 7 or later)
630 squid_opt_use_diskthreads="no"
631 else
632 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
633 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
634 if test "x$GCC" = "xyes" -a "x$PRESET_LDFLAGS" = "x" ; then
635 LDFLAGS="$LDFLAGS -pthread"
636 fi
507ca601
FC
637 fi
638 ;;
ec264296
SH
639 openbsd)
640 if test `echo "$squid_host_os_version" | tr -d .` -lt 52 ; then
641 AC_MSG_NOTICE(pthread library requires OpenBSD 5.2 or later)
642 squid_opt_use_diskthreads="no"
643 else
644 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
645 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
646 LDFLAGS="$LDFLAGS -lpthread"
647 fi
648 ;;
507ca601
FC
649 solaris)
650 if test "x$GCC" = "xyes" ; then
651 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -pthreads"
652 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -pthreads"
653 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
654 AC_MSG_NOTICE(pthread library required but cannot be found.)
655 squid_opt_use_diskthreads="no"
656 ])
657 else
658 dnl test for -lpthread first. libc version is a stub apparently on Solaris.
659 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -lpthread"
660 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -lpthread"
661 AC_SEARCH_LIBS([pthread_create],[pthread thread],[
662 LIBPTHREADS="" #in LIBS
663 ],[
664 AC_MSG_NOTICE(pthread library required but cannot be found.)
665 squid_opt_use_diskthreads="no"
666 ])
667 fi
668 ;;
669 *)
670 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
671 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
672 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
40503c27
FC
673 AC_MSG_NOTICE(pthread library required but cannot be found.)
674 squid_opt_use_diskthreads="no"
675 ])
507ca601
FC
676 ;;
677 esac
678 else
679 AC_MSG_NOTICE([Native pthreads support manually disabled.])
680 squid_opt_use_diskthreads="no"
681 fi
682 if test "x$squid_opt_use_diskthreads" = "xyes" ; then
507ca601 683 AC_MSG_NOTICE([Enabling DiskThreads DiskIO module])
507ca601 684 DISK_MODULES="$DISK_MODULES DiskThreads"
d9691f09 685 AC_DEFINE([HAVE_DISKIO_MODULE_DISKTHREADS],1,[DiskThreads Disk I/O module is built])
507ca601 686 else
507ca601 687 AC_MSG_NOTICE([Native pthreads support disabled. DiskThreads module automaticaly disabled.])
0b163dbb 688 SQUID_STATE_ROLLBACK([diskthreads_state])
fedd516f 689 squid_disk_module_candidates_DiskThreads=no
507ca601
FC
690 fi
691 ;;
2513178d 692
d9691f09 693 IpcIo)
d9691f09 694 if test "x$ac_cv_search_shm_open" = "xno" ; then
fedd516f
AJ
695 AC_MSG_NOTICE([DiskIO IpcIo module requires shared memory support])
696 squid_disk_module_candidates_IpcIo=no
697 else
23ee12fb 698 AC_MSG_NOTICE([Enabling IpcIo DiskIO module])
fedd516f 699 DISK_MODULES="$DISK_MODULES IpcIo"
fedd516f 700 AC_DEFINE([HAVE_DISKIO_MODULE_IPCIO],1,[IpcIo Disk I/O module is built])
507ca601
FC
701 fi
702 ;;
2513178d 703
e2851fe7 704 Mmapped)
e2cbb70e
FC
705 dnl TODO: use availability of sys/mman.h and/or mmap to define
706 dnl OR support windows mmap functions
707 if test "x$squid_host_os" = "xmingw" ; then
708 AC_MSG_NOTICE([Mmapped DiskIO is not available on Mingw])
fedd516f 709 squid_disk_module_candidates_Mmapped=no
e2cbb70e
FC
710 else
711 AC_MSG_NOTICE([Enabling Mmapped DiskIO module])
e2cbb70e 712 DISK_MODULES="$DISK_MODULES Mmapped"
d9691f09 713 AC_DEFINE([HAVE_DISKIO_MODULE_MMAPPED],1,[Mmapped Disk I/O module is built])
e2cbb70e 714 fi
e2851fe7
AR
715 ;;
716
2513178d 717 *)
507ca601 718 AC_MSG_NOTICE([Enabling $module DiskIO module])
d9691f09 719 DISK_LIBS="$DISK_LIBS lib${module}.la"
507ca601 720 DISK_MODULES="$DISK_MODULES ${module}"
507ca601 721 ;;
2513178d
AJ
722 esac
723done
724AC_MSG_NOTICE([IO Modules built: $DISK_MODULES])
725AC_SUBST(DISK_MODULES)
726AC_SUBST(DISK_LIBS)
ccca4016 727AM_CONDITIONAL([ENABLE_DISKIO_AIO], [test "x$squid_disk_module_candidates_AIO" = "xyes"])
d9691f09 728AC_SUBST(AIOLIB)
ccca4016
AJ
729AM_CONDITIONAL([ENABLE_WIN32_AIO], [test "x$squid_disk_module_candidates_AIO" = "xyes" -a "x$ENABLE_WIN32_AIO" = "x1"])
730AM_CONDITIONAL([ENABLE_DISKIO_BLOCKING], [test "x$squid_disk_module_candidates_Blocking" = "xyes"])
731AM_CONDITIONAL([ENABLE_DISKIO_DISKDAEMON], [test "x$squid_disk_module_candidates_DiskDaemon" = "xyes"])
732AM_CONDITIONAL([ENABLE_DISKIO_DISKTHREADS], [test "x$squid_disk_module_candidates_DiskThreads" = "xyes"])
d9691f09 733AC_SUBST(LIBPTHREADS)
ccca4016
AJ
734AM_CONDITIONAL([ENABLE_WIN32_AIOPS], [test "x$squid_disk_module_candidates_DiskThreads" = "xyes" -a "x$ENABLE_WIN32_AIOPS" = "x1"])
735AM_CONDITIONAL([ENABLE_DISKIO_IPCIO], [test "x$squid_disk_module_candidates_IpcIo" = "xyes"])
736AM_CONDITIONAL([ENABLE_DISKIO_MMAPPED], [test "x$squid_disk_module_candidates_Mmapped" = "xyes"])
2513178d
AJ
737
738
739dnl Check what Storage formats are wanted.
740dnl This version will error out with a message saying why if a required DiskIO is missing.
dc299f29 741squid_opt_enable_storeio=auto
d235bc84
FC
742AC_ARG_ENABLE([storeio],
743 AS_HELP_STRING([--enable-storeio="list of modules"],
744 [Build support for the list of store I/O modules.
18cc92fb
FC
745 The default is only to build the "ufs" module.
746 See src/fs for a list of available modules, or
747 Programmers Guide section <not yet written>
507ca601
FC
748 for details on how to build your custom store module]), [
749case $enableval in
cd748f27 750 yes)
dc299f29 751 squid_opt_enable_storeio=auto
507ca601 752 ;;
cd748f27 753 no)
dc299f29 754 squid_opt_enable_storeio=no
507ca601 755 ;;
1c690e30 756 *)
dc299f29 757 squid_opt_enable_storeio=yes
507ca601 758 squid_storeio_module_candidates="`echo $enableval| sed -e 's/,/ /g;s/ */ /g'`"
80f756db 759 # ufs is really always needed as it has low-level routines
be0c7ff0 760 # if it is a dupe it will be cleaned-up later
80f756db 761 squid_storeio_module_candidates="$squid_storeio_module_candidates ufs"
507ca601 762 ;;
cd748f27 763 esac
cd748f27 764])
fcabe077 765if test "x$squid_opt_enable_storeio" = "xauto"; then
dc299f29 766 squid_opt_enable_storeio=yes
d235bc84
FC
767 AC_MSG_CHECKING([for available StoreIO modules])
768 SQUID_LOOK_FOR_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
769 AC_MSG_RESULT([$squid_storeio_module_candidates])
770fi
771
dc299f29
FC
772SQUID_CLEANUP_MODULES_LIST([squid_storeio_module_candidates])
773SQUID_CHECK_EXISTING_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
774AC_MSG_NOTICE([Store modules built: $squid_storeio_module_candidates])
775
776for fs in $squid_storeio_module_candidates none; do
507ca601 777 case "$fs" in
8154dd82 778 diskd)
507ca601 779 if test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
80f756db 780 "$squid_disk_module_candidates_DiskDaemon" != "yes" ; then
507ca601
FC
781 AC_MSG_ERROR([Storage diskd module requires DiskIO module: Blocking or DiskDaemon])
782 fi
783 ;;
8154dd82 784 aufs)
507ca601 785 if test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
80f756db 786 "$squid_disk_module_candidates_DiskThreads" != "yes" ; then
507ca601
FC
787 AC_MSG_ERROR([Storage module aufs requires DiskIO module: Blocking or DiskThreads])
788 fi
789 ;;
e2851fe7 790 rock)
be718d7a
DK
791 if test "x$squid_disk_module_candidates_IpcIo" != "xyes" -a \
792 "x$squid_disk_module_candidates_Blocking" != "xyes"; then
793 AC_MSG_ERROR([Storage module Rock requires IpcIo or Blocking DiskIO module])
c975f532 794 fi
b5377bef 795 squid_do_build_rock=true
e2851fe7 796 ;;
d3b3ab85 797 ufs)
b5377bef
FC
798 squid_do_build_ufs=true
799 ;;
8154dd82 800 esac
a2794549 801done
23ee12fb 802
b5377bef
FC
803AM_CONDITIONAL(HAVE_FS_UFS,[test "x$squid_do_build_ufs" = "xtrue" ])
804AM_CONDITIONAL(HAVE_FS_ROCK,[test "x$squid_do_build_rock" = "xtrue" ])
9d6186b1
FC
805dnl hack: need to define those even if not used in the build system to
806dnl make sure that global FS objects are linked to the squid binary.
7b5b7ba8
CT
807AH_TEMPLATE(HAVE_FS_UFS, "Define to 1 if ufs filesystem module is build")
808AH_TEMPLATE(HAVE_FS_AUFS, "Define to 1 if aufs filesystem module is build")
809AH_TEMPLATE(HAVE_FS_DISKD, "Define to 1 if diskd filesystem module is build")
e2851fe7 810AH_TEMPLATE(HAVE_FS_ROCK, "Define to 1 if rock filesystem module is build")
7b5b7ba8
CT
811
812
dc299f29 813dnl got final squid_storeio_module_candidates, build library lists
b66455ff
AR
814dnl This list will not be needed when each fs library has its own Makefile
815STORE_LIBS_TO_BUILD=
816dnl File system libraries to link executables with.
817dnl These are the same as STORE_LIBS_TO_BUILD, but with a path
818STORE_LIBS_TO_ADD=
dc299f29 819for fs in $squid_storeio_module_candidates; do
7b5b7ba8
CT
820 STORE_LIBS_TO_BUILD="$STORE_LIBS_TO_BUILD lib${fs}.la"
821 STORE_LIBS_TO_ADD="$STORE_LIBS_TO_ADD fs/lib${fs}.la"
6d1c1ab1
FC
822 SQUID_TOUPPER_VAR_CONTENTS([fs])
823 AC_DEFINE_UNQUOTED(HAVE_FS_${fs}, 1)
b66455ff
AR
824done
825
826AC_SUBST(STORE_LIBS_TO_BUILD)
827AC_SUBST(STORE_LIBS_TO_ADD)
082a5e7a 828AC_SUBST(STORE_TESTS)
a2794549 829
24a04df9
AJ
830
831dnl At lest one removal policy is always needed.
832dnl 'lru' removal policy is currently hard-coded by name for tests
833dnl so we must set it as default.
834REPL_POLICIES="lru"
d9180414 835AC_ARG_ENABLE(removal-policies,
56ffc413
FC
836 AS_HELP_STRING([--enable-removal-policies="list of policies"],
837 [Build support for the list of removal policies.
18cc92fb
FC
838 The default is only to build the "lru" module.
839 See src/repl for a list of available modules, or
840 Programmers Guide section 9.9 for details on how
507ca601
FC
841 to build your custom policy]), [
842case $enableval in
6a566b9c 843 yes)
5069fb38 844 SQUID_LOOK_FOR_MODULES([$srcdir/src/repl],[REPL_POLICIES])
507ca601 845 ;;
6a566b9c 846 no)
507ca601 847 ;;
1c690e30 848 *)
507ca601
FC
849 REPL_POLICIES="`echo $enableval| sed -e 's/,/ /g;s/ */ /g'`"
850 ;;
6a566b9c 851 esac
6a566b9c 852])
fcabe077 853if test "x$REPL_POLICIES" != "x" ; then
56ffc413 854 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/repl],[REPL_POLICIES])
5069fb38 855 AC_MSG_NOTICE([Removal policies to build: $REPL_POLICIES])
1c690e30 856 REPL_OBJS="repl/lib`echo $REPL_POLICIES|sed -e 's% %.a repl/lib%g'`.a"
857 REPL_LIBS="`echo $REPL_OBJS|sed -e 's%repl/%%g'`"
858fi
6a566b9c 859AC_SUBST(REPL_POLICIES)
6a566b9c 860AC_SUBST(REPL_OBJS)
f71946fc 861AC_SUBST(REPL_LIBS)
6a566b9c 862
d1da2d1f 863AM_CONDITIONAL(ENABLE_PINGER, false)
e5f4e1b0 864AC_ARG_ENABLE(icmp,
62979ab1 865 AS_HELP_STRING([--enable-icmp],[Enable ICMP pinging and Network Measurement]),
fcabe077 866[ if test "x$enableval" = "xyes" ; then
eed82608 867 AC_MSG_NOTICE([ICMP enabled])
be0c7ff0 868 AC_DEFINE(USE_ICMP,1,[Define to use Squid ICMP and Network Measurement features (highly recommended!)])
d1da2d1f 869 AM_CONDITIONAL(ENABLE_PINGER, true)
e5f4e1b0 870 fi
871])
872
9a0a18de 873AM_CONDITIONAL(ENABLE_DELAY_POOLS, false)
d9180414 874AC_ARG_ENABLE(delay-pools,
62979ab1 875 AS_HELP_STRING([--enable-delay-pools],[Enable delay pools to limit bandwidth usage]),
fcabe077 876[ if test "x$enableval" = "xyes" ; then
eed82608 877 AC_MSG_NOTICE([Delay pools enabled])
9a0a18de 878 AC_DEFINE([USE_DELAY_POOLS],1,[Traffic management via "delay pools".])
ffe4ffd8 879 AM_CONDITIONAL(ENABLE_DELAY_POOLS, true)
e5f4e1b0 880 fi
881])
882
5fa840c3 883dnl disable generic/common adaptation support by default
5069fb38 884squid_opt_use_adaptation=no
5fa840c3 885
5069fb38 886squid_opt_use_esi=yes
7eb77a5f
FC
887AH_TEMPLATE([USE_SQUID_ESI],
888 [Define to enable the ESI processor and Surrogate header support])
43ae1d95 889AC_ARG_ENABLE(esi,
7eb77a5f 890 AS_HELP_STRING([--enable-esi],
5069fb38 891 [Enable ESI for accelerators. Benefits from expat or libxml2.
7eb77a5f 892 Enabling ESI will cause squid reverse proxies to be capable
5069fb38 893 of the Edge Acceleration Specification (www.esi.org).]),
507ca601 894 [squid_opt_use_esi=$enableval], [squid_opt_use_esi=no])
88bfe098
AJ
895HAVE_LIBEXPAT=0
896EXPATLIB=
897HAVE_LIBXML2=0
898XMLLIB=
fcabe077 899if test "x$squid_opt_use_esi" = "xyes" ; then
3473acb1 900 AC_MSG_NOTICE([Enabling ESI processor and Surrogate header support.])
7eb77a5f 901 AC_DEFINE(USE_SQUID_ESI,1,
507ca601 902 [Compile the ESI processor and Surrogate header support])
7eb77a5f 903else
8075a4da 904 AC_MSG_NOTICE([Disabling ESI processor])
7eb77a5f 905fi
88bfe098 906
7eb77a5f
FC
907# ESI support libraries: expat
908AC_ARG_WITH(expat, AS_HELP_STRING([--without-expat],[Do not use expat for ESI. Default: auto-detect]))
fcabe077 909if test "x$squid_opt_use_esi" = "xyes" -a "x$with_expat" != "xno" ; then
7eb77a5f
FC
910 AC_CHECK_LIB([expat], [main], [EXPATLIB="-lexpat"; HAVE_LIBEXPAT=1])
911 AC_CHECK_HEADERS([expat.h])
912 AC_DEFINE_UNQUOTED(HAVE_LIBEXPAT, $HAVE_LIBEXPAT, [Define to 1 if you have the expat library])
fcabe077 913 if test "x$with_expat" = "xyes" -a "x$HAVE_LIBEXPAT" != "x1" ; then
7eb77a5f 914 AC_MSG_ERROR([Required library expat is not able to be found.])
23df48fd 915 fi
7eb77a5f 916fi
ad32c661 917
7eb77a5f 918AC_ARG_WITH(libxml2, AS_HELP_STRING([--without-libxml2],[Do not use libxml2 for ESI. Default: auto-detect]))
fcabe077 919if test "x$squid_opt_use_esi" = "xyes" -a "x$with_libxml2" != "xno" ; then
7eb77a5f
FC
920 AC_CHECK_LIB([xml2], [main], [XMLLIB="-lxml2"; HAVE_LIBXML2=1])
921 dnl Find the main header and include path...
0dc1a86a
HN
922 AC_CACHE_CHECK([location of libxml2 include files], [ac_cv_libxml2_include], [
923 AC_CHECK_HEADERS([libxml/parser.h], [], [
94ea9adc 924 AC_MSG_NOTICE([Testing in /usr/include/libxml2])
7eb77a5f
FC
925 SAVED_CPPFLAGS="$CPPFLAGS"
926 CPPFLAGS="-I/usr/include/libxml2 $CPPFLAGS"
927 unset ac_cv_header_libxml_parser_h
0dc1a86a
HN
928 AC_CHECK_HEADERS([libxml/parser.h], [ac_cv_libxml2_include="-I/usr/include/libxml2"], [
929 AC_MSG_NOTICE([Testing in /usr/local/include/libxml2])
930 CPPFLAGS="-I/usr/local/include/libxml2 $SAVED_CPPFLAGS"
931 unset ac_cv_header_libxml_parser_h
932 AC_CHECK_HEADERS([libxml/parser.h], [ac_cv_libxml2_include="-I/usr/local/include/libxml2"], [
67840a07 933 AC_MSG_NOTICE([Failed to find libxml2 header file libxml/parser.h])
0dc1a86a 934 ])
7eb77a5f 935 ])
0dc1a86a
HN
936 CPPFLAGS="$SAVED_CPPFLAGS"
937 ])
938 ])
939 if test "x$ac_cv_libxml2_include" != "x"; then
940 SQUID_CXXFLAGS="$ac_cv_libxml2_include $SQUID_CXXFLAGS"
941 CPPFLAGS="$ac_cv_libxml2_include $CPPFLAGS"
7eb77a5f 942 fi
0dc1a86a
HN
943 dnl Now that we know where to look find the headers...
944 AC_CHECK_HEADERS(libxml/parser.h libxml/HTMLparser.h libxml/HTMLtree.h)
7eb77a5f 945 AC_DEFINE_UNQUOTED(HAVE_LIBXML2, $HAVE_LIBXML2, [Define to 1 if you have the libxml2 library])
fcabe077 946 if test "x$with_libxml2" = "xyes" -a "$HAVE_LIBXML2" != "1" ; then
7eb77a5f
FC
947 AC_MSG_ERROR([Required library libxml2 is not able to be found.])
948 fi
43ae1d95 949fi
7eb77a5f 950
fcabe077
FC
951AM_CONDITIONAL(USE_ESI, test "x$squid_opt_use_esi" = "xyes")
952AM_CONDITIONAL(HAVE_LIBEXPAT, test "$HAVE_LIBEXPAT" = 1)
88bfe098 953AC_SUBST(EXPATLIB)
fcabe077 954AM_CONDITIONAL(HAVE_LIBXML2, test "$HAVE_LIBXML2" = 1)
88bfe098 955AC_SUBST(XMLLIB)
43ae1d95 956
8075a4da 957# icap argument handling
51952383 958AC_ARG_ENABLE(icap-client,
4f07726a
AJ
959 AS_HELP_STRING([--disable-icap-client],[Disable the ICAP client.]),[
960 SQUID_YESNO([$enableval],[Unrecognized argument to --disable-icap-client: $enableval])
961])
962SQUID_DEFINE_BOOL(ICAP_CLIENT,${enable_icap_client:=yes}, [Enable ICAP client features in Squid])
963AM_CONDITIONAL(USE_ICAP_CLIENT, [test "x$enable_icap_client" != "xno" ])
964if test "x$enable_icap_client" != "xno" ; then
1f3c65fc 965 ICAP_LIBS="icap/libicap.la"
5069fb38 966 squid_opt_use_adaptation=yes
51952383 967else
c21ad0f5 968 ICAP_LIBS=""
51952383 969fi
c21ad0f5 970AC_SUBST(ICAP_LIBS)
51952383 971
5069fb38 972squid_opt_use_ecap=1
3e7b6055
AR
973AC_MSG_CHECKING(whether to support eCAP)
974AC_ARG_ENABLE(ecap,
8075a4da
FC
975 AS_HELP_STRING([--enable-ecap],[support loadable content adaptation modules]), [
976 case "${enableval}" in
977 yes|no) squid_opt_use_ecap=$enableval ;;
978 *) AC_MSG_ERROR(bad value ${enableval} for --enable-ecap) ;;
979 esac
980AC_MSG_RESULT([$squid_opt_use_ecap, explicitly])
981 ], [
5069fb38
FC
982 squid_opt_use_ecap=no;
983 AC_MSG_RESULT([$squid_opt_use_ecap, implicitly])
3e7b6055
AR
984 ]
985)
986
80ab04bb
AR
987dnl Necessary if the first PKG_CHECK_MODULES call is conditional
988PKG_PROG_PKG_CONFIG
989
3e7b6055 990dnl Perform configuration consistency checks for eCAP
cbc14831 991if test "x$squid_opt_use_ecap" != "xno";
3e7b6055 992then
cbc14831
AJ
993 dnl eCAP support requires loadable modules, which are enabled by default
994 if test "x$enable_loadable_modules" != "xyes"
995 then
996 AC_MSG_ERROR([eCAP support requires loadable modules. Please do not use --disable-loadable-modules with --enable-ecap.])
997 fi
4cfba571 998
cbc14831 999 if test -n "$PKG_CONFIG"; then
6666da11 1000 dnl eCAP support requires libecap.
0a720258 1001 dnl This Squid supports libecap v1.0.x.
3e115aaf
AR
1002 dnl Use EXT_ prefix to distinguish external libecap (that we check for
1003 dnl here) from our own convenience ecap library in Makefiles.
0a720258 1004 PKG_CHECK_MODULES([EXT_LIBECAP],[libecap >= 1.0 libecap < 1.1])
cbc14831
AJ
1005 else
1006 AC_MSG_NOTICE([eCAP support requires pkg-config to verify the correct library version. Trouble may follow.])
1007 fi
3e7b6055
AR
1008fi
1009
fcabe077
FC
1010AM_CONDITIONAL(USE_ECAP, test "x$squid_opt_use_ecap" = "xyes")
1011if test "x$squid_opt_use_ecap" = "xyes";
3e7b6055
AR
1012then
1013 AC_DEFINE(USE_ECAP,1,[Enable eCAP support])
3e115aaf 1014 ECAP_LIBS="ecap/libsquid-ecap.la"
5069fb38 1015 squid_opt_use_adaptation=yes
3e7b6055 1016else
5fa840c3 1017 AC_DEFINE(USE_ECAP,0,[Disable eCAP support])
3e7b6055
AR
1018 ECAP_LIBS=""
1019fi
b61a58df 1020dnl convenience library
3e7b6055
AR
1021AC_SUBST(ECAP_LIBS)
1022
3e7b6055 1023
5fa840c3 1024dnl enable adaptation if requested by specific adaptation mechanisms
fcabe077
FC
1025AM_CONDITIONAL(USE_ADAPTATION, test "x$squid_opt_use_adaptation" = "xyes")
1026if test "x$squid_opt_use_adaptation" = "xyes"
5fa840c3
AR
1027then
1028 AC_DEFINE(USE_ADAPTATION,1,[common adaptation support])
1029 ADAPTATION_LIBS="adaptation/libadaptation.la"
51952383 1030else
5fa840c3
AR
1031 AC_DEFINE(USE_ADAPTATION,0,[common adaptation support])
1032 ADAPTATION_LIBS=""
51952383 1033fi
5fa840c3 1034AC_SUBST(ADAPTATION_LIBS)
3e7b6055 1035
1d3aafe4 1036test "x$squid_host_os" = "xmingw" && enable_wccp=no
5069fb38 1037AC_ARG_ENABLE(wccp,
8075a4da 1038 AS_HELP_STRING([--disable-wccp],[Disable Web Cache Coordination Protocol]), [
1a6b111a 1039SQUID_YESNO([$enableval],[unrecognized argument to --disable-wccp: $enableval])
5069fb38 1040])
0067eb06 1041SQUID_DEFINE_BOOL(USE_WCCP, ${enable_wccp:=yes}, [Define to enable WCCP])
1a6b111a 1042AC_MSG_NOTICE([Web Cache Coordination Protocol enabled: $enable_wccp])
0b0cfcf2 1043
1d3aafe4 1044test "x$squid_host_os" = "xmingw" && enable_wccpv2=no
0b0cfcf2 1045AC_ARG_ENABLE(wccpv2,
1a6b111a
FC
1046 AS_HELP_STRING([--disable-wccpv2],
1047 [Disable Web Cache Coordination V2 Protocol]), [
1048SQUID_YESNO([$enableval],
1049 [unrecognized argument to --disable-wccpv2: $enableval])
0b0cfcf2 1050])
0067eb06 1051SQUID_DEFINE_BOOL(USE_WCCPv2,${enable_wccpv2:=yes},
1a6b111a
FC
1052 [Define to enable WCCP V2])
1053AC_MSG_NOTICE([Web Cache Coordination V2 Protocol enabled: $enable_wccpv2])
320e9f36 1054
d9180414 1055AC_ARG_ENABLE(kill-parent-hack,
8075a4da 1056 AS_HELP_STRING([--enable-kill-parent-hack],[Kill parent on shutdown]), [
1a6b111a
FC
1057SQUID_YESNO([$enableval],
1058 [unrecognized argument to --enable-kill-parent-hack: $enableval])
e5f4e1b0 1059])
0067eb06 1060SQUID_DEFINE_BOOL(KILL_PARENT_OPT,${enable_kill_parent_hack:=no},
1a6b111a
FC
1061 [A dangerous feature which causes Squid to kill its parent
1062 process (presumably the RunCache script) upon receipt
1063 of SIGTERM or SIGINT. Deprecated, Use with caution.])
1064AC_MSG_NOTICE([Kill parent on shutdown hack enabled: $enable_kill_parent_hack])
20ad76ab 1065
e5f4e1b0 1066AC_ARG_ENABLE(snmp,
1d87b6b3 1067 AS_HELP_STRING([--disable-snmp],[Disable SNMP monitoring support]), [
1a6b111a
FC
1068 SQUID_YESNO([$enableval],
1069 [unrecognized argument to --disable-snmp: $enableval])
87630341 1070])
0067eb06 1071SQUID_DEFINE_BOOL(SQUID_SNMP,${enable_snmp:=yes},
1a6b111a 1072 [Define to enable SNMP monitoring of Squid])
f738d783 1073AM_CONDITIONAL(ENABLE_SNMP, [test "x$enable_snmp" = "xyes"])
fcabe077 1074if test "x$enable_snmp" = "xyes"; then
4de1e2da 1075 SNMPLIB='../lib/snmplib/libsnmplib.la'
87630341 1076fi
1a6b111a 1077AC_MSG_NOTICE([SNMP support enabled: $enable_snmp])
e5f4e1b0 1078AC_SUBST(SNMPLIB)
e5f4e1b0 1079
d9180414 1080AC_ARG_ENABLE(cachemgr-hostname,
5069fb38
FC
1081 AS_HELP_STRING([--enable-cachemgr-hostname=hostname],
1082 [Make cachemgr.cgi default to this host.
1d87b6b3
FC
1083 If unspecified, uses the name of the build-host]), [
1084 case $enableval in
1085 yes)
1086 AC_DEFINE(CACHEMGR_HOSTNAME,[getfullhostname()],
1087 [If you are upset that the cachemgr.cgi form comes up with the hostname field blank, then define this to getfullhostname()])
1088 AC_MSG_NOTICE([Cachemgr default hostname == host where cachemgr runs])
1089 ;;
1090 no)
1091 : # Nothing to do..
1092 ;;
1093 *)
1094 AC_DEFINE_UNQUOTED(CACHEMGR_HOSTNAME,"${enableval}")
1095 AC_MSG_NOTICE([Cachemgr default hostname set to ${enableval}])
1096 ;;
1097 esac
e5f4e1b0 1098])
1099
ee0927b6 1100AC_ARG_ENABLE(eui,
1a6b111a 1101 AS_HELP_STRING([--disable-eui],
c8da66ba 1102 [Disable use of ARP / MAC/ EUI (ether address)]), [
1a6b111a
FC
1103SQUID_YESNO([$enableval],[--disable-eui expects no arguments])
1104])
fcabe077 1105if test "x${enable_eui:=yes}" = "xyes" ; then
507ca601 1106 case "$squid_host_os" in
a396d1f8 1107 linux|solaris|freebsd|openbsd|netbsd|cygwin)
507ca601
FC
1108 ${TRUE}
1109 ;;
a396d1f8 1110 mingw)
507ca601
FC
1111 EUILIB="-liphlpapi"
1112 ;;
1113 *)
1114 AC_MSG_WARN([EUI support probably will not work on host $host.])
1115 ;;
1116 esac
b966288b 1117 # iphlpapi.h check delayed after winsock2.h
507ca601 1118 AC_CHECK_HEADERS( \
32341684 1119 windows.h \
507ca601 1120 sys/sockio.h \
32341684
AJ
1121 sys/param.h,
1122 [], [], [[
1123#if HAVE_WINDOWS_H
1124include <windows.h>
54d47324 1125#endif
32341684 1126]]
507ca601 1127 )
29759678
FC
1128 AC_CHECK_HEADERS( \
1129 net/if_arp.h \
1130 net/route.h,
1131 [], [], [[
1132#include <sys/types.h>
1133#include <sys/socket.h>
1134]])
1135
43c1320a
AJ
1136 # OpenBSD, FreeBSD and NetBSD requires sys/param.h to be included before sysctl.h and net/if_dl.h
1137 AC_CHECK_HEADERS( \
1138 net/if_dl.h \
1139 sys/sysctl.h,
1140 [], [], [[
54d47324 1141#if HAVE_SYS_PARAM_H
29759678
FC
1142#include <sys/param.h>
1143#endif
1144 ]])
a98c2da5 1145fi
2ef664d8 1146AC_SUBST(EUILIB)
1a6b111a 1147AC_MSG_NOTICE([EUI (MAC address) controls enabled: $enable_eui])
0067eb06 1148SQUID_DEFINE_BOOL(USE_SQUID_EUI,$enable_eui,
1a6b111a 1149 [Define this to include code which lets you use ethernet addresses. This code uses API initially defined in 4.4-BSD.])
fcabe077 1150AM_CONDITIONAL(USE_SQUID_EUI, [test "x$enable_eui" = "xyes" ])
1a6b111a 1151
e5f4e1b0 1152
74075210 1153AC_ARG_ENABLE(htcp,
47d80734 1154 AS_HELP_STRING([--disable-htcp],[Disable HTCP protocol support]), [
1a6b111a
FC
1155SQUID_YESNO([$enableval],
1156 [unrecognized argument to --disable-htcp: $enableval])
74075210 1157])
0f658b5b 1158SQUID_DEFINE_BOOL(USE_HTCP,${enable_htcp:=yes},
47d80734 1159 [Define this to include code for the Hypertext Cache Protocol (HTCP)])
fcabe077 1160AM_CONDITIONAL(ENABLE_HTCP, [test "x$enable_htcp" = "xyes"])
1a6b111a
FC
1161AC_MSG_NOTICE([HTCP support enabled: $enable_htcp])
1162
09cd7204
AJ
1163# Cryptograhic libraries
1164AC_ARG_WITH(nettle,
1165 AS_HELP_STRING([--without-nettle],[Compile without the Nettle crypto library.]),[
1166case "$with_nettle" in
1167 yes|no)
1168 : # Nothing special to do here
1169 ;;
1170 *)
1171 if test ! -d "$withval" ; then
1172 AC_MSG_ERROR([--with-nettle path does not point to a directory])
1173 fi
1174 NETTLELIBDIR="-L$with_nettle/lib"
1175 CPPFLAGS="-I$with_nettle/include $CPPFLAGS"
1176 with_nettle=yes
1177 esac
a9dfcab8 1178])
09cd7204
AJ
1179if test "x$with_nettle" != "xno" ; then
1180 AC_CHECK_LIB(nettle, nettle_md5_init,[
1181 NETTLELIB="$NETTLELIBDIR -lnettle"
f9ef3ed8 1182 AC_CHECK_HEADERS(nettle/md5.h)
09cd7204 1183 ],[with_nettle=no])
f9ef3ed8
AJ
1184 if test "x$with_nettle" != "xno" ; then
1185 # Base64 uses the nettle 3.0 API
1186 # which matters on 64-bit systems
1187 AC_CHECK_HEADERS(nettle/base64.h)
1188 AC_MSG_CHECKING([for Nettle 3.0 API compatibility])
1189 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1190# include <cstddef>
1191# include <cstdint>
1192# include <nettle/base64.h>
1193 ]],[[
1194 uint8_t inData[10]; inData[0] = '\0';
1195 size_t srcLen = 0;
1196 struct base64_decode_ctx ctx;
1197 base64_decode_init(&ctx);
1198 uint8_t outData[10];
1199 size_t dstLen = 0;
1200 if (!base64_decode_update(&ctx, &dstLen, outData, srcLen, inData) ||
1201 !base64_decode_final(&ctx)) {
1202 return 1;
1203 }
1204 ]])],[AC_MSG_RESULT(yes)
1205 AC_DEFINE(HAVE_NETTLE30_BASE64,1,[set to 1 if Nettle 3.0 API will link])
1206 ],[AC_MSG_RESULT(no)])
1207 fi
a9dfcab8 1208fi
09cd7204
AJ
1209AC_MSG_NOTICE([Using Nettle cryptographic library: ${with_nettle:=yes}])
1210AC_SUBST(NETTLELIB)
a9dfcab8 1211
e59a64d7
AJ
1212dnl Check for libcrypt
1213CRYPTLIB=
1214dnl Some of our helpers use crypt(3) which may be in libc, or in
1215dnl libcrypt (eg FreeBSD)
1216AC_CHECK_LIB(crypt, crypt, [CRYPTLIB="-lcrypt"])
1217dnl Solaris10 provides MD5 natively through libmd5
1218AC_CHECK_LIB(md5, MD5Init, [CRYPTLIB="$CRYPTLIB -lmd5"])
1219AC_SUBST(CRYPTLIB)
1220
b4f805f6
AJ
1221SSLLIB=""
1222
1223dnl User may want to disable GnuTLS
1224AC_ARG_WITH(gnutls,
1225 AS_HELP_STRING([--without-gnutls],
1226 [Do not use GnuTLS for SSL. Default: auto-detect]), [
1227case "$with_gnutls" in
1228 yes|no)
1229 : # Nothing special to do here
1230 ;;
1231 *)
1232 if test ! -d "$withval" ; then
1233 AC_MSG_ERROR([--with-gnutls path does not point to a directory])
1234 fi
1235 LIBGNUTLS_PATH="-L$with_gnutls/lib"
1236 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1237 esac
1238])
1239AH_TEMPLATE(USE_GNUTLS,[GnuTLS support is available])
1240if test "x$with_gnutls" != "xno"; then
7c760558 1241 SQUID_STATE_SAVE(squid_gnutls_state)
b4f805f6
AJ
1242
1243 # User may have provided a custom location for GnuTLS. Otherwise...
b4f805f6
AJ
1244 LIBS="$LIBS $LIBGNUTLS_PATH"
1245
1246 # auto-detect using pkg-config
7c760558
FC
1247 PKG_CHECK_MODULES([LIBGNUTLS],[gnutls >= 3.1.5],[
1248 CPPFLAGS="$CPPFLAGS $LIBGNUTLS_CFLAGS"
1249 ],[
b4f805f6 1250 ## find the package without pkg-config
c113986e
AJ
1251 ## check that the library is actually new enough.
1252 ## by testing for a 3.1.5+ function which we use
1253 AC_CHECK_LIB(gnutls,gnutls_certificate_verify_peers3,[LIBGNUTLS_LIBS="-lgnutls"])
b4f805f6 1254 ])
7c760558 1255 AC_CHECK_HEADERS(gnutls/gnutls.h gnutls/x509.h)
b4f805f6
AJ
1256
1257 SQUID_STATE_ROLLBACK(squid_gnutls_state) #de-pollute LIBS
1258
1259 if test "x$with_gnutls" = "xyes" -a "x$LIBGNUTLS_LIBS" = "x"; then
1260 AC_MSG_ERROR([Required GnuTLS library not found])
1261 fi
1262 if test "x$LIBGNUTLS_LIBS" != "x" ; then
1263 CXXFLAGS="$LIBGNUTLS_CFLAGS $CXXFLAGS"
1264 SSLLIB="$LIBGNUTLS_PATH $LIBGNUTLS_LIBS $SSLLIB"
1265 AC_DEFINE(USE_GNUTLS,1,[GnuTLS support is available])
1266 else
1267 with_gnutls=no
1268 fi
1269fi
1270AC_MSG_NOTICE([GnuTLS library support: ${with_gnutls:=auto} ${LIBGNUTLS_PATH} ${LIBGNUTLS_LIBS}])
1271
3d4022fa 1272dnl User may specify OpenSSL is needed from a non-standard location
1f7c9178 1273AC_ARG_WITH(openssl,
f88ca0d1
FC
1274 AS_HELP_STRING([--with-openssl=PATH],
1275 [Compile with the OpenSSL libraries. The path to
86f53af2
FC
1276 the OpenSSL development libraries and headers
1277 installation can be specified if outside of the
f88ca0d1
FC
1278 system standard directories]), [
1279case "$with_openssl" in
a3b28798
HN
1280 yes|no)
1281 : # Nothing special to do here
1f7c9178 1282 ;;
1283 *)
fcabe077 1284 if test ! -d "$withval" ; then
f88ca0d1
FC
1285 AC_MSG_ERROR([--with-openssl path does not point to a directory])
1286 fi
84c3fc14 1287 LIBOPENSSL_PATH="-L$with_openssl/lib"
bcce53ce 1288 CPPFLAGS="-I$with_openssl/include $CPPFLAGS"
a3b28798 1289 with_openssl=yes
1f7c9178 1290 esac
1291])
cb4f4424 1292AH_TEMPLATE(USE_OPENSSL,[OpenSSL support is available])
c41db002
AJ
1293## OpenSSL is default disable due to licensing issues on some OS
1294if test "x$with_openssl" = "xyes"; then
1295 AC_CHECK_HEADERS( \
8693472e 1296 openssl/bio.h \
eacc1666 1297 openssl/crypto.h \
c41db002
AJ
1298 openssl/err.h \
1299 openssl/md5.h \
1300 openssl/opensslv.h \
1301 openssl/ssl.h \
1302 openssl/x509v3.h \
1303 openssl/engine.h \
1304 openssl/txt_db.h \
1305 )
1306
e0b98074 1307 # User may have provided a custom location for OpenSSL. Otherwise...
84c3fc14
AJ
1308 SQUID_STATE_SAVE(squid_openssl_state)
1309 LIBS="$LIBS $LIBOPENSSL_PATH"
1310
1311 # auto-detect using pkg-config
1312 PKG_CHECK_MODULES([LIBOPENSSL],[openssl],,[
1313 ## For some OS pkg-config is broken or unavailable.
1314 ## Detect libraries the hard way.
1315
1316 # Windows MinGW has some special libraries ...
1317 if test "x$squid_host_os" = "xmingw" ; then
1318 LIBOPENSSL_LIBS='-lssleay32 -leay32 -lgdi32 $LIBOPENSSL_LIBS'
1319 AC_MSG_NOTICE([Windows OpenSSL library support: yes -lssleay32 -leay32 -lgdi32])
1320 fi
e0b98074 1321
84c3fc14
AJ
1322 AC_CHECK_LIB(crypto,[CRYPTO_new_ex_data],[LIBOPENSSL_LIBS="-lcrypto $LIBOPENSSL_LIBS"],[
1323 AC_MSG_ERROR([library 'crypto' is required for OpenSSL])
1324 ])
1325 AC_CHECK_LIB(ssl,[SSL_library_init],[LIBOPENSSL_LIBS="-lssl $LIBOPENSSL_LIBS"],[
1326 AC_MSG_ERROR([library 'ssl' is required for OpenSSL])
e0b98074 1327 ])
84c3fc14 1328 ])
e0b98074 1329
84c3fc14
AJ
1330 # This is a workaround for RedHat 9 brain damage..
1331 if test -d /usr/kerberos/include -a -f /usr/include/openssl/kssl.h; then
1332 AC_MSG_NOTICE([OpenSSL depends on Kerberos])
1333 LIBOPENSSL_LIBS="-L/usr/kerberos/lib $LIBOPENSSL_LIBS"
1334 CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
f11555e0 1335 fi
84c3fc14 1336 SQUID_STATE_ROLLBACK(squid_openssl_state) #de-pollute LIBS
1f7c9178 1337
e0b98074 1338 if test "x$LIBOPENSSL_LIBS" != "x"; then
c41db002 1339 CXXFLAGS="$LIBOPENSSL_CFLAGS $CXXFLAGS"
84c3fc14 1340 SSLLIB="$LIBOPENSSL_PATH $LIBOPENSSL_LIBS $SSLLIB"
cb4f4424 1341 AC_DEFINE(USE_OPENSSL,1,[OpenSSL support is available])
c41db002
AJ
1342
1343 # check for other specific broken implementations
1344 SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS
1345 SQUID_CHECK_OPENSSL_CONST_SSL_METHOD
1346 SQUID_CHECK_OPENSSL_TXTDB
a95989ed 1347 SQUID_CHECK_OPENSSL_HELLO_OVERWRITE_HACK
1f7c9178 1348 fi
e0b98074
AJ
1349 if test "x$SSLLIB" = "x"; then
1350 AC_MSG_ERROR([Required OpenSSL library not found])
f11555e0 1351 fi
1f7c9178 1352fi
84c3fc14 1353AC_MSG_NOTICE([OpenSSL library support: ${with_openssl:=no} ${LIBOPENSSL_PATH} ${LIBOPENSSL_LIBS}])
c41db002 1354AM_CONDITIONAL(ENABLE_SSL,[ test "x$with_openssl" = "xyes" ])
1f7c9178 1355AC_SUBST(SSLLIB)
1356
1a22a39e
MM
1357dnl User may specify MIT Kerberos is needed from a non-standard location
1358AC_ARG_WITH(mit-krb5,
a5c79bf3
AJ
1359 AS_HELP_STRING([--without-mit-krb5],
1360 [Compile without MIT Kerberos support.]), [
1a22a39e
MM
1361case "$with_mit_krb5" in
1362 yes|no)
1363 : # Nothing special to do here
1364 ;;
1365 *)
1366 if test ! -d "$withval" ; then
1367 AC_MSG_ERROR([--with-mit-krb5 path does not point to a directory])
1368 fi
1369 if test -d "$with_mit_krb5/lib64" ; then
1370 LIB_KRB5_PATH="-L$with_mit_krb5/lib64 -L$with_mit_krb5/lib"
1371 else
1372 LIB_KRB5_PATH="-L$with_mit_krb5/lib"
1373 fi
1374 CXXFLAGS="-I$with_mit_krb5/include $CXXFLAGS"
1375 krb5confpath="$with_mit_krb5/bin"
1376 with_mit_krb5=yes
1377esac
1378])
75f3c557 1379AH_TEMPLATE(USE_APPLE_KRB5,[Apple Kerberos support is available])
1a22a39e
MM
1380AH_TEMPLATE(USE_MIT_KRB5,[MIT Kerberos support is available])
1381AH_TEMPLATE(USE_SOLARIS_KRB5,[Solaris Kerberos support is available])
1382
75c5f82b
AJ
1383## find out if pkg-config or krb5-config will work
1384if test "x$with_mit_krb5" != "xno"; then
1a22a39e 1385 # find installed libs via pkg-config or krb5-config
75c5f82b 1386 squid_pc_krb5_name=
7c664dbc
AJ
1387 PKG_CHECK_EXISTS(mit-krb5-gssapi mit-krb5, [squid_pc_krb5_name="mit-krb5-gssapi mit-krb5"],[
1388 PKG_CHECK_EXISTS(gssapi-krb5 krb5, [squid_pc_krb5_name="gssapi-krb5 krb5"])
1389 ])
75c5f82b 1390 if test "x$squid_pc_krb5_name" = "x" -a "$cross_compiling" = "no"; then
77f4953d 1391 # Look for krb5-config (unless cross-compiling)
1a22a39e
MM
1392 AC_PATH_PROG(krb5_config,krb5-config,no)
1393 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1394 krb5confpath="`dirname $ac_cv_path_krb5_config`"
1395 ac_heimdal="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i heimdal`"
1396 ac_solaris="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i solaris`"
75f3c557 1397 ac_apple="`$ac_cv_path_krb5_config --vendor 2>/dev/null | grep -c -i apple`"
1a22a39e
MM
1398 if test $ac_solaris -gt 0 ; then
1399 with_solaris_krb5=yes
75c5f82b 1400 elif test $ac_apple -gt 0 ; then
75f3c557 1401 with_apple_krb5=yes
75c5f82b
AJ
1402 elif test $ac_heimdal -gt 0; then
1403 with_mit_krb5=no
1404 if test "x$with_mit_krb5" = "xyes"; then
1405 AC_MSG_ERROR([Could not find pkg-config or krb5-config for MIT Kerberos])
1406 fi
1a22a39e
MM
1407 fi
1408 else
75c5f82b
AJ
1409 if test "x$with_mit_krb5" = "xyes"; then
1410 AC_MSG_ERROR([Could not find krb5-config in path])
1411 else
1412 with_mit_krb5=no
1413 fi
1a22a39e
MM
1414 fi
1415 fi
1416fi
1417
ed3a42d0
AJ
1418# detect MIT Kerberos dependencies (except on Solaris)
1419if test "x$with_mit_krb5" != "xno" -a "x$with_solaris_krb5" != "xyes"; then
1a22a39e
MM
1420 SQUID_STATE_SAVE([squid_krb5_save])
1421 LIBS="$LIBS $LIB_KRB5_PATH"
1422
1423 # auto-detect using pkg-config
75c5f82b 1424 PKG_CHECK_MODULES([LIB_KRB5], $squid_pc_krb5_name,,[
77f4953d
AJ
1425 # look for krb5-config (unless cross-compiling)
1426 if test "$cross_compiling" = "no"; then
1427 if test "x$krb5confpath" = "x" ; then
1428 AC_PATH_PROG(krb5_config,krb5-config,no)
1429 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1430 ac_krb5_config="$ac_cv_path_krb5_config"
1431 fi
1432 else
1433 ac_krb5_config="$krb5confpath/krb5-config"
1a22a39e 1434 fi
1a22a39e
MM
1435 fi
1436 if test "x$ac_krb5_config" != "x" && test -x "$ac_krb5_config"; then
1437 # Get libs, etc
1438 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1439 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1440 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1441 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1442 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1443 else
1444 ## For some OS pkg-config is broken or unavailable.
1445 ## Detect libraries the hard way.
1446
b2bdde72 1447 SQUID_STATE_SAVE([squid_mit_save])
ff78f3c3 1448 missing_required=
1a22a39e
MM
1449 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1450 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
ff78f3c3
AJ
1451 AC_MSG_WARN([library 'com_err' is required for MIT Kerberos])
1452 missing_required=yes
1a22a39e 1453 ])
b2bdde72 1454 LIBS=$LIB_KRB5_LIBS
1a22a39e 1455 AC_CHECK_LIB(k5crypto, [main], [LIB_KRB5_LIBS="-lk5crypto $LIB_KRB5_LIBS"],[
ff78f3c3
AJ
1456 AC_MSG_WARN([library 'k5crypto' is required for MIT Kerberos])
1457 missing_required=yes
1a22a39e 1458 ])
b2bdde72 1459 LIBS=$LIB_KRB5_LIBS
1a22a39e 1460 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
ff78f3c3
AJ
1461 AC_MSG_WARN([library 'krb5' is required for MIT Kerberos])
1462 missing_required=yes
1a22a39e 1463 ])
b2bdde72 1464 LIBS=$LIB_KRB5_LIBS
1a22a39e 1465 AC_CHECK_LIB(gssapi_krb5, [main], [LIB_KRB5_LIBS="-lgssapi_krb5 $LIB_KRB5_LIBS"],[
ff78f3c3
AJ
1466 AC_MSG_WARN([library 'gssapi_krb5' is required for MIT Kerberos])
1467 missing_required=yes
1a22a39e 1468 ])
b2bdde72 1469 SQUID_STATE_ROLLBACK([squid_mit_save])
ff78f3c3
AJ
1470 if test "x$missing_required" = "xyes"; then
1471 LIB_KRB5_LIBS=""
1472 fi
1a22a39e 1473 fi
1a22a39e
MM
1474 ])
1475
1476 if test "x$LIB_KRB5_LIBS" != "x"; then
75f3c557
MM
1477 if test "x$with_apple_krb5" = "xyes" ; then
1478 AC_DEFINE(USE_APPLE_KRB5,1,[Apple Kerberos support is available])
1479 KRB5_FLAVOUR="Apple"
1480 else
1481 AC_DEFINE(USE_MIT_KRB5,1,[MIT Kerberos support is available])
1482 KRB5_FLAVOUR="MIT"
1483 fi
1a22a39e
MM
1484 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1485 KRB5INCS="$LIB_KRB5_CFLAGS"
1a22a39e
MM
1486
1487 # check for other specific broken implementations
1488 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1489 LIBS="$LIBS $KRB5LIBS"
1490
1491 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1492 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1493 AC_CHECK_HEADERS(gssapi/gssapi_generic.h)
1494 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1495 AC_CHECK_HEADERS(profile.h)
1496
1a22a39e 1497 SQUID_CHECK_KRB5_FUNCS
1a22a39e 1498 fi
75c5f82b 1499 if test "x$with_mit_krb5" = "xyes" -a "x$KRB5LIBS" = "x"; then
1a22a39e 1500 AC_MSG_ERROR([Required Kerberos library not found])
75c5f82b
AJ
1501 elif test "x$KRB5LIBS" = "x"; then
1502 with_mit_krb5=no
1503 with_apple_krb5=no
1a22a39e 1504 fi
1a22a39e
MM
1505 SQUID_STATE_ROLLBACK([squid_krb5_save])
1506fi
1507
75c5f82b
AJ
1508# detect Solaris Kerberos dependencies
1509if test "x$with_solaris_krb5" = "xyes" -a "x$KRB5LIBS" = "x"; then
1a22a39e
MM
1510 SQUID_STATE_SAVE([squid_krb5_save])
1511 LIBS="$LIBS $LIB_KRB5_PATH"
1512
1513 # no pkg-config for solaris native Kerberos
77f4953d
AJ
1514 # look for krb5-config (unless cross-compiling)
1515 if test "$cross_compiling" = "no"; then
1516 if test "x$krb5confpath" = "x" ; then
1517 AC_PATH_PROG(krb5_config,krb5-config,no)
1518 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1519 ac_krb5_config="$ac_cv_path_krb5_config"
1520 fi
1521 else
1522 ac_krb5_config="$krb5confpath/krb5-config"
1a22a39e 1523 fi
1a22a39e
MM
1524 fi
1525 if test "x$ac_krb5_config" != "x" && test -x "$ac_krb5_config"; then
1526 # Get libs, etc
1527 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1528 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1529 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
b2da83da
AJ
1530 # Solaris 10 Update 11 patches the krb5-config tool to produce stderr messages on stdout.
1531 SOLARIS_BROKEN_KRB5CONFIG_GSSAPI="`$ac_krb5_config --libs gssapi 2>/dev/null | grep "krb5-config"`"
1532 if test "x$SOLARIS_BROKEN_KRB5CONFIG_GSSAPI" = "x"; then
1533 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1534 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1535 fi
1a22a39e
MM
1536 else
1537 ## For some OS pkg-config is broken or unavailable.
1538 ## Detect libraries the hard way.
1539
1540 CXXFLAGS="-I/usr/include/kerberosv5 $CXXFLAGS"
1541
b2bdde72 1542 SQUID_STATE_SAVE([squid_solaris_save])
ff78f3c3 1543 missing_required=
1a22a39e
MM
1544 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1545 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
ff78f3c3
AJ
1546 AC_MSG_WARN([library 'krb5' is required for Solaris Kerberos])
1547 missing_required=yes
1a22a39e 1548 ])
b2bdde72 1549 LIBS=$LIB_KRB5_LIBS
1a22a39e 1550 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
ff78f3c3
AJ
1551 AC_MSG_WARN([library 'gss' is required for Solaris Kerberos])
1552 missing_required=yes
1a22a39e 1553 ])
b2bdde72 1554 SQUID_STATE_ROLLBACK([squid_solaris_save])
ff78f3c3
AJ
1555 if test "x$missing_required" = "xyes"; then
1556 LIB_KRB5_LIBS=""
1557 fi
1a22a39e
MM
1558 fi
1559
1560 if test "x$LIB_KRB5_LIBS" != "x"; then
1561 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1562 KRB5INCS="$LIB_KRB5_CFLAGS"
1563 AC_DEFINE(USE_SOLARIS_KRB5,1,[Solaris Kerberos support is available])
1564 KRB5_FLAVOUR="Solaris"
1565
1566 # check for other specific broken implementations
1567 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1568 LIBS="$LIBS $KRB5LIBS"
1569
1570 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1571 AC_CHECK_HEADERS(gssapi/gssapi.h gssapi/gssapi_ext.h)
1572 AC_CHECK_HEADERS(krb5.h com_err.h)
1573
1574 SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H
1575 if test "x$squid_cv_broken_krb5_h" = "xyes"; then
1576 AC_DEFINE(HAVE_BROKEN_SOLARIS_KRB5_H, 1, [Define to 1 if Solaris krb5.h is broken for C++])
1577 AC_MSG_WARN([You have a broken Solaris <krb5.h> system include.])
1578 AC_MSG_WARN([Please see http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6837512])
1579 AC_MSG_WARN([If you need Kerberos support you will have to patch])
1580 AC_MSG_WARN([your system. See contrib/solaris/solaris-krb5-include.patch])
1581 fi
1a22a39e 1582 SQUID_CHECK_KRB5_FUNCS
1a22a39e 1583 fi
75c5f82b
AJ
1584 if test "x$with_mit_krb5" = "xyes" -a "x$KRB5LIBS" = "x"; then
1585 # Error only if Solaris flavour was detected while looking for required MIT Kerberos
1a22a39e 1586 AC_MSG_ERROR([Required Kerberos library not found])
75c5f82b
AJ
1587 elif test "x$KRB5LIBS" = "x"; then
1588 with_solaris_krb5=no
1589 with_mit_krb5=no
1a22a39e 1590 fi
1a22a39e
MM
1591 SQUID_STATE_ROLLBACK([squid_krb5_save])
1592fi
1593
75c5f82b
AJ
1594dnl User may specify Heimdal Kerberos is needed from a non-standard location
1595AC_ARG_WITH(heimdal-krb5,
1596 AS_HELP_STRING([--without-heimdal-krb5],
1597 [Compile without Heimdal Kerberos support.]), [
1598case "$with_heimdal_krb5" in
1599 yes|no)
1600 : # Nothing special to do here
1601 ;;
1602 *)
1603 if test ! -d "$withval" ; then
1604 AC_MSG_ERROR([--with-heimdal-krb5 path does not point to a directory])
1605 fi
1606 if test -d "$with_heimdal_krb5/lib64" ; then
1607 LIB_KRB5_PATH="-L$with_heimdal_krb5/lib64 -L$with_heimdal_krb5/lib"
1608 else
1609 LIB_KRB5_PATH="-L$with_heimdal_krb5/lib"
1610 fi
1611 CXXFLAGS="-I$with_heimdal_krb5/include $CXXFLAGS"
1612 krb5confpath="$with_heimdal_krb5/bin"
1613 with_heimdal_krb5=yes
1614esac
1615])
1616AH_TEMPLATE(USE_HEIMDAL_KRB5,[Heimdal Kerberos support is available])
1617if test "x$with_heimdal_krb5" != "xno" -a "x$KRB5LIBS" = "x"; then
1618 # find installed libs via pkg-config or krb5-config
1619 PKG_CHECK_EXISTS(heimdal-krb5, [squid_pc_krb5_name="heimdal-krb5"])
1620 if test "x$squid_pc_krb5_name" = "x"; then
1621 PKG_CHECK_EXISTS(heimdal-gssapi, [squid_pc_krb5_name="heimdal-gssapi"])
1622 fi
297a2769 1623 if test "x$squid_pc_krb5_name" = "x" -a "$cross_compiling" = "no"; then
75c5f82b
AJ
1624 # Look for krb5-config (unless cross-compiling)
1625 AC_PATH_PROG(krb5_config,krb5-config,no)
1626 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1627 krb5confpath="`dirname $ac_cv_path_krb5_config`"
1628 ac_heimdal="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i heimdal`"
1629 if test "x$with_heimdal_krb5" = "xyes"; then
1630 AC_MSG_ERROR([Could not find pkg-config or krb5-config for Heimdal Kerberos])
1631 fi
1632 else
1633 if test "x$with_heimdal_krb5" = "xyes"; then
1634 AC_MSG_ERROR([Could not find krb5-config in path])
1635 else
1636 AC_MSG_WARN([Could not find krb5-config in path])
1637 with_heimdal_krb5=no
1638 fi
1639 fi
1640 fi
1641fi
1642if test "x$with_heimdal_krb5" != "xno" -a "x$KRB5LIBS" = "x"; then
1a22a39e
MM
1643 SQUID_STATE_SAVE([squid_krb5_save])
1644 LIBS="$LIBS $LIB_KRB5_PATH"
1645
1646 # auto-detect using pkg-config
75c5f82b 1647 PKG_CHECK_MODULES([LIB_KRB5], $squid_pc_krb5_name,,[
77f4953d
AJ
1648 # look for krb5-config (unless cross-compiling)
1649 if test "$cross_compiling" = "no"; then
1650 if test "x$krb5confpath" = "x" ; then
1651 AC_PATH_PROG(krb5_config,krb5-config,no)
1652 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1653 ac_krb5_config="$ac_cv_path_krb5_config"
1654 fi
1655 else
1656 ac_krb5_config="$krb5confpath/krb5-config"
1a22a39e 1657 fi
1a22a39e 1658 fi
75c5f82b 1659 if test "x$ac_krb5_config" != "x" -a -x "$ac_krb5_config"; then
1a22a39e
MM
1660 # Get libs, etc
1661 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1662 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1663 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1664 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1665 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1666 else
1667 ## For some OS pkg-config is broken or unavailable.
1668 ## Detect libraries the hard way.
b2bdde72 1669 SQUID_STATE_SAVE([squid_heimdal_save])
87a4a80f 1670 missing_required=
1a22a39e
MM
1671 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1672 AC_CHECK_LIB(resolv, [main], [LIB_KRB5_LIBS="-lresolv $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1673 AC_MSG_WARN([library 'resolv' is required for Heimdal Kerberos])
1674 missing_required=yes
1a22a39e 1675 ])
b2bdde72 1676 LIBS=$LIB_KRB5_LIBS
1a22a39e 1677 AC_CHECK_LIB(crypt, [main], [LIB_KRB5_LIBS="-lcrypt $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1678 AC_MSG_WARN([library 'crypt' is required for Heimdal Kerberos])
1679 missing_required=yes
1a22a39e 1680 ])
b2bdde72 1681 LIBS=$LIB_KRB5_LIBS
1a22a39e 1682 AC_CHECK_LIB(roken, [main], [LIB_KRB5_LIBS="-lroken $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1683 AC_MSG_WARN([library 'roken' is required for Heimdal Kerberos])
1684 missing_required=yes
1a22a39e 1685 ])
b2bdde72 1686 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1687 AC_CHECK_LIB(heimbase, [main], [LIB_KRB5_LIBS="-lheimbase $LIB_KRB5_LIBS"],[
1688 AC_MSG_WARN([library 'heimbase' may be required for Heimdal Kerberos])
1689 ])
b2bdde72 1690 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1691 AC_CHECK_LIB(wind, [main], [LIB_KRB5_LIBS="-lwind $LIB_KRB5_LIBS"],[
1692 AC_MSG_WARN([library 'wind' may be required for Heimdal Kerberos])
1693 ])
b2bdde72 1694 LIBS=$LIB_KRB5_LIBS
1a22a39e 1695 AC_CHECK_LIB(crypto, [main], [LIB_KRB5_LIBS="-lcrypto $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1696 AC_MSG_WARN([library 'crypto' is required for Heimdal Kerberos])
1697 missing_required=yes
1a22a39e 1698 ])
b2bdde72 1699 LIBS=$LIB_KRB5_LIBS
1a22a39e 1700 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1701 AC_MSG_WARN([library 'com_err' is required for Heimdal Kerberos])
1702 missing_required=yes
1a22a39e 1703 ])
b2bdde72 1704 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1705 AC_CHECK_LIB(hx509, [main], [LIB_KRB5_LIBS="-lhx509 $LIB_KRB5_LIBS"],[
1706 AC_MSG_WARN([library 'hx509' may be required for Heimdal Kerberos])
1707 ])
b2bdde72 1708 LIBS=$LIB_KRB5_LIBS
1a22a39e 1709 AC_CHECK_LIB(asn1, [main], [LIB_KRB5_LIBS="-lasn1 $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1710 AC_MSG_WARN([library 'asn1' is required for Heimdal Kerberos])
1711 missing_required=yes
1a22a39e 1712 ])
b2bdde72 1713 LIBS=$LIB_KRB5_LIBS
1a22a39e 1714 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1715 AC_MSG_WARN([library 'krb5' is required for Heimdal Kerberos])
1716 missing_required=yes
1a22a39e 1717 ])
b2bdde72 1718 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1719 AC_CHECK_LIB(heimntlm, [main], [LIB_KRB5_LIBS="-lheimntlm $LIB_KRB5_LIBS"],[
1720 AC_MSG_WARN([library 'heimntlm' may be required for Heimdal Kerberos])
1721 ])
b2bdde72 1722 LIBS=$LIB_KRB5_LIBS
1a22a39e 1723 AC_CHECK_LIB(gssapi, [main], [LIB_KRB5_LIBS="-lgssapi $LIB_KRB5_LIBS"],[
87a4a80f
AJ
1724 AC_MSG_WARN([library 'gssapi' is required for Heimdal Kerberos])
1725 missing_required=yes
1a22a39e 1726 ])
b2bdde72 1727 SQUID_STATE_ROLLBACK([squid_heimdal_save])
87a4a80f
AJ
1728 if test "x$missing_required" = "xyes"; then
1729 LIB_KRB5_LIBS=""
1730 fi
1a22a39e 1731 fi
1a22a39e
MM
1732 ])
1733 if test "x$LIB_KRB5_LIBS" != "x"; then
1734 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1735 KRB5INCS="$LIB_KRB5_CFLAGS"
1736 AC_DEFINE(USE_HEIMDAL_KRB5,1,[Heimdal Kerberos support is available])
1737 KRB5_FLAVOUR="Heimdal"
1738
1739 # check for other specific broken implementations
1740 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1741 LIBS="$LIBS $KRB5LIBS"
1742
1743 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1744 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1745 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1746
1747 SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H
1748 if test "x$squid_cv_broken_heimdal_krb5_h" = "xyes"; then
1749 AC_DEFINE(HAVE_BROKEN_HEIMDAL_KRB5_H, 1, [Define to 1 if Heimdal krb5.h is broken for C++])
1750 fi
1a22a39e 1751 SQUID_CHECK_KRB5_FUNCS
1a22a39e
MM
1752 fi
1753 if test "x$KRB5LIBS" = "x"; then
75c5f82b
AJ
1754 if test test "x$with_heimdal_krb5" = "xyes"; then
1755 AC_MSG_ERROR([Required Heimdal Kerberos library not found])
1756 else
1757 AC_MSG_WARN([Heimdal Kerberos library not found])
1758 fi
1a22a39e 1759 fi
1a22a39e
MM
1760 SQUID_STATE_ROLLBACK([squid_krb5_save])
1761fi
1762
75c5f82b
AJ
1763dnl User may specify GNU gss is needed from a non-standard location
1764AC_ARG_WITH(gnugss,
1765 AS_HELP_STRING([--without-gnugss],
1766 [Compile without the GNU gss libraries.]), [
1767case "$with_gnugss" in
1768 yes|no)
1769 : # Nothing special to do here
1770 ;;
1771 *)
1772 if test ! -d "$withval" ; then
1773 AC_MSG_ERROR([--with-gnugss path does not point to a directory])
1774 fi
1775 if test ! -d "$with_gnugss/lib64" ; then
1776 LIB_KRB5_PATH="-L$with_gnugss/lib64 -L$with_gnugss/lib"
1777 else
1778 LIB_KRB5_PATH="-L$with_gnugss/lib"
1779 fi
1780 CXXFLAGS="-I$with_gnugss/include $CXXFLAGS"
1781 krb5confpath=
1782 with_gnugss=yes
1783esac
1784])
1785AH_TEMPLATE(USE_GNUGSS,[GNU gss support is available])
1786if test "x$with_gnugss" != "xno" -a "x$KRB5LIBS" = "x"; then
1a22a39e
MM
1787 SQUID_STATE_SAVE([squid_krb5_save])
1788 LIBS="$LIBS $LIB_KRB5_PATH"
1789
1790 # auto-detect using pkg-config
1791 PKG_CHECK_MODULES([LIB_KRB5],[gss],,[
1792 ## For some OS pkg-config is broken or unavailable.
1793 ## Detect libraries the hard way.
1794
1795 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1796 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
75c5f82b 1797 AC_MSG_WARN([library 'com_err' is required for GNU Kerberos])
1a22a39e 1798 ])
1a22a39e
MM
1799 ])
1800
1801 if test "x$LIB_KRB5_LIBS" != "x"; then
1802 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1803 KRB5INCS="$LIB_KRB5_CFLAGS"
1804 AC_DEFINE(USE_GNUGSS,1,[GNU Kerberos support is available])
1805 KRB5_FLAVOUR="GNU GSS"
1806
1807 # check for other specific broken implementations
1808 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1809 LIBS="$LIBS $KRB5LIBS"
1810
1811 AC_MSG_NOTICE([Try to find Kerbeors headers in given path])
1812 AC_CHECK_HEADERS(gss.h)
1813
1814 SQUID_CHECK_WORKING_GSSAPI
1815 SQUID_DEFINE_BOOL(HAVE_GSSAPI,$squid_cv_working_gssapi,[GSSAPI support])
1816
1817 SQUID_CHECK_SPNEGO_SUPPORT
1818 SQUID_DEFINE_BOOL(HAVE_SPNEGO,$squid_cv_have_spnego,[SPNEGO support])
1819
1820 SQUID_CHECK_WORKING_KRB5
1821 SQUID_DEFINE_BOOL(HAVE_KRB5,$squid_cv_working_krb5,[KRB5 support])
1a22a39e
MM
1822 fi
1823 if test "x$KRB5LIBS" = "x"; then
75c5f82b
AJ
1824 if test test "x$with_gnugss" = "xyes"; then
1825 AC_MSG_ERROR([Required GNU GSS Kerberos library not found])
1826 else
1827 AC_MSG_WARN([GNU GSS Kerberos library not found])
1828 fi
1a22a39e 1829 fi
1a22a39e
MM
1830 SQUID_STATE_ROLLBACK([squid_krb5_save])
1831fi
75c5f82b
AJ
1832
1833if test "x$KRB5LIBS" != "x"; then
1a22a39e
MM
1834 with_krb5=yes
1835fi
1836AC_MSG_NOTICE([$KRB5_FLAVOUR Kerberos library support: ${with_krb5:=no} ${LIB_KRB5_PATH} ${LIB_KRB5_LIBS}])
1837AC_SUBST(KRB5INCS)
1838AC_SUBST(KRB5LIBS)
1839AM_CONDITIONAL(HAVE_SPNEGO, test x"$squid_cv_have_spnego" = x"yes" )
1840
1841dnl On MinGW OpenLDAP is not available, so LDAP helpers can be linked
1842dnl only with Windows LDAP libraries using -lwldap32
1843case "$squid_host_os" in
1844 mingw)
1845 LDAPLIB="-lwldap32"
1846 LBERLIB=""
1847 ;;
1848 *)
1849 AC_CHECK_LIB(ldap, ldap_init, [LDAPLIB="-lldap"])
1850 dnl LDAP helpers need to know if -llber is needed or not
1851 AC_CHECK_LIB(lber, ber_init, [LBERLIB="-llber"])
1852 dnl if no ldap lib found check for mozilla version
1853 if test "x$ac_cv_lib_ldap_ldap_init" != x""yes; then
1854 oLIBS=$LIBS
1855 LIBS="$LIBPTHREADS"
1856 AC_CHECK_LIB(ldap60, ldap_init, [LDAPLIB="-lldap60"])
1857 LIBS="$LDAPLIB $LIBPTHREADS"
1858 AC_CHECK_LIB(prldap60, prldap_init, [LDAPLIB="-lprldap60 $LDAPLIB"])
1859 LIBS="$LDAPLIB $LIBPTHREADS"
1860 AC_CHECK_LIB(ssldap60, ldapssl_init, [LDAPLIB="-lssldap60 $LDAPLIB"])
1861 LIBS=$oLIBS
1862 fi
1863
1864 AC_CHECK_HEADERS(ldap.h lber.h)
1865 AC_CHECK_HEADERS(mozldap/ldap.h)
1866
1867 dnl
1868 dnl Check for LDAP_OPT_DEBUG_LEVEL
1869 dnl
1870 AC_MSG_CHECKING([for LDAP_OPT_DEBUG_LEVEL])
1871 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1872# include <ldap.h>
1873 ]],[[
1874 int i=LDAP_OPT_DEBUG_LEVEL
1875 ]])],
1876 [ AC_MSG_RESULT(yes) ],
1877 [ AC_MSG_RESULT(no) ])
1878
1879 dnl
1880 dnl Check for working ldap
1881 dnl
1882 oLIBS=$LIBS
1883 LIBS="$LDAPLIB $LBERLIB $LIBPTHREADS"
1884 AC_MSG_CHECKING([for working ldap])
1885 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1886# define LDAP_DEPRECATED 1
1887# if HAVE_LDAP_H
1888# include <ldap.h>
1889# elif HAVE_MOZLDAP_LDAP_H
1890# include <mozldap/ldap.h>
1891# endif
1892 int
1893 main(void)
1894 {
1895 char host[]="";
1896 int port;
1897
1898 ldap_init((const char *)&host, port);
1899
1900 return 0;
1901 }
1902 ]])],
1903 [ AC_DEFINE(HAVE_LDAP, 1, [LDAP support])
1904 AC_MSG_RESULT(yes) ],
1905 [ AC_MSG_RESULT(no) ],
1906 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1907 LIBS=$oLIBS
1908
1909 dnl
1910 dnl Check for ldap vendor
1911 dnl
1912 AC_MSG_CHECKING([for OpenLDAP])
1913 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1914# if HAVE_LDAP_H
1915# include <ldap.h>
1916# endif
1917# include <string.h>
1918 int
1919 main(void)
1920 {
1921 return strcmp(LDAP_VENDOR_NAME,"OpenLDAP");
1922 }
1923 ]])],
1924 [ AC_DEFINE(HAVE_OPENLDAP, 1, [OpenLDAP support])
1925 AC_MSG_RESULT(yes) ],
1926 [ AC_MSG_RESULT(no) ],
1927 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1928
1929 AC_MSG_CHECKING([for Sun LDAP SDK])
1930 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1931# if HAVE_LDAP_H
1932# include <ldap.h>
1933# endif
1934# include <string.h>
1935 int
1936 main(void)
1937 {
1938 return strcmp(LDAP_VENDOR_NAME,"Sun Microsystems Inc.");
1939 }
1940 ]])],
1941 [ AC_DEFINE(HAVE_SUN_LDAP_SDK, 1, [Sun LDAP SDK support])
1942 AC_MSG_RESULT(yes) ],
1943 [ AC_MSG_RESULT(no) ],
1944 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1945
1946 AC_MSG_CHECKING([for Mozilla LDAP SDK])
1947 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1948# if HAVE_LDAP_H
1949# include <ldap.h>
1950# elif HAVE_MOZLDAP_LDAP_H
1951# include <mozldap/ldap.h>
1952# endif
1953# include <string.h>
1954 int
1955 main(void)
1956 {
1957 return strcmp(LDAP_VENDOR_NAME,"mozilla.org");
1958 }
1959 ]])],
1960 [ AC_DEFINE(HAVE_MOZILLA_LDAP_SDK, 1, [Mozilla LDAP SDK support])
1961 AC_MSG_RESULT(yes) ],
1962 [ AC_MSG_RESULT(no)],
1963 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1964
1965 dnl
1966 dnl Check for LDAP_REBINDPROC_CALLBACK
1967 dnl
1968 AC_MSG_CHECKING([for LDAP_REBINDPROC_CALLBACK])
1969 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1970# if HAVE_LDAP_H
1971# include <ldap.h>
1972# elif HAVE_MOZLDAP_LDAP_H
1973# include <mozldap/ldap.h>
1974# endif
1975 ]],[[
1976 LDAP_REBINDPROC_CALLBACK ldap_rebind;
1977 ]])],
1978 [ AC_DEFINE(HAVE_LDAP_REBINDPROC_CALLBACK,1,[Define to 1 if you have LDAP_REBINDPROC_CALLBACK])
1979 AC_MSG_RESULT(yes) ],
1980 [ AC_MSG_RESULT(no) ])
1981
1982 dnl
1983 dnl Check for LDAP_REBIND_PROC
1984 dnl
1985 AC_MSG_CHECKING([for LDAP_REBIND_PROC])
1986 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1987# if HAVE_LDAP_H
1988# include <ldap.h>
1989# elif HAVE_MOZLDAP_LDAP_H
1990# include <mozldap/ldap.h>
1991# endif
1992 ]],[[
1993 LDAP_REBIND_PROC ldap_rebind;
1994 ]])],
1995 [ AC_DEFINE(HAVE_LDAP_REBIND_PROC,1,[Define to 1 if you have LDAP_REBIND_PROC])
1996 AC_MSG_RESULT(yes) ],
1997 [ AC_MSG_RESULT(no) ])
1998
1999 dnl
2000 dnl Check for LDAP_REBIND_FUNCTION
2001 dnl
2002 AC_MSG_CHECKING([for LDAP_REBIND_FUNCTION])
2003 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2004# define LDAP_REFERRALS
2005# if HAVE_LDAP_H
2006# include <ldap.h>
2007# elif HAVE_MOZLDAP_LDAP_H
2008# include <mozldap/ldap.h>
2009# endif
2010 ]],[[
2011 LDAP_REBIND_FUNCTION ldap_rebind;
2012 ]])],
2013 [ AC_DEFINE(HAVE_LDAP_REBIND_FUNCTION,1,[Define to 1 if you have LDAP_REBIND_FUNCTION])
2014 AC_MSG_RESULT(yes) ],
2015 [ AC_MSG_RESULT(no) ])
2016
2017 dnl
2018 dnl Check for LDAP_SCOPE_DEFAULT
2019 dnl
2020 AC_MSG_CHECKING([for LDAP_SCOPE_DEFAULT])
2021 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2022# if HAVE_LDAP_H
2023# include <ldap.h>
2024# elif HAVE_MOZLDAP_LDAP_H
2025# include <mozldap/ldap.h>
2026# endif
2027 ]],[[
2028 int i=LDAP_SCOPE_DEFAULT;
2029 ]])],
2030 [ AC_DEFINE(HAVE_LDAP_SCOPE_DEFAULT,1,[Define to 1 if you have LDAP_SCOPE_DEFAULT])
2031 AC_MSG_RESULT(yes) ],
2032 [ AC_MSG_RESULT(no) ])
2033
2034 dnl
2035 dnl Check for ldap_url_desc.lud_scheme
2036 dnl
2037 AC_CHECK_MEMBER(struct ldap_url_desc.lud_scheme,
2038 AC_DEFINE(HAVE_LDAP_URL_LUD_SCHEME,1,
2039 [Define to 1 if you have LDAPURLDesc.lud_scheme]),,[#include <ldap.h>])
2040
2041 dnl
2042 dnl Check for ldapssl_client_init
2043 dnl
2044 AC_CHECK_LIB(ldap,ldapssl_client_init,
2045 AC_DEFINE(HAVE_LDAPSSL_CLIENT_INIT,1,[Define to 1 if you have ldapssl_client_init]),)
2046
2047 dnl
2048 dnl Check for ldap_url_desc2str
2049 dnl
2050 AC_CHECK_LIB(ldap,ldap_url_desc2str,
2051 AC_DEFINE(HAVE_LDAP_URL_DESC2STR,1,[Define to 1 if you have ldap_url_desc2str]),)
2052
2053 dnl
2054 dnl Check for ldap_url_parse
2055 dnl
2056 AC_CHECK_LIB(ldap,ldap_url_parse,
2057 AC_DEFINE(HAVE_LDAP_URL_PARSE,1,[Define to 1 if you have ldap_url_parse]),)
2058
2059 dnl
2060 dnl Check for ldap_start_tls_s
2061 dnl
2062 AC_CHECK_LIB(ldap,ldap_start_tls_s,
2063 AC_DEFINE(HAVE_LDAP_START_TLS_S,1,[Define to 1 if you have ldap_start_tls_s]),)
2064 ;;
2065esac
2066
2067AC_SUBST(LDAPLIB)
2068AC_SUBST(LBERLIB)
2069
02749868 2070AC_ARG_ENABLE(forw-via-db,
47d80734
FC
2071 AS_HELP_STRING([--enable-forw-via-db],[Enable Forw/Via database]), [
2072 SQUID_YESNO([$enableval],[unrecognized argument to --enable-forw-via-db: $enableval])
02749868 2073])
21f6708d 2074SQUID_DEFINE_BOOL(USE_FORW_VIA_DB,${enable_forw_via_db:=no},
9676633b
FC
2075 [Enable Forw/Via database])
2076AC_MSG_NOTICE([Forw/Via database enabled: $enable_forw_via_db])
02749868 2077
6cfa8966 2078AC_ARG_ENABLE(cache-digests,
47d80734 2079 AS_HELP_STRING([--enable-cache-digests],
9676633b
FC
2080 [Use Cache Digests. See http://wiki.squid-cache.org/SquidFaq/CacheDigests]),
2081[
2082 SQUID_YESNO($enableval,
2083 [unrecognized argument to --enable-cache-digests: $enableval])
484f2ebc 2084])
0067eb06 2085SQUID_DEFINE_BOOL(USE_CACHE_DIGESTS,${enable_cache_digests:=no},
47d80734 2086 [Use Cache Digests for locating objects in neighbor caches.])
9676633b 2087AC_MSG_NOTICE([Cache Digests enabled: $enable_cache_digests])
47d80734 2088
484f2ebc 2089
9676633b
FC
2090################################
2091# check for netio plugin stuff #
2092################################
2093dnl order of these options handling is relevant in case the user
2094dnl supplies more than one --enable option. Options handled later
2095dnl override those handled earlier for io loop method manual override
2096AC_ARG_ENABLE(select,
2097 AS_HELP_STRING([--disable-select],[Disable select(2) support.]),
2098[
2099SQUID_YESNO($enableval,[--disable-select takes no extra argument])
39145d19
AJ
2100if test "x$enableval" = "xyes"; then
2101 if test "x$squid_host_os" = "xmingw"; then
2102 squid_opt_io_loop_engine="select_win32"
2103 else
2104 squid_opt_io_loop_engine="select"
2105 fi
2106fi
9676633b
FC
2107])
2108AC_MSG_NOTICE([enabling select syscall for net I/O: ${enable_select:=auto}])
cd748f27 2109
9bb83c8b 2110AC_ARG_ENABLE(poll,
62979ab1 2111 AS_HELP_STRING([--disable-poll],[Disable poll(2) support.]),
1b3db6d9 2112[
9676633b 2113SQUID_YESNO($enableval,[--disable-poll takes no extra argument])
fcabe077 2114test "x$enableval" = "xyes" && squid_opt_io_loop_engine="poll"
9bb83c8b 2115])
9676633b 2116AC_MSG_NOTICE([enabling poll syscall for net I/O: ${enable_poll:=auto}])
9bb83c8b 2117
1b3db6d9 2118AC_ARG_ENABLE(kqueue,
26d50fd2
AJ
2119 AS_HELP_STRING([--disable-kqueue],
2120 [Disable kqueue(2) support.]), [
9676633b 2121SQUID_YESNO($enableval,[--enable-kqueue takes no extra argument])
1b3db6d9 2122])
26d50fd2
AJ
2123if test "x${enable_kqueue:=auto}" != "xno" ; then
2124 AC_CHECK_HEADERS([sys/event.h],[],[
2125 if test "x${enable_kqueue}" = "xyes" ; then
2126 AC_MSG_ERROR([kqueue support requires sys/event.h header file.])
2127 fi
2128 ])
2129 AC_CHECK_FUNCS(kqueue,[],[
2130 if test "x${enable_kqueue}" = "xyes" ; then
2131 AC_MSG_ERROR([kqueue support missing in libc library.])
2132 fi
2133 ])
2134 if test "x$ac_cv_func_kqueue" = "xyes" -a "x$ac_cv_header_sys_event_h" = "xyes" ; then
2135 squid_opt_io_loop_engine="kqueue"
2136 else
2137 enable_kqueue="no"
2138 fi
9676633b 2139fi
26d50fd2 2140AC_MSG_NOTICE([enabling kqueue for net I/O: ${enable_kqueue:=auto}])
1b3db6d9 2141
a46d2c0e 2142dnl Enable epoll()
a46d2c0e 2143AC_ARG_ENABLE(epoll,
62979ab1 2144 AS_HELP_STRING([--disable-epoll],[Disable Linux epoll(2) support.]),
a46d2c0e 2145[
9676633b 2146SQUID_YESNO($enableval,[--disable-epoll takes no extra argument])
fcabe077 2147test "x$enableval" = "xyes" && squid_opt_io_loop_engine="epoll"
a46d2c0e 2148])
9676633b 2149AC_MSG_NOTICE([enabling epoll syscall for net I/O: ${enable_epoll:=auto}])
2ca8b332 2150
9676633b
FC
2151# auto-detect and verify epoll header and library present and working
2152# logic mapping and loop method selection are performed later
fcabe077 2153if test "x$enable_epoll" != "xno" ; then
2ca8b332 2154
9676633b
FC
2155 # check if libs are needed to support epoll
2156 # note: this code block seems quite generic. Could it be extracted
2157 # into a squid specific configure function?
af1e01a8 2158 SQUID_STATE_SAVE(squid_epoll_state)
9676633b 2159 AC_SEARCH_LIBS(epoll_ctl,[epoll])
fcabe077 2160 if test "x$ac_cv_search_epoll_ctl" = "xno" ; then
9676633b 2161 enable_epoll=no #disable. Needed code not found
fcabe077 2162 elif test "x$ac_cv_search_epoll_ctl" = "xnone required" ; then
9676633b
FC
2163 EPOLL_LIBS=""
2164 else
2165 EPOLL_LIBS=$ac_cv_search_epoll_ctl
2166 fi
2167 AC_SUBST(EPOLL_LIBS)
2168 SQUID_STATE_ROLLBACK(squid_epoll_state) #de-pollute LIBS
a46d2c0e 2169
9676633b 2170 # epoll requires sys/epoll.h
98d13964 2171 AC_CHECK_HEADERS([sys/epoll.h])
ad32c661
AJ
2172
2173 dnl Verify that epoll really works
dcac6885 2174 if test "x$ac_cv_search_epoll_ctl" != 'xno' ; then
af1e01a8 2175 SQUID_CHECK_EPOLL
ad32c661 2176 fi
2ca8b332 2177
fcabe077 2178 if test "x$enable_epoll" = "xyes" -a "x$squid_cv_epoll_works" = "xno" ; then
2ca8b332
AJ
2179 AC_MSG_ERROR([Epoll does not work. Force-enabling it is not going to help.])
2180 fi
ad32c661 2181fi
a46d2c0e 2182
a1ad2f9b
AJ
2183dnl Enable /dev/poll
2184AC_ARG_ENABLE(devpoll,
2185 AS_HELP_STRING([--disable-devpoll],[Disable Solaris /dev/poll support.]),
2186[
2187SQUID_YESNO($enableval,[--disable-devpoll takes no extra argument])
2188test "x$enableval" = "xyes" && squid_opt_io_loop_engine="devpoll"
2189])
2190AC_MSG_NOTICE([enabling /dev/poll for net I/O: ${enable_devpoll:=auto}])
2191
2192## auto-detect and verify devpoll header and library present and working
2193if test "x$enable_devpoll" != "xno"; then
2194
2195 # /dev/poll requires ioctl() and write()
2196 AC_CHECK_FUNCS(ioctl)
2197 AC_CHECK_FUNCS(write)
2198
2199 # /dev/poll requires sys/devpoll.h
2200 AC_CHECK_HEADERS([sys/devpoll.h],,[
2201 if test "x$enable_devpoll" = "xyes"; then
2202 AC_MSG_ERROR([--enable-devpoll specified but /dev/poll headers not found])
2203 fi
2204 enable_devpoll=no])
2205
2206 # Verify that /dev/poll really works
2207 if test "x$enable_devpoll" != 'xno' ; then
2208 SQUID_CHECK_DEVPOLL
2209 fi
2210
2211 if test "x$enable_devpoll" = "xyes" -a "x$squid_cv_devpoll_works" = "xno" ; then
2212 AC_MSG_ERROR([/dev/poll does not work. Force-enabling it is not going to help.])
2213 fi
2214fi
2215
9676633b 2216
72fd085a 2217AC_ARG_ENABLE(http-violations,
af1e01a8
FC
2218 AS_HELP_STRING([--disable-http-violations],
2219 [This allows you to remove code which is known to
47d80734 2220 violate the HTTP protocol specification.]), [
9676633b
FC
2221 SQUID_YESNO([$enableval],
2222 [unrecognized argument to --disable-http-violations: $enableval])
72fd085a 2223])
626096be 2224SQUID_DEFINE_BOOL(USE_HTTP_VIOLATIONS, ${enable_http_violations:=yes},
47d80734 2225 [Define to enable code which volates the HTTP standard specification])
9676633b 2226AC_MSG_NOTICE([HTTP violations support enabled: $enable_http_violations])
72fd085a 2227
47d80734 2228# IPFW Transparent Proxy
68075fad 2229AC_ARG_ENABLE(ipfw-transparent,
1d26e252
FC
2230 AS_HELP_STRING([--enable-ipfw-transparent],
2231 [Enable Transparent Proxy support for systems
47d80734 2232 using FreeBSD IPFW-style firewalling.]), [
1d26e252
FC
2233 SQUID_YESNO([$enableval],
2234 [unrecognized argument to --enable-ipfw-transparent: $enableval])
68075fad 2235])
0067eb06 2236SQUID_DEFINE_BOOL(IPFW_TRANSPARENT,${enable_ipfw_transparent:=no},
2277004e 2237 [Enable support for Transparent Proxy on systems using FreeBSD IPFW-style firewalling.])
1d26e252 2238AC_MSG_NOTICE([FreeBSD IPFW-based transparent proxying enabled: $enable_ipfw_transparent])
68075fad 2239
47d80734 2240# IP-Filter Transparent Proxy
5cafc1d6 2241AC_ARG_ENABLE(ipf-transparent,
2277004e 2242 AS_HELP_STRING([--enable-ipf-transparent],
1d26e252
FC
2243 [Enable Transparent Proxy support using IPFilter-style firewalling]), [
2244 SQUID_YESNO([$enableval],
2245 [unrecognized argument to --enable-ipf-transparent: $enableval])
5cafc1d6 2246])
be0c7ff0 2247#will be AC_DEFINEd later, after checking for appropriate infrastructure
4bd144d2
FC
2248#IPF currently broken. Default-disabled for now.
2249AC_MSG_NOTICE([IPF-based transparent proxying requested: ${enable_ipf_transparent:=no}])
5cafc1d6 2250
2b0dd4ac 2251dnl Enable PF Transparent Proxy
2252AC_ARG_ENABLE(pf-transparent,
2277004e 2253 AS_HELP_STRING([--enable-pf-transparent],
47d80734 2254 [Enable Transparent Proxy support for systems using PF network address redirection.]), [
1d26e252
FC
2255 SQUID_YESNO([$enableval],
2256 [unrecognized argument to --enable-pf-transparent: $enableval])
2b0dd4ac 2257])
be0c7ff0 2258#will be AC_DEFINEd later, after checking for appropriate infrastructure
b2192042
AJ
2259AC_MSG_NOTICE([PF-based transparent proxying requested: ${enable_pf_transparent:=no}])
2260
2261dnl Enable /dev/pf support for older PF Transparent Proxy systems (OpenBSD 4.x and older)
2262AC_ARG_WITH(nat-devpf,
2263 AS_HELP_STRING([--with-nat-devpf],
2264 [Enable /dev/pf support for NAT on older OpenBSD and FreeBSD kernels.]), [
2265 SQUID_YESNO([$enableval],
2266 [unrecognized argument to --with-nat-devpf: $enableval])
2267])
2268#will be AC_DEFINEd later, after checking for appropriate infrastructure
2269AC_MSG_NOTICE([NAT lookups via /dev/pf: ${with_nat_devpf:=no}])
2b0dd4ac 2270
4bd144d2 2271# Linux Netfilter Transparent Proxy
d852fbad 2272AC_ARG_ENABLE(linux-netfilter,
20ad76ab 2273 AS_HELP_STRING([--enable-linux-netfilter],
96f08e2d 2274 [Enable Transparent Proxy support for Linux (Netfilter)]), [
4bd144d2
FC
2275 SQUID_YESNO([$enableval],
2276 [unrecognized argument to --enable-linux-netfilter: $enableval])
d852fbad 2277])
4bd144d2 2278AC_MSG_NOTICE([Linux Netfilter support requested: ${enable_linux_netfilter:=auto}])
be0c7ff0 2279#will be AC_DEFINEd later, after checking for appropriate infrastructure
d852fbad 2280
425de4c8
AJ
2281
2282dnl Look for libnetfilter_conntrack options (needed for QOS netfilter marking)
11e8cfe3 2283dnl squid_opt_netfilterconntrack is set only when option is explicity specified
425de4c8
AJ
2284AC_ARG_WITH(netfilter-conntrack,
2285 AS_HELP_STRING([--without-netfilter-conntrack],
2286 [Do not use Netfilter conntrack libraries for packet marking.
2287 A path to alternative library location may be specified by
2288 using --with-netfilter-conntrack=PATH. Default: auto-detect.]), [
f4f6c2e0
AJ
2289case "$with_netfilter_conntrack" in
2290 yes|no)
11e8cfe3 2291 squid_opt_netfilterconntrack=$with_netfilter_conntrack
f4f6c2e0
AJ
2292 ;;
2293 *)
2294 if test ! -d "$withval" ; then
2295 AC_MSG_ERROR([--without-netfilter-conntrack path does not point to a directory])
2296 fi
2297 squid_opt_netfilterconntrackpath=$withval
2298 LDFLAGS="-L$squid_opt_netfilterconntrackpath/lib $LDFLAGS"
2299 CPPFLAGS="-I$squid_opt_netfilterconntrackpath/include $CPPFLAGS"
425de4c8 2300 with_netfilter_conntrack=yes
11e8cfe3 2301 squid_opt_netfilterconntrack=yes
f4f6c2e0 2302 esac
425de4c8 2303])
f4f6c2e0
AJ
2304AC_MSG_NOTICE([Linux Netfilter Conntrack support requested: ${with_netfilter_conntrack:=auto}])
2305if test "x$with_netfilter_conntrack" != "xno"; then
2306 AC_SEARCH_LIBS([nfct_query], [netfilter_conntrack],,[
2307 if test x"$with_netfilter_conntrack" = "xyes"; then
2308 AC_MSG_ERROR([--with-netfilter-conntrack specified but libnetfilter-conntrack library not found])
425de4c8 2309 fi
f4f6c2e0 2310 with_netfilter_conntrack=no])
425de4c8 2311 AC_CHECK_HEADERS([libnetfilter_conntrack/libnetfilter_conntrack.h \
f4f6c2e0
AJ
2312 libnetfilter_conntrack/libnetfilter_conntrack_tcp.h],,[
2313 if test x"$with_netfilter_conntrack" = "xyes"; then
2314 AC_MSG_ERROR([--with-netfilter-conntrack specified but libnetfilter-conntrack headers not found])
2315 fi
2316 with_netfilter_conntrack=no])
88a2a8c6
AJ
2317 # If nothing is broken; enable the libraries usage.
2318 if test "x$with_netfilter_conntrack" != "xno"; then
2319 with_netfilter_conntrack=yes
2320 fi
425de4c8
AJ
2321fi
2322
2323
bb7b5fd0 2324dnl Enable Large file support
2df6213e 2325buildmodel=""
2277004e 2326squid_opt_enable_large_files=no
2df6213e 2327
2328AC_ARG_WITH(large-files,
507ca601
FC
2329 AS_HELP_STRING([--with-large-files],[Enable support for large files (logs etc).]), [
2330 if test "x$withval" = "xyes"; then
2331 squid_opt_enable_large_files=yes
bb7b5fd0 2332 fi
2333])
2334
2df6213e 2335dnl UNIX Build environment
be0c7ff0 2336dnl AS_HELP_STRING is not suited here because it cannot to specify newlines
2df6213e 2337AC_ARG_WITH(build-environment,
507ca601
FC
2338 AS_HELP_STRING([--with-build-environment=model],
2339 [The build environment to use. Normally one of
2340 POSIX_V6_ILP32_OFF32 (32 bits),
2341 POSIX_V6_ILP32_OFFBIG (32 bits with large file support),
2342 POSIX_V6_LP64_OFF64 (64 bits),
2343 POSIX_V6_LPBIG_OFFBIG (large pointers and files),
2344 XBS5_ILP32_OFF32 i(legacy, 32 bits),
2345 XBS5_ILP32_OFFBIG (legacy, 32 bits with large file support),
2346 XBS5_LP64_OFF64 (legacy, 64 bits),
2347 XBS5_LPBIG_OFFBIG (legacy, large pointers and files)
2348 or default (The default for your OS)]), [
2349case "$withval" in
2df6213e 2350 yes|no)
507ca601
FC
2351 AC_MSG_FAILURE([--with-build-environment expects a build environment string as used by getconf])
2352 ;;
2df6213e 2353 *)
507ca601
FC
2354 buildmodel="$withval"
2355 ;;
2356esac
2df6213e 2357])
2358
228332d3
FC
2359#hack. Let's early-detect sizeof(long)
2360AC_CHECK_SIZEOF(long)
2361
fcabe077 2362if test "x$squid_opt_enable_large_files" = "xyes" -a "x$buildmodel" = "x"; then
2277004e
FC
2363 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
2364 if test "`getconf _$model 2>/dev/null || true`" = 1 || test "`getconf $model 2>/dev/null || true`" ; then
2365 buildmodel=$model
2366 break
2367 fi
2368 done
fcabe077 2369 if test "x$buildmodel" = "x"; then
2277004e
FC
2370 AC_MSG_WARN([No suitable build environment found for large files. Trying to use _FILE_OFFSET_BITS=64])
2371 fi
9b8002de 2372fi
0c0d381b 2373if test "x$buildmodel" = "xdefault" -o "x$buildmodel" = "x"; then
228332d3
FC
2374 # define _FILE_OFFSET_BITS if requested and needed
2375 if test "x$squid_opt_enable_large_files" = "xyes" -a $ac_cv_sizeof_long -le 4 ; then
507ca601
FC
2376 AC_MSG_NOTICE([Enabling -D_FILE_OFFSET_BITS=64])
2377 CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
2378 CXXFLAGS="-D_FILE_OFFSET_BITS=64 $CXXFLAGS"
2379 fi
2380else
2381 AC_MSG_NOTICE([Using $buildmodel build environment])
2382 if test "`getconf _$buildmodel 2>/dev/null || true`" = 1 || test "`getconf $buildmodel 2>/dev/null || true`" ; then
2383 : # All fine
2384 else
2385 AC_MSG_ERROR(Build environment $buildmodel not known to getconf.)
2386 fi
2387 CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
2388 CXXFLAGS="`getconf ${buildmodel}_CFLAGS` $CXXFLAGS"
2389 LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
2390 LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
941c31f3 2391 if test "x$squid_host_os" = "xsolaris" ; then
2277004e
FC
2392
2393# On Solaris getconf returns for CFLAGS -xarch=generic64, -Xa and -Usun options, and
2394# for LDFLAGS -xarch=generic64, but:
2395# "-Xa" is supported only by Sun cc, so we need to remove it when using gcc
2396# For gcc "-xarch=generic64" must be replaced with "-m64"
2397# The 'sun' define is needed by ipfilter includes, so we must remove "-Usun"
fcabe077 2398 if test "x$GCC" = "xyes"; then
2277004e
FC
2399 AC_MSG_NOTICE([Removing -Xa for gcc/g++ on $host])
2400 CFLAGS="`echo $CFLAGS | sed -e 's/-Xa//'`"
2401 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Xa//'`"
2402 AC_MSG_NOTICE([Replacing -xarch=generic64 with -m64 for gcc/g++ on $host])
2403 CFLAGS="`echo $CFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
2404 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
2405 LDFLAGS="`echo $LDFLAGS | sed -e 's/-xarch=generic64//'`"
2406 fi
2407 AC_MSG_NOTICE([Removing -Usun on $host])
2408 CFLAGS="`echo $CFLAGS | sed -e 's/-Usun//'`"
2409 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Usun//'`"
2410 fi
507ca601 2411fi
2df6213e 2412
5d620373 2413dnl Enable Leak Finding Functions
2414AC_ARG_ENABLE(leakfinder,
47d80734
FC
2415 AS_HELP_STRING([--enable-leakfinder],
2416 [Enable Leak Finding code. Enabling this alone does nothing;
2417 you also have to modify the source code to use the leak
2418 finding functions. Probably Useful for hackers only.]), [
89f640aa
FC
2419 SQUID_YESNO([$enableval],
2420 [unrecognized argument to --enable-leakfinder: $enableval])
5d620373 2421])
89f640aa
FC
2422AC_MSG_NOTICE([Leak Finder enabled: ${enable_leakfinder:=no}])
2423SQUID_DEFINE_BOOL(USE_LEAKFINDER,$enable_leakfinder,
47d80734 2424 [Enable code for assisting in finding memory leaks. Not for the faint of heart])
fcabe077 2425AM_CONDITIONAL(MAKE_LEAKFINDER, [test "x$enable_leakfinder" = "xyes"])
47d80734 2426
5d620373 2427
3d674977 2428AC_ARG_ENABLE(follow-x-forwarded-for,
6ec005b5
FC
2429 AS_HELP_STRING([--enable-follow-x-forwarded-for],
2430 [Enable support for following the X-Forwarded-For
19b4777c
FC
2431 HTTP header to try to find the IP address of the
2432 original or indirect client when a request has
8075a4da 2433 been forwarded through other proxies.]), [
6ec005b5
FC
2434 SQUID_YESNO([$enableval],
2435 [unrecognized argument to --enable-follow-x-forwarded-for: $enableval])
8075a4da 2436])
6ec005b5 2437AC_MSG_NOTICE([Support for X-Forwarded-For enabled: ${enable_follow_x_forwarded_for:=yes}])
3a5af257 2438SQUID_DEFINE_BOOL(FOLLOW_X_FORWARDED_FOR,$enable_follow_x_forwarded_for,
47d80734 2439 [Enable following X-Forwarded-For headers])
3d674977 2440
3898f57f 2441AC_ARG_ENABLE(ident-lookups,
8075a4da 2442 AS_HELP_STRING([--disable-ident-lookups],
47d80734
FC
2443 [Remove code that supports performing Ident (RFC 931) lookups.]), [
2444 SQUID_YESNO([$enableval],[unrecognized argument to --disable-ident-lookups: $enableval])
8075a4da 2445])
6c5dc16a
FC
2446AC_MSG_NOTICE([Support for Ident lookups enabled: ${enable_ident_lookups:=yes}])
2447SQUID_DEFINE_BOOL(USE_IDENT,$enable_ident_lookups,[Support for Ident (RFC 931) lookups])
3898f57f 2448
95d2589c
CT
2449AM_CONDITIONAL(USE_SSL_CRTD, false)
2450AC_ARG_ENABLE(ssl-crtd,
2451 AC_HELP_STRING([--enable-ssl-crtd],
2452 [Prevent Squid from directly generation of SSL private key and
2453 certificate request and instead enables the ssl_crtd processes.]), [
2454 SQUID_YESNO([$enableval],
2455 [unrecogized argument to --enable-ssl-crtd: $enableval])
2456])
2457
c41db002
AJ
2458if test "x$enable_ssl_crtd" = "xyes" -a "x$with_openssl" = "xno" ; then
2459 AC_MSG_ERROR([You need to enable ssl gatewaying support to use ssl_crtd feature. Try to use --with-openssl. ])
95d2589c
CT
2460fi
2461SQUID_DEFINE_BOOL(USE_SSL_CRTD, ${enable_ssl_crtd:=no},[Use ssl_crtd daemon])
2462AM_CONDITIONAL(USE_SSL_CRTD, [test "x$enable_ssl_crtd" = "xyes"])
2463
9d798391 2464dnl Select Default hosts file location
2465AC_ARG_ENABLE(default-hostsfile,
8ea232f5
FC
2466 AS_HELP_STRING([--enable-default-hostsfile=path],
2467 [Select default location for hosts file.
75eaac6c
FC
2468 See hosts_file directive in squid.conf for details]), [
2469if test "x$enableval" != "xnone" -a "x$enableval" != "xno" ; then
2470 if test \! -f "$enableval"; then
2471 AC_MSG_WARN([Unable to find file $enableval. I hope you know what you are doing.])
20ad76ab 2472 fi
75eaac6c
FC
2473 squid_opt_default_hosts=$enableval
2474else
2475 squid_opt_default_hosts="none"
2476fi
2477])
2478AC_MSG_NOTICE([Default hosts file set to: ${squid_opt_default_hosts:=/etc/hosts}])
2479DEFAULT_HOSTS=$squid_opt_default_hosts
2480AC_SUBST(DEFAULT_HOSTS)
9d798391 2481
47d80734 2482# Select auth schemes modules to build
94439e4e 2483AC_ARG_ENABLE(auth,
26ffc057
FC
2484 AS_HELP_STRING([--enable-auth],
2485 [Build global support for authentication. The list of schemes
2486 and helpers to be enabled is defined elsewhere]), [
2487SQUID_YESNO([$enableval],
2488 [unrecognized argument to --enable-auth: $enableval])
94439e4e 2489])
26ffc057 2490AC_MSG_NOTICE([Authentication support enabled: ${enable_auth:=yes}])
2f1431ea
AJ
2491SQUID_DEFINE_BOOL(USE_AUTH,$enable_auth,[Enable support for authentication])
2492AM_CONDITIONAL(ENABLE_AUTH, test "x$enable_auth" != "xno")
26ffc057
FC
2493AUTH_MODULES=""
2494
2495AC_ARG_ENABLE(auth-basic,
2496 AS_HELP_STRING([--enable-auth-basic="list of helpers"],
2497 [Enable the basic authentication scheme, and build the specified helpers.
2498 Not providing an explicit list of helpers will attempt build of
2499 all possible helpers. Default is to do so.
2500 To disable the basic authentication scheme, use --disable-auth-basic.
d9655720 2501 To enable but build no helpers, specify "none".
26ffc057
FC
2502 To see available helpers, see the helpers/basic_auth directory. ]),[
2503#nothing to do really
2504])
5a0c5a92 2505m4_include([helpers/basic_auth/modules.m4])
94439e4e 2506
12daeef6
AJ
2507AC_ARG_ENABLE(auth-digest,
2508 AS_HELP_STRING([--enable-auth-digest="list of helpers"],
2509 [Enable the Digest authentication scheme, and build the specified helpers.
26ffc057
FC
2510 Not providing an explicit list of helpers will attempt build of
2511 all possible helpers. Default is to do so.
12daeef6 2512 To disable the Digest authentication scheme, use --disable-auth-digest.
26ffc057 2513 To enable but build no helpers, specify "none".
12daeef6
AJ
2514 To see available helpers, see the helpers/digest_auth directory. ]),[
2515#nothing to do, really
380f0a87 2516])
12daeef6 2517m4_include([helpers/digest_auth/modules.m4])
94439e4e 2518
26ffc057
FC
2519AC_ARG_ENABLE(auth-negotiate,
2520 AS_HELP_STRING([--enable-auth-negotiate="list of helpers"],
2521 [Enable the Negotiate authentication scheme, and build the specified
2522 helpers.
2523 Not providing an explicit list of helpers will attempt build of
2524 all possible helpers. Default is to do so.
2525 To disable the Negotiate authentication scheme,
2526 use --disable-auth-negotiate.
2527 To enable but build no helpers, specify "none".
2528 To see available helpers, see the helpers/negotiate_auth directory. ]),[
2529#nothing to do, really
6e785d85 2530])
5eabe4b4 2531m4_include([helpers/negotiate_auth/modules.m4])
6e785d85 2532
12daeef6
AJ
2533AC_ARG_ENABLE(auth-ntlm,
2534 AS_HELP_STRING([--enable-auth-ntlm="list of helpers"],
2535 [Enable the NTLM authentication scheme, and build the specified helpers.
26ffc057
FC
2536 Not providing an explicit list of helpers will attempt build of
2537 all possible helpers. Default is to do so.
12daeef6 2538 To disable the NTLM authentication scheme, use --disable-auth-ntlm.
1a22a39e 2539 To enable but build no helpers, specify "none".
12daeef6 2540 To see available helpers, see the helpers/ntlm_auth directory. ]),[
1a22a39e 2541])
12daeef6 2542m4_include([helpers/ntlm_auth/modules.m4])
c8093f05 2543
1a22a39e
MM
2544dnl Authentication libraries to build
2545dnl This list will not be needed when each auth library has its own Makefile
2546dnl this is to be placed AFTER each auth module's handler
2547AUTH_LIBS_TO_BUILD=
2548for module in $AUTH_MODULES; do
2549 AUTH_LIBS_TO_BUILD="$AUTH_LIBS_TO_BUILD ${module}/lib${module}.la"
2550done
2551AC_SUBST(AUTH_MODULES)
2552AC_SUBST(AUTH_LIBS_TO_BUILD)
3d62cc61 2553
1a22a39e
MM
2554dnl Select logging daemon helpers to build
2555AC_ARG_ENABLE(log-daemon-helpers,
2556 AS_HELP_STRING([--enable-log-daemon-helpers="list of helpers"],
2557 [This option selects which logging daemon helpers to
2558 build and install as part of the normal build process
2559 For a list of available helpers see the helpers/log_daemon
2560 directory.]),[
2561#nothing to do, really
2562])
2563m4_include([helpers/log_daemon/modules.m4])
9ca29d23 2564
c6588c68 2565AC_ARG_ENABLE(external-acl-helpers,
f2d9a578 2566 AS_HELP_STRING([--enable-external-acl-helpers="list of helpers"],
8ea232f5 2567 [Enable external_acl helpers support and thelpers themselves.
d9655720 2568 Default is to build all buildable helpers and enable support.
8ea232f5 2569 To disable support, use --disable-external-acl-helpers.
d9655720 2570 To build no helpers, specify "none".
8ea232f5
FC
2571 To see available helpers, see the helpers/external_acl
2572 directory]), [
d9655720 2573#nothing to do, really
c6588c68 2574])
5eabe4b4 2575m4_include([helpers/external_acl/modules.m4])
d9655720 2576
fdbb3b19 2577dnl Select url_rewrite helpers to build
fdbb3b19 2578AC_ARG_ENABLE(url-rewrite-helpers,
081863f3 2579 AS_HELP_STRING([--enable-url-rewrite-helpers="list of helpers"],
fdbb3b19
AJ
2580 [This option selects which url_rewrite helpers to
2581 build and install as part of the normal build
8ea232f5
FC
2582 process. The default is to attempt the build of all possible
2583 helpers. Use --disable-url-rewrite-helpers to build none.
2584 For a list of available helpers see the
2585 helpers/url_rewrite directory.]),[
fdbb3b19 2586])
5eabe4b4 2587m4_include([helpers/url_rewrite/modules.m4])
fdbb3b19 2588
a27cfbe0 2589dnl Select security helpers to build
bbf79f12
AJ
2590AC_ARG_ENABLE(security-cert-validator-helpers,
2591 AS_HELP_STRING([--enable-security-cert-validator-helpers="list of helpers"],
2592 [This option selects which security certificate validator
2593 helpers to build and install as part of the normal build
a27cfbe0 2594 process. The default is to attempt the build of all possible
bbf79f12
AJ
2595 helpers. Use --disable-security-cert-validator-helpers to
2596 build none. For a list of available helpers see the
2597 src/security/cert_validators/ directory.]),[
a27cfbe0 2598])
bbf79f12 2599m4_include([src/security/cert_validators/modules.m4])
a27cfbe0 2600
0d5ee502
AM
2601dnl Select storeid_rewrite helpers to build
2602AC_ARG_ENABLE(storeid-rewrite-helpers,
2603 AS_HELP_STRING([--enable-storeid-rewrite-helpers="list of helpers"],
2604 [This option selects which Store-ID rewrite helpers to
2605 build and install as part of the normal build
2606 process. The default is to attempt the build of all possible
2607 helpers. Use --disable-storeid-rewrite-helpers to build none.
2608 For a list of available helpers see the
2609 helpers/storeid_rewrite directory.]),[
2610])
2611m4_include([helpers/storeid_rewrite/modules.m4])
2612
3a125142 2613AC_ARG_WITH(valgrind-debug,
0f705e3b
FC
2614 AS_HELP_STRING([--with-valgrind-debug],
2615 [Include debug instrumentation for use with valgrind]),
4e26f472
FC
2616[
2617 SQUID_YESNO([$withval],
2618 [unrecognized argument to --with-valgrind-debug: $withval])
fcabe077 2619 if test "x$withval" != "xno" ; then
4e26f472
FC
2620 AC_CHECK_HEADERS(valgrind/memcheck.h,[],[
2621 AC_MSG_ERROR([Valgrind support requested, needed headers not found.])
2622 ])
b4bab919 2623 fi
2624])
4e26f472
FC
2625SQUID_DEFINE_BOOL(WITH_VALGRIND,${with_valgrind_debug:=no},
2626 [Valgrind memory debugger support])
2627AC_MSG_NOTICE([Valgrind debug support enabled: $with_valgrind_debug])
b4bab919 2628
d96ceb8e 2629dnl Disable "memPools" code
8730e87a
HN
2630#AC_ARG_ENABLE(chunkedmempools,
2631# AS_HELP_STRING([--enable-chunkedmempools],
2632# [Enable experimental chunked memPools. Note that this option
507ca601 2633# simply sets the default behaviour. Specific classes can override this
8730e87a
HN
2634# at runtime, and only lib/MemPool.c needs to be altered
2635# to change the squid-wide default for all classes.]), [
2636#SQUID_YESNO([$enableval],
2637# [--enable-chunkedmempools option takes no arguments])
2638#])
4d7cefbb
HN
2639SQUID_DEFINE_BOOL(USE_CHUNKEDMEMPOOLS,${enable_chunkedmempools:=no},
2640 [Enable chunked Memory Pools support (experimental)])
8730e87a 2641#AC_MSG_NOTICE([Chunked MemPools enabled: $enable_chunkedmempools])
d96ceb8e 2642
0e657244 2643dnl Enable WIN32 Service compile mode
2644AC_ARG_ENABLE(win32-service,
054a4caa 2645 AS_HELP_STRING([--enable-win32-service],
0f705e3b 2646 [Compile Squid as a WIN32 Service.
b284c470
FC
2647 Works only on MS-Windows platforms]), [
2648SQUID_YESNO([$enableval],
2649 [unrecognized argument to --enable-win32-service: $enableval])
0e657244 2650])
b284c470
FC
2651SQUID_DEFINE_BOOL(USE_WIN32_SERVICE,${enable_win32_service:=no},
2652 [Enable code supporting MS Windows service mode])
2653AC_MSG_NOTICE([MS Windows service mode enabled: $enable_win32_service])
0e657244 2654
b1485ff8 2655
29f22442 2656# Disable "unlinkd" code
fe0810ac 2657AC_ARG_ENABLE(unlinkd,
0a081cb0 2658 AS_HELP_STRING([--disable-unlinkd],[Do not use unlinkd]), [
0f705e3b
FC
2659SQUID_YESNO([$enableval],
2660 [unrecognized argument to --disable-unlinkd: $enableval])
fe0810ac 2661])
0f658b5b 2662SQUID_DEFINE_BOOL(USE_UNLINKD,${enable_unlinkd:=yes},
0f705e3b 2663 [Enable useage of unlinkd])
fcabe077 2664AM_CONDITIONAL(ENABLE_UNLINKD,test "x$enable_unlinkd" = "xyes")
fbc04c0a 2665AC_MSG_NOTICE([unlinkd enabled: $enable_unlinkd])
fe0810ac 2666
0f705e3b 2667# Enable backtraces on fatal errors
ce3d30fb 2668AC_ARG_ENABLE(stacktraces,
0f705e3b
FC
2669 AS_HELP_STRING([--enable-stacktraces],
2670 [Enable automatic call backtrace on fatal errors]), [
2671SQUID_YESNO([$enableval],
2672 [unrecognized argument to --enable-stacktraces: $enableval])
ce3d30fb 2673])
0f658b5b 2674SQUID_DEFINE_BOOL(PRINT_STACK_TRACE,${enable_stacktraces:=no},
0f705e3b 2675 [Print stack traces on fatal errors])
78614cd4 2676AC_MSG_NOTICE([Automatically print stack trace on fatal errors: $enable_stacktraces])
0a081cb0 2677
ce3d30fb 2678
904676a2 2679# CPU Profiling options handling
88bfe092 2680AC_ARG_ENABLE(cpu-profiling,
0f705e3b
FC
2681 AS_HELP_STRING([--enable-cpu-profiling],
2682 [Enable instrumentation to try and understand how CPU power
2683 is spent by squid, by enabling specific probes in selected
2684 functions.
2685 New probes can only be added by modifying the source code.
2686 It is meant to help developers in optimizing performance
2687 of Squid internal functions.
87fa90fb 2688 If you are not developer you should not enable this,
0f705e3b
FC
2689 as it slows squid down somewhat.
2690 See lib/Profiler.c for more details.]), [
2691SQUID_YESNO([$enableval],
2692 [unrecognized argument to --enable-cpu-profiling: $enableval])
88bfe092 2693])
13e41ca5
AJ
2694# Default OFF. This is a debug feature. Only check and enable if forced ON.
2695if test "x$enable_cpu_profiling" = "xyes"; then
5e44eea8 2696 SQUID_CHECK_FUNCTIONAL_CPU_PROFILER
13e41ca5 2697 if test "x$squid_cv_cpu_profiler_works" = "xno"; then
5e44eea8 2698 AC_MSG_ERROR([CPU profiling will not be functional in this build.])
5e44eea8 2699 fi
5e44eea8 2700fi
0f658b5b 2701SQUID_DEFINE_BOOL(USE_XPROF_STATS,${enable_cpu_profiling:=no},
0f705e3b
FC
2702 [Define to enable CPU profiling within Squid])
2703AM_CONDITIONAL(ENABLE_XPROF_STATS,
fcabe077 2704 test "x$enable_cpu_profiling" = "xyes")
78614cd4 2705AC_MSG_NOTICE([CPU profiling enabled: $enable_cpu_profiling])
88bfe092 2706
904676a2 2707# Enable X-Accelerator-Vary for Vary support within an accelerator setup
2092c67d 2708AC_ARG_ENABLE(x-accelerator-vary,
904676a2
FC
2709 AS_HELP_STRING([--enable-x-accelerator-vary],
2710 [Enable support for the X-Accelerator-Vary
e702812e
FC
2711 HTTP header. Can be used to indicate
2712 variance within an accelerator setup.
2713 Typically used together with other code
904676a2
FC
2714 that adds custom HTTP headers to the requests.]), [
2715SQUID_YESNO([$enableval],
2716 [unrecognized argument to --enable-x-accelerator-vary: $enableval])
f66a9ef4 2717])
0f658b5b 2718SQUID_DEFINE_BOOL(X_ACCELERATOR_VARY,${enable_x_accelerator_vary:=no},
904676a2 2719 [Enable support for the X-Accelerator-Vary HTTP header])
78614cd4 2720AC_MSG_NOTICE([X-Accelerator-Vary support enabled: $enable_x_accelerator_vary])
f66a9ef4 2721
87fa90fb 2722
8b5e106b 2723if $CPPUNITCONFIG --help >/dev/null; then
78cae3b4
FC
2724 squid_cv_cppunit_version="`$CPPUNITCONFIG --version`"
2725 AC_MSG_NOTICE([using system installed cppunit version $squid_cv_cppunit_version])
2726 unset squid_cv_cppunit_version
8b5e106b 2727 SQUID_CPPUNIT_LIBS="`$CPPUNITCONFIG --libs`"
2728 SQUID_CPPUNIT_LA=''
2729 SQUID_CPPUNIT_INC="`$CPPUNITCONFIG --cflags`"
2730else
eed82608 2731 AC_MSG_WARN([cppunit does not appear to be installed. squid does not require this, but code testing with 'make check' will fail.])
63d03edb 2732 SQUID_CPPUNIT_LA=''
2733 SQUID_CPPUNIT_LIBS=''
2734 SQUID_CPPUNIT_INC=''
f5691f9c 2735fi
8b5e106b 2736
f5691f9c 2737AC_ARG_WITH(cppunit-basedir,
1b9fe876 2738 AS_HELP_STRING([--with-cppunit-basedir=PATH],
3680cc44
FC
2739 [Path where the cppunit headers are libraries can be found ]), [
2740if test -f "$withval/include/cppunit/TestCase.h"; then
2741 AC_MSG_NOTICE([Using cppunit includes from $withval])
2742 SQUID_CPPUNIT_INC="-I${withval}/include"
2743else
2744 AC_MSG_ERROR(Cannot find cppunit at $withval)
2745fi
2746if test -f "$withval/lib/libcppunit.la"; then
2747 AC_MSG_NOTICE([Using cppunit lib from $withval])
2748 SQUID_CPPUNIT_LA="${withval}/lib/libcppunit.la"
2749 SQUID_CPPUNIT_LIBS='$(SQUID_CPPUNIT_LA)'
2750else
2751 AC_MSG_ERROR(Cannot find cppunit at $withval)
2752fi
f5691f9c 2753])
7b81a8f7
AJ
2754SQUID_STATE_SAVE(squid_cppunit_state)
2755CXXFLAGS="$CXXFLAGS $SQUID_CPPUNIT_INC"
2756AC_CHECK_HEADERS(cppunit/extensions/HelperMacros.h)
2757SQUID_STATE_ROLLBACK(squid_cppunit_state)
8b5e106b 2758AC_SUBST(SQUID_CPPUNIT_LIBS)
f5691f9c 2759AC_SUBST(SQUID_CPPUNIT_LA)
2760AC_SUBST(SQUID_CPPUNIT_INC)
f5691f9c 2761
fd9aaa3e 2762# Force some compilers to use ANSI features
2763#
2764case "$host" in
3680cc44
FC
2765 *-hp-hpux*)
2766 if test "x$ac_cv_prog_CC" = "xcc" ; then
2767 AC_MSG_NOTICE([adding '-Ae' to cc args for $host])
2768 CC="cc -Ae";
2769 ac_cv_prog_CC="$CC"
2770 fi
2771 ;;
fd9aaa3e 2772esac
2773
dd56802c 2774
a2794549 2775dnl automake handles this AC_PATH_PROG(MAKEDEPEND, makedepend, $TRUE)
4e9d8e26 2776
6ad85e8a 2777case "$host" in
3680cc44
FC
2778 *hpux*)
2779 AC_MSG_NOTICE([Disabling ranlib for HP-UX...])
2780 RANLIB=":"
2781 ;;
6ad85e8a 2782esac
2783
090089c4 2784dnl Check for headers
2785AC_HEADER_DIRENT
2786AC_HEADER_STDC
db40ae20 2787
2788AC_CHECK_HEADERS( \
3680cc44
FC
2789 arpa/inet.h \
2790 arpa/nameser.h \
2791 assert.h \
2792 bstring.h \
3680cc44 2793 crypt.h \
3680cc44 2794 ctype.h \
ee4d4e85 2795 direct.h \
3680cc44
FC
2796 errno.h \
2797 execinfo.h \
2798 fcntl.h \
2799 fnmatch.h \
2800 getopt.h \
2801 glob.h \
2802 gnumalloc.h \
2803 grp.h \
3680cc44
FC
2804 ipl.h \
2805 lber.h \
2806 ldap.h \
2807 libc.h \
2808 limits.h \
2809 linux/posix_types.h \
2810 linux/types.h \
3680cc44 2811 malloc.h \
3680cc44
FC
2812 math.h \
2813 memory.h \
2814 mount.h \
2815 netdb.h \
2816 netinet/in.h \
2817 netinet/in_systm.h \
3680cc44 2818 netinet/tcp.h \
3680cc44
FC
2819 paths.h \
2820 poll.h \
2821 pwd.h \
3680cc44
FC
2822 regex.h \
2823 sched.h \
2ccf2eb2 2824 siginfo.h \
3680cc44 2825 signal.h \
3680cc44
FC
2826 stdarg.h \
2827 stddef.h \
3680cc44
FC
2828 stdio.h \
2829 stdlib.h \
3680cc44
FC
2830 string.h \
2831 strings.h \
2832 sys/bitypes.h \
3680cc44
FC
2833 sys/file.h \
2834 sys/ioctl.h \
d440d5a4 2835 sys/ipc.cc \
3680cc44
FC
2836 sys/param.h \
2837 sys/prctl.h \
2838 sys/md5.h \
c975f532 2839 sys/mman.h \
3680cc44
FC
2840 sys/msg.h \
2841 sys/resource.h \
2ccf2eb2 2842 sys/select.h \
d440d5a4 2843 sys/shm.h \
3680cc44
FC
2844 sys/socket.h \
2845 sys/stat.h \
3680cc44
FC
2846 syscall.h \
2847 sys/syscall.h \
2848 sys/time.h \
2849 sys/types.h \
2850 sys/uio.h \
2851 sys/un.h \
2852 sys/vfs.h \
2853 sys/wait.h \
2854 syslog.h \
2855 time.h \
2856 unistd.h \
2857 utime.h \
2858 varargs.h \
2859 byteswap.h \
2860 glib.h \
2861 stdint.h \
2862 inttypes.h \
3680cc44 2863 db.h \
cdb86165
FC
2864 db_185.h \
2865 wchar.h
db40ae20 2866)
3c586e38 2867
ee80a919
AR
2868AC_CHECK_HEADERS( \
2869 linux/netfilter_ipv4.h \
2870 linux/netfilter_ipv6/ip6_tables.h \
fc68f6b1 2871,,,
dcd1dc78 2872SQUID_DEFAULT_INCLUDES
2873#if HAVE_LIMITS_H
2874#include <limits.h>
2875#endif
a74968c2
AJ
2876/* Netfilter ip(6)tables v1.4.0 has broken headers */
2877#if HAVE_NETINET_IN_H
2878#include <netinet/in.h>
2879#endif
dcd1dc78 2880)
2881
cdb352bb 2882dnl *BSD dont include the dependencies for all their net/ and netinet/ files
c92b4732 2883dnl We must include a few basic type headers for them to work.
d1e5191e 2884AC_CHECK_HEADERS( \
0c0d381b
FC
2885 net/if.h \
2886 netinet/if_ether.h\
2887 netinet/icmp6.h \
2888 netinet/in.h \
2889 netinet/ip.h \
2890 netinet/ip6.h \
0c0d381b
FC
2891 netinet/ip_icmp.h \
2892 netinet/ipl.h \
0c0d381b
FC
2893 net/pf/pfvar.h \
2894 net/pfvar.h \
2895 sys/mount.h\
2896 resolv.h \
d1e5191e
AJ
2897,,,
2898SQUID_BSDNET_INCLUDES)
5a3237b0 2899
aee0606f 2900AC_C_CONST
d57288d2 2901AC_C_BIGENDIAN
aee0606f 2902
6a9f6389 2903AC_STRUCT_TM
2904AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
2905#if TM_IN_SYS_TIME
2906#if HAVE_SYS_TIME_H
2907#include <sys/time.h>
2908#endif
2909#elif HAVE_TIME_H
2910#include <time.h>
2911#endif
5c51415d 2912])
46c883ed 2913
08caf8c6 2914dnl Override rusage() detect on MinGW because is emulated in source code
78a60bca
AJ
2915case "$squid_host_os" in
2916 mingw)
08caf8c6 2917 AC_DEFINE(HAVE_STRUCT_RUSAGE)
2918 ac_cv_func_getrusage='yes'
eed82608 2919 AC_MSG_NOTICE([Using own rusage on Windows.])
08caf8c6 2920 ;;
2921 *)
2922 AC_CHECK_TYPE(struct rusage,AC_DEFINE(HAVE_STRUCT_RUSAGE,1,[The system provides struct rusage]),,[
8ff51bba 2923#if HAVE_SYS_TIME_H
2924#include <sys/time.h>
2925#endif
b54a6789 2926#if HAVE_SYS_RESOURCE_H
2927#include <sys/resource.h>
6a9f6389 2928#endif])
08caf8c6 2929 ;;
2930esac
b54a6789 2931
6a9f6389 2932AC_CHECK_MEMBERS([struct iphdr.ip_hl],,,[
2933#if HAVE_SYS_TYPES_H
2934#include <sys/types.h>
2935#endif
a025a745 2936#include <netinet/in.h>
2937#include <netinet/in_systm.h>
6ad85e8a 2938#include <netinet/ip.h>
b05490a8 2939#if defined (__linux__) || defined (__CYGWIN__)
6ad85e8a 2940#define ip_hl ihl
2941#endif
2942#ifndef __linux__
b05490a8 2943#ifndef __CYGWIN__
6ad85e8a 2944#define iphdr ip
b05490a8 2945#endif
6a9f6389 2946#endif])
a025a745 2947
090089c4 2948dnl Check for typedefs
77d6bd88 2949AC_CHECK_SIZEOF(void *)
090089c4 2950
41aa7d00
FC
2951# check for a bunch of types
2952AC_TYPE_INT8_T
2953AC_TYPE_UINT8_T
2954AC_TYPE_INT16_T
2955AC_TYPE_UINT16_T
2956AC_TYPE_INT32_T
2957AC_TYPE_UINT32_T
2958AC_TYPE_INT64_T
2959AC_TYPE_UINT64_T
2960AC_TYPE_PID_T
2961AC_TYPE_SIZE_T
2962AC_TYPE_SSIZE_T
2963AC_TYPE_OFF_T
2964AC_TYPE_UID_T
59a09b98 2965AC_CHECK_TYPE([bool])
41aa7d00
FC
2966#need the defines for PRId64
2967AC_CHECK_SIZEOF(int64_t)
2968AC_CHECK_SIZEOF(long)
fe1e5c91
AJ
2969#need the defines for PRIuSIZE
2970AC_CHECK_SIZEOF(size_t)
50f9c873
AR
2971#need the define for overflow checks
2972AC_CHECK_SIZEOF(off_t)
46e172d9 2973AC_CHECK_SIZEOF(size_t)
6a9f6389 2974
249b93df 2975dnl Some C++11 types we try to use
a203dec7
AJ
2976AX_CXX_TYPE_NULLPTR
2977AX_CXX_TYPE_UNIQUE_PTR
249b93df 2978AX_CXX_TYPE_UNIFORM_DISTRIBUTIONS
2fefc43c 2979SQUID_CXX_STD_UNDERLYING_TYPE
a203dec7 2980
588e71df 2981dnl On Solaris 9 x86, gcc may includes a "fixed" set of old system include files
2982dnl that is incompatible with the updated Solaris header files.
2983dnl For this reason, we must check if pad128_t and upad128_t are defined.
2984AC_CHECK_TYPE(pad128_t,
2985 AC_DEFINE(HAVE_PAD128_T,1,[pad128_t is defined in system headers]),
2986 ,SQUID_DEFAULT_INCLUDES)
2987
2988AC_CHECK_TYPE(upad128_t,
2989 AC_DEFINE(HAVE_UPAD128_T,1,[upad128_t is defined in system headers]),
2990 ,SQUID_DEFAULT_INCLUDES)
2991
6a9f6389 2992AC_CHECK_TYPE(mode_t, AC_DEFINE(HAVE_MODE_T,1,[mode_t is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
2993AC_CHECK_TYPE(fd_mask, AC_DEFINE(HAVE_FD_MASK,1,[fd_mask is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
adcceb47 2994
6a9f6389 2995AC_CHECK_TYPE(socklen_t,AC_DEFINE(HAVE_SOCKLEN_T,1,[socklen_t is defined by the system headers]),,[
2996#include <sys/types.h>
6637e3a5 2997#include <sys/socket.h>
2998#if STDC_HEADERS
2999#include <stdlib.h>
3000#include <stddef.h>
6a9f6389 3001#endif])
6637e3a5 3002
cdb352bb
FC
3003AC_CHECK_TYPE(mtyp_t,AC_DEFINE(HAVE_MTYP_T,1,
3004 [mtyp_t is defined by the system headers]),,[#include <sys/types.h>
3005#include <sys/ipc.h>
3006#include <sys/msg.h>])
3007
fe1e5c91
AJ
3008# check for compiler support of %zu printf macro
3009AH_TEMPLATE(PRIuSIZE,[Compiler supports %zu printf macro])
3010AC_MSG_CHECKING([for compiler %zu support])
3011AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3012#include <stdio.h>
3013 ]],[[size_t n=1;printf("%zu",n);]])],[
3014 AC_DEFINE(PRIuSIZE,"zu")
3015 AC_MSG_RESULT(yes)
3016 ],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
3017
3018
cdb352bb
FC
3019dnl Check for special functions
3020AC_FUNC_ALLOCA
3021
3022
b50f1b2b 3023dnl Check for libcap header (assume its not broken unless
45c41a07
FC
3024AC_ARG_WITH(libcap, AS_HELP_STRING([--without-libcap],
3025 [disable usage of Linux capabilities library to control privileges]), [
3026SQUID_YESNO([$withval],[unrecognized argument to --without-libcap: $withval])
3027],[with_libcap=auto])
3028
3029if test "x$with_libcap" != "xno"; then
b64b6030 3030 # cap_clear_flag is the most recent libcap function we require
45c41a07 3031 AC_CHECK_HEADERS(sys/capability.h)
b64b6030 3032 AC_CHECK_LIB(cap, cap_clear_flag)
45c41a07
FC
3033 SQUID_CHECK_FUNCTIONAL_LIBCAP2
3034
3035 # if it can't be supported..
35e2b2e5 3036 if test "x$ac_cv_header_sys_capability_h" = "xno" -o \
46f50de9 3037 "x$ac_cv_lib_cap_cap_clear_flag" = "xno"; then
45c41a07 3038 # and it was forced on: error
46f50de9 3039 if test "x$with_libcap" = "xyes" ; then
ff8d255b 3040 AC_MSG_ERROR([libcap forced enabled but not available or not usable, requires libcap-2.09 or later])
3fbda12c
FC
3041 else
3042 # with_libcap is "auto"; it can't be supported. Disable.
3043 with_libcap=no
b64b6030 3044 fi
45c41a07
FC
3045 else
3046 # header and lib are ok, we support
3047 with_libcap=yes
b64b6030 3048 fi
69367152 3049
b50f1b2b 3050fi
5b43d209 3051
45c41a07
FC
3052SQUID_DEFINE_BOOL(USE_LIBCAP,$with_libcap,
3053 [use libcap to set capabilities required for TPROXY])
3054AC_MSG_NOTICE([libcap support enabled: $with_libcap])
3055SQUID_DEFINE_BOOL(LIBCAP_BROKEN,${squid_cv_sys_capability_works:=no},
3056 [libcap2 headers are broken and clashing with glibc])
3057AC_MSG_NOTICE([libcap2 headers are ok: $squid_cv_sys_capability_works])
3058
b64b6030 3059
090089c4 3060dnl Check for needed libraries
54c95954 3061AC_SEARCH_LIBS([gethostbyname],[nsl resolv bind])
819656da
AJ
3062AC_SEARCH_LIBS([res_init],[resolv])
3063AC_SEARCH_LIBS([__res_search],[resolv])
54c95954
FC
3064AC_SEARCH_LIBS([bind],[socket])
3065AC_SEARCH_LIBS([opcom_stack_trace],[opcom_stack])
3066AC_SEARCH_LIBS([strlcpy], [bsd])
85cd85f3 3067AC_SEARCH_LIBS([yp_match], [nsl nss_nis nss_nisplus])
bfe8dedf 3068dnl Check for Winsock only on MinGW, on Cygwin we must use emulated BSD socket API
0c0d381b
FC
3069if test "x$squid_host_os" = "xmingw" ; then
3070 SQUID_CHECK_WINSOCK_LIB
32341684
AJ
3071 AC_CHECK_HEADERS( \
3072 windows.h \
3073 ws2tcpip.h \
b966288b 3074 iphlpapi.h ,,,[
2ff9dfaa
AJ
3075#if HAVE_WINSOCK2_H
3076#include <winsock2.h>
3077#endif
32341684
AJ
3078#if HAVE_WINDOWS_H
3079#include <windows.h>
3080#endif
2ff9dfaa
AJ
3081#if HAVE_WS2TCPIP_H
3082#include <ws2tcpip.h>
3083#endif
3084])
0c0d381b 3085fi
94d48591 3086
46f50de9
FC
3087# check that we have unix sockets
3088SQUID_CHECK_UNIX_SOCKET
3089SQUID_DEFINE_BOOL(HAVE_UNIXSOCKET,$squid_cv_unixsocket,[System supports unix sockets])
3090
3091AC_CHECK_LIB(gnumalloc, malloc)
3092if test "x$ac_cv_lib_gnumalloc_malloc" = "xyes"; then
ef7ece58 3093 AC_MSG_NOTICE([Disabling extended malloc functions when using bundled gnumalloc])
46f50de9
FC
3094 ac_cv_func_mallocblksize=no
3095 ac_cv_func_mallopt=no
3096else
3097 case "$squid_host_os" in
3098 solaris)
3099 AC_MSG_NOTICE([skipping libmalloc check for $host])
3100 ;;
3101 freebsd)
3102 AC_MSG_NOTICE([skipping libmalloc check for $host])
3103 ;;
3104 *)
3105 #used later. FIXME
3106 AC_CHECK_LIB(malloc, main)
3107 ;;
cdb352bb
FC
3108 esac
3109fi
94d48591 3110
78a60bca
AJ
3111case "$squid_host_os" in
3112 mingw)
3113 AC_MSG_NOTICE([Use MSVCRT for math functions.])
3114 ;;
3115 *)
3116 dnl rint() and log() are only used in old C code for now.
3117 AC_LANG_PUSH([C])
3118 AC_SEARCH_LIBS([rint],[m])
3119 AC_SEARCH_LIBS([log],[m])
3120 AC_LANG_POP([C])
3121 ;;
08caf8c6 3122esac
090089c4 3123
f467f578
FC
3124dnl --with-maxfd present for compatibility with Squid-2.
3125dnl undocumented in ./configure --help to encourage using the Squid-3 directive
3126AC_ARG_WITH(maxfd,,
3127[
3128 case ${withval} in
3129 [[0-9]]*)
3130 squid_filedescriptors_num=$withval
acea95af 3131 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
f467f578
FC
3132 ;;
3133 *)
3134 AC_MSG_ERROR(--with-maxfd expects a numeric argument)
3135 ;;
3136 esac
055421ee 3137])
001ad4cc 3138
f467f578
FC
3139AC_ARG_WITH(filedescriptors,
3140 AS_HELP_STRING([--with-filedescriptors=NUMBER],
3141 [Force squid to support NUMBER filedescriptors]),
3142[
3143 case ${withval} in
3144 [[0-9]]*)
3145 squid_filedescriptors_num=$withval
acea95af 3146 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
f467f578
FC
3147 ;;
3148 *)
3149 AC_MSG_ERROR(--with-filedescriptors expects a numeric argument)
3150 ;;
3151 esac
001ad4cc 3152])
f467f578
FC
3153
3154SQUID_CHECK_DEFAULT_FD_SETSIZE
acea95af
AJ
3155SQUID_CHECK_MAXFD
3156if test "x$squid_filedescriptors_num" != "x"; then
3157 AC_MSG_NOTICE([Default number of fieldescriptors: $squid_filedescriptors_num])
001ad4cc 3158fi
f467f578
FC
3159if test "$squid_filedescriptors_num" -lt 512 ; then
3160 AC_MSG_WARN([$squid_filedescriptors_num may not be enough filedescriptors if your])
3161 AC_MSG_WARN([cache will be very busy. Please see the FAQ page])
3162 AC_MSG_WARN([http://wiki.squid-cache.org/SquidFaq/TroubleShooting])
3163 AC_MSG_WARN([on how to increase your filedescriptor limit])
3164fi
3165AC_DEFINE_UNQUOTED(SQUID_MAXFD, $squid_filedescriptors_num,[Maximum number of open filedescriptors])
001ad4cc 3166
f467f578 3167
001ad4cc
AJ
3168dnl Enable IPv6 support
3169AC_MSG_CHECKING([whether to enable IPv6])
001ad4cc 3170AC_ARG_ENABLE(ipv6,
af494bc8
FC
3171 AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support. The default is to probe system capabilities on startup.]), [
3172SQUID_YESNO([$enableval],[unrecognized argument to --disable-ipv6: $enableval])
001ad4cc 3173])
7d927f1f
AJ
3174AC_MSG_RESULT(${enable_ipv6:=yes})
3175SQUID_DEFINE_BOOL(USE_IPV6,$enable_ipv6,[Enable support for IPv6 ])
001ad4cc 3176
7d927f1f 3177if test "x$enable_ipv6" = "xyes" ; then
af494bc8 3178 SQUID_CHECK_SIN6_LEN_IN_SAI
001ad4cc 3179fi
7d553ad9
AJ
3180SQUID_CHECK_SS_LEN_IN_SOCKADDR_STORAGE
3181SQUID_CHECK_SIN_LEN_IN_SOCKADDR_IN
001ad4cc 3182
001ad4cc 3183
042b1f8a 3184dnl Check for libdl, used by auth_modules/PAM
fcabe077 3185if test "x$with_dl" = "xyes"; then
8154dd82 3186 AC_CHECK_LIB(dl, dlopen)
3187fi
042b1f8a 3188
86ec11aa 3189dnl -lintl is needed on SCO version 3.2v4.2 for strftime()
3190dnl Robert Side <rside@aiinc.bc.ca>
3191dnl Mon, 18 Jan 1999 17:48:00 GMT
3192case "$host" in
3193 *-pc-sco3.2*)
3194 AC_CHECK_LIB(intl, strftime)
3195 ;;
3196esac
3197
b7a1c19e 3198dnl Check for libdb
6b5de50d 3199dnl this is not fully functional if db.h is for a differend db version
b7a1c19e 3200DBLIB=
6b5de50d
FC
3201
3202dnl check that dbopen is actually defined in the header
3203dnl FIXME: in case of failure undef db-related includes etc.
3204AC_CHECK_DECL(dbopen,,,[
06fbee01
FC
3205#if HAVE_SYS_TYPES_H
3206#include <sys/types.h>
3207#endif
3208#if HAVE_LIMITS_H
3209#include <limits.h>
3210#endif
6b5de50d
FC
3211#if HAVE_DB_185_H
3212#include <db_185.h>
3213#elif HAVE_DB_H
3214#include <db.h>
3215#endif])
3216
01b4931d 3217dnl 1.85
91983da0 3218SQUID_CHECK_DBOPEN_NEEDS_LIBDB
fcabe077 3219if test "x$ac_cv_dbopen_libdb" = "xyes"; then
32d0bbd7 3220 LIB_DB="-ldb"
3221fi
01b4931d 3222AC_SUBST(LIB_DB)
b7a1c19e 3223
77f675ad 3224dnl System-specific library modifications
3225dnl
3226case "$host" in
fcabe077
FC
3227 i386-*-solaris2.*)
3228 if test "x$GCC" = "xyes"; then
3229 AC_MSG_NOTICE([Removing -O for gcc on $host])
3230 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9]]*//'`"
3231 fi
3232 ;;
141eb4a6 3233
fcabe077
FC
3234 *-sgi-irix*)
3235 AC_MSG_NOTICE([Removing -lsocket for IRIX...])
3236 LIBS=`echo $LIBS | sed -e s/-lsocket//`
3237 AC_MSG_NOTICE([Removing -lnsl for IRIX...])
3238 LIBS=`echo $LIBS | sed -e s/-lnsl//`
3239 ac_cv_lib_nsl_main=no
3240 AC_MSG_NOTICE([Removing -lbsd for IRIX...])
3241 LIBS=`echo $LIBS | sed -e s/-lbsd//`
3242 ;;
4ba0bd0e 3243dnl From: c0032033@ws.rz.tu-bs.de (Joerg Schumacher)
3244dnl Date: Thu, 17 Oct 1996 04:09:30 +0200
3245dnl Please change your configure script. AIX doesn't need -lbsd.
fcabe077
FC
3246 *-ibm-aix*)
3247 AC_MSG_NOTICE([Removing -lbsd for AIX...])
3248 LIBS=`echo $LIBS | sed -e s/-lbsd//`
3e1ce596
KB
3249
3250 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_rtti],[-rtti],[[
3251#include <assert.h>
3252#ifndef NULL
3253#define NULL 0
3254#endif
3255class Foo{
3256public:virtual ~Foo(){}
3257};
3258class Bar:public Foo{
3259public:Bar():Foo(){}
3260};
3261 ]],[[
3262Foo * myFoo=new Bar();
3263Bar * myBar=dynamic_cast<Bar *>(myFoo);
3264assert(myBar != NULL);
3265 ]])
3266 if test "$ac_cv_require_rtti" = "yes"; then
3267 SQUID_CFLAGS="-rtti $SQUID_CFLAGS"
3268 SQUID_CXXFLAGS="-rtti $SQUID_CXXFLAGS"
fcabe077 3269 fi
3e1ce596
KB
3270
3271 AC_LANG_PUSH([C])
3272 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_qcpluscmt],[-qcpluscmt],[[]],[[//c++ cmt]])
fcabe077 3273 AC_LANG_POP([C])
3e1ce596
KB
3274 if test "$ac_cv_require_qcpluscmt" = "yes"; then
3275 SQUID_CFLAGS="-qcpluscmt $SQUID_CFLAGS"
3276 fi
fcabe077 3277 ;;
3e1ce596 3278
fcabe077
FC
3279 *m88k*)
3280 SQUID_CFLAGS="$SQUID_CFLAGS -D_SQUID_MOTOROLA_"
3281 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_SQUID_MOTOROLA_"
3282 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1,
3283 [If gettimeofday is known to take only one argument])
3284 ;;
3285 [*-*-solaris2.[0-4]])
3286 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)
3287 ;;
3288 [*-sony-newsos[56]*])
3289 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)
3290 ;;
3291 esac
090089c4 3292
84cecfd2 3293dnl This has to be before AC_CHECK_FUNCS
3294# Disable poll() on certain platforms. Override by setting ac_cv_func_poll
3295# when running configure.
fcabe077
FC
3296if test "x$ac_cv_func_poll" = "x" ; then
3297 case "$host" in
3298 [*-hp-hpux*.*])
3299 # Duane Wessels
3300 AC_MSG_NOTICE([disabling poll for $host...])
3301 ac_cv_func_poll='no'
3302 ;;
3303 [*-linux-*])
3304 # Henrik Nordstrom (hno@squid-cache.org) 19980817
3305 # poll is problematic on Linux. We disable it
3306 # by default until Linux gets it right.
3307 rev=`uname -r | awk -F. '{printf "%03d%03d",$1,$2}'`
3308 if test $rev -lt 002002; then
3309 AC_MSG_NOTICE([disabling poll for $host < 2.2...])
3310 ac_cv_func_poll='no'
3311 fi
3312 ;;
3313 [powerpc-ibm-aix4.1.*])
3314 # Mike Laster (mlaster@metavillage.com) 19981021
3315 AC_MSG_NOTICE([disabling poll for $host...])
3316 ac_cv_func_poll='no'
3317 ;;
3318 [*-pc-sco3.2*])
3319 # Robert Side <rside@aiinc.bc.ca>
3320 # Mon, 18 Jan 1999 17:48:00 GMT
3321 AC_MSG_NOTICE([disabling poll for $host...])
3322 ac_cv_func_poll='no'
3323 ;;
3324 esac
84cecfd2 3325fi
176d10ee 3326
6716b242 3327dnl Check for library functions
3328AC_CHECK_FUNCS(\
ce3d30fb 3329 backtrace_symbols_fd \
3a144521 3330 bcopy \
4de1e2da 3331 eui64_aton \
4ac29a5b 3332 fchmod \
6716b242 3333 getdtablesize \
8505e57b 3334 getpagesize \
230c091c 3335 getpass \
3a144521 3336 getrlimit \
30a4f2a8 3337 getrusage \
9c1d8929 3338 getspnam \
379d5751 3339 gettimeofday \
52303a3d 3340 glob \
0f5efab0 3341 mallocblksize \
6716b242 3342 mallopt \
2ae6b9b0 3343 memcpy \
30a4f2a8 3344 memmove \
ee4d4e85 3345 memrchr \
dac27377 3346 memset \
b99a6dec 3347 mkstemp \
1812b6c7 3348 mktime \
88738790 3349 mstats \
84cecfd2 3350 poll \
62ae0622 3351 prctl \
3a144521 3352 pthread_attr_setschedparam \
cd748f27 3353 pthread_attr_setscope \
3354 pthread_setschedparam \
42b51993 3355 pthread_sigmask \
c68e9c6b 3356 putenv \
6716b242 3357 regcomp \
3358 regexec \
3359 regfree \
819656da
AJ
3360 res_init \
3361 __res_init \
4915be3b 3362 rint \
96c2bb61
AR
3363 sched_getaffinity \
3364 sched_setaffinity \
3a144521 3365 select \
234967c9 3366 seteuid \
c415c128 3367 setgroups \
30a4f2a8 3368 setpgrp \
30a4f2a8 3369 setsid \
3370 sigaction \
11430c03 3371 snprintf \
1ccc0d40 3372 socketpair \
6716b242 3373 sysconf \
3374 syslog \
234967c9 3375 timegm \
28da5e0d 3376 vsnprintf \
6716b242 3377)
f5e5c4cf 3378dnl ... and some we provide local replacements for
3379AC_REPLACE_FUNCS(\
f5e5c4cf 3380 initgroups \
2ccf2eb2 3381 psignal \
f5e5c4cf 3382 strerror \
585cddda 3383 strtoll \
f5e5c4cf 3384 tempnam \
3385)
6716b242 3386
dfb96b6b 3387AC_CHECK_DECLS([getaddrinfo,getnameinfo,inet_ntop,inet_pton,InetNtopA,InetPtonA],,,[
55d7d5e9
AJ
3388/*
3389 * BSD requires sys/types.h, sys/socket.h, netinet/in.h, netdb.h, arpa/inet.h
3390 * Linux requires sys/types.h, sys/socket.h, arpa/inet.h
3391 * Windows requires sys/socket.h, winsock2.h, ws2tcpip.h
3392 */
3393#if HAVE_SYS_TYPES_H
3394#include <sys/types.h>
3395#endif
3396#if HAVE_NETINET_IN_H
3397#include <netinet/in.h>
3398#endif
3399#if HAVE_SYS_SOCKET_H
3400#include <sys/socket.h>
3401#endif
3402#if HAVE_NETDB_H
3403#include <netdb.h>
3404#endif
3405#if HAVE_ARPA_INET_H
3406#include <arpa/inet.h>
3407#endif
3408#if HAVE_WINSOCK2_H
3409#include <winsock2.h>
3410#endif
3411#if HAVE_WS2TCPIP_H
3412#include <ws2tcpip.h>
3413#endif
3414])
3415
9676633b
FC
3416# Magic which checks whether we are forcing a type of comm loop we
3417# are actually going to (ab)use.
3418# Mostly ripped from squid-commloops, thanks to adrian and benno
1b3db6d9 3419
fcabe077 3420if test "x$squid_opt_io_loop_engine" != "x"; then
8075a4da 3421 AC_MSG_NOTICE([choosing user-specified net I/O API $squid_opt_io_loop_engine])
fcabe077 3422elif test "x$enable_epoll" != "xno" -a "x$squid_cv_epoll_works" = "xyes" ; then
8075a4da 3423 squid_opt_io_loop_engine="epoll"
26d50fd2 3424elif test "x$enable_kqueue" != "xno" ; then
8075a4da 3425 squid_opt_io_loop_engine="kqueue"
a1ad2f9b
AJ
3426elif test "x$enable_devpoll" != "xno" ; then
3427 squid_opt_io_loop_engine="devpoll"
fcabe077 3428elif test "x$enable_poll" != "xno" -a "x$ac_cv_func_poll" = "xyes" ; then
8075a4da 3429 squid_opt_io_loop_engine="poll"
39145d19 3430elif test "x$enable_select" != "xno" -a "x$ac_cv_func_select" = "xyes"; then
8075a4da 3431 squid_opt_io_loop_engine="select"
39145d19
AJ
3432elif test "x$enable_select" != "xno" -a "x$squid_host_os" = "xmingw"; then
3433 squid_opt_io_loop_engine="select_win32"
1b3db6d9 3434else
a1ad2f9b 3435 AC_MSG_WARN([Eep! Cannot find epoll, kqueue, /dev/poll, poll or select!])
be0c7ff0 3436 AC_MSG_WARN([Will try select and hope for the best.])
8075a4da 3437 squid_opt_io_loop_engine="select"
1b3db6d9 3438fi
d474c7a6 3439
8075a4da 3440AC_MSG_NOTICE([Using ${squid_opt_io_loop_engine} for the IO loop.])
d474c7a6 3441
8075a4da
FC
3442AM_CONDITIONAL([USE_POLL], [test $squid_opt_io_loop_engine = poll])
3443AM_CONDITIONAL([USE_EPOLL], [test $squid_opt_io_loop_engine = epoll])
3444AM_CONDITIONAL([USE_SELECT], [test $squid_opt_io_loop_engine = select])
8075a4da
FC
3445AM_CONDITIONAL([USE_SELECT_WIN32], [test $squid_opt_io_loop_engine = select_win32])
3446AM_CONDITIONAL([USE_KQUEUE], [test $squid_opt_io_loop_engine = kqueue])
3447AM_CONDITIONAL([USE_DEVPOLL], [test $squid_opt_io_loop_engine = devpoll])
d474c7a6 3448
8075a4da 3449case $squid_opt_io_loop_engine in
0abb39dd 3450 epoll) AC_DEFINE(USE_EPOLL,1,[Use epoll() for the IO loop]) ;;
a1ad2f9b 3451 devpoll) AC_DEFINE(USE_DEVPOLL,1,[Use /dev/poll for the IO loop]) ;;
0abb39dd
FC
3452 poll) AC_DEFINE(USE_POLL,1,[Use poll() for the IO loop]) ;;
3453 kqueue) AC_DEFINE(USE_KQUEUE,1,[Use kqueue() for the IO loop]) ;;
3454 select_win32) AC_DEFINE(USE_SELECT_WIN32,1,[Use Winsock select() for the IO loop]) ;;
3455 select) AC_DEFINE(USE_SELECT,1,[Use select() for the IO loop]) ;;
d474c7a6 3456esac
1b3db6d9 3457
96c2bb61
AR
3458if test "x$ac_cv_func_sched_getaffinity" = "xyes" -a "x$ac_cv_func_sched_setaffinity" = "xyes" ; then
3459 AC_DEFINE(HAVE_CPU_AFFINITY,1,[Support setting CPU affinity for workers])
3460fi
3461
91983da0
FC
3462SQUID_CHECK_SETRESUID_WORKS
3463if test "x$squid_cv_resuid_works" = "xyes" ; then
be0c7ff0 3464 AC_DEFINE(HAVE_SETRESUID,1,[Yay! Another Linux brokenness. Knowing that setresuid() exists is not enough, because RedHat 5.0 declares setresuid() but does not implement it.])
5c51415d 3465fi
60939927 3466
2ff9dfaa 3467AC_CHECK_HEADERS(mswsock.h)
14c0d3ab
DK
3468AC_MSG_CHECKING([for constant CMSG_SPACE])
3469AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
3470 #if HAVE_SYS_SOCKET_H
3471 #include <sys/socket.h>
3472 #endif
2ff9dfaa
AJ
3473 #if HAVE_MSWSOCK_H
3474 #include <mswsock.h>
3475 #endif
14c0d3ab
DK
3476
3477 int a[CMSG_SPACE(int)];
3478]])], [
3479 AC_MSG_RESULT(yes)
3480 AC_DEFINE(HAVE_CONSTANT_CMSG_SPACE, 1, [Define to 1 if CMSG_SPACE is constant])
3481], [
3482 AC_MSG_RESULT(no)
3483])
3484
ecd8516d 3485AC_CHECK_TYPE(struct cmsghdr,AC_DEFINE(HAVE_CMSGHDR,1,[The system provides struct cmsghdr]),,[
c72f8c2e
AJ
3486 #if HAVE_SYS_SOCKET_H
3487 #include <sys/socket.h>
3488 #endif
2ff9dfaa
AJ
3489 #if HAVE_MSWSOCK_H
3490 #include <mswsock.h>
3491 #endif
c72f8c2e
AJ
3492 #if HAVE_WINSOCK2_H
3493 #include <winsock2.h>
3494 #endif
3495])
3496
ecd8516d 3497AC_CHECK_TYPE(struct iovec,AC_DEFINE(HAVE_IOVEC,1,[The system provides struct iovec]),,[
c72f8c2e
AJ
3498 #if HAVE_SYS_SOCKET_H
3499 #include <sys/socket.h>
3500 #endif
3501 #if HAVE_WINSOCK2_H
3502 #include <winsock2.h>
3503 #endif
9ac84dcf
FC
3504 #if HAVE_SYS_UIO_H
3505 #include <sys/uio.h>
3506 #endif
c72f8c2e
AJ
3507])
3508
ecd8516d 3509AC_CHECK_TYPE(struct msghdr,AC_DEFINE(HAVE_MSGHDR,1,[The system provides struct msghdr]),,[
c72f8c2e
AJ
3510 #if HAVE_SYS_SOCKET_H
3511 #include <sys/socket.h>
3512 #endif
2ff9dfaa
AJ
3513 #if HAVE_MSWSOCK_H
3514 #include <mswsock.h>
3515 #endif
c72f8c2e
AJ
3516 #if HAVE_WINSOCK2_H
3517 #include <winsock2.h>
3518 #endif
3519])
3520
ecd8516d 3521AC_CHECK_TYPE(struct sockaddr_un,AC_DEFINE(HAVE_SOCKADDR_UN,1,[The system provides sockaddr_un]),,[
c72f8c2e
AJ
3522 #if HAVE_SYS_UN_H
3523 #include <sys/un.h>
3524 #endif
3525 #if HAVE_SYS_SOCKET_H
3526 #include <sys/socket.h>
3527 #endif
3528 #if HAVE_WINSOCK2_H
3529 #include <winsock2.h>
3530 #endif
3531])
3532
0abb39dd
FC
3533SQUID_CHECK_FUNC_STRNSTR
3534SQUID_CHECK_FUNC_VACOPY
3535SQUID_CHECK_FUNC___VACOPY
cee08cbc 3536
5cafc1d6 3537dnl IP-Filter support requires ipf header files. These aren't
3538dnl installed by default, so we need to check for them
fcabe077 3539if test "x$enable_ipf_transparent" != "xno" ; then
d25bbe26 3540 SQUID_CHECK_BROKEN_SOLARIS_IPFILTER
20ad76ab 3541 AC_MSG_CHECKING(for availability of IP-Filter header files)
42b51993 3542 # hold on to your hats...
fcabe077
FC
3543 if test "x$ac_cv_header_ip_compat_h" = "xyes" -o \
3544 "x$ac_cv_header_ip_fil_compat_h" = "xyes" -o \
3545 "x$ac_cv_header_netinet_ip_compat_h" = "xyes" -o \
3546 "x$ac_cv_header_netinet_ip_fil_compat_h" = "xyes" ; then
42b51993 3547 have_ipfilter_compat_header="yes"
d25bbe26
AJ
3548 fi
3549 if test "x$have_ipfilter_compat_header" = "xyes" -a \
fcabe077
FC
3550 "x$ac_cv_header_ip_fil_h" = "xyes" -a \
3551 "x$ac_cv_header_ip_nat_h" = "xyes" ; then
1d26e252 3552 enable_ipf_transparent="yes"
fcabe077
FC
3553 elif test "x$have_ipfilter_compat_header" = "xyes" -a \
3554 "x$ac_cv_header_netinet_ip_fil_h" = "xyes" -a \
3555 "x$ac_cv_header_netinet_ip_nat_h" = "xyes" ; then
1d26e252 3556 enable_ipf_transparent="yes"
eb824054 3557 else
1d26e252 3558 enable_ipf_transparent="no"
5cafc1d6 3559 fi
3560 AC_MSG_RESULT($IPF_TRANSPARENT)
d25bbe26
AJ
3561
3562## On Solaris Ipfilter includes expect that SOLARIS2 is defined with the
3563## Solaris minor version (8, 9, 10, ...)
3564 if test "x$enable_ipf_transparent" = "xyes" -a "x$squid_host_os" = "xsolaris" ; then
3565 solrev=`uname -r | sh -c 'IFS=. read j n x; echo $n'`
3566 CFLAGS="-DSOLARIS2=$solrev $CFLAGS"
3567 CXXFLAGS="-DSOLARIS2=$solrev $CXXFLAGS"
3568 fi
3569
1d26e252
FC
3570fi
3571AC_MSG_NOTICE([IPF-based transparent proxying enabled: $enable_ipf_transparent])
0f658b5b 3572SQUID_DEFINE_BOOL(IPF_TRANSPARENT,$enable_ipf_transparent,
1d26e252
FC
3573 [Enable support for IPF-style transparent proxying])
3574
b2192042
AJ
3575dnl PF /dev/pf support requires a header file.
3576if test "x$with_nat_devpf" != "xno" ; then
fcabe077
FC
3577 if test "x$ac_cv_header_net_pfvar_h" = "xyes" -o \
3578 "x$ac_cv_header_net_pf_pfvar_h" = "xyes"; then
b2192042
AJ
3579 if test "x$with_nat_devpf" = "xauto" ; then
3580 with_nat_devpf="no"
fcabe077
FC
3581 fi
3582 else
b2192042
AJ
3583 if test "x$with_nat_devpf" = "xyes" ; then
3584 AC_MSG_ERROR([PF /dev/pf based NAT requested but needed header not found])
fcabe077 3585 fi
b2192042 3586 with_nat_devpf="no"
fcabe077 3587 fi
2b0dd4ac 3588fi
b2192042 3589SQUID_DEFINE_BOOL(PF_TRANSPARENT,${enable_pf_transparent:=no},
38ff0a40 3590 [Enable support for PF-style transparent proxying])
b2192042
AJ
3591SQUID_DEFINE_BOOL(USE_NAT_DEVPF,${with_nat_devpf:=no},
3592 [Enable support for /dev/pf NAT lookups])
2b0dd4ac 3593
fcabe077
FC
3594if test "x$enable_linux_netfilter" != "xno" ; then
3595 if test "x$ac_cv_header_linux_netfilter_ipv4_h" = "xyes"; then
3596 if test "x$enable_linux_netfilter" = "xauto" ; then
4bd144d2
FC
3597 enable_linux_netfilter=yes
3598 fi
3599 else
fcabe077 3600 if test "x$enable_linux_netfilter" = "xauto" ; then
4bd144d2 3601 enable_linux_netfilter=no
d852fbad 3602 else
4bd144d2 3603 AC_MSG_ERROR([Linux Netfilter support requested but needed headers not found])
d852fbad 3604 fi
4bd144d2 3605 fi
b50f1b2b 3606fi
0f658b5b 3607SQUID_DEFINE_BOOL(LINUX_NETFILTER,$enable_linux_netfilter,
969d4051 3608 [Enable support for Transparent Proxy on Linux via Netfilter])
20ad76ab 3609
b50f1b2b 3610dnl Netfilter TPROXY depends on libcap but the NAT parts can still work.
4bd144d2 3611AC_MSG_NOTICE([Support for Netfilter-based interception proxy requested: $enable_linux_netfilter])
fcabe077 3612if test "x$enable_linux_netfilter" = "xyes" -a "x$with_libcap" != "xyes" ; then
3b7a7630
AJ
3613 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for TPROXY])
3614 AC_MSG_WARN([Linux Transparent Proxy (version 4+) support WILL NOT be enabled])
3615 AC_MSG_WARN([Reduced support to NAT Interception Proxy])
be0c7ff0 3616 # AC_DEFINEd later
96f08e2d
FC
3617fi
3618
11e8cfe3 3619if test "x$squid_opt_netfilterconntrack" = "xyes" -a "x$with_libcap" != "xyes" ; then
3b7a7630 3620 AC_MSG_ERROR([Linux netfilter conntrack requires libcap support (libcap 2.09+)])
11e8cfe3
AB
3621fi
3622if test "x$with_netfilter_conntrack" = "xyes" -a "x$with_libcap" != "xyes" ; then
3b7a7630 3623 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for netfilter mark support])
11e8cfe3
AB
3624 AC_MSG_WARN([Linux netfilter marking support WILL NOT be enabled])
3625 with_netfilter_conntrack=no
3626fi
3627AC_MSG_NOTICE([Linux Netfilter Conntrack support enabled: ${with_netfilter_conntrack} ${squid_opt_netfilterconntrackpath}])
3628
3629
3630AC_ARG_ENABLE(zph-qos,
3631 AS_HELP_STRING([--enable-zph-qos],[Enable ZPH QOS support]), [
3632SQUID_YESNO([$enableval],
3633 [unrecognized argument to --enable-zph-qos: $enableval])
3634])
3635SQUID_DEFINE_BOOL(USE_QOS_TOS,${enable_zph_qos:=yes},
3636 [Enable Zero Penalty Hit QOS. When set, Squid will alter the
3637 TOS field of HIT responses to help policing network traffic])
3638AC_MSG_NOTICE([ZPH QOS enabled: $enable_zph_qos])
3639if test x"$enable_zph_qos" = "xyes" ; then
3640 AC_MSG_NOTICE([QOS netfilter mark preservation enabled: $with_netfilter_conntrack])
3641 SQUID_DEFINE_BOOL(USE_LIBNETFILTERCONNTRACK,${with_netfilter_conntrack:=no},
3642 [Enable support for QOS netfilter mark preservation])
3643fi
3644
3645
0f13ff28 3646AC_CHECK_LIB(regex, regexec, [REGEXLIB="-lregex"],[REGEXLIB=''])
cc937513 3647AC_ARG_ENABLE(gnuregex,
a5eb3731
FC
3648 AS_HELP_STRING([--enable-gnuregex],
3649 [Compile GNUregex. Unless you have reason to use
cc937513
AJ
3650 this option, you should not enable it.
3651 This library file is usually only required on Windows and
3652 very old Unix boxes which do not have their own regex
0f13ff28
FC
3653 library built in.]), [
3654SQUID_YESNO([$enableval],[unrecognized argument to --enable-gnuregex: $enableval])
3655])
cdb352bb 3656# force-enable on old solaris and nextstep
fcabe077 3657if test "x${enable_gnuregex:=auto}" = "xauto" ; then
91bc414e 3658 case "$host" in
3659 *-sun-solaris2.[[0-4]])
0f13ff28 3660 enable_gnuregex="yes"
91bc414e 3661 ;;
3662 *-next-nextstep*)
0f13ff28 3663 enable_gnuregex="yes"
91bc414e 3664 ;;
3665 esac
3666fi
7a081912 3667
0f13ff28 3668# try detecting if it is needed
fcabe077 3669if test "x$enable_gnuregex" = "xauto" ; then
91983da0
FC
3670 SQUID_CHECK_REGEX_WORKS
3671 if test "x$squid_cv_regex_works" = "xyes" ; then
3672 enable_gnuregex=no
3673 else
3674 enable_gnuregex=yes
3675 fi
f49be7d1 3676fi
91983da0 3677AC_MSG_CHECKING(if GNUregex needs to be compiled)
0f13ff28 3678AC_MSG_RESULT($enable_gnuregex)
fcabe077 3679if test "x$enable_gnuregex" = "xyes"; then
0f13ff28
FC
3680 # for some reason (force-enable, test..) gnuregex was found as needed. Override any system lib
3681 REGEXLIB=""
80ab193b 3682fi
0f13ff28 3683#if no reason was found to enable gnuregex, disable it
fcabe077 3684if test "x$enable_gnuregex" = "xauto" ; then
0f13ff28 3685 enable_gnuregex=no
a4d7e961 3686fi
0f13ff28 3687SQUID_DEFINE_BOOL(USE_GNUREGEX,$enable_gnuregex,[Define if we should use GNU regex])
26675bf4 3688AC_SUBST(REGEXLIB)
a4d7e961 3689
8e0acaf5
FC
3690SQUID_DETECT_UDP_SND_BUFSIZE
3691SQUID_DETECT_UDP_RECV_BUFSIZE
3692SQUID_DETECT_TCP_SND_BUFSIZE
3693SQUID_DETECT_TCP_RECV_BUFSIZE
6bf65235 3694
fa8be5b5 3695SQUID_CHECK_RECV_ARG_TYPE
5c3c56fa
FC
3696SQUID_CHECK_NEED_SYS_ERRLIST
3697SQUID_CHECK_MAXPATHLEN
cc192b50 3698
819656da
AJ
3699SQUID_CHECK_LIBRESOLV_DNS_TTL_HACK
3700SQUID_CHECK_RESOLVER_FIELDS
3701
615540cd 3702AC_CHECK_HEADERS(sys/statvfs.h)
fcabe077 3703if test "x$ac_cv_header_sys_statvfs_h" = "xyes" ; then
bb214e97 3704 SQUID_CHECK_WORKING_STATVFS
c68e9c6b 3705fi
615540cd
AJ
3706if test "x$ac_cv_func_statvfs" != "xyes" ; then
3707 AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/vfs.h sys/statfs.h)
3708 AC_CHECK_FUNCS(statfs)
3709 SQUID_CHECK_F_FRSIZE_IN_STATFS
3710fi
c68e9c6b 3711
4eb85b7a 3712dnl Squid will not usually attempt to translate templates when building
461b8219 3713AC_ARG_ENABLE(translation,
4eb85b7a
AJ
3714 AS_HELP_STRING([--enable-translation],[Generate the localized error page templates and manuals.
3715 Which can also be downloaded from http://www.squid-cache.org/Versions/langpack/.]), [
3716 SQUID_YESNO([$enableval],
3717 [unrecognized argument to --enable-translation: $enableval])
461b8219 3718])
4eb85b7a 3719if test "x${enable_translation:=no}" = "xyes" ; then
461b8219 3720 AX_WITH_PROG([PO2HTML],[po2html])
02259ff8 3721 AX_WITH_PROG([PO2TEXT],[po2txt])
461b8219
AJ
3722else
3723 PO2HTML="off"
02259ff8 3724 PO2TEXT="off"
461b8219
AJ
3725fi
3726AC_SUBST(PO2HTML)
02259ff8 3727AC_SUBST(PO2TEXT)
ee1a8ac2 3728
43000484
AJ
3729dnl Squid now has limited locale handling ...
3730dnl on error pages
3731AC_ARG_ENABLE(auto-locale,
62979ab1 3732 AS_HELP_STRING([--disable-auto-locale],[This prevents Squid providing localized error pages based on the
21d5413e 3733 clients request headers.
fb46b778
FC
3734 When disabled Squid requires explicit language configuration.]), [
3735SQUID_YESNO([$enableval],
3736 [unrecognized argument to --disable-auto-locale: $enableval])
8db7a54b 3737])
fb46b778
FC
3738AC_MSG_NOTICE([Multi-Language support enabled: ${enable_auto_locale:=yes}])
3739SQUID_DEFINE_BOOL(USE_ERR_LOCALES,$enable_auto_locale,
3740 [Use multi-language support on error pages])
3741
43000484 3742
090089c4 3743dnl Need the debugging version of malloc if available
3744XTRA_OBJS=''
fcabe077 3745if test "x$ac_cv_lib_malloc_main" = "xyes" ; then
090089c4 3746 if test -r /usr/lib/debug/malloc.o ; then
3747 XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/malloc.o"
3748 fi
3749 if test -r /usr/lib/debug/mallocmap.o ; then
3750 XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/mallocmap.o"
3751 fi
3752fi
3753AC_SUBST(XTRA_OBJS)
3754
fcabe077 3755if test "x$XTRA_LIBS" = "x"; then
38fea766 3756 XTRA_LIBS="$LIBS"
0f5a16f8 3757 dnl minor cleanup
3758 XTRA_LIBS=`echo $XTRA_LIBS | sed -e "s/ */ /g"`
38fea766 3759 LIBS=''
3760fi
090089c4 3761AC_SUBST(XTRA_LIBS)
3762
daed6927
FC
3763AC_SUBST(SQUID_CFLAGS)
3764AC_SUBST(SQUID_CXXFLAGS)
3765
b2f0a375
AJ
3766AC_ARG_VAR([BUILDCXXFLAGS],[C++ compiler flags for building compile-time tools. e.g. cf_gen])
3767if test "x$BUILDCXXFLAGS" = "x"; then
3768 # if we are NOT cross-compiling, use the default build flags for cf_gen and friends
3769 # otherwise rely on the user-provided value
3770 if test "x$squid_cv_check_marchnative" = "xyes"; then
3771 # always valid for the Build compiler.
b3080eec 3772 BUILDCXXFLAGS="-march=native"
b2f0a375
AJ
3773 fi
3774 BUILDCXXFLAGS="$BUILDCXXFLAGS $CXXFLAGS"
3775fi
3776AC_SUBST(BUILDCXXFLAGS)
3777
90b412dd
AJ
3778AC_MSG_NOTICE([BUILD LIBRARIES: $LIBS])
3779AC_MSG_NOTICE([BUILD EXTRA LIBRARIES: $XTRA_LIBS])
3780AC_MSG_NOTICE([BUILD OBJECTS: $OBJS])
3781AC_MSG_NOTICE([BUILD EXTRA OBJECTS: $XTRA_OBJS])
3782AC_MSG_NOTICE([BUILD C FLAGS: $CFLAGS])
3783AC_MSG_NOTICE([BUILD EXTRA C FLAGS: $SQUID_CFLAGS])
3784AC_MSG_NOTICE([BUILD C++ FLAGS: $CXXFLAGS])
3785AC_MSG_NOTICE([BUILD EXTRA C++ FLAGS: $SQUID_CXXFLAGS])
b2f0a375 3786AC_MSG_NOTICE([BUILD Tools C++ FLAGS: $BUILDCXXFLAGS])
daed6927 3787
090089c4 3788dnl Clean up after OSF/1 core dump bug
3789rm -f core
3790
7a03447c
AJ
3791AC_CONFIG_FILES([
3792 Makefile
3793 compat/Makefile
7a03447c 3794 contrib/Makefile
7a03447c
AJ
3795 doc/Makefile
3796 doc/manuals/Makefile
86b8d400 3797 doc/release-notes/Makefile
6b99776c 3798 errors/Makefile
7a03447c
AJ
3799 helpers/Makefile
3800 helpers/basic_auth/Makefile
3801 helpers/basic_auth/DB/Makefile
3802 helpers/basic_auth/fake/Makefile
3803 helpers/basic_auth/getpwnam/Makefile
3804 helpers/basic_auth/LDAP/Makefile
7a03447c
AJ
3805 helpers/basic_auth/NCSA/Makefile
3806 helpers/basic_auth/NIS/Makefile
3807 helpers/basic_auth/PAM/Makefile
3808 helpers/basic_auth/POP3/Makefile
3809 helpers/basic_auth/RADIUS/Makefile
3810 helpers/basic_auth/SASL/Makefile
3811 helpers/basic_auth/SMB/Makefile
8f0e29d2 3812 helpers/basic_auth/SMB_LM/Makefile
7a03447c
AJ
3813 helpers/basic_auth/SSPI/Makefile
3814 helpers/digest_auth/Makefile
3815 helpers/digest_auth/eDirectory/Makefile
3816 helpers/digest_auth/file/Makefile
3817 helpers/digest_auth/LDAP/Makefile
7a03447c
AJ
3818 helpers/external_acl/Makefile
3819 helpers/external_acl/AD_group/Makefile
ec1fac73 3820 helpers/external_acl/delayer/Makefile
7a03447c
AJ
3821 helpers/external_acl/eDirectory_userip/Makefile
3822 helpers/external_acl/file_userip/Makefile
3823 helpers/external_acl/kerberos_ldap_group/Makefile
3824 helpers/external_acl/LDAP_group/Makefile
3825 helpers/external_acl/LM_group/Makefile
3826 helpers/external_acl/session/Makefile
3827 helpers/external_acl/SQL_session/Makefile
3828 helpers/external_acl/unix_group/Makefile
3829 helpers/external_acl/wbinfo_group/Makefile
3830 helpers/external_acl/time_quota/Makefile
3831 helpers/log_daemon/Makefile
3832 helpers/log_daemon/DB/Makefile
3833 helpers/log_daemon/file/Makefile
6b99776c
AJ
3834 helpers/negotiate_auth/Makefile
3835 helpers/negotiate_auth/kerberos/Makefile
3836 helpers/negotiate_auth/SSPI/Makefile
3837 helpers/negotiate_auth/wrapper/Makefile
3838 helpers/ntlm_auth/Makefile
3839 helpers/ntlm_auth/fake/Makefile
3840 helpers/ntlm_auth/smb_lm/Makefile
3841 helpers/ntlm_auth/SSPI/Makefile
7a03447c
AJ
3842 helpers/storeid_rewrite/Makefile
3843 helpers/storeid_rewrite/file/Makefile
6b99776c
AJ
3844 helpers/url_rewrite/Makefile
3845 helpers/url_rewrite/fake/Makefile
3846 helpers/url_rewrite/LFS/Makefile
3847 icons/Makefile
3848 lib/Makefile
3849 lib/libTrie/Makefile
3850 lib/libTrie/test/Makefile
3851 lib/ntlmauth/Makefile
3852 lib/profiler/Makefile
3853 lib/rfcnb/Makefile
3854 lib/smblib/Makefile
3855 lib/snmplib/Makefile
3856 scripts/Makefile
3857 src/Makefile
3858 src/acl/Makefile
3859 src/adaptation/Makefile
3860 src/adaptation/icap/Makefile
3861 src/adaptation/ecap/Makefile
3862 src/anyp/Makefile
3863 src/auth/Makefile
3864 src/auth/basic/Makefile
3865 src/auth/digest/Makefile
3866 src/auth/negotiate/Makefile
3867 src/auth/ntlm/Makefile
3868 src/base/Makefile
3869 src/clients/Makefile
3870 src/comm/Makefile
4a3b98d7 3871 src/dns/Makefile
13d8c08c 3872 src/DiskIO/Makefile
d9691f09
AJ
3873 src/DiskIO/AIO/Makefile
3874 src/DiskIO/Blocking/Makefile
3875 src/DiskIO/DiskDaemon/Makefile
3876 src/DiskIO/DiskThreads/Makefile
3877 src/DiskIO/IpcIo/Makefile
3878 src/DiskIO/Mmapped/Makefile
6b99776c
AJ
3879 src/esi/Makefile
3880 src/eui/Makefile
3881 src/format/Makefile
3882 src/fs/Makefile
3883 src/ftp/Makefile
3884 src/helper/Makefile
3885 src/http/Makefile
3886 src/http/one/Makefile
3887 src/icmp/Makefile
3888 src/ident/Makefile
3889 src/ip/Makefile
3890 src/ipc/Makefile
3891 src/log/Makefile
3892 src/mem/Makefile
3893 src/mgr/Makefile
3894 src/parser/Makefile
3895 src/repl/Makefile
7dcca85b 3896 src/security/Makefile
bbf79f12
AJ
3897 src/security/cert_validators/Makefile
3898 src/security/cert_validators/fake/Makefile
6b99776c
AJ
3899 src/servers/Makefile
3900 src/snmp/Makefile
3901 src/ssl/Makefile
2745fea5 3902 src/store/Makefile
6b99776c 3903 test-suite/Makefile
94ab55b0 3904 tools/Makefile
33d1abfe 3905 tools/helper-mux/Makefile
2ccf2eb2 3906 tools/purge/Makefile
a35a0ac7 3907 tools/squidclient/Makefile
422cb5da 3908 tools/systemd/Makefile
a35a0ac7 3909 tools/sysvinit/Makefile
53cbe3e4 3910])
43ae1d95 3911
3e7b6055 3912# must configure libltdl subdir unconditionally for "make distcheck" to work
081863f3 3913#AC_CONFIG_SUBDIRS(libltdl)
3e7b6055 3914
6a9f6389 3915AC_OUTPUT