]> git.ipfire.org Git - thirdparty/squid.git/blame - configure.ac
Cleanup various spelling errors
[thirdparty/squid.git] / configure.ac
CommitLineData
bde978a6 1## Copyright (C) 1996-2015 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
de3a7737 8AC_INIT([Squid Web Proxy],[4.0.0-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
32f07882 269DEFAULT_PID_FILE="$localstatedir/run/squid.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
c975f532
DK
460AC_SEARCH_LIBS([shm_open], [rt])
461if test "x$ac_cv_search_shm_open" != "xno" ; then
462 AC_DEFINE(HAVE_SHM,1,[Support shared memory features])
463fi
464
d235bc84 465AC_MSG_CHECKING([for DiskIO modules to be enabled])
50fbcbd6 466squid_disk_module_candidates=""
8075a4da 467squid_opt_enable_diskio="auto" #values: no, yes, "auto"(=yes+detect modules)
2513178d 468AC_ARG_ENABLE(disk-io,
50fbcbd6
FC
469 AS_HELP_STRING([--enable-disk-io="list of modules"],
470 [Build support for the list of disk I/O modules.
471 Set without a value or omitted, all available modules will be built.
472 See src/DiskIO for a list of available modules, or
473 Programmers Guide section on DiskIO
8075a4da
FC
474 for details on how to build your custom disk module]), [
475case $enableval in
2513178d 476 yes)
fe9ddf62 477 ${TRUE}
50fbcbd6 478 #do nothing, "auto" is ok
507ca601 479 ;;
2513178d 480 no)
8075a4da 481 squid_opt_enable_diskio="no"
507ca601 482 ;;
2513178d 483 *)
8075a4da 484 squid_opt_enable_diskio="yes"
47d80734 485 squid_disk_module_candidates=" `echo $enableval| sed -e 's/,/ /g;s/ */ /g'` "
d235bc84 486 SQUID_CLEANUP_MODULES_LIST([squid_disk_module_candidates])
507ca601 487 ;;
2513178d 488 esac
50fbcbd6
FC
489])
490
d235bc84 491# if requested to autodetect, find out what we have
fcabe077 492if test "x$squid_opt_enable_diskio" = "xauto"; then
8075a4da 493 squid_opt_enable_diskio="yes"
50fbcbd6 494 SQUID_LOOK_FOR_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
c975f532
DK
495 if test "x$ac_cv_search_shm_open" = "xno" ; then
496 # disable IpcIo
497 squid_disk_module_candidates=`echo $squid_disk_module_candidates|sed 's/IpcIo//'`
498 fi
50fbcbd6 499fi
d235bc84 500
47d80734 501AC_MSG_RESULT([${squid_disk_module_candidates:-none}])
dc299f29 502SQUID_CHECK_EXISTING_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
0f658b5b 503SQUID_DEFINE_BOOL(USE_DISKIO,$squid_opt_enable_diskio,
50fbcbd6 504 [DiskIO modules are expected to be available.])
2513178d 505
dc299f29 506
40503c27 507
2513178d 508dnl Some autoconf.h defines we might enable later...
0b163dbb
FC
509AC_ARG_WITH(pthreads,AS_HELP_STRING([--without-pthreads],[Disable POSIX Threads]))
510AC_ARG_WITH(aio, AS_HELP_STRING([--without-aio],[Do not use POSIX AIO. Default: auto-detect]))
daf2ddfa 511ENABLE_WIN32_AIOPS=0
ffa3bad9
FC
512squid_opt_use_aio=
513squid_opt_use_diskthreads=
46577dd1 514AIOLIB=
2513178d
AJ
515
516dnl Setup the module paths etc.
2513178d
AJ
517DISK_LIBS=
518DISK_MODULES=
519DISK_LINKOBJS=
d9691f09
AJ
520AH_TEMPLATE(HAVE_DISKIO_MODULE_AIO, [Whether POSIX AIO Disk I/O module is built])
521AH_TEMPLATE(HAVE_DISKIO_MODULE_BLOCKING, [Whether Blocking Disk I/O module is built])
522AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKDAEMON, [Whether DiskDaemon Disk I/O module is built])
523AH_TEMPLATE(HAVE_DISKIO_MODULE_IPCIO, [Whether IpcIo Disk I/O module is built])
524AH_TEMPLATE(HAVE_DISKIO_MODULE_MMAPPED, [Whether Mmapped Disk I/O module is built])
50fbcbd6 525for module in $squid_disk_module_candidates none; do
d235bc84 526 # maybe not needed
fcabe077 527 if test "x$module" = "xnone"; then
507ca601 528 continue
2513178d 529 fi
fcabe077 530 if ! test -d "$srcdir/src/DiskIO/$module"; then
2513178d
AJ
531 AC_MSG_ERROR(disk-io $module does not exist)
532 fi
533 case "$module" in
d9691f09
AJ
534
535 AIO)
536 dnl Check for POSIX AIO availability
537 squid_opt_use_aio="yes"
538 AIOLIB=
539 if test "x$with_aio" != "xno"; then
540 have_aio_header=no
541 AC_CHECK_HEADERS(aio.h,[have_aio_header=yes])
542 dnl On some systems POSIX AIO functions are in librt
543 dnl On some systems POSIX AIO functions are in libaio
544 AC_CHECK_LIB(rt,aio_read,[AIOLIB="-lrt"],AC_CHECK_LIB(aio,aio_read,[AIOLIB="-laio"],[]))
545 dnl Enable AIO if the library and headers are found
546 if test "x$AIOLIB" != "x" && test "x$have_aio_header" = "xyes"; then
547 AC_MSG_NOTICE([Native POSIX AIO support detected.])
548 squid_opt_use_aio="yes"
549 else
550 dnl Windows does things differently. We provide wrappers.
551 dnl TODO: Windows really needs its own DiskIO module or its Overlaped IO
552 case "$squid_host_os" in
553 mingw)
554 squid_opt_use_aio="yes"
555 AC_MSG_NOTICE([Windows being built. Maybe-enable POSIX AIO.])
556 ;;
557 *)
558 AC_MSG_NOTICE([Native POSIX AIO support not detected. AIO automatically disabled.])
559 squid_opt_use_aio="no"
560 ;;
561 esac
562 fi
563 else
564 AC_MSG_NOTICE([POSIX AIO support manually disabled.])
565 squid_opt_use_aio="no"
566 fi
567 dnl Use the POSIX AIO pieces if we actually need them.
568 if test "x$squid_opt_use_aio" = "xyes" ; then
569 DISK_MODULES="$DISK_MODULES AIO"
570 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/AIO/AIODiskIOModule.o"
571 AC_DEFINE([HAVE_DISKIO_MODULE_AIO],1,[POSIX AIO Disk I/O module is built])
572 case "$squid_host_os" in
573 mingw)
574 ENABLE_WIN32_AIO=1
575 AC_MSG_NOTICE([Replacing AIO DiskIO module with: Windows overlapped I/O support])
576 ;;
577 *)
578 AC_MSG_NOTICE([Enabling AIO DiskIO module])
579 ;;
580 esac
581 else
582 AC_MSG_NOTICE([AIO DiskIO Module disabled. Missing POSIX AIO support.])
fedd516f 583 squid_disk_module_candidates_AIO=no
d9691f09
AJ
584 fi
585 ;;
586
587 Blocking)
588 AC_MSG_NOTICE([Enabling Blocking DiskIO module])
589 DISK_MODULES="$DISK_MODULES Blocking"
590 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/Blocking/BlockingDiskIOModule.o"
591 AC_DEFINE([HAVE_DISKIO_MODULE_BLOCKING],1,[Blocking Disk I/O module is built])
592 ;;
593
2513178d 594 DiskDaemon)
1d3aafe4
FC
595 case "$squid_host_os" in
596 mingw)
597 AC_MSG_NOTICE(["DiskDaemon not supported on MinGW"])
fedd516f 598 squid_disk_module_candidates_DiskDaemon=no
1d3aafe4
FC
599 ;;
600 *)
601 AC_MSG_NOTICE([Enabling DiskDaemon DiskIO module])
1d3aafe4 602 DISK_MODULES="$DISK_MODULES DiskDaemon"
1d3aafe4 603 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/DiskDaemon/DiskDaemonDiskIOModule.o"
d9691f09 604 AC_DEFINE([HAVE_DISKIO_MODULE_DISKDAEMON],1,[DiskDaemon Disk I/O module is built])
1d3aafe4
FC
605 ;;
606 esac
507ca601 607 ;;
d9691f09 608
2513178d 609 DiskThreads)
507ca601
FC
610 squid_opt_use_diskthreads="yes"
611 LIBPTHREADS=
612 SQUID_STATE_SAVE([diskthreads_state],[SQUID_CFLAGS SQUID_CXXFLAGS])
613 if test "x$with_pthreads" != "xno"; then
614 dnl TODO: this needs to be extended to handle more systems and better
615 dnl REF: http://www.openldap.org/lists/openldap-bugs/200006/msg00070.html
616 dnl REF: http://autoconf-archive.cryp.to/acx_pthread.html
617 case "$squid_host_os" in
618 mingw)
daf2ddfa 619 ENABLE_WIN32_AIOPS=1
507ca601
FC
620 AC_MSG_NOTICE([Windows threads support automatically enabled])
621 ;;
622 freebsd)
2a76c9c4 623 if test `echo "$squid_host_os_version" | tr -d .` -lt 70 ; then
a0f82085
AJ
624 AC_MSG_NOTICE(pthread library requires FreeBSD 7 or later)
625 squid_opt_use_diskthreads="no"
626 else
627 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
628 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
629 if test "x$GCC" = "xyes" -a "x$PRESET_LDFLAGS" = "x" ; then
630 LDFLAGS="$LDFLAGS -pthread"
631 fi
507ca601
FC
632 fi
633 ;;
ec264296
SH
634 openbsd)
635 if test `echo "$squid_host_os_version" | tr -d .` -lt 52 ; then
636 AC_MSG_NOTICE(pthread library requires OpenBSD 5.2 or later)
637 squid_opt_use_diskthreads="no"
638 else
639 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
640 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
641 LDFLAGS="$LDFLAGS -lpthread"
642 fi
643 ;;
507ca601
FC
644 solaris)
645 if test "x$GCC" = "xyes" ; then
646 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -pthreads"
647 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -pthreads"
648 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
649 AC_MSG_NOTICE(pthread library required but cannot be found.)
650 squid_opt_use_diskthreads="no"
651 ])
652 else
653 dnl test for -lpthread first. libc version is a stub apparently on Solaris.
654 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -lpthread"
655 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -lpthread"
656 AC_SEARCH_LIBS([pthread_create],[pthread thread],[
657 LIBPTHREADS="" #in LIBS
658 ],[
659 AC_MSG_NOTICE(pthread library required but cannot be found.)
660 squid_opt_use_diskthreads="no"
661 ])
662 fi
663 ;;
664 *)
665 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
666 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
667 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
40503c27
FC
668 AC_MSG_NOTICE(pthread library required but cannot be found.)
669 squid_opt_use_diskthreads="no"
670 ])
507ca601
FC
671 ;;
672 esac
673 else
674 AC_MSG_NOTICE([Native pthreads support manually disabled.])
675 squid_opt_use_diskthreads="no"
676 fi
677 if test "x$squid_opt_use_diskthreads" = "xyes" ; then
507ca601 678 AC_MSG_NOTICE([Enabling DiskThreads DiskIO module])
507ca601
FC
679 DISK_MODULES="$DISK_MODULES DiskThreads"
680 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/DiskThreads/DiskThreadsDiskIOModule.o"
d9691f09 681 AC_DEFINE([HAVE_DISKIO_MODULE_DISKTHREADS],1,[DiskThreads Disk I/O module is built])
507ca601 682 else
507ca601 683 AC_MSG_NOTICE([Native pthreads support disabled. DiskThreads module automaticaly disabled.])
0b163dbb 684 SQUID_STATE_ROLLBACK([diskthreads_state])
fedd516f 685 squid_disk_module_candidates_DiskThreads=no
507ca601
FC
686 fi
687 ;;
2513178d 688
d9691f09
AJ
689 IpcIo)
690 AC_MSG_NOTICE([Enabling IpcIo DiskIO module])
691 if test "x$ac_cv_search_shm_open" = "xno" ; then
fedd516f
AJ
692 AC_MSG_NOTICE([DiskIO IpcIo module requires shared memory support])
693 squid_disk_module_candidates_IpcIo=no
694 else
695 DISK_MODULES="$DISK_MODULES IpcIo"
696 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/IpcIo/IpcIoDiskIOModule.o"
697 AC_DEFINE([HAVE_DISKIO_MODULE_IPCIO],1,[IpcIo Disk I/O module is built])
507ca601
FC
698 fi
699 ;;
2513178d 700
e2851fe7 701 Mmapped)
e2cbb70e
FC
702 dnl TODO: use availability of sys/mman.h and/or mmap to define
703 dnl OR support windows mmap functions
704 if test "x$squid_host_os" = "xmingw" ; then
705 AC_MSG_NOTICE([Mmapped DiskIO is not available on Mingw])
fedd516f 706 squid_disk_module_candidates_Mmapped=no
e2cbb70e
FC
707 else
708 AC_MSG_NOTICE([Enabling Mmapped DiskIO module])
e2cbb70e
FC
709 DISK_MODULES="$DISK_MODULES Mmapped"
710 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/Mmapped/MmappedDiskIOModule.o"
d9691f09 711 AC_DEFINE([HAVE_DISKIO_MODULE_MMAPPED],1,[Mmapped Disk I/O module is built])
e2cbb70e 712 fi
e2851fe7
AR
713 ;;
714
2513178d 715 *)
507ca601 716 AC_MSG_NOTICE([Enabling $module DiskIO module])
d9691f09 717 DISK_LIBS="$DISK_LIBS lib${module}.la"
507ca601
FC
718 DISK_MODULES="$DISK_MODULES ${module}"
719 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/${module}/${module}DiskIOModule.o"
720 ;;
2513178d
AJ
721 esac
722done
723AC_MSG_NOTICE([IO Modules built: $DISK_MODULES])
724AC_SUBST(DISK_MODULES)
725AC_SUBST(DISK_LIBS)
2513178d 726AC_SUBST(DISK_LINKOBJS)
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
b5377bef
FC
802
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
1241 AC_CHECK_HEADERS(gnutls/gnutls.h gnutls/x509.h)
1242
1243 # User may have provided a custom location for GnuTLS. Otherwise...
1244 SQUID_STATE_SAVE(squid_gnutls_state)
1245 LIBS="$LIBS $LIBGNUTLS_PATH"
1246
1247 # auto-detect using pkg-config
c113986e 1248 PKG_CHECK_MODULES([LIBGNUTLS],[gnutls >= 3.1.5],,[
b4f805f6 1249 ## find the package without pkg-config
c113986e
AJ
1250 ## check that the library is actually new enough.
1251 ## by testing for a 3.1.5+ function which we use
1252 AC_CHECK_LIB(gnutls,gnutls_certificate_verify_peers3,[LIBGNUTLS_LIBS="-lgnutls"])
b4f805f6
AJ
1253 ])
1254
1255 SQUID_STATE_ROLLBACK(squid_gnutls_state) #de-pollute LIBS
1256
1257 if test "x$with_gnutls" = "xyes" -a "x$LIBGNUTLS_LIBS" = "x"; then
1258 AC_MSG_ERROR([Required GnuTLS library not found])
1259 fi
1260 if test "x$LIBGNUTLS_LIBS" != "x" ; then
1261 CXXFLAGS="$LIBGNUTLS_CFLAGS $CXXFLAGS"
1262 SSLLIB="$LIBGNUTLS_PATH $LIBGNUTLS_LIBS $SSLLIB"
1263 AC_DEFINE(USE_GNUTLS,1,[GnuTLS support is available])
1264 else
1265 with_gnutls=no
1266 fi
1267fi
1268AC_MSG_NOTICE([GnuTLS library support: ${with_gnutls:=auto} ${LIBGNUTLS_PATH} ${LIBGNUTLS_LIBS}])
1269
3d4022fa 1270dnl User may specify OpenSSL is needed from a non-standard location
1f7c9178 1271AC_ARG_WITH(openssl,
f88ca0d1
FC
1272 AS_HELP_STRING([--with-openssl=PATH],
1273 [Compile with the OpenSSL libraries. The path to
86f53af2
FC
1274 the OpenSSL development libraries and headers
1275 installation can be specified if outside of the
f88ca0d1
FC
1276 system standard directories]), [
1277case "$with_openssl" in
a3b28798
HN
1278 yes|no)
1279 : # Nothing special to do here
1f7c9178 1280 ;;
1281 *)
fcabe077 1282 if test ! -d "$withval" ; then
f88ca0d1
FC
1283 AC_MSG_ERROR([--with-openssl path does not point to a directory])
1284 fi
84c3fc14 1285 LIBOPENSSL_PATH="-L$with_openssl/lib"
bcce53ce 1286 CPPFLAGS="-I$with_openssl/include $CPPFLAGS"
a3b28798 1287 with_openssl=yes
1f7c9178 1288 esac
1289])
cb4f4424 1290AH_TEMPLATE(USE_OPENSSL,[OpenSSL support is available])
c41db002
AJ
1291## OpenSSL is default disable due to licensing issues on some OS
1292if test "x$with_openssl" = "xyes"; then
1293 AC_CHECK_HEADERS( \
8693472e 1294 openssl/bio.h \
c41db002
AJ
1295 openssl/err.h \
1296 openssl/md5.h \
1297 openssl/opensslv.h \
1298 openssl/ssl.h \
1299 openssl/x509v3.h \
1300 openssl/engine.h \
1301 openssl/txt_db.h \
1302 )
1303
e0b98074 1304 # User may have provided a custom location for OpenSSL. Otherwise...
84c3fc14
AJ
1305 SQUID_STATE_SAVE(squid_openssl_state)
1306 LIBS="$LIBS $LIBOPENSSL_PATH"
1307
1308 # auto-detect using pkg-config
1309 PKG_CHECK_MODULES([LIBOPENSSL],[openssl],,[
1310 ## For some OS pkg-config is broken or unavailable.
1311 ## Detect libraries the hard way.
1312
1313 # Windows MinGW has some special libraries ...
1314 if test "x$squid_host_os" = "xmingw" ; then
1315 LIBOPENSSL_LIBS='-lssleay32 -leay32 -lgdi32 $LIBOPENSSL_LIBS'
1316 AC_MSG_NOTICE([Windows OpenSSL library support: yes -lssleay32 -leay32 -lgdi32])
1317 fi
e0b98074 1318
84c3fc14
AJ
1319 AC_CHECK_LIB(crypto,[CRYPTO_new_ex_data],[LIBOPENSSL_LIBS="-lcrypto $LIBOPENSSL_LIBS"],[
1320 AC_MSG_ERROR([library 'crypto' is required for OpenSSL])
1321 ])
1322 AC_CHECK_LIB(ssl,[SSL_library_init],[LIBOPENSSL_LIBS="-lssl $LIBOPENSSL_LIBS"],[
1323 AC_MSG_ERROR([library 'ssl' is required for OpenSSL])
e0b98074 1324 ])
84c3fc14 1325 ])
e0b98074 1326
84c3fc14
AJ
1327 # This is a workaround for RedHat 9 brain damage..
1328 if test -d /usr/kerberos/include -a -f /usr/include/openssl/kssl.h; then
1329 AC_MSG_NOTICE([OpenSSL depends on Kerberos])
1330 LIBOPENSSL_LIBS="-L/usr/kerberos/lib $LIBOPENSSL_LIBS"
1331 CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
f11555e0 1332 fi
84c3fc14 1333 SQUID_STATE_ROLLBACK(squid_openssl_state) #de-pollute LIBS
1f7c9178 1334
e0b98074 1335 if test "x$LIBOPENSSL_LIBS" != "x"; then
c41db002 1336 CXXFLAGS="$LIBOPENSSL_CFLAGS $CXXFLAGS"
84c3fc14 1337 SSLLIB="$LIBOPENSSL_PATH $LIBOPENSSL_LIBS $SSLLIB"
cb4f4424 1338 AC_DEFINE(USE_OPENSSL,1,[OpenSSL support is available])
c41db002
AJ
1339
1340 # check for other specific broken implementations
1341 SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS
1342 SQUID_CHECK_OPENSSL_CONST_SSL_METHOD
1343 SQUID_CHECK_OPENSSL_TXTDB
a95989ed 1344 SQUID_CHECK_OPENSSL_HELLO_OVERWRITE_HACK
1f7c9178 1345 fi
e0b98074
AJ
1346 if test "x$SSLLIB" = "x"; then
1347 AC_MSG_ERROR([Required OpenSSL library not found])
f11555e0 1348 fi
1f7c9178 1349fi
84c3fc14 1350AC_MSG_NOTICE([OpenSSL library support: ${with_openssl:=no} ${LIBOPENSSL_PATH} ${LIBOPENSSL_LIBS}])
c41db002 1351AM_CONDITIONAL(ENABLE_SSL,[ test "x$with_openssl" = "xyes" ])
1f7c9178 1352AC_SUBST(SSLLIB)
1353
1a22a39e
MM
1354dnl User may specify MIT Kerberos is needed from a non-standard location
1355AC_ARG_WITH(mit-krb5,
a5c79bf3
AJ
1356 AS_HELP_STRING([--without-mit-krb5],
1357 [Compile without MIT Kerberos support.]), [
1a22a39e
MM
1358case "$with_mit_krb5" in
1359 yes|no)
1360 : # Nothing special to do here
1361 ;;
1362 *)
1363 if test ! -d "$withval" ; then
1364 AC_MSG_ERROR([--with-mit-krb5 path does not point to a directory])
1365 fi
1366 if test -d "$with_mit_krb5/lib64" ; then
1367 LIB_KRB5_PATH="-L$with_mit_krb5/lib64 -L$with_mit_krb5/lib"
1368 else
1369 LIB_KRB5_PATH="-L$with_mit_krb5/lib"
1370 fi
1371 CXXFLAGS="-I$with_mit_krb5/include $CXXFLAGS"
1372 krb5confpath="$with_mit_krb5/bin"
1373 with_mit_krb5=yes
1374esac
1375])
75f3c557 1376AH_TEMPLATE(USE_APPLE_KRB5,[Apple Kerberos support is available])
1a22a39e
MM
1377AH_TEMPLATE(USE_MIT_KRB5,[MIT Kerberos support is available])
1378AH_TEMPLATE(USE_SOLARIS_KRB5,[Solaris Kerberos support is available])
1379
1380dnl User may specify Heimdal Kerberos is needed from a non-standard location
1381AC_ARG_WITH(heimdal-krb5,
a5c79bf3
AJ
1382 AS_HELP_STRING([--without-heimdal-krb5],
1383 [Compile without Heimdal Kerberos support.]), [
1a22a39e
MM
1384case "$with_heimdal_krb5" in
1385 yes|no)
1386 : # Nothing special to do here
1387 ;;
1388 *)
1389 if test ! -d "$withval" ; then
1390 AC_MSG_ERROR([--with-heimdal-krb5 path does not point to a directory])
1391 fi
1392 if test -d "$with_heimdal_krb5/lib64" ; then
1393 LIB_KRB5_PATH="-L$with_heimdal_krb5/lib64 -L$with_heimdal_krb5/lib"
1394 else
1395 LIB_KRB5_PATH="-L$with_heimdal_krb5/lib"
1396 fi
1397 CXXFLAGS="-I$with_heimdal_krb5/include $CXXFLAGS"
1398 krb5confpath="$with_heimdal_krb5/bin"
1399 with_heimdal_krb5=yes
1400esac
1401])
1402AH_TEMPLATE(USE_HEIMDAL_KRB5,[Heimdal Kerberos support is available])
1403
1404
1405
1406dnl User may specify GNU gss is needed from a non-standard location
1407AC_ARG_WITH(gnugss,
a5c79bf3
AJ
1408 AS_HELP_STRING([--without-gnugss],
1409 [Compile without the GNU gss libraries.]), [
1a22a39e
MM
1410case "$with_gnugss" in
1411 yes|no)
1412 : # Nothing special to do here
1413 ;;
1414 *)
1415 if test ! -d "$withval" ; then
1416 AC_MSG_ERROR([--with-gnugss path does not point to a directory])
1417 fi
1418 if test ! -d "$with_gnugss/lib64" ; then
1419 LIB_KRB5_PATH="-L$with_gnugss/lib64 -L$with_gnugss/lib"
1420 else
1421 LIB_KRB5_PATH="-L$with_gnugss/lib"
1422 fi
1423 CXXFLAGS="-I$with_gnugss/include $CXXFLAGS"
1424 krb5confpath=
1425 with_gnugss=yes
1426esac
1427])
1428AH_TEMPLATE(USE_GNUGSS,[GNU gss support is available])
1429
1430# determine krb5 conflicts
1431ac_with_krb5_count=0
1432if test "x$with_mit_krb5" = "xyes"; then
1433 ac_with_krb5_count=`expr $ac_with_krb5_count + 1`
1434fi
1435if test "x$with_heimdal_krb5" = "xyes"; then
1436 ac_with_krb5_count=`expr $ac_with_krb5_count + 1`
1437fi
1438if test "x$with_gnugss" = "xyes"; then
1439 ac_with_krb5_count=`expr $ac_with_krb5_count + 1`
1440fi
1441
1442if test $ac_with_krb5_count -gt 1 ; then
1443 AC_MSG_ERROR([Please choose only one Kerberos library.])
1444elif test $ac_with_krb5_count -eq 0 ; then
1445 # find installed libs via pkg-config or krb5-config
1446 PKG_CHECK_EXISTS(gssapi-krb5 krb5, [with_mit_krb5=yes])
1447 PKG_CHECK_EXISTS(heimdal-gssapi, [with_heimdal_krb5=yes])
1448 PKG_CHECK_EXISTS(gss, [with_gnugss=yes])
1449 if test "x$with_mit_krb5" = "xyes"; then
1450 ac_with_krb5_count=`expr $ac_with_krb5_count + 1`
1451 fi
1452 if test "x$with_heimdal_krb5" = "xyes"; then
1453 ac_with_krb5_count=`expr $ac_with_krb5_count + 1`
1454 fi
1455 if test "x$with_gnugss" = "xyes"; then
1456 ac_with_krb5_count=`expr $ac_with_krb5_count + 1`
1457 fi
1458 if test $ac_with_krb5_count -gt 1 ; then
1459 AC_MSG_ERROR([pkg-config found multiple Kerberos library. Please select one with --with-<kerberos package>])
77f4953d
AJ
1460 elif test $ac_with_krb5_count -eq 0 -a "$cross_compiling" = "no"; then
1461 # Look for krb5-config (unless cross-compiling)
1a22a39e
MM
1462 AC_PATH_PROG(krb5_config,krb5-config,no)
1463 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1464 krb5confpath="`dirname $ac_cv_path_krb5_config`"
1465 ac_heimdal="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i heimdal`"
1466 ac_solaris="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i solaris`"
75f3c557 1467 ac_apple="`$ac_cv_path_krb5_config --vendor 2>/dev/null | grep -c -i apple`"
1a22a39e
MM
1468 if test $ac_heimdal -gt 0 ; then
1469 with_heimdal_krb5=yes
1470 ac_with_krb5_count=1
1471 fi
1472 if test $ac_solaris -gt 0 ; then
1473 with_solaris_krb5=yes
1474 ac_with_krb5_count=1
1475 fi
75f3c557
MM
1476 if test $ac_apple -gt 0 ; then
1477 with_apple_krb5=yes
1478 ac_with_krb5_count=1
1479 fi
1480 if test $ac_heimdal -eq 0 && test $ac_solaris -eq 0 && test $ac_apple -eq 0; then
1a22a39e
MM
1481 with_mit_krb5=yes
1482 ac_with_krb5_count=1
1483 fi
1484 else
9738fa2f 1485 AC_MSG_WARN([Could not find krb5-config in path])
1a22a39e
MM
1486 fi
1487 fi
1488fi
1489
75f3c557 1490if test "x$with_mit_krb5" = "xyes" || test "x$with_apple_krb5" = "xyes" ; then
1a22a39e
MM
1491 SQUID_STATE_SAVE([squid_krb5_save])
1492 LIBS="$LIBS $LIB_KRB5_PATH"
1493
1494 # auto-detect using pkg-config
1495 PKG_CHECK_MODULES([LIB_KRB5],[gssapi-krb5 krb5],,[
77f4953d
AJ
1496 # look for krb5-config (unless cross-compiling)
1497 if test "$cross_compiling" = "no"; then
1498 if test "x$krb5confpath" = "x" ; then
1499 AC_PATH_PROG(krb5_config,krb5-config,no)
1500 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1501 ac_krb5_config="$ac_cv_path_krb5_config"
1502 fi
1503 else
1504 ac_krb5_config="$krb5confpath/krb5-config"
1a22a39e 1505 fi
1a22a39e
MM
1506 fi
1507 if test "x$ac_krb5_config" != "x" && test -x "$ac_krb5_config"; then
1508 # Get libs, etc
1509 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1510 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1511 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1512 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1513 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1514 else
1515 ## For some OS pkg-config is broken or unavailable.
1516 ## Detect libraries the hard way.
1517
b2bdde72 1518 SQUID_STATE_SAVE([squid_mit_save])
1a22a39e
MM
1519 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1520 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
1521 AC_MSG_ERROR([library 'com_err' is required for MIT Kerberos])
1522 ])
b2bdde72 1523 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1524 AC_CHECK_LIB(k5crypto, [main], [LIB_KRB5_LIBS="-lk5crypto $LIB_KRB5_LIBS"],[
1525 AC_MSG_ERROR([library 'k5crypto' is required for MIT Kerberos])
1526 ])
b2bdde72 1527 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1528 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1529 AC_MSG_ERROR([library 'krb5' is required for MIT Kerberos])
1530 ])
b2bdde72 1531 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1532 AC_CHECK_LIB(gssapi_krb5, [main], [LIB_KRB5_LIBS="-lgssapi_krb5 $LIB_KRB5_LIBS"],[
1533 AC_MSG_ERROR([library 'gssapi_krb5' is required for MIT Kerberos])
1534 ])
b2bdde72 1535 SQUID_STATE_ROLLBACK([squid_mit_save])
1a22a39e
MM
1536 fi
1537
1538 ])
1539
1540 if test "x$LIB_KRB5_LIBS" != "x"; then
75f3c557
MM
1541 if test "x$with_apple_krb5" = "xyes" ; then
1542 AC_DEFINE(USE_APPLE_KRB5,1,[Apple Kerberos support is available])
1543 KRB5_FLAVOUR="Apple"
1544 else
1545 AC_DEFINE(USE_MIT_KRB5,1,[MIT Kerberos support is available])
1546 KRB5_FLAVOUR="MIT"
1547 fi
1a22a39e
MM
1548 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1549 KRB5INCS="$LIB_KRB5_CFLAGS"
1a22a39e
MM
1550
1551 # check for other specific broken implementations
1552 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1553 LIBS="$LIBS $KRB5LIBS"
1554
1555 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1556 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1557 AC_CHECK_HEADERS(gssapi/gssapi_generic.h)
1558 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1559 AC_CHECK_HEADERS(profile.h)
1560
1a22a39e
MM
1561 SQUID_CHECK_KRB5_FUNCS
1562
1563 fi
1564 if test "x$KRB5LIBS" = "x"; then
1565 AC_MSG_ERROR([Required Kerberos library not found])
1566 ac_with_krb5_count=0
1567 fi
1568
1569 SQUID_STATE_ROLLBACK([squid_krb5_save])
1570fi
1571
1572if test "x$with_solaris_krb5" = "xyes"; then
1573 SQUID_STATE_SAVE([squid_krb5_save])
1574 LIBS="$LIBS $LIB_KRB5_PATH"
1575
1576 # no pkg-config for solaris native Kerberos
77f4953d
AJ
1577 # look for krb5-config (unless cross-compiling)
1578 if test "$cross_compiling" = "no"; then
1579 if test "x$krb5confpath" = "x" ; then
1580 AC_PATH_PROG(krb5_config,krb5-config,no)
1581 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1582 ac_krb5_config="$ac_cv_path_krb5_config"
1583 fi
1584 else
1585 ac_krb5_config="$krb5confpath/krb5-config"
1a22a39e 1586 fi
1a22a39e
MM
1587 fi
1588 if test "x$ac_krb5_config" != "x" && test -x "$ac_krb5_config"; then
1589 # Get libs, etc
1590 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1591 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1592 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
b2da83da
AJ
1593 # Solaris 10 Update 11 patches the krb5-config tool to produce stderr messages on stdout.
1594 SOLARIS_BROKEN_KRB5CONFIG_GSSAPI="`$ac_krb5_config --libs gssapi 2>/dev/null | grep "krb5-config"`"
1595 if test "x$SOLARIS_BROKEN_KRB5CONFIG_GSSAPI" = "x"; then
1596 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1597 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1598 fi
1a22a39e
MM
1599 else
1600 ## For some OS pkg-config is broken or unavailable.
1601 ## Detect libraries the hard way.
1602
1603 CXXFLAGS="-I/usr/include/kerberosv5 $CXXFLAGS"
1604
b2bdde72 1605 SQUID_STATE_SAVE([squid_solaris_save])
1a22a39e
MM
1606 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1607 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1608 AC_MSG_ERROR([library 'krb5' is required for Solaris Kerberos])
1609 ])
b2bdde72 1610 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1611 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
1612 AC_MSG_ERROR([library 'gss' is required for Solaris Kerberos])
1613 ])
b2bdde72 1614 SQUID_STATE_ROLLBACK([squid_solaris_save])
1a22a39e
MM
1615 fi
1616
1617 if test "x$LIB_KRB5_LIBS" != "x"; then
1618 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1619 KRB5INCS="$LIB_KRB5_CFLAGS"
1620 AC_DEFINE(USE_SOLARIS_KRB5,1,[Solaris Kerberos support is available])
1621 KRB5_FLAVOUR="Solaris"
1622
1623 # check for other specific broken implementations
1624 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1625 LIBS="$LIBS $KRB5LIBS"
1626
1627 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1628 AC_CHECK_HEADERS(gssapi/gssapi.h gssapi/gssapi_ext.h)
1629 AC_CHECK_HEADERS(krb5.h com_err.h)
1630
1631 SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H
1632 if test "x$squid_cv_broken_krb5_h" = "xyes"; then
1633 AC_DEFINE(HAVE_BROKEN_SOLARIS_KRB5_H, 1, [Define to 1 if Solaris krb5.h is broken for C++])
1634 AC_MSG_WARN([You have a broken Solaris <krb5.h> system include.])
1635 AC_MSG_WARN([Please see http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6837512])
1636 AC_MSG_WARN([If you need Kerberos support you will have to patch])
1637 AC_MSG_WARN([your system. See contrib/solaris/solaris-krb5-include.patch])
1638 fi
1639
1640 SQUID_CHECK_KRB5_FUNCS
1641
1642 fi
1643 if test "x$KRB5LIBS" = "x"; then
1644 AC_MSG_ERROR([Required Kerberos library not found])
1645 ac_with_krb5_count=0
1646 fi
1647
1648 SQUID_STATE_ROLLBACK([squid_krb5_save])
1649fi
1650
1651if test "x$with_heimdal_krb5" = "xyes"; then
1652 SQUID_STATE_SAVE([squid_krb5_save])
1653 LIBS="$LIBS $LIB_KRB5_PATH"
1654
1655 # auto-detect using pkg-config
1656 PKG_CHECK_MODULES([LIB_KRB5],[heimdal-gssapi],,[
77f4953d
AJ
1657 # look for krb5-config (unless cross-compiling)
1658 if test "$cross_compiling" = "no"; then
1659 if test "x$krb5confpath" = "x" ; then
1660 AC_PATH_PROG(krb5_config,krb5-config,no)
1661 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1662 ac_krb5_config="$ac_cv_path_krb5_config"
1663 fi
1664 else
1665 ac_krb5_config="$krb5confpath/krb5-config"
1a22a39e 1666 fi
1a22a39e
MM
1667 fi
1668 if test "x$ac_krb5_config" != "x" && test -x "$ac_krb5_config"; then
1669 # Get libs, etc
1670 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1671 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1672 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1673 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1674 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1675 else
1676 ## For some OS pkg-config is broken or unavailable.
1677 ## Detect libraries the hard way.
b2bdde72 1678 SQUID_STATE_SAVE([squid_heimdal_save])
1a22a39e
MM
1679
1680 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1681 AC_CHECK_LIB(resolv, [main], [LIB_KRB5_LIBS="-lresolv $LIB_KRB5_LIBS"],[
1682 AC_MSG_ERROR([library 'resolv' is required for Heimdal Kerberos])
1683 ])
b2bdde72 1684 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1685 AC_CHECK_LIB(crypt, [main], [LIB_KRB5_LIBS="-lcrypt $LIB_KRB5_LIBS"],[
1686 AC_MSG_ERROR([library 'crypt' is required for Heimdal Kerberos])
1687 ])
b2bdde72 1688 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1689 AC_CHECK_LIB(roken, [main], [LIB_KRB5_LIBS="-lroken $LIB_KRB5_LIBS"],[
1690 AC_MSG_ERROR([library 'roken' is required for Heimdal Kerberos])
1691 ])
b2bdde72 1692 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1693 AC_CHECK_LIB(heimbase, [main], [LIB_KRB5_LIBS="-lheimbase $LIB_KRB5_LIBS"],[
1694 AC_MSG_WARN([library 'heimbase' may be required for Heimdal Kerberos])
1695 ])
b2bdde72 1696 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1697 AC_CHECK_LIB(wind, [main], [LIB_KRB5_LIBS="-lwind $LIB_KRB5_LIBS"],[
1698 AC_MSG_WARN([library 'wind' may be required for Heimdal Kerberos])
1699 ])
b2bdde72 1700 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1701 AC_CHECK_LIB(crypto, [main], [LIB_KRB5_LIBS="-lcrypto $LIB_KRB5_LIBS"],[
1702 AC_MSG_ERROR([library 'crypto' is required for Heimdal Kerberos])
1703 ])
b2bdde72 1704 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1705 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
1706 AC_MSG_ERROR([library 'com_err' is required for Heimdal Kerberos])
1707 ])
b2bdde72 1708 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1709 AC_CHECK_LIB(hx509, [main], [LIB_KRB5_LIBS="-lhx509 $LIB_KRB5_LIBS"],[
1710 AC_MSG_WARN([library 'hx509' may be required for Heimdal Kerberos])
1711 ])
b2bdde72 1712 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1713 AC_CHECK_LIB(asn1, [main], [LIB_KRB5_LIBS="-lasn1 $LIB_KRB5_LIBS"],[
1714 AC_MSG_ERROR([library 'asn1' is required for Heimdal Kerberos])
1715 ])
b2bdde72 1716 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1717 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1718 AC_MSG_ERROR([library 'krb5' is required for Heimdal Kerberos])
1719 ])
b2bdde72 1720 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1721 AC_CHECK_LIB(heimntlm, [main], [LIB_KRB5_LIBS="-lheimntlm $LIB_KRB5_LIBS"],[
1722 AC_MSG_WARN([library 'heimntlm' may be required for Heimdal Kerberos])
1723 ])
b2bdde72 1724 LIBS=$LIB_KRB5_LIBS
1a22a39e
MM
1725 AC_CHECK_LIB(gssapi, [main], [LIB_KRB5_LIBS="-lgssapi $LIB_KRB5_LIBS"],[
1726 AC_MSG_ERROR([library 'gssapi' is required for Heimdal Kerberos])
1727 ])
b2bdde72 1728 SQUID_STATE_ROLLBACK([squid_heimdal_save])
1a22a39e
MM
1729 fi
1730
1731 ])
1732 if test "x$LIB_KRB5_LIBS" != "x"; then
1733 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1734 KRB5INCS="$LIB_KRB5_CFLAGS"
1735 AC_DEFINE(USE_HEIMDAL_KRB5,1,[Heimdal Kerberos support is available])
1736 KRB5_FLAVOUR="Heimdal"
1737
1738 # check for other specific broken implementations
1739 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1740 LIBS="$LIBS $KRB5LIBS"
1741
1742 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1743 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1744 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1745
1746 SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H
1747 if test "x$squid_cv_broken_heimdal_krb5_h" = "xyes"; then
1748 AC_DEFINE(HAVE_BROKEN_HEIMDAL_KRB5_H, 1, [Define to 1 if Heimdal krb5.h is broken for C++])
1749 fi
1750
1a22a39e
MM
1751 SQUID_CHECK_KRB5_FUNCS
1752
1753 fi
1754 if test "x$KRB5LIBS" = "x"; then
1755 AC_MSG_ERROR([Required Kerberos library not found])
1756 ac_with_krb5_count=0
1757 fi
1758
1759 SQUID_STATE_ROLLBACK([squid_krb5_save])
1760fi
1761
1762if test "x$with_gnugss" = "xyes"; then
1763 SQUID_STATE_SAVE([squid_krb5_save])
1764 LIBS="$LIBS $LIB_KRB5_PATH"
1765
1766 # auto-detect using pkg-config
1767 PKG_CHECK_MODULES([LIB_KRB5],[gss],,[
1768 ## For some OS pkg-config is broken or unavailable.
1769 ## Detect libraries the hard way.
1770
1771 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1772 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
1773 AC_MSG_ERROR([library 'com_err' is required for GNU Kerberos])
1774 ])
1775
1776 ])
1777
1778 if test "x$LIB_KRB5_LIBS" != "x"; then
1779 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1780 KRB5INCS="$LIB_KRB5_CFLAGS"
1781 AC_DEFINE(USE_GNUGSS,1,[GNU Kerberos support is available])
1782 KRB5_FLAVOUR="GNU GSS"
1783
1784 # check for other specific broken implementations
1785 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1786 LIBS="$LIBS $KRB5LIBS"
1787
1788 AC_MSG_NOTICE([Try to find Kerbeors headers in given path])
1789 AC_CHECK_HEADERS(gss.h)
1790
1791 SQUID_CHECK_WORKING_GSSAPI
1792 SQUID_DEFINE_BOOL(HAVE_GSSAPI,$squid_cv_working_gssapi,[GSSAPI support])
1793
1794 SQUID_CHECK_SPNEGO_SUPPORT
1795 SQUID_DEFINE_BOOL(HAVE_SPNEGO,$squid_cv_have_spnego,[SPNEGO support])
1796
1797 SQUID_CHECK_WORKING_KRB5
1798 SQUID_DEFINE_BOOL(HAVE_KRB5,$squid_cv_working_krb5,[KRB5 support])
1799
1800 fi
1801 if test "x$KRB5LIBS" = "x"; then
1802 AC_MSG_ERROR([Required Kerberos library not found])
1803 ac_with_krb5_count=0
1804 fi
1805
1806 SQUID_STATE_ROLLBACK([squid_krb5_save])
1807fi
1808if test $ac_with_krb5_count -gt 0 ; then
1809 with_krb5=yes
1810fi
1811AC_MSG_NOTICE([$KRB5_FLAVOUR Kerberos library support: ${with_krb5:=no} ${LIB_KRB5_PATH} ${LIB_KRB5_LIBS}])
1812AC_SUBST(KRB5INCS)
1813AC_SUBST(KRB5LIBS)
1814AM_CONDITIONAL(HAVE_SPNEGO, test x"$squid_cv_have_spnego" = x"yes" )
1815
1816dnl On MinGW OpenLDAP is not available, so LDAP helpers can be linked
1817dnl only with Windows LDAP libraries using -lwldap32
1818case "$squid_host_os" in
1819 mingw)
1820 LDAPLIB="-lwldap32"
1821 LBERLIB=""
1822 ;;
1823 *)
1824 AC_CHECK_LIB(ldap, ldap_init, [LDAPLIB="-lldap"])
1825 dnl LDAP helpers need to know if -llber is needed or not
1826 AC_CHECK_LIB(lber, ber_init, [LBERLIB="-llber"])
1827 dnl if no ldap lib found check for mozilla version
1828 if test "x$ac_cv_lib_ldap_ldap_init" != x""yes; then
1829 oLIBS=$LIBS
1830 LIBS="$LIBPTHREADS"
1831 AC_CHECK_LIB(ldap60, ldap_init, [LDAPLIB="-lldap60"])
1832 LIBS="$LDAPLIB $LIBPTHREADS"
1833 AC_CHECK_LIB(prldap60, prldap_init, [LDAPLIB="-lprldap60 $LDAPLIB"])
1834 LIBS="$LDAPLIB $LIBPTHREADS"
1835 AC_CHECK_LIB(ssldap60, ldapssl_init, [LDAPLIB="-lssldap60 $LDAPLIB"])
1836 LIBS=$oLIBS
1837 fi
1838
1839 AC_CHECK_HEADERS(ldap.h lber.h)
1840 AC_CHECK_HEADERS(mozldap/ldap.h)
1841
1842 dnl
1843 dnl Check for LDAP_OPT_DEBUG_LEVEL
1844 dnl
1845 AC_MSG_CHECKING([for LDAP_OPT_DEBUG_LEVEL])
1846 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1847# include <ldap.h>
1848 ]],[[
1849 int i=LDAP_OPT_DEBUG_LEVEL
1850 ]])],
1851 [ AC_MSG_RESULT(yes) ],
1852 [ AC_MSG_RESULT(no) ])
1853
1854 dnl
1855 dnl Check for working ldap
1856 dnl
1857 oLIBS=$LIBS
1858 LIBS="$LDAPLIB $LBERLIB $LIBPTHREADS"
1859 AC_MSG_CHECKING([for working ldap])
1860 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1861# define LDAP_DEPRECATED 1
1862# if HAVE_LDAP_H
1863# include <ldap.h>
1864# elif HAVE_MOZLDAP_LDAP_H
1865# include <mozldap/ldap.h>
1866# endif
1867 int
1868 main(void)
1869 {
1870 char host[]="";
1871 int port;
1872
1873 ldap_init((const char *)&host, port);
1874
1875 return 0;
1876 }
1877 ]])],
1878 [ AC_DEFINE(HAVE_LDAP, 1, [LDAP support])
1879 AC_MSG_RESULT(yes) ],
1880 [ AC_MSG_RESULT(no) ],
1881 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1882 LIBS=$oLIBS
1883
1884 dnl
1885 dnl Check for ldap vendor
1886 dnl
1887 AC_MSG_CHECKING([for OpenLDAP])
1888 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1889# if HAVE_LDAP_H
1890# include <ldap.h>
1891# endif
1892# include <string.h>
1893 int
1894 main(void)
1895 {
1896 return strcmp(LDAP_VENDOR_NAME,"OpenLDAP");
1897 }
1898 ]])],
1899 [ AC_DEFINE(HAVE_OPENLDAP, 1, [OpenLDAP support])
1900 AC_MSG_RESULT(yes) ],
1901 [ AC_MSG_RESULT(no) ],
1902 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1903
1904 AC_MSG_CHECKING([for Sun LDAP SDK])
1905 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1906# if HAVE_LDAP_H
1907# include <ldap.h>
1908# endif
1909# include <string.h>
1910 int
1911 main(void)
1912 {
1913 return strcmp(LDAP_VENDOR_NAME,"Sun Microsystems Inc.");
1914 }
1915 ]])],
1916 [ AC_DEFINE(HAVE_SUN_LDAP_SDK, 1, [Sun LDAP SDK support])
1917 AC_MSG_RESULT(yes) ],
1918 [ AC_MSG_RESULT(no) ],
1919 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1920
1921 AC_MSG_CHECKING([for Mozilla LDAP SDK])
1922 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1923# if HAVE_LDAP_H
1924# include <ldap.h>
1925# elif HAVE_MOZLDAP_LDAP_H
1926# include <mozldap/ldap.h>
1927# endif
1928# include <string.h>
1929 int
1930 main(void)
1931 {
1932 return strcmp(LDAP_VENDOR_NAME,"mozilla.org");
1933 }
1934 ]])],
1935 [ AC_DEFINE(HAVE_MOZILLA_LDAP_SDK, 1, [Mozilla LDAP SDK support])
1936 AC_MSG_RESULT(yes) ],
1937 [ AC_MSG_RESULT(no)],
1938 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1939
1940 dnl
1941 dnl Check for LDAP_REBINDPROC_CALLBACK
1942 dnl
1943 AC_MSG_CHECKING([for LDAP_REBINDPROC_CALLBACK])
1944 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1945# if HAVE_LDAP_H
1946# include <ldap.h>
1947# elif HAVE_MOZLDAP_LDAP_H
1948# include <mozldap/ldap.h>
1949# endif
1950 ]],[[
1951 LDAP_REBINDPROC_CALLBACK ldap_rebind;
1952 ]])],
1953 [ AC_DEFINE(HAVE_LDAP_REBINDPROC_CALLBACK,1,[Define to 1 if you have LDAP_REBINDPROC_CALLBACK])
1954 AC_MSG_RESULT(yes) ],
1955 [ AC_MSG_RESULT(no) ])
1956
1957 dnl
1958 dnl Check for LDAP_REBIND_PROC
1959 dnl
1960 AC_MSG_CHECKING([for LDAP_REBIND_PROC])
1961 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1962# if HAVE_LDAP_H
1963# include <ldap.h>
1964# elif HAVE_MOZLDAP_LDAP_H
1965# include <mozldap/ldap.h>
1966# endif
1967 ]],[[
1968 LDAP_REBIND_PROC ldap_rebind;
1969 ]])],
1970 [ AC_DEFINE(HAVE_LDAP_REBIND_PROC,1,[Define to 1 if you have LDAP_REBIND_PROC])
1971 AC_MSG_RESULT(yes) ],
1972 [ AC_MSG_RESULT(no) ])
1973
1974 dnl
1975 dnl Check for LDAP_REBIND_FUNCTION
1976 dnl
1977 AC_MSG_CHECKING([for LDAP_REBIND_FUNCTION])
1978 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1979# define LDAP_REFERRALS
1980# if HAVE_LDAP_H
1981# include <ldap.h>
1982# elif HAVE_MOZLDAP_LDAP_H
1983# include <mozldap/ldap.h>
1984# endif
1985 ]],[[
1986 LDAP_REBIND_FUNCTION ldap_rebind;
1987 ]])],
1988 [ AC_DEFINE(HAVE_LDAP_REBIND_FUNCTION,1,[Define to 1 if you have LDAP_REBIND_FUNCTION])
1989 AC_MSG_RESULT(yes) ],
1990 [ AC_MSG_RESULT(no) ])
1991
1992 dnl
1993 dnl Check for LDAP_SCOPE_DEFAULT
1994 dnl
1995 AC_MSG_CHECKING([for LDAP_SCOPE_DEFAULT])
1996 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1997# if HAVE_LDAP_H
1998# include <ldap.h>
1999# elif HAVE_MOZLDAP_LDAP_H
2000# include <mozldap/ldap.h>
2001# endif
2002 ]],[[
2003 int i=LDAP_SCOPE_DEFAULT;
2004 ]])],
2005 [ AC_DEFINE(HAVE_LDAP_SCOPE_DEFAULT,1,[Define to 1 if you have LDAP_SCOPE_DEFAULT])
2006 AC_MSG_RESULT(yes) ],
2007 [ AC_MSG_RESULT(no) ])
2008
2009 dnl
2010 dnl Check for ldap_url_desc.lud_scheme
2011 dnl
2012 AC_CHECK_MEMBER(struct ldap_url_desc.lud_scheme,
2013 AC_DEFINE(HAVE_LDAP_URL_LUD_SCHEME,1,
2014 [Define to 1 if you have LDAPURLDesc.lud_scheme]),,[#include <ldap.h>])
2015
2016 dnl
2017 dnl Check for ldapssl_client_init
2018 dnl
2019 AC_CHECK_LIB(ldap,ldapssl_client_init,
2020 AC_DEFINE(HAVE_LDAPSSL_CLIENT_INIT,1,[Define to 1 if you have ldapssl_client_init]),)
2021
2022 dnl
2023 dnl Check for ldap_url_desc2str
2024 dnl
2025 AC_CHECK_LIB(ldap,ldap_url_desc2str,
2026 AC_DEFINE(HAVE_LDAP_URL_DESC2STR,1,[Define to 1 if you have ldap_url_desc2str]),)
2027
2028 dnl
2029 dnl Check for ldap_url_parse
2030 dnl
2031 AC_CHECK_LIB(ldap,ldap_url_parse,
2032 AC_DEFINE(HAVE_LDAP_URL_PARSE,1,[Define to 1 if you have ldap_url_parse]),)
2033
2034 dnl
2035 dnl Check for ldap_start_tls_s
2036 dnl
2037 AC_CHECK_LIB(ldap,ldap_start_tls_s,
2038 AC_DEFINE(HAVE_LDAP_START_TLS_S,1,[Define to 1 if you have ldap_start_tls_s]),)
2039 ;;
2040esac
2041
2042AC_SUBST(LDAPLIB)
2043AC_SUBST(LBERLIB)
2044
02749868 2045AC_ARG_ENABLE(forw-via-db,
47d80734
FC
2046 AS_HELP_STRING([--enable-forw-via-db],[Enable Forw/Via database]), [
2047 SQUID_YESNO([$enableval],[unrecognized argument to --enable-forw-via-db: $enableval])
02749868 2048])
21f6708d 2049SQUID_DEFINE_BOOL(USE_FORW_VIA_DB,${enable_forw_via_db:=no},
9676633b
FC
2050 [Enable Forw/Via database])
2051AC_MSG_NOTICE([Forw/Via database enabled: $enable_forw_via_db])
02749868 2052
6cfa8966 2053AC_ARG_ENABLE(cache-digests,
47d80734 2054 AS_HELP_STRING([--enable-cache-digests],
9676633b
FC
2055 [Use Cache Digests. See http://wiki.squid-cache.org/SquidFaq/CacheDigests]),
2056[
2057 SQUID_YESNO($enableval,
2058 [unrecognized argument to --enable-cache-digests: $enableval])
484f2ebc 2059])
0067eb06 2060SQUID_DEFINE_BOOL(USE_CACHE_DIGESTS,${enable_cache_digests:=no},
47d80734 2061 [Use Cache Digests for locating objects in neighbor caches.])
9676633b 2062AC_MSG_NOTICE([Cache Digests enabled: $enable_cache_digests])
47d80734 2063
484f2ebc 2064
9676633b
FC
2065################################
2066# check for netio plugin stuff #
2067################################
2068dnl order of these options handling is relevant in case the user
2069dnl supplies more than one --enable option. Options handled later
2070dnl override those handled earlier for io loop method manual override
2071AC_ARG_ENABLE(select,
2072 AS_HELP_STRING([--disable-select],[Disable select(2) support.]),
2073[
2074SQUID_YESNO($enableval,[--disable-select takes no extra argument])
39145d19
AJ
2075if test "x$enableval" = "xyes"; then
2076 if test "x$squid_host_os" = "xmingw"; then
2077 squid_opt_io_loop_engine="select_win32"
2078 else
2079 squid_opt_io_loop_engine="select"
2080 fi
2081fi
9676633b
FC
2082])
2083AC_MSG_NOTICE([enabling select syscall for net I/O: ${enable_select:=auto}])
cd748f27 2084
9bb83c8b 2085AC_ARG_ENABLE(poll,
62979ab1 2086 AS_HELP_STRING([--disable-poll],[Disable poll(2) support.]),
1b3db6d9 2087[
9676633b 2088SQUID_YESNO($enableval,[--disable-poll takes no extra argument])
fcabe077 2089test "x$enableval" = "xyes" && squid_opt_io_loop_engine="poll"
9bb83c8b 2090])
9676633b 2091AC_MSG_NOTICE([enabling poll syscall for net I/O: ${enable_poll:=auto}])
9bb83c8b 2092
1b3db6d9 2093AC_ARG_ENABLE(kqueue,
26d50fd2
AJ
2094 AS_HELP_STRING([--disable-kqueue],
2095 [Disable kqueue(2) support.]), [
9676633b 2096SQUID_YESNO($enableval,[--enable-kqueue takes no extra argument])
1b3db6d9 2097])
26d50fd2
AJ
2098if test "x${enable_kqueue:=auto}" != "xno" ; then
2099 AC_CHECK_HEADERS([sys/event.h],[],[
2100 if test "x${enable_kqueue}" = "xyes" ; then
2101 AC_MSG_ERROR([kqueue support requires sys/event.h header file.])
2102 fi
2103 ])
2104 AC_CHECK_FUNCS(kqueue,[],[
2105 if test "x${enable_kqueue}" = "xyes" ; then
2106 AC_MSG_ERROR([kqueue support missing in libc library.])
2107 fi
2108 ])
2109 if test "x$ac_cv_func_kqueue" = "xyes" -a "x$ac_cv_header_sys_event_h" = "xyes" ; then
2110 squid_opt_io_loop_engine="kqueue"
2111 else
2112 enable_kqueue="no"
2113 fi
9676633b 2114fi
26d50fd2 2115AC_MSG_NOTICE([enabling kqueue for net I/O: ${enable_kqueue:=auto}])
1b3db6d9 2116
a46d2c0e 2117dnl Enable epoll()
a46d2c0e 2118AC_ARG_ENABLE(epoll,
62979ab1 2119 AS_HELP_STRING([--disable-epoll],[Disable Linux epoll(2) support.]),
a46d2c0e 2120[
9676633b 2121SQUID_YESNO($enableval,[--disable-epoll takes no extra argument])
fcabe077 2122test "x$enableval" = "xyes" && squid_opt_io_loop_engine="epoll"
a46d2c0e 2123])
9676633b 2124AC_MSG_NOTICE([enabling epoll syscall for net I/O: ${enable_epoll:=auto}])
2ca8b332 2125
9676633b
FC
2126# auto-detect and verify epoll header and library present and working
2127# logic mapping and loop method selection are performed later
fcabe077 2128if test "x$enable_epoll" != "xno" ; then
2ca8b332 2129
9676633b
FC
2130 # check if libs are needed to support epoll
2131 # note: this code block seems quite generic. Could it be extracted
2132 # into a squid specific configure function?
af1e01a8 2133 SQUID_STATE_SAVE(squid_epoll_state)
9676633b 2134 AC_SEARCH_LIBS(epoll_ctl,[epoll])
fcabe077 2135 if test "x$ac_cv_search_epoll_ctl" = "xno" ; then
9676633b 2136 enable_epoll=no #disable. Needed code not found
fcabe077 2137 elif test "x$ac_cv_search_epoll_ctl" = "xnone required" ; then
9676633b
FC
2138 EPOLL_LIBS=""
2139 else
2140 EPOLL_LIBS=$ac_cv_search_epoll_ctl
2141 fi
2142 AC_SUBST(EPOLL_LIBS)
2143 SQUID_STATE_ROLLBACK(squid_epoll_state) #de-pollute LIBS
a46d2c0e 2144
9676633b 2145 # epoll requires sys/epoll.h
98d13964 2146 AC_CHECK_HEADERS([sys/epoll.h])
ad32c661
AJ
2147
2148 dnl Verify that epoll really works
dcac6885 2149 if test "x$ac_cv_search_epoll_ctl" != 'xno' ; then
af1e01a8 2150 SQUID_CHECK_EPOLL
ad32c661 2151 fi
2ca8b332 2152
fcabe077 2153 if test "x$enable_epoll" = "xyes" -a "x$squid_cv_epoll_works" = "xno" ; then
2ca8b332
AJ
2154 AC_MSG_ERROR([Epoll does not work. Force-enabling it is not going to help.])
2155 fi
ad32c661 2156fi
a46d2c0e 2157
a1ad2f9b
AJ
2158dnl Enable /dev/poll
2159AC_ARG_ENABLE(devpoll,
2160 AS_HELP_STRING([--disable-devpoll],[Disable Solaris /dev/poll support.]),
2161[
2162SQUID_YESNO($enableval,[--disable-devpoll takes no extra argument])
2163test "x$enableval" = "xyes" && squid_opt_io_loop_engine="devpoll"
2164])
2165AC_MSG_NOTICE([enabling /dev/poll for net I/O: ${enable_devpoll:=auto}])
2166
2167## auto-detect and verify devpoll header and library present and working
2168if test "x$enable_devpoll" != "xno"; then
2169
2170 # /dev/poll requires ioctl() and write()
2171 AC_CHECK_FUNCS(ioctl)
2172 AC_CHECK_FUNCS(write)
2173
2174 # /dev/poll requires sys/devpoll.h
2175 AC_CHECK_HEADERS([sys/devpoll.h],,[
2176 if test "x$enable_devpoll" = "xyes"; then
2177 AC_MSG_ERROR([--enable-devpoll specified but /dev/poll headers not found])
2178 fi
2179 enable_devpoll=no])
2180
2181 # Verify that /dev/poll really works
2182 if test "x$enable_devpoll" != 'xno' ; then
2183 SQUID_CHECK_DEVPOLL
2184 fi
2185
2186 if test "x$enable_devpoll" = "xyes" -a "x$squid_cv_devpoll_works" = "xno" ; then
2187 AC_MSG_ERROR([/dev/poll does not work. Force-enabling it is not going to help.])
2188 fi
2189fi
2190
9676633b 2191
72fd085a 2192AC_ARG_ENABLE(http-violations,
af1e01a8
FC
2193 AS_HELP_STRING([--disable-http-violations],
2194 [This allows you to remove code which is known to
47d80734 2195 violate the HTTP protocol specification.]), [
9676633b
FC
2196 SQUID_YESNO([$enableval],
2197 [unrecognized argument to --disable-http-violations: $enableval])
72fd085a 2198])
626096be 2199SQUID_DEFINE_BOOL(USE_HTTP_VIOLATIONS, ${enable_http_violations:=yes},
47d80734 2200 [Define to enable code which volates the HTTP standard specification])
9676633b 2201AC_MSG_NOTICE([HTTP violations support enabled: $enable_http_violations])
72fd085a 2202
47d80734 2203# IPFW Transparent Proxy
68075fad 2204AC_ARG_ENABLE(ipfw-transparent,
1d26e252
FC
2205 AS_HELP_STRING([--enable-ipfw-transparent],
2206 [Enable Transparent Proxy support for systems
47d80734 2207 using FreeBSD IPFW-style firewalling.]), [
1d26e252
FC
2208 SQUID_YESNO([$enableval],
2209 [unrecognized argument to --enable-ipfw-transparent: $enableval])
68075fad 2210])
0067eb06 2211SQUID_DEFINE_BOOL(IPFW_TRANSPARENT,${enable_ipfw_transparent:=no},
2277004e 2212 [Enable support for Transparent Proxy on systems using FreeBSD IPFW-style firewalling.])
1d26e252 2213AC_MSG_NOTICE([FreeBSD IPFW-based transparent proxying enabled: $enable_ipfw_transparent])
68075fad 2214
47d80734 2215# IP-Filter Transparent Proxy
5cafc1d6 2216AC_ARG_ENABLE(ipf-transparent,
2277004e 2217 AS_HELP_STRING([--enable-ipf-transparent],
1d26e252
FC
2218 [Enable Transparent Proxy support using IPFilter-style firewalling]), [
2219 SQUID_YESNO([$enableval],
2220 [unrecognized argument to --enable-ipf-transparent: $enableval])
5cafc1d6 2221])
be0c7ff0 2222#will be AC_DEFINEd later, after checking for appropriate infrastructure
4bd144d2
FC
2223#IPF currently broken. Default-disabled for now.
2224AC_MSG_NOTICE([IPF-based transparent proxying requested: ${enable_ipf_transparent:=no}])
5cafc1d6 2225
2b0dd4ac 2226dnl Enable PF Transparent Proxy
2227AC_ARG_ENABLE(pf-transparent,
2277004e 2228 AS_HELP_STRING([--enable-pf-transparent],
47d80734 2229 [Enable Transparent Proxy support for systems using PF network address redirection.]), [
1d26e252
FC
2230 SQUID_YESNO([$enableval],
2231 [unrecognized argument to --enable-pf-transparent: $enableval])
2b0dd4ac 2232])
be0c7ff0 2233#will be AC_DEFINEd later, after checking for appropriate infrastructure
b2192042
AJ
2234AC_MSG_NOTICE([PF-based transparent proxying requested: ${enable_pf_transparent:=no}])
2235
2236dnl Enable /dev/pf support for older PF Transparent Proxy systems (OpenBSD 4.x and older)
2237AC_ARG_WITH(nat-devpf,
2238 AS_HELP_STRING([--with-nat-devpf],
2239 [Enable /dev/pf support for NAT on older OpenBSD and FreeBSD kernels.]), [
2240 SQUID_YESNO([$enableval],
2241 [unrecognized argument to --with-nat-devpf: $enableval])
2242])
2243#will be AC_DEFINEd later, after checking for appropriate infrastructure
2244AC_MSG_NOTICE([NAT lookups via /dev/pf: ${with_nat_devpf:=no}])
2b0dd4ac 2245
4bd144d2 2246# Linux Netfilter Transparent Proxy
d852fbad 2247AC_ARG_ENABLE(linux-netfilter,
20ad76ab 2248 AS_HELP_STRING([--enable-linux-netfilter],
96f08e2d 2249 [Enable Transparent Proxy support for Linux (Netfilter)]), [
4bd144d2
FC
2250 SQUID_YESNO([$enableval],
2251 [unrecognized argument to --enable-linux-netfilter: $enableval])
d852fbad 2252])
4bd144d2 2253AC_MSG_NOTICE([Linux Netfilter support requested: ${enable_linux_netfilter:=auto}])
be0c7ff0 2254#will be AC_DEFINEd later, after checking for appropriate infrastructure
d852fbad 2255
425de4c8
AJ
2256
2257dnl Look for libnetfilter_conntrack options (needed for QOS netfilter marking)
11e8cfe3 2258dnl squid_opt_netfilterconntrack is set only when option is explicity specified
425de4c8
AJ
2259AC_ARG_WITH(netfilter-conntrack,
2260 AS_HELP_STRING([--without-netfilter-conntrack],
2261 [Do not use Netfilter conntrack libraries for packet marking.
2262 A path to alternative library location may be specified by
2263 using --with-netfilter-conntrack=PATH. Default: auto-detect.]), [
f4f6c2e0
AJ
2264case "$with_netfilter_conntrack" in
2265 yes|no)
11e8cfe3 2266 squid_opt_netfilterconntrack=$with_netfilter_conntrack
f4f6c2e0
AJ
2267 ;;
2268 *)
2269 if test ! -d "$withval" ; then
2270 AC_MSG_ERROR([--without-netfilter-conntrack path does not point to a directory])
2271 fi
2272 squid_opt_netfilterconntrackpath=$withval
2273 LDFLAGS="-L$squid_opt_netfilterconntrackpath/lib $LDFLAGS"
2274 CPPFLAGS="-I$squid_opt_netfilterconntrackpath/include $CPPFLAGS"
425de4c8 2275 with_netfilter_conntrack=yes
11e8cfe3 2276 squid_opt_netfilterconntrack=yes
f4f6c2e0 2277 esac
425de4c8 2278])
f4f6c2e0
AJ
2279AC_MSG_NOTICE([Linux Netfilter Conntrack support requested: ${with_netfilter_conntrack:=auto}])
2280if test "x$with_netfilter_conntrack" != "xno"; then
2281 AC_SEARCH_LIBS([nfct_query], [netfilter_conntrack],,[
2282 if test x"$with_netfilter_conntrack" = "xyes"; then
2283 AC_MSG_ERROR([--with-netfilter-conntrack specified but libnetfilter-conntrack library not found])
425de4c8 2284 fi
f4f6c2e0 2285 with_netfilter_conntrack=no])
425de4c8 2286 AC_CHECK_HEADERS([libnetfilter_conntrack/libnetfilter_conntrack.h \
f4f6c2e0
AJ
2287 libnetfilter_conntrack/libnetfilter_conntrack_tcp.h],,[
2288 if test x"$with_netfilter_conntrack" = "xyes"; then
2289 AC_MSG_ERROR([--with-netfilter-conntrack specified but libnetfilter-conntrack headers not found])
2290 fi
2291 with_netfilter_conntrack=no])
88a2a8c6
AJ
2292 # If nothing is broken; enable the libraries usage.
2293 if test "x$with_netfilter_conntrack" != "xno"; then
2294 with_netfilter_conntrack=yes
2295 fi
425de4c8
AJ
2296fi
2297
2298
bb7b5fd0 2299dnl Enable Large file support
2df6213e 2300buildmodel=""
2277004e 2301squid_opt_enable_large_files=no
2df6213e 2302
2303AC_ARG_WITH(large-files,
507ca601
FC
2304 AS_HELP_STRING([--with-large-files],[Enable support for large files (logs etc).]), [
2305 if test "x$withval" = "xyes"; then
2306 squid_opt_enable_large_files=yes
bb7b5fd0 2307 fi
2308])
2309
2df6213e 2310dnl UNIX Build environment
be0c7ff0 2311dnl AS_HELP_STRING is not suited here because it cannot to specify newlines
2df6213e 2312AC_ARG_WITH(build-environment,
507ca601
FC
2313 AS_HELP_STRING([--with-build-environment=model],
2314 [The build environment to use. Normally one of
2315 POSIX_V6_ILP32_OFF32 (32 bits),
2316 POSIX_V6_ILP32_OFFBIG (32 bits with large file support),
2317 POSIX_V6_LP64_OFF64 (64 bits),
2318 POSIX_V6_LPBIG_OFFBIG (large pointers and files),
2319 XBS5_ILP32_OFF32 i(legacy, 32 bits),
2320 XBS5_ILP32_OFFBIG (legacy, 32 bits with large file support),
2321 XBS5_LP64_OFF64 (legacy, 64 bits),
2322 XBS5_LPBIG_OFFBIG (legacy, large pointers and files)
2323 or default (The default for your OS)]), [
2324case "$withval" in
2df6213e 2325 yes|no)
507ca601
FC
2326 AC_MSG_FAILURE([--with-build-environment expects a build environment string as used by getconf])
2327 ;;
2df6213e 2328 *)
507ca601
FC
2329 buildmodel="$withval"
2330 ;;
2331esac
2df6213e 2332])
2333
228332d3
FC
2334#hack. Let's early-detect sizeof(long)
2335AC_CHECK_SIZEOF(long)
2336
fcabe077 2337if test "x$squid_opt_enable_large_files" = "xyes" -a "x$buildmodel" = "x"; then
2277004e
FC
2338 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
2339 if test "`getconf _$model 2>/dev/null || true`" = 1 || test "`getconf $model 2>/dev/null || true`" ; then
2340 buildmodel=$model
2341 break
2342 fi
2343 done
fcabe077 2344 if test "x$buildmodel" = "x"; then
2277004e
FC
2345 AC_MSG_WARN([No suitable build environment found for large files. Trying to use _FILE_OFFSET_BITS=64])
2346 fi
9b8002de 2347fi
0c0d381b 2348if test "x$buildmodel" = "xdefault" -o "x$buildmodel" = "x"; then
228332d3
FC
2349 # define _FILE_OFFSET_BITS if requested and needed
2350 if test "x$squid_opt_enable_large_files" = "xyes" -a $ac_cv_sizeof_long -le 4 ; then
507ca601
FC
2351 AC_MSG_NOTICE([Enabling -D_FILE_OFFSET_BITS=64])
2352 CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
2353 CXXFLAGS="-D_FILE_OFFSET_BITS=64 $CXXFLAGS"
2354 fi
2355else
2356 AC_MSG_NOTICE([Using $buildmodel build environment])
2357 if test "`getconf _$buildmodel 2>/dev/null || true`" = 1 || test "`getconf $buildmodel 2>/dev/null || true`" ; then
2358 : # All fine
2359 else
2360 AC_MSG_ERROR(Build environment $buildmodel not known to getconf.)
2361 fi
2362 CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
2363 CXXFLAGS="`getconf ${buildmodel}_CFLAGS` $CXXFLAGS"
2364 LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
2365 LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
941c31f3 2366 if test "x$squid_host_os" = "xsolaris" ; then
2277004e
FC
2367
2368# On Solaris getconf returns for CFLAGS -xarch=generic64, -Xa and -Usun options, and
2369# for LDFLAGS -xarch=generic64, but:
2370# "-Xa" is supported only by Sun cc, so we need to remove it when using gcc
2371# For gcc "-xarch=generic64" must be replaced with "-m64"
2372# The 'sun' define is needed by ipfilter includes, so we must remove "-Usun"
fcabe077 2373 if test "x$GCC" = "xyes"; then
2277004e
FC
2374 AC_MSG_NOTICE([Removing -Xa for gcc/g++ on $host])
2375 CFLAGS="`echo $CFLAGS | sed -e 's/-Xa//'`"
2376 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Xa//'`"
2377 AC_MSG_NOTICE([Replacing -xarch=generic64 with -m64 for gcc/g++ on $host])
2378 CFLAGS="`echo $CFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
2379 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
2380 LDFLAGS="`echo $LDFLAGS | sed -e 's/-xarch=generic64//'`"
2381 fi
2382 AC_MSG_NOTICE([Removing -Usun on $host])
2383 CFLAGS="`echo $CFLAGS | sed -e 's/-Usun//'`"
2384 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Usun//'`"
2385 fi
507ca601 2386fi
2df6213e 2387
5d620373 2388dnl Enable Leak Finding Functions
2389AC_ARG_ENABLE(leakfinder,
47d80734
FC
2390 AS_HELP_STRING([--enable-leakfinder],
2391 [Enable Leak Finding code. Enabling this alone does nothing;
2392 you also have to modify the source code to use the leak
2393 finding functions. Probably Useful for hackers only.]), [
89f640aa
FC
2394 SQUID_YESNO([$enableval],
2395 [unrecognized argument to --enable-leakfinder: $enableval])
5d620373 2396])
89f640aa
FC
2397AC_MSG_NOTICE([Leak Finder enabled: ${enable_leakfinder:=no}])
2398SQUID_DEFINE_BOOL(USE_LEAKFINDER,$enable_leakfinder,
47d80734 2399 [Enable code for assisting in finding memory leaks. Not for the faint of heart])
fcabe077 2400AM_CONDITIONAL(MAKE_LEAKFINDER, [test "x$enable_leakfinder" = "xyes"])
47d80734 2401
5d620373 2402
3d674977 2403AC_ARG_ENABLE(follow-x-forwarded-for,
6ec005b5
FC
2404 AS_HELP_STRING([--enable-follow-x-forwarded-for],
2405 [Enable support for following the X-Forwarded-For
19b4777c
FC
2406 HTTP header to try to find the IP address of the
2407 original or indirect client when a request has
8075a4da 2408 been forwarded through other proxies.]), [
6ec005b5
FC
2409 SQUID_YESNO([$enableval],
2410 [unrecognized argument to --enable-follow-x-forwarded-for: $enableval])
8075a4da 2411])
6ec005b5 2412AC_MSG_NOTICE([Support for X-Forwarded-For enabled: ${enable_follow_x_forwarded_for:=yes}])
3a5af257 2413SQUID_DEFINE_BOOL(FOLLOW_X_FORWARDED_FOR,$enable_follow_x_forwarded_for,
47d80734 2414 [Enable following X-Forwarded-For headers])
3d674977 2415
3898f57f 2416AC_ARG_ENABLE(ident-lookups,
8075a4da 2417 AS_HELP_STRING([--disable-ident-lookups],
47d80734
FC
2418 [Remove code that supports performing Ident (RFC 931) lookups.]), [
2419 SQUID_YESNO([$enableval],[unrecognized argument to --disable-ident-lookups: $enableval])
8075a4da 2420])
6c5dc16a
FC
2421AC_MSG_NOTICE([Support for Ident lookups enabled: ${enable_ident_lookups:=yes}])
2422SQUID_DEFINE_BOOL(USE_IDENT,$enable_ident_lookups,[Support for Ident (RFC 931) lookups])
3898f57f 2423
95d2589c
CT
2424AM_CONDITIONAL(USE_SSL_CRTD, false)
2425AC_ARG_ENABLE(ssl-crtd,
2426 AC_HELP_STRING([--enable-ssl-crtd],
2427 [Prevent Squid from directly generation of SSL private key and
2428 certificate request and instead enables the ssl_crtd processes.]), [
2429 SQUID_YESNO([$enableval],
2430 [unrecogized argument to --enable-ssl-crtd: $enableval])
2431])
2432
c41db002
AJ
2433if test "x$enable_ssl_crtd" = "xyes" -a "x$with_openssl" = "xno" ; then
2434 AC_MSG_ERROR([You need to enable ssl gatewaying support to use ssl_crtd feature. Try to use --with-openssl. ])
95d2589c
CT
2435fi
2436SQUID_DEFINE_BOOL(USE_SSL_CRTD, ${enable_ssl_crtd:=no},[Use ssl_crtd daemon])
2437AM_CONDITIONAL(USE_SSL_CRTD, [test "x$enable_ssl_crtd" = "xyes"])
2438
9d798391 2439dnl Select Default hosts file location
2440AC_ARG_ENABLE(default-hostsfile,
8ea232f5
FC
2441 AS_HELP_STRING([--enable-default-hostsfile=path],
2442 [Select default location for hosts file.
75eaac6c
FC
2443 See hosts_file directive in squid.conf for details]), [
2444if test "x$enableval" != "xnone" -a "x$enableval" != "xno" ; then
2445 if test \! -f "$enableval"; then
2446 AC_MSG_WARN([Unable to find file $enableval. I hope you know what you are doing.])
20ad76ab 2447 fi
75eaac6c
FC
2448 squid_opt_default_hosts=$enableval
2449else
2450 squid_opt_default_hosts="none"
2451fi
2452])
2453AC_MSG_NOTICE([Default hosts file set to: ${squid_opt_default_hosts:=/etc/hosts}])
2454DEFAULT_HOSTS=$squid_opt_default_hosts
2455AC_SUBST(DEFAULT_HOSTS)
9d798391 2456
47d80734 2457# Select auth schemes modules to build
94439e4e 2458AC_ARG_ENABLE(auth,
26ffc057
FC
2459 AS_HELP_STRING([--enable-auth],
2460 [Build global support for authentication. The list of schemes
2461 and helpers to be enabled is defined elsewhere]), [
2462SQUID_YESNO([$enableval],
2463 [unrecognized argument to --enable-auth: $enableval])
94439e4e 2464])
26ffc057 2465AC_MSG_NOTICE([Authentication support enabled: ${enable_auth:=yes}])
2f1431ea
AJ
2466SQUID_DEFINE_BOOL(USE_AUTH,$enable_auth,[Enable support for authentication])
2467AM_CONDITIONAL(ENABLE_AUTH, test "x$enable_auth" != "xno")
26ffc057
FC
2468AUTH_MODULES=""
2469
2470AC_ARG_ENABLE(auth-basic,
2471 AS_HELP_STRING([--enable-auth-basic="list of helpers"],
2472 [Enable the basic authentication scheme, and build the specified helpers.
2473 Not providing an explicit list of helpers will attempt build of
2474 all possible helpers. Default is to do so.
2475 To disable the basic authentication scheme, use --disable-auth-basic.
d9655720 2476 To enable but build no helpers, specify "none".
26ffc057
FC
2477 To see available helpers, see the helpers/basic_auth directory. ]),[
2478#nothing to do really
2479])
5a0c5a92 2480m4_include([helpers/basic_auth/modules.m4])
94439e4e 2481
12daeef6
AJ
2482AC_ARG_ENABLE(auth-digest,
2483 AS_HELP_STRING([--enable-auth-digest="list of helpers"],
2484 [Enable the Digest authentication scheme, and build the specified helpers.
26ffc057
FC
2485 Not providing an explicit list of helpers will attempt build of
2486 all possible helpers. Default is to do so.
12daeef6 2487 To disable the Digest authentication scheme, use --disable-auth-digest.
26ffc057 2488 To enable but build no helpers, specify "none".
12daeef6
AJ
2489 To see available helpers, see the helpers/digest_auth directory. ]),[
2490#nothing to do, really
380f0a87 2491])
12daeef6 2492m4_include([helpers/digest_auth/modules.m4])
94439e4e 2493
26ffc057
FC
2494AC_ARG_ENABLE(auth-negotiate,
2495 AS_HELP_STRING([--enable-auth-negotiate="list of helpers"],
2496 [Enable the Negotiate authentication scheme, and build the specified
2497 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 Negotiate authentication scheme,
2501 use --disable-auth-negotiate.
2502 To enable but build no helpers, specify "none".
2503 To see available helpers, see the helpers/negotiate_auth directory. ]),[
2504#nothing to do, really
6e785d85 2505])
5eabe4b4 2506m4_include([helpers/negotiate_auth/modules.m4])
6e785d85 2507
12daeef6
AJ
2508AC_ARG_ENABLE(auth-ntlm,
2509 AS_HELP_STRING([--enable-auth-ntlm="list of helpers"],
2510 [Enable the NTLM authentication scheme, and build the specified helpers.
26ffc057
FC
2511 Not providing an explicit list of helpers will attempt build of
2512 all possible helpers. Default is to do so.
12daeef6 2513 To disable the NTLM authentication scheme, use --disable-auth-ntlm.
1a22a39e 2514 To enable but build no helpers, specify "none".
12daeef6 2515 To see available helpers, see the helpers/ntlm_auth directory. ]),[
1a22a39e 2516])
12daeef6 2517m4_include([helpers/ntlm_auth/modules.m4])
c8093f05 2518
1a22a39e
MM
2519dnl Authentication libraries to build
2520dnl This list will not be needed when each auth library has its own Makefile
2521dnl this is to be placed AFTER each auth module's handler
2522AUTH_LIBS_TO_BUILD=
2523for module in $AUTH_MODULES; do
2524 AUTH_LIBS_TO_BUILD="$AUTH_LIBS_TO_BUILD ${module}/lib${module}.la"
2525done
2526AC_SUBST(AUTH_MODULES)
2527AC_SUBST(AUTH_LIBS_TO_BUILD)
3d62cc61 2528
1a22a39e
MM
2529dnl Select logging daemon helpers to build
2530AC_ARG_ENABLE(log-daemon-helpers,
2531 AS_HELP_STRING([--enable-log-daemon-helpers="list of helpers"],
2532 [This option selects which logging daemon helpers to
2533 build and install as part of the normal build process
2534 For a list of available helpers see the helpers/log_daemon
2535 directory.]),[
2536#nothing to do, really
2537])
2538m4_include([helpers/log_daemon/modules.m4])
9ca29d23 2539
c6588c68 2540AC_ARG_ENABLE(external-acl-helpers,
f2d9a578 2541 AS_HELP_STRING([--enable-external-acl-helpers="list of helpers"],
8ea232f5 2542 [Enable external_acl helpers support and thelpers themselves.
d9655720 2543 Default is to build all buildable helpers and enable support.
8ea232f5 2544 To disable support, use --disable-external-acl-helpers.
d9655720 2545 To build no helpers, specify "none".
8ea232f5
FC
2546 To see available helpers, see the helpers/external_acl
2547 directory]), [
d9655720 2548#nothing to do, really
c6588c68 2549])
5eabe4b4 2550m4_include([helpers/external_acl/modules.m4])
d9655720 2551
fdbb3b19 2552dnl Select url_rewrite helpers to build
fdbb3b19 2553AC_ARG_ENABLE(url-rewrite-helpers,
081863f3 2554 AS_HELP_STRING([--enable-url-rewrite-helpers="list of helpers"],
fdbb3b19
AJ
2555 [This option selects which url_rewrite helpers to
2556 build and install as part of the normal build
8ea232f5
FC
2557 process. The default is to attempt the build of all possible
2558 helpers. Use --disable-url-rewrite-helpers to build none.
2559 For a list of available helpers see the
2560 helpers/url_rewrite directory.]),[
fdbb3b19 2561])
5eabe4b4 2562m4_include([helpers/url_rewrite/modules.m4])
fdbb3b19 2563
0d5ee502
AM
2564dnl Select storeid_rewrite helpers to build
2565AC_ARG_ENABLE(storeid-rewrite-helpers,
2566 AS_HELP_STRING([--enable-storeid-rewrite-helpers="list of helpers"],
2567 [This option selects which Store-ID rewrite helpers to
2568 build and install as part of the normal build
2569 process. The default is to attempt the build of all possible
2570 helpers. Use --disable-storeid-rewrite-helpers to build none.
2571 For a list of available helpers see the
2572 helpers/storeid_rewrite directory.]),[
2573])
2574m4_include([helpers/storeid_rewrite/modules.m4])
2575
3a125142 2576AC_ARG_WITH(valgrind-debug,
0f705e3b
FC
2577 AS_HELP_STRING([--with-valgrind-debug],
2578 [Include debug instrumentation for use with valgrind]),
4e26f472
FC
2579[
2580 SQUID_YESNO([$withval],
2581 [unrecognized argument to --with-valgrind-debug: $withval])
fcabe077 2582 if test "x$withval" != "xno" ; then
4e26f472
FC
2583 AC_CHECK_HEADERS(valgrind/memcheck.h,[],[
2584 AC_MSG_ERROR([Valgrind support requested, needed headers not found.])
2585 ])
b4bab919 2586 fi
2587])
4e26f472
FC
2588SQUID_DEFINE_BOOL(WITH_VALGRIND,${with_valgrind_debug:=no},
2589 [Valgrind memory debugger support])
2590AC_MSG_NOTICE([Valgrind debug support enabled: $with_valgrind_debug])
b4bab919 2591
d96ceb8e 2592dnl Disable "memPools" code
8730e87a
HN
2593#AC_ARG_ENABLE(chunkedmempools,
2594# AS_HELP_STRING([--enable-chunkedmempools],
2595# [Enable experimental chunked memPools. Note that this option
507ca601 2596# simply sets the default behaviour. Specific classes can override this
8730e87a
HN
2597# at runtime, and only lib/MemPool.c needs to be altered
2598# to change the squid-wide default for all classes.]), [
2599#SQUID_YESNO([$enableval],
2600# [--enable-chunkedmempools option takes no arguments])
2601#])
4d7cefbb
HN
2602SQUID_DEFINE_BOOL(USE_CHUNKEDMEMPOOLS,${enable_chunkedmempools:=no},
2603 [Enable chunked Memory Pools support (experimental)])
8730e87a 2604#AC_MSG_NOTICE([Chunked MemPools enabled: $enable_chunkedmempools])
d96ceb8e 2605
0e657244 2606dnl Enable WIN32 Service compile mode
2607AC_ARG_ENABLE(win32-service,
054a4caa 2608 AS_HELP_STRING([--enable-win32-service],
0f705e3b 2609 [Compile Squid as a WIN32 Service.
b284c470
FC
2610 Works only on MS-Windows platforms]), [
2611SQUID_YESNO([$enableval],
2612 [unrecognized argument to --enable-win32-service: $enableval])
0e657244 2613])
b284c470
FC
2614SQUID_DEFINE_BOOL(USE_WIN32_SERVICE,${enable_win32_service:=no},
2615 [Enable code supporting MS Windows service mode])
2616AC_MSG_NOTICE([MS Windows service mode enabled: $enable_win32_service])
0e657244 2617
b1485ff8 2618
29f22442 2619# Disable "unlinkd" code
fe0810ac 2620AC_ARG_ENABLE(unlinkd,
0a081cb0 2621 AS_HELP_STRING([--disable-unlinkd],[Do not use unlinkd]), [
0f705e3b
FC
2622SQUID_YESNO([$enableval],
2623 [unrecognized argument to --disable-unlinkd: $enableval])
fe0810ac 2624])
0f658b5b 2625SQUID_DEFINE_BOOL(USE_UNLINKD,${enable_unlinkd:=yes},
0f705e3b 2626 [Enable useage of unlinkd])
fcabe077 2627AM_CONDITIONAL(ENABLE_UNLINKD,test "x$enable_unlinkd" = "xyes")
fbc04c0a 2628AC_MSG_NOTICE([unlinkd enabled: $enable_unlinkd])
fe0810ac 2629
0f705e3b 2630# Enable backtraces on fatal errors
ce3d30fb 2631AC_ARG_ENABLE(stacktraces,
0f705e3b
FC
2632 AS_HELP_STRING([--enable-stacktraces],
2633 [Enable automatic call backtrace on fatal errors]), [
2634SQUID_YESNO([$enableval],
2635 [unrecognized argument to --enable-stacktraces: $enableval])
ce3d30fb 2636])
0f658b5b 2637SQUID_DEFINE_BOOL(PRINT_STACK_TRACE,${enable_stacktraces:=no},
0f705e3b 2638 [Print stack traces on fatal errors])
78614cd4 2639AC_MSG_NOTICE([Automatically print stack trace on fatal errors: $enable_stacktraces])
0a081cb0 2640
ce3d30fb 2641
904676a2 2642# CPU Profiling options handling
88bfe092 2643AC_ARG_ENABLE(cpu-profiling,
0f705e3b
FC
2644 AS_HELP_STRING([--enable-cpu-profiling],
2645 [Enable instrumentation to try and understand how CPU power
2646 is spent by squid, by enabling specific probes in selected
2647 functions.
2648 New probes can only be added by modifying the source code.
2649 It is meant to help developers in optimizing performance
2650 of Squid internal functions.
87fa90fb 2651 If you are not developer you should not enable this,
0f705e3b
FC
2652 as it slows squid down somewhat.
2653 See lib/Profiler.c for more details.]), [
2654SQUID_YESNO([$enableval],
2655 [unrecognized argument to --enable-cpu-profiling: $enableval])
88bfe092 2656])
13e41ca5
AJ
2657# Default OFF. This is a debug feature. Only check and enable if forced ON.
2658if test "x$enable_cpu_profiling" = "xyes"; then
5e44eea8 2659 SQUID_CHECK_FUNCTIONAL_CPU_PROFILER
13e41ca5 2660 if test "x$squid_cv_cpu_profiler_works" = "xno"; then
5e44eea8 2661 AC_MSG_ERROR([CPU profiling will not be functional in this build.])
5e44eea8 2662 fi
5e44eea8 2663fi
0f658b5b 2664SQUID_DEFINE_BOOL(USE_XPROF_STATS,${enable_cpu_profiling:=no},
0f705e3b
FC
2665 [Define to enable CPU profiling within Squid])
2666AM_CONDITIONAL(ENABLE_XPROF_STATS,
fcabe077 2667 test "x$enable_cpu_profiling" = "xyes")
78614cd4 2668AC_MSG_NOTICE([CPU profiling enabled: $enable_cpu_profiling])
88bfe092 2669
904676a2 2670# Enable X-Accelerator-Vary for Vary support within an accelerator setup
2092c67d 2671AC_ARG_ENABLE(x-accelerator-vary,
904676a2
FC
2672 AS_HELP_STRING([--enable-x-accelerator-vary],
2673 [Enable support for the X-Accelerator-Vary
e702812e
FC
2674 HTTP header. Can be used to indicate
2675 variance within an accelerator setup.
2676 Typically used together with other code
904676a2
FC
2677 that adds custom HTTP headers to the requests.]), [
2678SQUID_YESNO([$enableval],
2679 [unrecognized argument to --enable-x-accelerator-vary: $enableval])
f66a9ef4 2680])
0f658b5b 2681SQUID_DEFINE_BOOL(X_ACCELERATOR_VARY,${enable_x_accelerator_vary:=no},
904676a2 2682 [Enable support for the X-Accelerator-Vary HTTP header])
78614cd4 2683AC_MSG_NOTICE([X-Accelerator-Vary support enabled: $enable_x_accelerator_vary])
f66a9ef4 2684
87fa90fb 2685
8b5e106b 2686if $CPPUNITCONFIG --help >/dev/null; then
78cae3b4
FC
2687 squid_cv_cppunit_version="`$CPPUNITCONFIG --version`"
2688 AC_MSG_NOTICE([using system installed cppunit version $squid_cv_cppunit_version])
2689 unset squid_cv_cppunit_version
8b5e106b 2690 SQUID_CPPUNIT_LIBS="`$CPPUNITCONFIG --libs`"
2691 SQUID_CPPUNIT_LA=''
2692 SQUID_CPPUNIT_INC="`$CPPUNITCONFIG --cflags`"
2693else
eed82608 2694 AC_MSG_WARN([cppunit does not appear to be installed. squid does not require this, but code testing with 'make check' will fail.])
63d03edb 2695 SQUID_CPPUNIT_LA=''
2696 SQUID_CPPUNIT_LIBS=''
2697 SQUID_CPPUNIT_INC=''
f5691f9c 2698fi
8b5e106b 2699
f5691f9c 2700AC_ARG_WITH(cppunit-basedir,
1b9fe876 2701 AS_HELP_STRING([--with-cppunit-basedir=PATH],
3680cc44
FC
2702 [Path where the cppunit headers are libraries can be found ]), [
2703if test -f "$withval/include/cppunit/TestCase.h"; then
2704 AC_MSG_NOTICE([Using cppunit includes from $withval])
2705 SQUID_CPPUNIT_INC="-I${withval}/include"
2706else
2707 AC_MSG_ERROR(Cannot find cppunit at $withval)
2708fi
2709if test -f "$withval/lib/libcppunit.la"; then
2710 AC_MSG_NOTICE([Using cppunit lib from $withval])
2711 SQUID_CPPUNIT_LA="${withval}/lib/libcppunit.la"
2712 SQUID_CPPUNIT_LIBS='$(SQUID_CPPUNIT_LA)'
2713else
2714 AC_MSG_ERROR(Cannot find cppunit at $withval)
2715fi
f5691f9c 2716])
7b81a8f7
AJ
2717SQUID_STATE_SAVE(squid_cppunit_state)
2718CXXFLAGS="$CXXFLAGS $SQUID_CPPUNIT_INC"
2719AC_CHECK_HEADERS(cppunit/extensions/HelperMacros.h)
2720SQUID_STATE_ROLLBACK(squid_cppunit_state)
8b5e106b 2721AC_SUBST(SQUID_CPPUNIT_LIBS)
f5691f9c 2722AC_SUBST(SQUID_CPPUNIT_LA)
2723AC_SUBST(SQUID_CPPUNIT_INC)
f5691f9c 2724
fd9aaa3e 2725# Force some compilers to use ANSI features
2726#
2727case "$host" in
3680cc44
FC
2728 *-hp-hpux*)
2729 if test "x$ac_cv_prog_CC" = "xcc" ; then
2730 AC_MSG_NOTICE([adding '-Ae' to cc args for $host])
2731 CC="cc -Ae";
2732 ac_cv_prog_CC="$CC"
2733 fi
2734 ;;
fd9aaa3e 2735esac
2736
dd56802c 2737
a2794549 2738dnl automake handles this AC_PATH_PROG(MAKEDEPEND, makedepend, $TRUE)
4e9d8e26 2739
6ad85e8a 2740case "$host" in
3680cc44
FC
2741 *hpux*)
2742 AC_MSG_NOTICE([Disabling ranlib for HP-UX...])
2743 RANLIB=":"
2744 ;;
6ad85e8a 2745esac
2746
090089c4 2747dnl Check for headers
2748AC_HEADER_DIRENT
2749AC_HEADER_STDC
db40ae20 2750
2751AC_CHECK_HEADERS( \
3680cc44
FC
2752 arpa/inet.h \
2753 arpa/nameser.h \
2754 assert.h \
2755 bstring.h \
3680cc44 2756 crypt.h \
3680cc44 2757 ctype.h \
ee4d4e85 2758 direct.h \
3680cc44
FC
2759 errno.h \
2760 execinfo.h \
2761 fcntl.h \
2762 fnmatch.h \
2763 getopt.h \
2764 glob.h \
2765 gnumalloc.h \
2766 grp.h \
3680cc44
FC
2767 ipl.h \
2768 lber.h \
2769 ldap.h \
2770 libc.h \
2771 limits.h \
2772 linux/posix_types.h \
2773 linux/types.h \
3680cc44 2774 malloc.h \
3680cc44
FC
2775 math.h \
2776 memory.h \
2777 mount.h \
2778 netdb.h \
2779 netinet/in.h \
2780 netinet/in_systm.h \
3680cc44 2781 netinet/tcp.h \
3680cc44
FC
2782 paths.h \
2783 poll.h \
2784 pwd.h \
3680cc44
FC
2785 regex.h \
2786 sched.h \
2ccf2eb2 2787 siginfo.h \
3680cc44 2788 signal.h \
3680cc44
FC
2789 stdarg.h \
2790 stddef.h \
3680cc44
FC
2791 stdio.h \
2792 stdlib.h \
3680cc44
FC
2793 string.h \
2794 strings.h \
2795 sys/bitypes.h \
3680cc44
FC
2796 sys/file.h \
2797 sys/ioctl.h \
d440d5a4 2798 sys/ipc.cc \
3680cc44
FC
2799 sys/param.h \
2800 sys/prctl.h \
2801 sys/md5.h \
c975f532 2802 sys/mman.h \
3680cc44
FC
2803 sys/msg.h \
2804 sys/resource.h \
2ccf2eb2 2805 sys/select.h \
d440d5a4 2806 sys/shm.h \
3680cc44
FC
2807 sys/socket.h \
2808 sys/stat.h \
3680cc44
FC
2809 syscall.h \
2810 sys/syscall.h \
2811 sys/time.h \
2812 sys/types.h \
2813 sys/uio.h \
2814 sys/un.h \
2815 sys/vfs.h \
2816 sys/wait.h \
2817 syslog.h \
2818 time.h \
2819 unistd.h \
2820 utime.h \
2821 varargs.h \
2822 byteswap.h \
2823 glib.h \
2824 stdint.h \
2825 inttypes.h \
3680cc44 2826 db.h \
cdb86165
FC
2827 db_185.h \
2828 wchar.h
db40ae20 2829)
3c586e38 2830
ee80a919
AR
2831AC_CHECK_HEADERS( \
2832 linux/netfilter_ipv4.h \
2833 linux/netfilter_ipv6/ip6_tables.h \
fc68f6b1 2834,,,
dcd1dc78 2835SQUID_DEFAULT_INCLUDES
2836#if HAVE_LIMITS_H
2837#include <limits.h>
2838#endif
a74968c2
AJ
2839/* Netfilter ip(6)tables v1.4.0 has broken headers */
2840#if HAVE_NETINET_IN_H
2841#include <netinet/in.h>
2842#endif
dcd1dc78 2843)
2844
cdb352bb 2845dnl *BSD dont include the dependencies for all their net/ and netinet/ files
c92b4732 2846dnl We must include a few basic type headers for them to work.
d1e5191e 2847AC_CHECK_HEADERS( \
0c0d381b
FC
2848 net/if.h \
2849 netinet/if_ether.h\
2850 netinet/icmp6.h \
2851 netinet/in.h \
2852 netinet/ip.h \
2853 netinet/ip6.h \
0c0d381b
FC
2854 netinet/ip_icmp.h \
2855 netinet/ipl.h \
0c0d381b
FC
2856 net/pf/pfvar.h \
2857 net/pfvar.h \
2858 sys/mount.h\
2859 resolv.h \
d1e5191e
AJ
2860,,,
2861SQUID_BSDNET_INCLUDES)
5a3237b0 2862
aee0606f 2863AC_C_CONST
d57288d2 2864AC_C_BIGENDIAN
aee0606f 2865
6a9f6389 2866AC_STRUCT_TM
2867AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
2868#if TM_IN_SYS_TIME
2869#if HAVE_SYS_TIME_H
2870#include <sys/time.h>
2871#endif
2872#elif HAVE_TIME_H
2873#include <time.h>
2874#endif
5c51415d 2875])
46c883ed 2876
08caf8c6 2877dnl Override rusage() detect on MinGW because is emulated in source code
78a60bca
AJ
2878case "$squid_host_os" in
2879 mingw)
08caf8c6 2880 AC_DEFINE(HAVE_STRUCT_RUSAGE)
2881 ac_cv_func_getrusage='yes'
eed82608 2882 AC_MSG_NOTICE([Using own rusage on Windows.])
08caf8c6 2883 ;;
2884 *)
2885 AC_CHECK_TYPE(struct rusage,AC_DEFINE(HAVE_STRUCT_RUSAGE,1,[The system provides struct rusage]),,[
8ff51bba 2886#if HAVE_SYS_TIME_H
2887#include <sys/time.h>
2888#endif
b54a6789 2889#if HAVE_SYS_RESOURCE_H
2890#include <sys/resource.h>
6a9f6389 2891#endif])
08caf8c6 2892 ;;
2893esac
b54a6789 2894
6a9f6389 2895AC_CHECK_MEMBERS([struct iphdr.ip_hl],,,[
2896#if HAVE_SYS_TYPES_H
2897#include <sys/types.h>
2898#endif
a025a745 2899#include <netinet/in.h>
2900#include <netinet/in_systm.h>
6ad85e8a 2901#include <netinet/ip.h>
b05490a8 2902#if defined (__linux__) || defined (__CYGWIN__)
6ad85e8a 2903#define ip_hl ihl
2904#endif
2905#ifndef __linux__
b05490a8 2906#ifndef __CYGWIN__
6ad85e8a 2907#define iphdr ip
b05490a8 2908#endif
6a9f6389 2909#endif])
a025a745 2910
090089c4 2911dnl Check for typedefs
77d6bd88 2912AC_CHECK_SIZEOF(void *)
090089c4 2913
41aa7d00
FC
2914# check for a bunch of types
2915AC_TYPE_INT8_T
2916AC_TYPE_UINT8_T
2917AC_TYPE_INT16_T
2918AC_TYPE_UINT16_T
2919AC_TYPE_INT32_T
2920AC_TYPE_UINT32_T
2921AC_TYPE_INT64_T
2922AC_TYPE_UINT64_T
2923AC_TYPE_PID_T
2924AC_TYPE_SIZE_T
2925AC_TYPE_SSIZE_T
2926AC_TYPE_OFF_T
2927AC_TYPE_UID_T
59a09b98 2928AC_CHECK_TYPE([bool])
41aa7d00
FC
2929#need the defines for PRId64
2930AC_CHECK_SIZEOF(int64_t)
2931AC_CHECK_SIZEOF(long)
fe1e5c91
AJ
2932#need the defines for PRIuSIZE
2933AC_CHECK_SIZEOF(size_t)
50f9c873
AR
2934#need the define for overflow checks
2935AC_CHECK_SIZEOF(off_t)
46e172d9 2936AC_CHECK_SIZEOF(size_t)
6a9f6389 2937
249b93df 2938dnl Some C++11 types we try to use
a203dec7
AJ
2939AX_CXX_TYPE_NULLPTR
2940AX_CXX_TYPE_UNIQUE_PTR
249b93df 2941AX_CXX_TYPE_UNIFORM_DISTRIBUTIONS
2fefc43c 2942SQUID_CXX_STD_UNDERLYING_TYPE
a203dec7 2943
588e71df 2944dnl On Solaris 9 x86, gcc may includes a "fixed" set of old system include files
2945dnl that is incompatible with the updated Solaris header files.
2946dnl For this reason, we must check if pad128_t and upad128_t are defined.
2947AC_CHECK_TYPE(pad128_t,
2948 AC_DEFINE(HAVE_PAD128_T,1,[pad128_t is defined in system headers]),
2949 ,SQUID_DEFAULT_INCLUDES)
2950
2951AC_CHECK_TYPE(upad128_t,
2952 AC_DEFINE(HAVE_UPAD128_T,1,[upad128_t is defined in system headers]),
2953 ,SQUID_DEFAULT_INCLUDES)
2954
6a9f6389 2955AC_CHECK_TYPE(mode_t, AC_DEFINE(HAVE_MODE_T,1,[mode_t is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
2956AC_CHECK_TYPE(fd_mask, AC_DEFINE(HAVE_FD_MASK,1,[fd_mask is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
adcceb47 2957
6a9f6389 2958AC_CHECK_TYPE(socklen_t,AC_DEFINE(HAVE_SOCKLEN_T,1,[socklen_t is defined by the system headers]),,[
2959#include <sys/types.h>
6637e3a5 2960#include <sys/socket.h>
2961#if STDC_HEADERS
2962#include <stdlib.h>
2963#include <stddef.h>
6a9f6389 2964#endif])
6637e3a5 2965
cdb352bb
FC
2966AC_CHECK_TYPE(mtyp_t,AC_DEFINE(HAVE_MTYP_T,1,
2967 [mtyp_t is defined by the system headers]),,[#include <sys/types.h>
2968#include <sys/ipc.h>
2969#include <sys/msg.h>])
2970
fe1e5c91
AJ
2971# check for compiler support of %zu printf macro
2972AH_TEMPLATE(PRIuSIZE,[Compiler supports %zu printf macro])
2973AC_MSG_CHECKING([for compiler %zu support])
2974AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2975#include <stdio.h>
2976 ]],[[size_t n=1;printf("%zu",n);]])],[
2977 AC_DEFINE(PRIuSIZE,"zu")
2978 AC_MSG_RESULT(yes)
2979 ],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
2980
2981
cdb352bb
FC
2982dnl Check for special functions
2983AC_FUNC_ALLOCA
2984
2985
b50f1b2b 2986dnl Check for libcap header (assume its not broken unless
45c41a07
FC
2987AC_ARG_WITH(libcap, AS_HELP_STRING([--without-libcap],
2988 [disable usage of Linux capabilities library to control privileges]), [
2989SQUID_YESNO([$withval],[unrecognized argument to --without-libcap: $withval])
2990],[with_libcap=auto])
2991
2992if test "x$with_libcap" != "xno"; then
b64b6030 2993 # cap_clear_flag is the most recent libcap function we require
45c41a07 2994 AC_CHECK_HEADERS(sys/capability.h)
b64b6030 2995 AC_CHECK_LIB(cap, cap_clear_flag)
45c41a07
FC
2996 SQUID_CHECK_FUNCTIONAL_LIBCAP2
2997
2998 # if it can't be supported..
35e2b2e5 2999 if test "x$ac_cv_header_sys_capability_h" = "xno" -o \
46f50de9 3000 "x$ac_cv_lib_cap_cap_clear_flag" = "xno"; then
45c41a07 3001 # and it was forced on: error
46f50de9 3002 if test "x$with_libcap" = "xyes" ; then
ff8d255b 3003 AC_MSG_ERROR([libcap forced enabled but not available or not usable, requires libcap-2.09 or later])
3fbda12c
FC
3004 else
3005 # with_libcap is "auto"; it can't be supported. Disable.
3006 with_libcap=no
b64b6030 3007 fi
45c41a07
FC
3008 else
3009 # header and lib are ok, we support
3010 with_libcap=yes
b64b6030 3011 fi
69367152 3012
b50f1b2b 3013fi
5b43d209 3014
45c41a07
FC
3015SQUID_DEFINE_BOOL(USE_LIBCAP,$with_libcap,
3016 [use libcap to set capabilities required for TPROXY])
3017AC_MSG_NOTICE([libcap support enabled: $with_libcap])
3018SQUID_DEFINE_BOOL(LIBCAP_BROKEN,${squid_cv_sys_capability_works:=no},
3019 [libcap2 headers are broken and clashing with glibc])
3020AC_MSG_NOTICE([libcap2 headers are ok: $squid_cv_sys_capability_works])
3021
b64b6030 3022
090089c4 3023dnl Check for needed libraries
54c95954 3024AC_SEARCH_LIBS([gethostbyname],[nsl resolv bind])
819656da
AJ
3025AC_SEARCH_LIBS([res_init],[resolv])
3026AC_SEARCH_LIBS([__res_search],[resolv])
54c95954
FC
3027AC_SEARCH_LIBS([bind],[socket])
3028AC_SEARCH_LIBS([opcom_stack_trace],[opcom_stack])
3029AC_SEARCH_LIBS([strlcpy], [bsd])
85cd85f3 3030AC_SEARCH_LIBS([yp_match], [nsl nss_nis nss_nisplus])
bfe8dedf 3031dnl Check for Winsock only on MinGW, on Cygwin we must use emulated BSD socket API
0c0d381b
FC
3032if test "x$squid_host_os" = "xmingw" ; then
3033 SQUID_CHECK_WINSOCK_LIB
32341684
AJ
3034 AC_CHECK_HEADERS( \
3035 windows.h \
3036 ws2tcpip.h \
b966288b 3037 iphlpapi.h ,,,[
2ff9dfaa
AJ
3038#if HAVE_WINSOCK2_H
3039#include <winsock2.h>
3040#endif
32341684
AJ
3041#if HAVE_WINDOWS_H
3042#include <windows.h>
3043#endif
2ff9dfaa
AJ
3044#if HAVE_WS2TCPIP_H
3045#include <ws2tcpip.h>
3046#endif
3047])
0c0d381b 3048fi
94d48591 3049
46f50de9
FC
3050# check that we have unix sockets
3051SQUID_CHECK_UNIX_SOCKET
3052SQUID_DEFINE_BOOL(HAVE_UNIXSOCKET,$squid_cv_unixsocket,[System supports unix sockets])
3053
3054AC_CHECK_LIB(gnumalloc, malloc)
3055if test "x$ac_cv_lib_gnumalloc_malloc" = "xyes"; then
ef7ece58 3056 AC_MSG_NOTICE([Disabling extended malloc functions when using bundled gnumalloc])
46f50de9
FC
3057 ac_cv_func_mallocblksize=no
3058 ac_cv_func_mallopt=no
3059else
3060 case "$squid_host_os" in
3061 solaris)
3062 AC_MSG_NOTICE([skipping libmalloc check for $host])
3063 ;;
3064 freebsd)
3065 AC_MSG_NOTICE([skipping libmalloc check for $host])
3066 ;;
3067 *)
3068 #used later. FIXME
3069 AC_CHECK_LIB(malloc, main)
3070 ;;
cdb352bb
FC
3071 esac
3072fi
94d48591 3073
78a60bca
AJ
3074case "$squid_host_os" in
3075 mingw)
3076 AC_MSG_NOTICE([Use MSVCRT for math functions.])
3077 ;;
3078 *)
3079 dnl rint() and log() are only used in old C code for now.
3080 AC_LANG_PUSH([C])
3081 AC_SEARCH_LIBS([rint],[m])
3082 AC_SEARCH_LIBS([log],[m])
3083 AC_LANG_POP([C])
3084 ;;
08caf8c6 3085esac
090089c4 3086
f467f578
FC
3087dnl --with-maxfd present for compatibility with Squid-2.
3088dnl undocumented in ./configure --help to encourage using the Squid-3 directive
3089AC_ARG_WITH(maxfd,,
3090[
3091 case ${withval} in
3092 [[0-9]]*)
3093 squid_filedescriptors_num=$withval
acea95af 3094 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
f467f578
FC
3095 ;;
3096 *)
3097 AC_MSG_ERROR(--with-maxfd expects a numeric argument)
3098 ;;
3099 esac
055421ee 3100])
001ad4cc 3101
f467f578
FC
3102AC_ARG_WITH(filedescriptors,
3103 AS_HELP_STRING([--with-filedescriptors=NUMBER],
3104 [Force squid to support NUMBER filedescriptors]),
3105[
3106 case ${withval} in
3107 [[0-9]]*)
3108 squid_filedescriptors_num=$withval
acea95af 3109 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
f467f578
FC
3110 ;;
3111 *)
3112 AC_MSG_ERROR(--with-filedescriptors expects a numeric argument)
3113 ;;
3114 esac
001ad4cc 3115])
f467f578
FC
3116
3117SQUID_CHECK_DEFAULT_FD_SETSIZE
acea95af
AJ
3118SQUID_CHECK_MAXFD
3119if test "x$squid_filedescriptors_num" != "x"; then
3120 AC_MSG_NOTICE([Default number of fieldescriptors: $squid_filedescriptors_num])
001ad4cc 3121fi
f467f578
FC
3122if test "$squid_filedescriptors_num" -lt 512 ; then
3123 AC_MSG_WARN([$squid_filedescriptors_num may not be enough filedescriptors if your])
3124 AC_MSG_WARN([cache will be very busy. Please see the FAQ page])
3125 AC_MSG_WARN([http://wiki.squid-cache.org/SquidFaq/TroubleShooting])
3126 AC_MSG_WARN([on how to increase your filedescriptor limit])
3127fi
3128AC_DEFINE_UNQUOTED(SQUID_MAXFD, $squid_filedescriptors_num,[Maximum number of open filedescriptors])
001ad4cc 3129
f467f578 3130
001ad4cc
AJ
3131dnl Enable IPv6 support
3132AC_MSG_CHECKING([whether to enable IPv6])
001ad4cc 3133AC_ARG_ENABLE(ipv6,
af494bc8
FC
3134 AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support. The default is to probe system capabilities on startup.]), [
3135SQUID_YESNO([$enableval],[unrecognized argument to --disable-ipv6: $enableval])
001ad4cc 3136])
7d927f1f
AJ
3137AC_MSG_RESULT(${enable_ipv6:=yes})
3138SQUID_DEFINE_BOOL(USE_IPV6,$enable_ipv6,[Enable support for IPv6 ])
001ad4cc 3139
7d927f1f 3140if test "x$enable_ipv6" = "xyes" ; then
af494bc8 3141 SQUID_CHECK_SIN6_LEN_IN_SAI
001ad4cc 3142fi
7d553ad9
AJ
3143SQUID_CHECK_SS_LEN_IN_SOCKADDR_STORAGE
3144SQUID_CHECK_SIN_LEN_IN_SOCKADDR_IN
001ad4cc 3145
001ad4cc 3146
042b1f8a 3147dnl Check for libdl, used by auth_modules/PAM
fcabe077 3148if test "x$with_dl" = "xyes"; then
8154dd82 3149 AC_CHECK_LIB(dl, dlopen)
3150fi
042b1f8a 3151
86ec11aa 3152dnl -lintl is needed on SCO version 3.2v4.2 for strftime()
3153dnl Robert Side <rside@aiinc.bc.ca>
3154dnl Mon, 18 Jan 1999 17:48:00 GMT
3155case "$host" in
3156 *-pc-sco3.2*)
3157 AC_CHECK_LIB(intl, strftime)
3158 ;;
3159esac
3160
b7a1c19e 3161dnl Check for libdb
6b5de50d 3162dnl this is not fully functional if db.h is for a differend db version
b7a1c19e 3163DBLIB=
6b5de50d
FC
3164
3165dnl check that dbopen is actually defined in the header
3166dnl FIXME: in case of failure undef db-related includes etc.
3167AC_CHECK_DECL(dbopen,,,[
06fbee01
FC
3168#if HAVE_SYS_TYPES_H
3169#include <sys/types.h>
3170#endif
3171#if HAVE_LIMITS_H
3172#include <limits.h>
3173#endif
6b5de50d
FC
3174#if HAVE_DB_185_H
3175#include <db_185.h>
3176#elif HAVE_DB_H
3177#include <db.h>
3178#endif])
3179
01b4931d 3180dnl 1.85
91983da0 3181SQUID_CHECK_DBOPEN_NEEDS_LIBDB
fcabe077 3182if test "x$ac_cv_dbopen_libdb" = "xyes"; then
32d0bbd7 3183 LIB_DB="-ldb"
3184fi
01b4931d 3185AC_SUBST(LIB_DB)
b7a1c19e 3186
77f675ad 3187dnl System-specific library modifications
3188dnl
3189case "$host" in
fcabe077
FC
3190 i386-*-solaris2.*)
3191 if test "x$GCC" = "xyes"; then
3192 AC_MSG_NOTICE([Removing -O for gcc on $host])
3193 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9]]*//'`"
3194 fi
3195 ;;
141eb4a6 3196
fcabe077
FC
3197 *-sgi-irix*)
3198 AC_MSG_NOTICE([Removing -lsocket for IRIX...])
3199 LIBS=`echo $LIBS | sed -e s/-lsocket//`
3200 AC_MSG_NOTICE([Removing -lnsl for IRIX...])
3201 LIBS=`echo $LIBS | sed -e s/-lnsl//`
3202 ac_cv_lib_nsl_main=no
3203 AC_MSG_NOTICE([Removing -lbsd for IRIX...])
3204 LIBS=`echo $LIBS | sed -e s/-lbsd//`
3205 ;;
4ba0bd0e 3206dnl From: c0032033@ws.rz.tu-bs.de (Joerg Schumacher)
3207dnl Date: Thu, 17 Oct 1996 04:09:30 +0200
3208dnl Please change your configure script. AIX doesn't need -lbsd.
fcabe077
FC
3209 *-ibm-aix*)
3210 AC_MSG_NOTICE([Removing -lbsd for AIX...])
3211 LIBS=`echo $LIBS | sed -e s/-lbsd//`
3e1ce596
KB
3212
3213 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_rtti],[-rtti],[[
3214#include <assert.h>
3215#ifndef NULL
3216#define NULL 0
3217#endif
3218class Foo{
3219public:virtual ~Foo(){}
3220};
3221class Bar:public Foo{
3222public:Bar():Foo(){}
3223};
3224 ]],[[
3225Foo * myFoo=new Bar();
3226Bar * myBar=dynamic_cast<Bar *>(myFoo);
3227assert(myBar != NULL);
3228 ]])
3229 if test "$ac_cv_require_rtti" = "yes"; then
3230 SQUID_CFLAGS="-rtti $SQUID_CFLAGS"
3231 SQUID_CXXFLAGS="-rtti $SQUID_CXXFLAGS"
fcabe077 3232 fi
3e1ce596
KB
3233
3234 AC_LANG_PUSH([C])
3235 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_qcpluscmt],[-qcpluscmt],[[]],[[//c++ cmt]])
fcabe077 3236 AC_LANG_POP([C])
3e1ce596
KB
3237 if test "$ac_cv_require_qcpluscmt" = "yes"; then
3238 SQUID_CFLAGS="-qcpluscmt $SQUID_CFLAGS"
3239 fi
fcabe077 3240 ;;
3e1ce596 3241
fcabe077
FC
3242 *m88k*)
3243 SQUID_CFLAGS="$SQUID_CFLAGS -D_SQUID_MOTOROLA_"
3244 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_SQUID_MOTOROLA_"
3245 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1,
3246 [If gettimeofday is known to take only one argument])
3247 ;;
3248 [*-*-solaris2.[0-4]])
3249 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)
3250 ;;
3251 [*-sony-newsos[56]*])
3252 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)
3253 ;;
3254 esac
090089c4 3255
84cecfd2 3256dnl This has to be before AC_CHECK_FUNCS
3257# Disable poll() on certain platforms. Override by setting ac_cv_func_poll
3258# when running configure.
fcabe077
FC
3259if test "x$ac_cv_func_poll" = "x" ; then
3260 case "$host" in
3261 [*-hp-hpux*.*])
3262 # Duane Wessels
3263 AC_MSG_NOTICE([disabling poll for $host...])
3264 ac_cv_func_poll='no'
3265 ;;
3266 [*-linux-*])
3267 # Henrik Nordstrom (hno@squid-cache.org) 19980817
3268 # poll is problematic on Linux. We disable it
3269 # by default until Linux gets it right.
3270 rev=`uname -r | awk -F. '{printf "%03d%03d",$1,$2}'`
3271 if test $rev -lt 002002; then
3272 AC_MSG_NOTICE([disabling poll for $host < 2.2...])
3273 ac_cv_func_poll='no'
3274 fi
3275 ;;
3276 [powerpc-ibm-aix4.1.*])
3277 # Mike Laster (mlaster@metavillage.com) 19981021
3278 AC_MSG_NOTICE([disabling poll for $host...])
3279 ac_cv_func_poll='no'
3280 ;;
3281 [*-pc-sco3.2*])
3282 # Robert Side <rside@aiinc.bc.ca>
3283 # Mon, 18 Jan 1999 17:48:00 GMT
3284 AC_MSG_NOTICE([disabling poll for $host...])
3285 ac_cv_func_poll='no'
3286 ;;
3287 esac
84cecfd2 3288fi
176d10ee 3289
6716b242 3290dnl Check for library functions
3291AC_CHECK_FUNCS(\
ce3d30fb 3292 backtrace_symbols_fd \
3a144521 3293 bcopy \
4de1e2da 3294 eui64_aton \
4ac29a5b 3295 fchmod \
6716b242 3296 getdtablesize \
8505e57b 3297 getpagesize \
230c091c 3298 getpass \
3a144521 3299 getrlimit \
30a4f2a8 3300 getrusage \
9c1d8929 3301 getspnam \
379d5751 3302 gettimeofday \
52303a3d 3303 glob \
0f5efab0 3304 mallocblksize \
6716b242 3305 mallopt \
2ae6b9b0 3306 memcpy \
30a4f2a8 3307 memmove \
ee4d4e85 3308 memrchr \
dac27377 3309 memset \
b99a6dec 3310 mkstemp \
1812b6c7 3311 mktime \
88738790 3312 mstats \
84cecfd2 3313 poll \
62ae0622 3314 prctl \
3a144521 3315 pthread_attr_setschedparam \
cd748f27 3316 pthread_attr_setscope \
3317 pthread_setschedparam \
42b51993 3318 pthread_sigmask \
c68e9c6b 3319 putenv \
6716b242 3320 regcomp \
3321 regexec \
3322 regfree \
819656da
AJ
3323 res_init \
3324 __res_init \
4915be3b 3325 rint \
96c2bb61
AR
3326 sched_getaffinity \
3327 sched_setaffinity \
3a144521 3328 select \
234967c9 3329 seteuid \
c415c128 3330 setgroups \
30a4f2a8 3331 setpgrp \
30a4f2a8 3332 setsid \
3333 sigaction \
11430c03 3334 snprintf \
1ccc0d40 3335 socketpair \
6716b242 3336 sysconf \
3337 syslog \
234967c9 3338 timegm \
28da5e0d 3339 vsnprintf \
6716b242 3340)
f5e5c4cf 3341dnl ... and some we provide local replacements for
3342AC_REPLACE_FUNCS(\
f5e5c4cf 3343 initgroups \
2ccf2eb2 3344 psignal \
f5e5c4cf 3345 strerror \
585cddda 3346 strtoll \
f5e5c4cf 3347 tempnam \
3348)
6716b242 3349
dfb96b6b 3350AC_CHECK_DECLS([getaddrinfo,getnameinfo,inet_ntop,inet_pton,InetNtopA,InetPtonA],,,[
55d7d5e9
AJ
3351/*
3352 * BSD requires sys/types.h, sys/socket.h, netinet/in.h, netdb.h, arpa/inet.h
3353 * Linux requires sys/types.h, sys/socket.h, arpa/inet.h
3354 * Windows requires sys/socket.h, winsock2.h, ws2tcpip.h
3355 */
3356#if HAVE_SYS_TYPES_H
3357#include <sys/types.h>
3358#endif
3359#if HAVE_NETINET_IN_H
3360#include <netinet/in.h>
3361#endif
3362#if HAVE_SYS_SOCKET_H
3363#include <sys/socket.h>
3364#endif
3365#if HAVE_NETDB_H
3366#include <netdb.h>
3367#endif
3368#if HAVE_ARPA_INET_H
3369#include <arpa/inet.h>
3370#endif
3371#if HAVE_WINSOCK2_H
3372#include <winsock2.h>
3373#endif
3374#if HAVE_WS2TCPIP_H
3375#include <ws2tcpip.h>
3376#endif
3377])
3378
9676633b
FC
3379# Magic which checks whether we are forcing a type of comm loop we
3380# are actually going to (ab)use.
3381# Mostly ripped from squid-commloops, thanks to adrian and benno
1b3db6d9 3382
fcabe077 3383if test "x$squid_opt_io_loop_engine" != "x"; then
8075a4da 3384 AC_MSG_NOTICE([choosing user-specified net I/O API $squid_opt_io_loop_engine])
fcabe077 3385elif test "x$enable_epoll" != "xno" -a "x$squid_cv_epoll_works" = "xyes" ; then
8075a4da 3386 squid_opt_io_loop_engine="epoll"
26d50fd2 3387elif test "x$enable_kqueue" != "xno" ; then
8075a4da 3388 squid_opt_io_loop_engine="kqueue"
a1ad2f9b
AJ
3389elif test "x$enable_devpoll" != "xno" ; then
3390 squid_opt_io_loop_engine="devpoll"
fcabe077 3391elif test "x$enable_poll" != "xno" -a "x$ac_cv_func_poll" = "xyes" ; then
8075a4da 3392 squid_opt_io_loop_engine="poll"
39145d19 3393elif test "x$enable_select" != "xno" -a "x$ac_cv_func_select" = "xyes"; then
8075a4da 3394 squid_opt_io_loop_engine="select"
39145d19
AJ
3395elif test "x$enable_select" != "xno" -a "x$squid_host_os" = "xmingw"; then
3396 squid_opt_io_loop_engine="select_win32"
1b3db6d9 3397else
a1ad2f9b 3398 AC_MSG_WARN([Eep! Cannot find epoll, kqueue, /dev/poll, poll or select!])
be0c7ff0 3399 AC_MSG_WARN([Will try select and hope for the best.])
8075a4da 3400 squid_opt_io_loop_engine="select"
1b3db6d9 3401fi
d474c7a6 3402
8075a4da 3403AC_MSG_NOTICE([Using ${squid_opt_io_loop_engine} for the IO loop.])
d474c7a6 3404
8075a4da
FC
3405AM_CONDITIONAL([USE_POLL], [test $squid_opt_io_loop_engine = poll])
3406AM_CONDITIONAL([USE_EPOLL], [test $squid_opt_io_loop_engine = epoll])
3407AM_CONDITIONAL([USE_SELECT], [test $squid_opt_io_loop_engine = select])
8075a4da
FC
3408AM_CONDITIONAL([USE_SELECT_WIN32], [test $squid_opt_io_loop_engine = select_win32])
3409AM_CONDITIONAL([USE_KQUEUE], [test $squid_opt_io_loop_engine = kqueue])
3410AM_CONDITIONAL([USE_DEVPOLL], [test $squid_opt_io_loop_engine = devpoll])
d474c7a6 3411
8075a4da 3412case $squid_opt_io_loop_engine in
0abb39dd 3413 epoll) AC_DEFINE(USE_EPOLL,1,[Use epoll() for the IO loop]) ;;
a1ad2f9b 3414 devpoll) AC_DEFINE(USE_DEVPOLL,1,[Use /dev/poll for the IO loop]) ;;
0abb39dd
FC
3415 poll) AC_DEFINE(USE_POLL,1,[Use poll() for the IO loop]) ;;
3416 kqueue) AC_DEFINE(USE_KQUEUE,1,[Use kqueue() for the IO loop]) ;;
3417 select_win32) AC_DEFINE(USE_SELECT_WIN32,1,[Use Winsock select() for the IO loop]) ;;
3418 select) AC_DEFINE(USE_SELECT,1,[Use select() for the IO loop]) ;;
d474c7a6 3419esac
1b3db6d9 3420
96c2bb61
AR
3421if test "x$ac_cv_func_sched_getaffinity" = "xyes" -a "x$ac_cv_func_sched_setaffinity" = "xyes" ; then
3422 AC_DEFINE(HAVE_CPU_AFFINITY,1,[Support setting CPU affinity for workers])
3423fi
3424
91983da0
FC
3425SQUID_CHECK_SETRESUID_WORKS
3426if test "x$squid_cv_resuid_works" = "xyes" ; then
be0c7ff0 3427 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 3428fi
60939927 3429
2ff9dfaa 3430AC_CHECK_HEADERS(mswsock.h)
14c0d3ab
DK
3431AC_MSG_CHECKING([for constant CMSG_SPACE])
3432AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
3433 #if HAVE_SYS_SOCKET_H
3434 #include <sys/socket.h>
3435 #endif
2ff9dfaa
AJ
3436 #if HAVE_MSWSOCK_H
3437 #include <mswsock.h>
3438 #endif
14c0d3ab
DK
3439
3440 int a[CMSG_SPACE(int)];
3441]])], [
3442 AC_MSG_RESULT(yes)
3443 AC_DEFINE(HAVE_CONSTANT_CMSG_SPACE, 1, [Define to 1 if CMSG_SPACE is constant])
3444], [
3445 AC_MSG_RESULT(no)
3446])
3447
ecd8516d 3448AC_CHECK_TYPE(struct cmsghdr,AC_DEFINE(HAVE_CMSGHDR,1,[The system provides struct cmsghdr]),,[
c72f8c2e
AJ
3449 #if HAVE_SYS_SOCKET_H
3450 #include <sys/socket.h>
3451 #endif
2ff9dfaa
AJ
3452 #if HAVE_MSWSOCK_H
3453 #include <mswsock.h>
3454 #endif
c72f8c2e
AJ
3455 #if HAVE_WINSOCK2_H
3456 #include <winsock2.h>
3457 #endif
3458])
3459
ecd8516d 3460AC_CHECK_TYPE(struct iovec,AC_DEFINE(HAVE_IOVEC,1,[The system provides struct iovec]),,[
c72f8c2e
AJ
3461 #if HAVE_SYS_SOCKET_H
3462 #include <sys/socket.h>
3463 #endif
3464 #if HAVE_WINSOCK2_H
3465 #include <winsock2.h>
3466 #endif
9ac84dcf
FC
3467 #if HAVE_SYS_UIO_H
3468 #include <sys/uio.h>
3469 #endif
c72f8c2e
AJ
3470])
3471
ecd8516d 3472AC_CHECK_TYPE(struct msghdr,AC_DEFINE(HAVE_MSGHDR,1,[The system provides struct msghdr]),,[
c72f8c2e
AJ
3473 #if HAVE_SYS_SOCKET_H
3474 #include <sys/socket.h>
3475 #endif
2ff9dfaa
AJ
3476 #if HAVE_MSWSOCK_H
3477 #include <mswsock.h>
3478 #endif
c72f8c2e
AJ
3479 #if HAVE_WINSOCK2_H
3480 #include <winsock2.h>
3481 #endif
3482])
3483
ecd8516d 3484AC_CHECK_TYPE(struct sockaddr_un,AC_DEFINE(HAVE_SOCKADDR_UN,1,[The system provides sockaddr_un]),,[
c72f8c2e
AJ
3485 #if HAVE_SYS_UN_H
3486 #include <sys/un.h>
3487 #endif
3488 #if HAVE_SYS_SOCKET_H
3489 #include <sys/socket.h>
3490 #endif
3491 #if HAVE_WINSOCK2_H
3492 #include <winsock2.h>
3493 #endif
3494])
3495
0abb39dd
FC
3496SQUID_CHECK_FUNC_STRNSTR
3497SQUID_CHECK_FUNC_VACOPY
3498SQUID_CHECK_FUNC___VACOPY
cee08cbc 3499
5cafc1d6 3500dnl IP-Filter support requires ipf header files. These aren't
3501dnl installed by default, so we need to check for them
fcabe077 3502if test "x$enable_ipf_transparent" != "xno" ; then
d25bbe26 3503 SQUID_CHECK_BROKEN_SOLARIS_IPFILTER
20ad76ab 3504 AC_MSG_CHECKING(for availability of IP-Filter header files)
42b51993 3505 # hold on to your hats...
fcabe077
FC
3506 if test "x$ac_cv_header_ip_compat_h" = "xyes" -o \
3507 "x$ac_cv_header_ip_fil_compat_h" = "xyes" -o \
3508 "x$ac_cv_header_netinet_ip_compat_h" = "xyes" -o \
3509 "x$ac_cv_header_netinet_ip_fil_compat_h" = "xyes" ; then
42b51993 3510 have_ipfilter_compat_header="yes"
d25bbe26
AJ
3511 fi
3512 if test "x$have_ipfilter_compat_header" = "xyes" -a \
fcabe077
FC
3513 "x$ac_cv_header_ip_fil_h" = "xyes" -a \
3514 "x$ac_cv_header_ip_nat_h" = "xyes" ; then
1d26e252 3515 enable_ipf_transparent="yes"
fcabe077
FC
3516 elif test "x$have_ipfilter_compat_header" = "xyes" -a \
3517 "x$ac_cv_header_netinet_ip_fil_h" = "xyes" -a \
3518 "x$ac_cv_header_netinet_ip_nat_h" = "xyes" ; then
1d26e252 3519 enable_ipf_transparent="yes"
eb824054 3520 else
1d26e252 3521 enable_ipf_transparent="no"
5cafc1d6 3522 fi
3523 AC_MSG_RESULT($IPF_TRANSPARENT)
d25bbe26
AJ
3524
3525## On Solaris Ipfilter includes expect that SOLARIS2 is defined with the
3526## Solaris minor version (8, 9, 10, ...)
3527 if test "x$enable_ipf_transparent" = "xyes" -a "x$squid_host_os" = "xsolaris" ; then
3528 solrev=`uname -r | sh -c 'IFS=. read j n x; echo $n'`
3529 CFLAGS="-DSOLARIS2=$solrev $CFLAGS"
3530 CXXFLAGS="-DSOLARIS2=$solrev $CXXFLAGS"
3531 fi
3532
1d26e252
FC
3533fi
3534AC_MSG_NOTICE([IPF-based transparent proxying enabled: $enable_ipf_transparent])
0f658b5b 3535SQUID_DEFINE_BOOL(IPF_TRANSPARENT,$enable_ipf_transparent,
1d26e252
FC
3536 [Enable support for IPF-style transparent proxying])
3537
b2192042
AJ
3538dnl PF /dev/pf support requires a header file.
3539if test "x$with_nat_devpf" != "xno" ; then
fcabe077
FC
3540 if test "x$ac_cv_header_net_pfvar_h" = "xyes" -o \
3541 "x$ac_cv_header_net_pf_pfvar_h" = "xyes"; then
b2192042
AJ
3542 if test "x$with_nat_devpf" = "xauto" ; then
3543 with_nat_devpf="no"
fcabe077
FC
3544 fi
3545 else
b2192042
AJ
3546 if test "x$with_nat_devpf" = "xyes" ; then
3547 AC_MSG_ERROR([PF /dev/pf based NAT requested but needed header not found])
fcabe077 3548 fi
b2192042 3549 with_nat_devpf="no"
fcabe077 3550 fi
2b0dd4ac 3551fi
b2192042 3552SQUID_DEFINE_BOOL(PF_TRANSPARENT,${enable_pf_transparent:=no},
38ff0a40 3553 [Enable support for PF-style transparent proxying])
b2192042
AJ
3554SQUID_DEFINE_BOOL(USE_NAT_DEVPF,${with_nat_devpf:=no},
3555 [Enable support for /dev/pf NAT lookups])
2b0dd4ac 3556
fcabe077
FC
3557if test "x$enable_linux_netfilter" != "xno" ; then
3558 if test "x$ac_cv_header_linux_netfilter_ipv4_h" = "xyes"; then
3559 if test "x$enable_linux_netfilter" = "xauto" ; then
4bd144d2
FC
3560 enable_linux_netfilter=yes
3561 fi
3562 else
fcabe077 3563 if test "x$enable_linux_netfilter" = "xauto" ; then
4bd144d2 3564 enable_linux_netfilter=no
d852fbad 3565 else
4bd144d2 3566 AC_MSG_ERROR([Linux Netfilter support requested but needed headers not found])
d852fbad 3567 fi
4bd144d2 3568 fi
b50f1b2b 3569fi
0f658b5b 3570SQUID_DEFINE_BOOL(LINUX_NETFILTER,$enable_linux_netfilter,
969d4051 3571 [Enable support for Transparent Proxy on Linux via Netfilter])
20ad76ab 3572
b50f1b2b 3573dnl Netfilter TPROXY depends on libcap but the NAT parts can still work.
4bd144d2 3574AC_MSG_NOTICE([Support for Netfilter-based interception proxy requested: $enable_linux_netfilter])
fcabe077 3575if test "x$enable_linux_netfilter" = "xyes" -a "x$with_libcap" != "xyes" ; then
3b7a7630
AJ
3576 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for TPROXY])
3577 AC_MSG_WARN([Linux Transparent Proxy (version 4+) support WILL NOT be enabled])
3578 AC_MSG_WARN([Reduced support to NAT Interception Proxy])
be0c7ff0 3579 # AC_DEFINEd later
96f08e2d
FC
3580fi
3581
11e8cfe3 3582if test "x$squid_opt_netfilterconntrack" = "xyes" -a "x$with_libcap" != "xyes" ; then
3b7a7630 3583 AC_MSG_ERROR([Linux netfilter conntrack requires libcap support (libcap 2.09+)])
11e8cfe3
AB
3584fi
3585if test "x$with_netfilter_conntrack" = "xyes" -a "x$with_libcap" != "xyes" ; then
3b7a7630 3586 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for netfilter mark support])
11e8cfe3
AB
3587 AC_MSG_WARN([Linux netfilter marking support WILL NOT be enabled])
3588 with_netfilter_conntrack=no
3589fi
3590AC_MSG_NOTICE([Linux Netfilter Conntrack support enabled: ${with_netfilter_conntrack} ${squid_opt_netfilterconntrackpath}])
3591
3592
3593AC_ARG_ENABLE(zph-qos,
3594 AS_HELP_STRING([--enable-zph-qos],[Enable ZPH QOS support]), [
3595SQUID_YESNO([$enableval],
3596 [unrecognized argument to --enable-zph-qos: $enableval])
3597])
3598SQUID_DEFINE_BOOL(USE_QOS_TOS,${enable_zph_qos:=yes},
3599 [Enable Zero Penalty Hit QOS. When set, Squid will alter the
3600 TOS field of HIT responses to help policing network traffic])
3601AC_MSG_NOTICE([ZPH QOS enabled: $enable_zph_qos])
3602if test x"$enable_zph_qos" = "xyes" ; then
3603 AC_MSG_NOTICE([QOS netfilter mark preservation enabled: $with_netfilter_conntrack])
3604 SQUID_DEFINE_BOOL(USE_LIBNETFILTERCONNTRACK,${with_netfilter_conntrack:=no},
3605 [Enable support for QOS netfilter mark preservation])
3606fi
3607
3608
0f13ff28 3609AC_CHECK_LIB(regex, regexec, [REGEXLIB="-lregex"],[REGEXLIB=''])
cc937513 3610AC_ARG_ENABLE(gnuregex,
a5eb3731
FC
3611 AS_HELP_STRING([--enable-gnuregex],
3612 [Compile GNUregex. Unless you have reason to use
cc937513
AJ
3613 this option, you should not enable it.
3614 This library file is usually only required on Windows and
3615 very old Unix boxes which do not have their own regex
0f13ff28
FC
3616 library built in.]), [
3617SQUID_YESNO([$enableval],[unrecognized argument to --enable-gnuregex: $enableval])
3618])
cdb352bb 3619# force-enable on old solaris and nextstep
fcabe077 3620if test "x${enable_gnuregex:=auto}" = "xauto" ; then
91bc414e 3621 case "$host" in
3622 *-sun-solaris2.[[0-4]])
0f13ff28 3623 enable_gnuregex="yes"
91bc414e 3624 ;;
3625 *-next-nextstep*)
0f13ff28 3626 enable_gnuregex="yes"
91bc414e 3627 ;;
3628 esac
3629fi
7a081912 3630
0f13ff28 3631# try detecting if it is needed
fcabe077 3632if test "x$enable_gnuregex" = "xauto" ; then
91983da0
FC
3633 SQUID_CHECK_REGEX_WORKS
3634 if test "x$squid_cv_regex_works" = "xyes" ; then
3635 enable_gnuregex=no
3636 else
3637 enable_gnuregex=yes
3638 fi
f49be7d1 3639fi
91983da0 3640AC_MSG_CHECKING(if GNUregex needs to be compiled)
0f13ff28 3641AC_MSG_RESULT($enable_gnuregex)
fcabe077 3642if test "x$enable_gnuregex" = "xyes"; then
0f13ff28
FC
3643 # for some reason (force-enable, test..) gnuregex was found as needed. Override any system lib
3644 REGEXLIB=""
80ab193b 3645fi
0f13ff28 3646#if no reason was found to enable gnuregex, disable it
fcabe077 3647if test "x$enable_gnuregex" = "xauto" ; then
0f13ff28 3648 enable_gnuregex=no
a4d7e961 3649fi
0f13ff28 3650SQUID_DEFINE_BOOL(USE_GNUREGEX,$enable_gnuregex,[Define if we should use GNU regex])
26675bf4 3651AC_SUBST(REGEXLIB)
a4d7e961 3652
8e0acaf5
FC
3653SQUID_DETECT_UDP_SND_BUFSIZE
3654SQUID_DETECT_UDP_RECV_BUFSIZE
3655SQUID_DETECT_TCP_SND_BUFSIZE
3656SQUID_DETECT_TCP_RECV_BUFSIZE
6bf65235 3657
fa8be5b5 3658SQUID_CHECK_RECV_ARG_TYPE
5c3c56fa
FC
3659SQUID_CHECK_NEED_SYS_ERRLIST
3660SQUID_CHECK_MAXPATHLEN
cc192b50 3661
819656da
AJ
3662SQUID_CHECK_LIBRESOLV_DNS_TTL_HACK
3663SQUID_CHECK_RESOLVER_FIELDS
3664
615540cd 3665AC_CHECK_HEADERS(sys/statvfs.h)
fcabe077 3666if test "x$ac_cv_header_sys_statvfs_h" = "xyes" ; then
bb214e97 3667 SQUID_CHECK_WORKING_STATVFS
c68e9c6b 3668fi
615540cd
AJ
3669if test "x$ac_cv_func_statvfs" != "xyes" ; then
3670 AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/vfs.h sys/statfs.h)
3671 AC_CHECK_FUNCS(statfs)
3672 SQUID_CHECK_F_FRSIZE_IN_STATFS
3673fi
c68e9c6b 3674
4eb85b7a 3675dnl Squid will not usually attempt to translate templates when building
461b8219 3676AC_ARG_ENABLE(translation,
4eb85b7a
AJ
3677 AS_HELP_STRING([--enable-translation],[Generate the localized error page templates and manuals.
3678 Which can also be downloaded from http://www.squid-cache.org/Versions/langpack/.]), [
3679 SQUID_YESNO([$enableval],
3680 [unrecognized argument to --enable-translation: $enableval])
461b8219 3681])
4eb85b7a 3682if test "x${enable_translation:=no}" = "xyes" ; then
461b8219 3683 AX_WITH_PROG([PO2HTML],[po2html])
02259ff8 3684 AX_WITH_PROG([PO2TEXT],[po2txt])
461b8219
AJ
3685else
3686 PO2HTML="off"
02259ff8 3687 PO2TEXT="off"
461b8219
AJ
3688fi
3689AC_SUBST(PO2HTML)
02259ff8 3690AC_SUBST(PO2TEXT)
ee1a8ac2 3691
43000484
AJ
3692dnl Squid now has limited locale handling ...
3693dnl on error pages
3694AC_ARG_ENABLE(auto-locale,
62979ab1 3695 AS_HELP_STRING([--disable-auto-locale],[This prevents Squid providing localized error pages based on the
21d5413e 3696 clients request headers.
fb46b778
FC
3697 When disabled Squid requires explicit language configuration.]), [
3698SQUID_YESNO([$enableval],
3699 [unrecognized argument to --disable-auto-locale: $enableval])
8db7a54b 3700])
fb46b778
FC
3701AC_MSG_NOTICE([Multi-Language support enabled: ${enable_auto_locale:=yes}])
3702SQUID_DEFINE_BOOL(USE_ERR_LOCALES,$enable_auto_locale,
3703 [Use multi-language support on error pages])
3704
43000484 3705
090089c4 3706dnl Need the debugging version of malloc if available
3707XTRA_OBJS=''
fcabe077 3708if test "x$ac_cv_lib_malloc_main" = "xyes" ; then
090089c4 3709 if test -r /usr/lib/debug/malloc.o ; then
3710 XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/malloc.o"
3711 fi
3712 if test -r /usr/lib/debug/mallocmap.o ; then
3713 XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/mallocmap.o"
3714 fi
3715fi
3716AC_SUBST(XTRA_OBJS)
3717
fcabe077 3718if test "x$XTRA_LIBS" = "x"; then
38fea766 3719 XTRA_LIBS="$LIBS"
0f5a16f8 3720 dnl minor cleanup
3721 XTRA_LIBS=`echo $XTRA_LIBS | sed -e "s/ */ /g"`
38fea766 3722 LIBS=''
3723fi
090089c4 3724AC_SUBST(XTRA_LIBS)
3725
daed6927
FC
3726AC_SUBST(SQUID_CFLAGS)
3727AC_SUBST(SQUID_CXXFLAGS)
3728
b2f0a375
AJ
3729AC_ARG_VAR([BUILDCXXFLAGS],[C++ compiler flags for building compile-time tools. e.g. cf_gen])
3730if test "x$BUILDCXXFLAGS" = "x"; then
3731 # if we are NOT cross-compiling, use the default build flags for cf_gen and friends
3732 # otherwise rely on the user-provided value
3733 if test "x$squid_cv_check_marchnative" = "xyes"; then
3734 # always valid for the Build compiler.
b3080eec 3735 BUILDCXXFLAGS="-march=native"
b2f0a375
AJ
3736 fi
3737 BUILDCXXFLAGS="$BUILDCXXFLAGS $CXXFLAGS"
3738fi
3739AC_SUBST(BUILDCXXFLAGS)
3740
90b412dd
AJ
3741AC_MSG_NOTICE([BUILD LIBRARIES: $LIBS])
3742AC_MSG_NOTICE([BUILD EXTRA LIBRARIES: $XTRA_LIBS])
3743AC_MSG_NOTICE([BUILD OBJECTS: $OBJS])
3744AC_MSG_NOTICE([BUILD EXTRA OBJECTS: $XTRA_OBJS])
3745AC_MSG_NOTICE([BUILD C FLAGS: $CFLAGS])
3746AC_MSG_NOTICE([BUILD EXTRA C FLAGS: $SQUID_CFLAGS])
3747AC_MSG_NOTICE([BUILD C++ FLAGS: $CXXFLAGS])
3748AC_MSG_NOTICE([BUILD EXTRA C++ FLAGS: $SQUID_CXXFLAGS])
b2f0a375 3749AC_MSG_NOTICE([BUILD Tools C++ FLAGS: $BUILDCXXFLAGS])
daed6927 3750
090089c4 3751dnl Clean up after OSF/1 core dump bug
3752rm -f core
3753
7a03447c
AJ
3754AC_CONFIG_FILES([
3755 Makefile
3756 compat/Makefile
7a03447c 3757 contrib/Makefile
7a03447c
AJ
3758 doc/Makefile
3759 doc/manuals/Makefile
86b8d400 3760 doc/release-notes/Makefile
6b99776c 3761 errors/Makefile
7a03447c
AJ
3762 helpers/Makefile
3763 helpers/basic_auth/Makefile
3764 helpers/basic_auth/DB/Makefile
3765 helpers/basic_auth/fake/Makefile
3766 helpers/basic_auth/getpwnam/Makefile
3767 helpers/basic_auth/LDAP/Makefile
7a03447c
AJ
3768 helpers/basic_auth/NCSA/Makefile
3769 helpers/basic_auth/NIS/Makefile
3770 helpers/basic_auth/PAM/Makefile
3771 helpers/basic_auth/POP3/Makefile
3772 helpers/basic_auth/RADIUS/Makefile
3773 helpers/basic_auth/SASL/Makefile
3774 helpers/basic_auth/SMB/Makefile
8f0e29d2 3775 helpers/basic_auth/SMB_LM/Makefile
7a03447c
AJ
3776 helpers/basic_auth/SSPI/Makefile
3777 helpers/digest_auth/Makefile
3778 helpers/digest_auth/eDirectory/Makefile
3779 helpers/digest_auth/file/Makefile
3780 helpers/digest_auth/LDAP/Makefile
7a03447c
AJ
3781 helpers/external_acl/Makefile
3782 helpers/external_acl/AD_group/Makefile
ec1fac73 3783 helpers/external_acl/delayer/Makefile
7a03447c
AJ
3784 helpers/external_acl/eDirectory_userip/Makefile
3785 helpers/external_acl/file_userip/Makefile
3786 helpers/external_acl/kerberos_ldap_group/Makefile
3787 helpers/external_acl/LDAP_group/Makefile
3788 helpers/external_acl/LM_group/Makefile
3789 helpers/external_acl/session/Makefile
3790 helpers/external_acl/SQL_session/Makefile
3791 helpers/external_acl/unix_group/Makefile
3792 helpers/external_acl/wbinfo_group/Makefile
3793 helpers/external_acl/time_quota/Makefile
3794 helpers/log_daemon/Makefile
3795 helpers/log_daemon/DB/Makefile
3796 helpers/log_daemon/file/Makefile
6b99776c
AJ
3797 helpers/negotiate_auth/Makefile
3798 helpers/negotiate_auth/kerberos/Makefile
3799 helpers/negotiate_auth/SSPI/Makefile
3800 helpers/negotiate_auth/wrapper/Makefile
3801 helpers/ntlm_auth/Makefile
3802 helpers/ntlm_auth/fake/Makefile
3803 helpers/ntlm_auth/smb_lm/Makefile
3804 helpers/ntlm_auth/SSPI/Makefile
7a03447c
AJ
3805 helpers/ssl/Makefile
3806 helpers/storeid_rewrite/Makefile
3807 helpers/storeid_rewrite/file/Makefile
6b99776c
AJ
3808 helpers/url_rewrite/Makefile
3809 helpers/url_rewrite/fake/Makefile
3810 helpers/url_rewrite/LFS/Makefile
3811 icons/Makefile
3812 lib/Makefile
3813 lib/libTrie/Makefile
3814 lib/libTrie/test/Makefile
3815 lib/ntlmauth/Makefile
3816 lib/profiler/Makefile
3817 lib/rfcnb/Makefile
3818 lib/smblib/Makefile
3819 lib/snmplib/Makefile
3820 scripts/Makefile
3821 src/Makefile
3822 src/acl/Makefile
3823 src/adaptation/Makefile
3824 src/adaptation/icap/Makefile
3825 src/adaptation/ecap/Makefile
3826 src/anyp/Makefile
3827 src/auth/Makefile
3828 src/auth/basic/Makefile
3829 src/auth/digest/Makefile
3830 src/auth/negotiate/Makefile
3831 src/auth/ntlm/Makefile
3832 src/base/Makefile
3833 src/clients/Makefile
3834 src/comm/Makefile
4a3b98d7 3835 src/dns/Makefile
13d8c08c 3836 src/DiskIO/Makefile
d9691f09
AJ
3837 src/DiskIO/AIO/Makefile
3838 src/DiskIO/Blocking/Makefile
3839 src/DiskIO/DiskDaemon/Makefile
3840 src/DiskIO/DiskThreads/Makefile
3841 src/DiskIO/IpcIo/Makefile
3842 src/DiskIO/Mmapped/Makefile
6b99776c
AJ
3843 src/esi/Makefile
3844 src/eui/Makefile
3845 src/format/Makefile
3846 src/fs/Makefile
3847 src/ftp/Makefile
3848 src/helper/Makefile
3849 src/http/Makefile
3850 src/http/one/Makefile
3851 src/icmp/Makefile
3852 src/ident/Makefile
3853 src/ip/Makefile
3854 src/ipc/Makefile
3855 src/log/Makefile
3856 src/mem/Makefile
3857 src/mgr/Makefile
3858 src/parser/Makefile
3859 src/repl/Makefile
7dcca85b 3860 src/security/Makefile
6b99776c
AJ
3861 src/servers/Makefile
3862 src/snmp/Makefile
3863 src/ssl/Makefile
3864 test-suite/Makefile
94ab55b0 3865 tools/Makefile
33d1abfe 3866 tools/helper-mux/Makefile
2ccf2eb2 3867 tools/purge/Makefile
a35a0ac7 3868 tools/squidclient/Makefile
422cb5da 3869 tools/systemd/Makefile
a35a0ac7 3870 tools/sysvinit/Makefile
53cbe3e4 3871])
43ae1d95 3872
3e7b6055 3873# must configure libltdl subdir unconditionally for "make distcheck" to work
081863f3 3874#AC_CONFIG_SUBDIRS(libltdl)
3e7b6055 3875
6a9f6389 3876AC_OUTPUT