]> git.ipfire.org Git - thirdparty/squid.git/blame - configure.in
Fix context leak in HttpStateData::processReplyHeader
[thirdparty/squid.git] / configure.in
CommitLineData
e2716c57 1
090089c4 2dnl
262a0e14 3dnl $Id$
090089c4 4dnl
090089c4 5dnl
6dnl
62979ab1 7AC_INIT([Squid Web Proxy],[3.HEAD-BZR],[http://www.squid-cache.org/bugs/],[squid])
d966027f 8AC_PREREQ(2.61)
62979ab1 9AC_CONFIG_HEADERS([include/autoconf.h])
71b12d7c 10AC_CONFIG_AUX_DIR(cfgaux)
8d9ce05e 11AC_CONFIG_SRCDIR([src/main.cc])
189f1e66 12AM_INIT_AUTOMAKE([tar-ustar nostdinc])
c2720d44 13AC_REVISION($Revision$)dnl
a2794549 14AC_PREFIX_DEFAULT(/usr/local/squid)
246d7ffc 15AM_MAINTAINER_MODE
a2794549 16
fa522425 17m4_include([acinclude/squid-util.m4])
6a56798f 18m4_include([acinclude/compiler-flags.m4])
0abb39dd 19m4_include([acinclude/os-deps.m4])
c8093f05 20m4_include([acinclude/krb5.m4])
3c586e38 21m4_include([acinclude/pam.m4])
6a56798f 22
63e02610 23PRESET_CFLAGS="$CFLAGS"
24PRESET_LDFLAGS="$LDFLAGS"
25
a2794549 26dnl Set default LDFLAGS
27if test -z "$LDFLAGS"; then
28 LDFLAGS="-g"
29fi
30
aff48cc8 31# Check for GNU cc
a2794549 32AC_PROG_CC
e6c4cdd6 33AM_PROG_CC_C_O
29b8d8d6 34AC_PROG_CXX
62979ab1 35AC_LANG([C++])
88d50a22 36AC_CANONICAL_HOST
3e7b6055 37
40503c27 38AC_MSG_CHECKING([simplified host os])
035a321e
FC
39squid_host_os=`echo $host_os|sed 's/[0-9].*//;s/-.*//g'`
40squid_host_os_version=`echo $host_os|tr -d "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-"`
40503c27
FC
41AC_MSG_RESULT($squid_host_os (version $squid_host_os_version))
42# on windows squid_host_os is either mingw or cygwin, version is 32
43
aff48cc8 44# test for programs
aff48cc8
FC
45AC_PROG_RANLIB
46AC_PROG_CPP
47AC_PROG_INSTALL
48AC_PROG_LN_S
49AC_PROG_EGREP
50
51AC_PATH_PROG(SH, sh, /bin/sh)
52AC_PATH_PROG(FALSE, false, /usr/bin/false)
53AC_PATH_PROG(TRUE, true, /usr/bin/true)
54AC_PATH_PROG(MV, mv, $FALSE)
55AC_PATH_PROG(MKDIR, mkdir, $FALSE)
56AC_PATH_PROG(LN, ln, cp)
57AC_PATH_PROG(CHMOD, chmod, $FALSE)
6d1c1ab1 58AC_PATH_PROG(TR, tr, $FALSE)
aff48cc8 59AC_PATH_PROG(RM, rm, $FALSE)
ffa3bad9 60AC_PATH_PROG(CPPUNITCONFIG, cppunit-config, false)
aff48cc8
FC
61dnl Libtool 2.2.6 requires: rm -f
62RM="$RM -f"
63
64AC_PATH_PROG(PERL, perl, none)
65if test "$ac_cv_path_PERL" = "none"; then
66 AC_MSG_FAILURE([Perl is required to compile Squid. Please install Perl and then re-run configure ])
67fi
07f370ee 68AC_PATH_PROG(POD2MAN, pod2man, $FALSE)
aff48cc8
FC
69
70dnl set $(AR)
71AC_PATH_PROG(AR, ar, $FALSE)
72AR_R="$AR r"
aff48cc8
FC
73AC_SUBST(AR_R)
74
fa6307ae 75squid_opt_enable_werror="yes" # default
0b45d157
FC
76AC_ARG_ENABLE(strict-error-checking,
77 AS_HELP_STRING([--disable-strict-error-checking],[By default squid is compiled
78 with all possible static compiler error-checks enbled.
79 This flag disables the behavior]),
80[
81 if test "${enableval}" = "no"
82 then
fa6307ae 83 squid_opt_enable_werror="no"
0b45d157
FC
84 fi
85])
d1f95b42 86
f7baea2d 87use_loadable_modules=1
3e7b6055
AR
88AC_MSG_CHECKING(whether to use loadable modules)
89AC_ARG_ENABLE(loadable-modules,
8075a4da 90 AS_HELP_STRING([--disable-loadable-modules],[do not support loadable modules]) , [
3e7b6055
AR
91 case "${enableval}" in
92 yes) use_loadable_modules=yes ;;
93 no) use_loadable_modules=no ;;
94 *) AC_MSG_ERROR(bad value ${enableval} for --disable-loadable-modules) ;;
95 esac
96 AC_MSG_RESULT([$use_loadable_modules, explicitly])
8075a4da 97 ], [
3e7b6055
AR
98 use_loadable_modules=yes;
99 AC_MSG_RESULT([$use_loadable_modules, implicitly])
8075a4da 100 ])
3e7b6055
AR
101
102AM_CONDITIONAL(USE_LOADABLE_MODULES, test $use_loadable_modules = yes)
103
104if test $use_loadable_modules = yes;
105then
106 AC_DEFINE(USE_LOADABLE_MODULES, 1, [Support Loadable Modules])
107 AC_ENABLE_SHARED
108else
109 AC_DISABLE_SHARED
110fi
111
112AC_LIBTOOL_DLOPEN
113if test $use_loadable_modules = yes;
114then
0fb3665c
AJ
115 dnl Linux LTDL v3-v7 macros assume the autoconf 2.62 variable top_build_prefix is defined
116 dnl But from autoconf 2.64 its called ac_top_build_prefix and not automatically added to the Makefile
117 top_build_prefix=${ac_top_build_prefix}
118 AC_SUBST(top_build_prefix)
119
660faa02 120 AC_LIBLTDL_CONVENIENCE
3e7b6055 121fi
d9a41469
AJ
122dnl LibTool environment is now prepared for setup. Check that it is usable and initialize.
123AC_PROG_LIBTOOL
f5691f9c 124AC_LTDL_DLLIB
3e7b6055
AR
125
126# Do we need these unconditionally for "make distcheck" to work?
127AC_SUBST(INCLTDL)
128AC_SUBST(LIBLTDL)
129
130if test $use_loadable_modules = yes;
131then
be0c7ff0 132 # Why is this needed? Should not AC_LIBTOOL_DLOPEN from libtool do that?
3e7b6055
AR
133 LIBADD_DL=${lt_cv_dlopen_libs}
134 AC_SUBST([LIBADD_DL])
135fi
136
88d50a22 137
07f370ee 138SQUID_CC_GUESS_VARIANT
fa6307ae 139SQUID_CC_GUESS_OPTIONS
f9d138eb 140
a2794549 141
00fa2c12 142REGEXLIB='' # -lregex
cc937513 143# LIBREGEX='' # libregex.a
090089c4 144
be0c7ff0
FC
145dnl find out the exe extension for this platform.
146dnl If it is not empty, use it for CGI as well.
a2794549 147AC_EXEEXT
148AC_OBJEXT
149
150if test -z "$EXEEXT"; then
151 CGIEXT=".cgi"
152else
7aeb8001 153 # automake automatically adds .exe when installing binaries
154 CGIEXT=""
a2794549 155fi
7aeb8001 156AC_SUBST(CGIEXT)
a2794549 157
8075a4da
FC
158AM_CONDITIONAL(ENABLE_WIN32SPECIFIC,
159 [test "$squid_host_os" = "mingw" -o "$squid_host_os" = "cygwin"])
40503c27 160AM_CONDITIONAL(USE_IPC_WIN32,[test "$squid_host_os" = "mingw"])
df087e68 161
40503c27 162if test $squid_host_os = "mingw"; then
4b26fae9 163 AC_PATH_PROG(WIN32_PSAPI, psapi.dll, none)
164 CFLAGS="$CFLAGS -mthreads"
165 CXXFLAGS="$CXXFLAGS -mthreads"
166 if test "$ac_cv_path_WIN32_PSAPI" = "none"; then
eed82608
AJ
167 AC_MSG_NOTICE([PSAPI.DLL is recommended to run Squid on Windows NT Platform])
168 AC_MSG_NOTICE([Please see PSAPI.DLL section on doc/win32-relnotes.html.])
4b26fae9 169 else
170 AC_DEFINE(HAVE_WIN32_PSAPI,1,[Define if you have PSAPI.DLL on Windows systems])
171 LIBS="$LIBS -lpsapi"
172 fi
790ebe36 173 MINGW_LIBS="-lmingwex"
174 AC_SUBST(MINGW_LIBS)
40503c27 175fi
4b26fae9 176
a26bdc75 177if test -z "$CACHE_HTTP_PORT"; then
178 CACHE_HTTP_PORT="3128"
179fi
180if test -z "$CACHE_ICP_PORT"; then
181 CACHE_ICP_PORT="3130"
182fi
a26bdc75 183
f4aaf39c 184dnl Substitutions
6a9f6389 185AC_DEFINE_UNQUOTED(CACHE_HTTP_PORT, $CACHE_HTTP_PORT,
8075a4da 186 [What default TCP port to use for HTTP listening?])
58c1507a 187AC_SUBST(CACHE_HTTP_PORT)
6a9f6389 188AC_DEFINE_UNQUOTED(CACHE_ICP_PORT, $CACHE_ICP_PORT,
8075a4da 189 [What default UDP port to use for ICP listening?])
f5e5c4cf 190AC_SUBST(CACHE_ICP_PORT)
090089c4 191
6a9f6389 192AC_DEFINE_UNQUOTED(CONFIG_HOST_TYPE, "$host",[Host type from configure])
30a4f2a8 193
8075a4da
FC
194AC_DEFINE_UNQUOTED(SQUID_CONFIGURE_OPTIONS, "$ac_configure_args",
195 [configure command line used to configure Squid])
090089c4 196
5483d916 197CACHE_EFFECTIVE_USER="nobody"
198AC_ARG_WITH(default-user,
62979ab1 199 AS_HELP_STRING([--with-default-user=USER],[System user account for squid permissions. Default: nobody]),
5483d916 200 [ CACHE_EFFECTIVE_USER="$withval" ]
201)
202AC_SUBST(CACHE_EFFECTIVE_USER)
203
c8d2dc9b
AJ
204DEFAULT_LOG_DIR="$localstatedir/logs"
205AC_ARG_WITH(logdir,
62979ab1 206 AS_HELP_STRING([--with-logdir=PATH],[Default location for squid logs. default: $DEFAULT_LOG_DIR]),
c8d2dc9b
AJ
207 [ case $withval in
208 yes|no)
209 AC_MSG_ERROR( --with-logdir requires a directory PATH. --with-logdir=PATH )
210 ;;
211 *)
212 DEFAULT_LOG_DIR="$withval"
213 ;;
214 esac
215 ]
216)
217AC_SUBST(DEFAULT_LOG_DIR)
218
b1d38b05 219DEFAULT_PIDFILE="$localstatedir/run/squid.pid"
a7f6af35 220AC_ARG_WITH(pidfile,
e0eb5853
FC
221 AS_HELP_STRING([--with-pidfile=PATH],
222 [Default location for squid PID file. default: PREFIX/var/run/squid.pid]),
223[case $withval in
a7f6af35
AJ
224 yes|no)
225 AC_MSG_ERROR( --with-pidfile requires a file PATH. --with-pidfile=PATH )
226 ;;
227 *)
228 DEFAULT_PIDFILE="$withval"
229 ;;
230 esac
e0eb5853 231])
a7f6af35
AJ
232AC_SUBST(DEFAULT_PIDFILE)
233
4c43504f 234if test "$GCC" = "yes"; then
235 GCCVER=`$CC -v 2>&1 | awk '$2 == "version" {print $3}'`
236 GCCVER2=`echo $GCCVER | awk '{print $1 * 100}'`
237 case "$host" in
238 i386-*-freebsd*)
239 if test $GCCVER2 -lt 300 ; then
eed82608 240 AC_MSG_FAILURE([GCC $GCCVER causes a coredump on $host. Try a more recent GCC version])
4c43504f 241 fi
242 ;;
243 esac
244 unset GCCVER
245 unset GCCVER2
6bb3e7d4 246
4c43504f 247fi
248
30a4f2a8 249dnl Set Default CFLAGS
250if test -z "$PRESET_CFLAGS"; then
251 if test "$GCC" = "yes"; then
252 case "$host" in
97b12a5b 253 *-sun-sunos*)
30a4f2a8 254 # sunos has too many warnings for this to be useful
255 # motorola too
256 ;;
97b12a5b 257 *m88k*)
258 # Motorola cc/ld does not like -02 but is ok on -O
259 CFLAGS=`echo $CFLAGS | sed -e 's/-O[0-9]/-O/'`
260 ;;
30a4f2a8 261 *)
fa6307ae 262 CFLAGS="$squid_cv_cc_option_wall $CFLAGS"
30a4f2a8 263 ;;
264 esac
81a820c6 265 else
266 case "$host" in
c415c128 267 *mips-sgi-irix6.*)
81a820c6 268 # suggested by Rafael Seidl <rafaels@cthulhu.engr.sgi.com>
fa6307ae 269 CFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
776b0191 270 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
81a820c6 271 -Wl,-woff,85,-woff,84,-woff,134 \
63e02610 272 -nostdinc -I/usr/include -D_BSD_SIGNALS $CFLAGS"
fa6307ae 273 CXXFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
776b0191 274 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
275 -Wl,-woff,85,-woff,84,-woff,134 \
276 -nostdinc -I/usr/include -D_BSD_SIGNALS $CXXFLAGS"
81a820c6 277 ;;
e8f5fb18 278 alpha-dec-osf4.*)
553c24ae 279 # Mogul says DEC compilers take both -g and -O2
b6a2f15e 280 CFLAGS=`echo $CFLAGS | sed -e 's/-g/-g3/'`
fa6307ae 281 CFLAGS="$squid_cv_cc_option_optimize $CFLAGS"
553c24ae 282 ;;
81a820c6 283 *)
284 ;;
285 esac
30a4f2a8 286 fi
30a4f2a8 287fi
288
d2e3605e 289dnl set squid required flags
290if test "$GCC" = "yes"; then
9f68fb10 291dnl Guido Serassio (serassio@squid-cache.org) 20070811
292dnl Using the latest MinGW (gcc 3.4.5 + mingw-runtime 3.13) cannot build with
0a13cc9d 293dnl -Werror -Wmissing-prototypes -Wmissing-declarations
9f68fb10 294dnl TODO: check if the problem will be present in any other newer MinGW release.
295 case "$host_os" in
296 mingw|mingw32)
fa6307ae 297 SQUID_CFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wcomments"
9f68fb10 298 ;;
299 *)
fa6307ae 300 SQUID_CFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wcomments"
9f68fb10 301 ;;
302 esac
fa6307ae 303 SQUID_CXXFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wcomments"
d2e3605e 304else
9f68fb10 305 SQUID_CFLAGS=
306 SQUID_CXXFLAGS=
d2e3605e 307fi
07f370ee 308
fa6307ae 309if test "$squid_opt_enable_werror" = "no"
07f370ee
FC
310then
311 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_option_werror"
312 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cc_option_werror"
313fi
314
d2e3605e 315AC_SUBST(SQUID_CFLAGS)
316AC_SUBST(SQUID_CXXFLAGS)
317
07f370ee
FC
318SQUID_CXX_CHECK_ARG_FHUGEOBJECTS
319if test "$squid_cv_cxx_arg_fhugeobjects" = "yes"; then
6a56798f
FC
320 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -fhuge-objects"
321fi
e0eb5853
FC
322# squid_cv_cc_arg_pipe is set by SQUID_CC_GUESS_OPTIONS
323SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cc_arg_pipe"
324SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_arg_pipe"
2060fa9a 325
6c0c04db 326SquidInline="yes"
83079644 327
328AC_ARG_ENABLE(optimizations,
ffa3bad9 329 AS_HELP_STRING([--disable-optimizations],
be0c7ff0 330 [Do not compile Squid with compiler optimizations enabled.
a2f6a96c
FC
331 Optimization is good for production builds, but not
332 good for debugging. During development, use
333 --disable-optimizations to reduce compilation times
334 and allow easier debugging. This option implicitly
335 also enabled --disable-inline]),
83079644 336[ if test "$enableval" = "no" ; then
eed82608 337 AC_MSG_NOTICE([Disabling compiler optimizations (-O flag)])
83079644 338 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9]]*//'`"
339 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-O[[0-9]]*//'`"
340 SquidInline="no"
341 fi
342])
343
ffa3bad9 344AH_TEMPLATE(_USE_INLINE_,[Include inline methods into header file])
6c0c04db 345AC_ARG_ENABLE(inline,
be0c7ff0
FC
346 AS_HELP_STRING([--disable-inline],
347 [Do not compile trivial methods as inline. Squid
a2f6a96c
FC
348 is coded with much of the code able to be inlined.
349 Inlining is good for production builds, but not
350 good for development. During development, use
351 --disable-inline to reduce compilation times and
352 allow incremental builds to be quick. For
353 production builds, or load tests, use
354 --enable-inline to have squid make all trivial
355 methods inlinable by the compiler.]),
6c0c04db 356[ if test "$enableval" = "no" ; then
357 SquidInline="no"
358 fi
359])
360
361if test "$SquidInline" = "yes" ; then
362 AC_DEFINE(_SQUID_INLINE_, inline, [Keyword used by squid for inlining methods])
ffa3bad9 363 AC_DEFINE(_USE_INLINE_, 1 , [Include inline methods into header file])
6c0c04db 364else
eed82608 365 AC_MSG_NOTICE([Inlining optimization disabled])
ffa3bad9 366 AC_DEFINE(_SQUID_INLINE_,[], [Keyword used by squid for inlining methods])
6c0c04db 367fi
368
fa80a8ef 369AC_ARG_ENABLE(debug-cbdata,
8075a4da
FC
370 AS_HELP_STRING([--enable-debug-cbdata],
371 [Provide some debug information in cbdata]), [
372if test "$enableval" = "yes" ; then
373 AC_MSG_NOTICE([cbdata debugging enabled])
374 AC_DEFINE(CBDATA_DEBUG,1, [Enable support for cbdata debug information])
375fi
fa80a8ef 376])
377
c9267250
AJ
378dnl Nasty hack to get autoconf 2.64 on Linux to run.
379dnl all other uses of RUN_IFELSE are wrapped inside CACHE_CHECK which breaks on 2.64
380AC_RUN_IFELSE([AC_LANG_SOURCE([[ int main(int argc, char **argv) { return 0; } ]])],[],[],[])
381
0961c811 382dnl This is a developer only option.. developers know how to set defines
383dnl
384dnl AC_ARG_ENABLE(xmalloc-debug,
385dnl [ --enable-xmalloc-debug Do some simple malloc debugging],
386dnl [ if test "$enableval" = "yes" ; then
eed82608 387dnl AC_MSG_NOTICE([malloc debugging enabled])
6a9f6389 388dnl AC_DEFINE(XMALLOC_DEBUG,1,[Define to do simple malloc debugging])
0961c811 389dnl fi
390dnl ])
391
392dnl This is a developer only option.. developers know how to set defines
393dnl
394dnl AC_ARG_ENABLE(xmalloc-debug-trace,
395dnl [ --enable-xmalloc-debug-trace
396dnl Detailed trace of memory allocations],
397dnl [ if test "$enableval" = "yes" ; then
eed82608 398dnl AC_MSG_NOTICE([malloc debug trace enabled])
6a9f6389 399dnl AC_DEFINE(XMALLOC_TRACE,1,[Define to have a detailed trace of memory allocations])
400dnl AC_DEFINE(XMALLOC_DEBUG,1)
0961c811 401dnl fi
402dnl ])
e5f4e1b0 403
0d00c98b 404AH_TEMPLATE(XMALLOC_STATISTICS,[Define to have malloc statistics])
d9180414 405AC_ARG_ENABLE(xmalloc-statistics,
8075a4da
FC
406 AS_HELP_STRING([--enable-xmalloc-statistics],
407 [Show malloc statistics in status page]), [
408if test "$enableval" = "yes" ; then
409 AC_MSG_NOTICE([malloc statistics enabled])
410 AC_DEFINE(XMALLOC_STATISTICS,1)
411fi
e5f4e1b0 412])
413
8075a4da 414squid_opt_aufs_threads=""
f85c88f3 415AC_ARG_WITH(aufs-threads,
8075a4da
FC
416 AS_HELP_STRING([--with-aufs-threads=N_THREADS],
417 [Tune the number of worker threads for the aufs object store.]), [
418case $withval in
a3310b77 419 [[0-9]]*)
50fbcbd6 420 squid_opt_aufs_threads=$withval
a3310b77 421 ;;
422 *)
8b0d8e31 423 AC_MSG_ERROR(--with-aufs-threads expects a numeric argument)
a3310b77 424 ;;
425 esac
426])
8075a4da 427if test -n "$squid_opt_aufs_threads"; then
50fbcbd6
FC
428 AC_MSG_NOTICE([With $squid_opt_aufs_threads aufs threads])
429 AC_DEFINE_UNQUOTED(AUFS_IO_THREADS,$squid_opt_aufs_threads,
8075a4da 430 [Defines how many threads aufs uses for I/O])
cd748f27 431fi
432
50fbcbd6 433AC_ARG_WITH(dl, AS_HELP_STRING([--with-dl],[Use dynamic linking]))
8154dd82 434if test "$with_dl" = "yes"; then
eed82608 435 AC_MSG_NOTICE([With dl])
8154dd82 436fi
f85c88f3 437
d235bc84 438AC_MSG_CHECKING([for DiskIO modules to be enabled])
50fbcbd6 439squid_disk_module_candidates=""
8075a4da 440squid_opt_enable_diskio="auto" #values: no, yes, "auto"(=yes+detect modules)
2513178d 441AC_ARG_ENABLE(disk-io,
50fbcbd6
FC
442 AS_HELP_STRING([--enable-disk-io="list of modules"],
443 [Build support for the list of disk I/O modules.
444 Set without a value or omitted, all available modules will be built.
445 See src/DiskIO for a list of available modules, or
446 Programmers Guide section on DiskIO
8075a4da
FC
447 for details on how to build your custom disk module]), [
448case $enableval in
2513178d 449 yes)
fe9ddf62 450 ${TRUE}
50fbcbd6 451 #do nothing, "auto" is ok
2513178d
AJ
452 ;;
453 no)
8075a4da 454 squid_opt_enable_diskio="no"
2513178d
AJ
455 ;;
456 *)
8075a4da 457 squid_opt_enable_diskio="yes"
47d80734 458 squid_disk_module_candidates=" `echo $enableval| sed -e 's/,/ /g;s/ */ /g'` "
d235bc84 459 SQUID_CLEANUP_MODULES_LIST([squid_disk_module_candidates])
2513178d
AJ
460 ;;
461 esac
50fbcbd6
FC
462])
463
d235bc84 464# if requested to autodetect, find out what we have
50fbcbd6 465if test $squid_opt_enable_diskio = "auto"; then
8075a4da 466 squid_opt_enable_diskio="yes"
50fbcbd6 467 SQUID_LOOK_FOR_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
50fbcbd6 468fi
d235bc84 469
47d80734 470AC_MSG_RESULT([${squid_disk_module_candidates:-none}])
dc299f29 471SQUID_CHECK_EXISTING_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
0067eb06 472SQUID_DEFINE_BOOL([USE_DISKIO],$squid_opt_enable_diskio,
50fbcbd6 473 [DiskIO modules are expected to be available.])
2513178d 474
dc299f29 475
40503c27 476
2513178d 477dnl Some autoconf.h defines we might enable later...
0b163dbb
FC
478AC_ARG_WITH(pthreads,AS_HELP_STRING([--without-pthreads],[Disable POSIX Threads]))
479AC_ARG_WITH(aio, AS_HELP_STRING([--without-aio],[Do not use POSIX AIO. Default: auto-detect]))
0d00c98b
FC
480AH_TEMPLATE(USE_DISKIO_AIO, [Whether POSIX AIO support is needed. Automatic])
481AH_TEMPLATE(USE_DISKIO_DISKTHREADS, [Whether pthreads support is needed. Automatic])
2513178d 482USE_AIOPS_WIN32=0
ffa3bad9
FC
483squid_opt_use_aio=
484squid_opt_use_diskthreads=
46577dd1 485AIOLIB=
2513178d
AJ
486
487dnl Setup the module paths etc.
2513178d 488DISK_LIBS=
e2716c57 489DISK_OS_LIBS=
2513178d
AJ
490DISK_MODULES=
491DISK_LINKOBJS=
50fbcbd6 492for module in $squid_disk_module_candidates none; do
d235bc84 493 # maybe not needed
2513178d
AJ
494 if test "$module" = "none"; then
495 continue
496 fi
497 if ! test -d $srcdir/src/DiskIO/$module; then
498 AC_MSG_ERROR(disk-io $module does not exist)
499 fi
500 case "$module" in
501 DiskDaemon)
6312592e 502 AC_MSG_NOTICE([Enabling DiskDaemon DiskIO module])
2513178d
AJ
503 DISK_LIBS="$DISK_LIBS libDiskDaemon.a"
504 DISK_MODULES="$DISK_MODULES DiskDaemon"
505 DISK_PROGRAMS="$DISK_PROGRAMS DiskIO/DiskDaemon/diskd"
506 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/DiskDaemon/DiskDaemonDiskIOModule.o"
507 ;;
508 DiskThreads)
ffa3bad9 509 squid_opt_use_diskthreads="yes"
6312592e 510 LIBPTHREADS=
0b163dbb 511 SQUID_STATE_SAVE([diskthreads_state],[SQUID_CFLAGS SQUID_CXXFLAGS])
6312592e
AJ
512 if test "$with_pthreads" != "no"; then
513 dnl TODO: this needs to be extended to handle more systems and better
514 dnl REF: http://www.openldap.org/lists/openldap-bugs/200006/msg00070.html
515 dnl REF: http://autoconf-archive.cryp.to/acx_pthread.html
0b163dbb
FC
516 case "$squid_host_os" in
517 mingw)
6312592e
AJ
518 USE_AIOPS_WIN32=1
519 AC_MSG_NOTICE([Windows threads support automatically enabled])
520 ;;
0b163dbb 521 freebsd)
6312592e
AJ
522 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
523 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
0b163dbb
FC
524 if test "$GCC" = "yes" -a -z "$PRESET_LDFLAGS" ; then
525 LDFLAGS="$LDFLAGS -pthread"
6312592e
AJ
526 fi
527 ;;
0b163dbb 528 solaris)
6312592e
AJ
529 if test "$GCC" = "yes" ; then
530 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -pthreads"
531 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -pthreads"
ffa3bad9 532 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"],
6312592e 533 [ AC_MSG_NOTICE(pthread library required but cannot be found.)
ffa3bad9 534 squid_opt_use_diskthreads="no"
6312592e
AJ
535 ])
536 else
537 dnl test for -lpthread first. libc version is a stub apparently on Solaris.
538 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -lpthread"
539 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -lpthread"
40503c27
FC
540 AC_SEARCH_LIBS([pthread_create],[pthread thread],[
541 LIBPTHREADS="" #in LIBS
542 ],[
543 AC_MSG_NOTICE(pthread library required but cannot be found.)
544 squid_opt_use_diskthreads="no"
545 ])
6312592e
AJ
546 fi
547 ;;
548 *)
549 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
550 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
0b163dbb 551 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"],
6312592e 552 [ AC_MSG_NOTICE(pthread library required but cannot be found.)
ffa3bad9 553 squid_opt_use_diskthreads="no"
6312592e
AJ
554 ])
555 ;;
556 esac
2513178d 557 else
6312592e 558 AC_MSG_NOTICE([Native pthreads support manually disabled.])
ffa3bad9 559 squid_opt_use_diskthreads="no"
2513178d 560 fi
ffa3bad9 561 if test "$squid_opt_use_diskthreads" = "yes" ; then
6312592e 562 AC_DEFINE(USE_DISKIO_DISKTHREADS, 1, [Whether pthreads support is needed. Automatic])
2513178d 563 AC_MSG_NOTICE([Enabling DiskThreads DiskIO module])
e2716c57
HN
564 DISK_LIBS="$DISK_LIBS libDiskThreads.a"
565 DISK_OS_LIBS="$DISK_OS_LIBS $LIBPTHREADS"
2513178d
AJ
566 DISK_MODULES="$DISK_MODULES DiskThreads"
567 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/DiskThreads/DiskThreadsDiskIOModule.o"
568 else
6312592e
AJ
569 AC_DEFINE(USE_DISKIO_DISKTHREADS, 0, [Whether pthreads support is needed. Automatic])
570 AC_MSG_NOTICE([Native pthreads support disabled. DiskThreads module automaticaly disabled.])
0b163dbb 571 SQUID_STATE_ROLLBACK([diskthreads_state])
2513178d
AJ
572 fi
573 ;;
574
575 AIO)
2513178d 576 dnl Check for POSIX AIO availability
ffa3bad9 577 squid_opt_use_aio="yes"
46577dd1 578 AIOLIB=
2513178d
AJ
579 if test "$with_aio" != "no"; then
580 have_aio_header=no
581 AC_CHECK_HEADERS(aio.h,[have_aio_header=yes])
582 dnl On some systems POSIX AIO functions are in librt
583 dnl On some systems POSIX AIO functions are in libaio
46577dd1 584 AC_CHECK_LIB(rt,aio_read,[AIOLIB="-lrt"],AC_CHECK_LIB(aio,aio_read,[AIOLIB="-laio"],[]))
2513178d 585 dnl Enable AIO if the library and headers are found
46577dd1 586 if test "$AIOLIB" != "" && test "$have_aio_header" = "yes"; then
2513178d 587 AC_MSG_NOTICE([Native POSIX AIO support detected.])
ffa3bad9 588 squid_opt_use_aio="yes"
2513178d
AJ
589 else
590 dnl Windows does things differently. We provide wrappers.
591 dnl TODO: Windows really needs its own DiskIO module or its Overlaped IO
592 case "$host_os" in
593 mingw|mingw32)
ffa3bad9 594 squid_opt_use_aio="yes"
2513178d
AJ
595 AC_MSG_NOTICE([Windows being built. Maybe-enable POSIX AIO.])
596 ;;
597 *)
598 AC_MSG_NOTICE([Native POSIX AIO support not detected. AIO automatically disabled.])
ffa3bad9 599 squid_opt_use_aio="no"
2513178d
AJ
600 ;;
601 esac
602 fi
603 else
604 AC_MSG_NOTICE([POSIX AIO support manually disabled.])
ffa3bad9 605 squid_opt_use_aio="no"
2513178d
AJ
606 fi
607 dnl Use the POSIX AIO pieces if we actually need them.
ffa3bad9 608 if test "$squid_opt_use_aio" = "yes" ; then
2513178d
AJ
609 AC_DEFINE(USE_DISKIO_AIO, 1, [Whether POSIX AIO support is needed. Automatic])
610 DISK_MODULES="$DISK_MODULES AIO"
46577dd1 611 DISK_LIBS="$DISK_LIBS libAIO.a"
2513178d
AJ
612 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/AIO/AIODiskIOModule.o"
613 case "$host_os" in
614 mingw|mingw32)
615 USE_AIO_WIN32=1
616 AC_MSG_NOTICE([Replacing AIO DiskIO module with: Windows overlapped I/O support])
617 ;;
618 *)
619 AC_MSG_NOTICE([Enabling AIO DiskIO module])
e2716c57 620 DISK_OS_LIBS="$DISK_OS_LIBS $AIOLIB"
2513178d
AJ
621 ;;
622 esac
623 else
3cf1e8b6 624 AC_DEFINE(USE_DISKIO_AIO, 0, [Whether POSIX AIO support is needed. Automatic])
2513178d
AJ
625 AC_MSG_NOTICE([AIO DiskIO Module disabled. Missing POSIX AIO support.])
626 fi
627 ;;
628
629 Blocking)
2513178d
AJ
630 AC_MSG_NOTICE([Enabling Blocking DiskIO module])
631 DISK_LIBS="$DISK_LIBS libBlocking.a"
632 DISK_MODULES="$DISK_MODULES Blocking"
633 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/Blocking/BlockingDiskIOModule.o"
634 ;;
635
636 *)
637 AC_MSG_NOTICE([Enabling $module DiskIO module])
638 DISK_LIBS="$DISK_LIBS lib${module}.a"
639 DISK_MODULES="$DISK_MODULES ${module}"
640 DISK_LINKOBJS="$DISK_LINKOBJS DiskIO/${module}/${module}DiskIOModule.o"
641 ;;
642 esac
643done
644AC_MSG_NOTICE([IO Modules built: $DISK_MODULES])
645AC_SUBST(DISK_MODULES)
646AC_SUBST(DISK_LIBS)
647AC_SUBST(DISK_PROGRAMS)
648AC_SUBST(DISK_LINKOBJS)
e2716c57 649AC_SUBST(DISK_OS_LIBS)
2513178d
AJ
650AM_CONDITIONAL([USE_AIOPS_WIN32], [test "$USE_AIOPS_WIN32" = 1])
651AM_CONDITIONAL([USE_AIO_WIN32], [test "$USE_AIO_WIN32" = 1])
652
653
654dnl Check what Storage formats are wanted.
655dnl This version will error out with a message saying why if a required DiskIO is missing.
dc299f29 656squid_opt_enable_storeio=auto
d235bc84
FC
657AC_ARG_ENABLE([storeio],
658 AS_HELP_STRING([--enable-storeio="list of modules"],
659 [Build support for the list of store I/O modules.
18cc92fb
FC
660 The default is only to build the "ufs" module.
661 See src/fs for a list of available modules, or
662 Programmers Guide section <not yet written>
663 for details on how to build your custom store module]),
cd748f27 664[ case $enableval in
665 yes)
dc299f29 666 squid_opt_enable_storeio=auto
cd748f27 667 ;;
668 no)
dc299f29 669 squid_opt_enable_storeio=no
cd748f27 670 ;;
1c690e30 671 *)
dc299f29 672 squid_opt_enable_storeio=yes
d235bc84 673 squid_storeio_module_candidates="`echo $enableval| sed -e 's/,/ /g;s/ */ /g'`"
80f756db 674 # ufs is really always needed as it has low-level routines
be0c7ff0 675 # if it is a dupe it will be cleaned-up later
80f756db 676 squid_storeio_module_candidates="$squid_storeio_module_candidates ufs"
cd748f27 677 ;;
678 esac
cd748f27 679])
dc299f29
FC
680if test "$squid_opt_enable_storeio" = "auto"; then
681 squid_opt_enable_storeio=yes
d235bc84
FC
682 AC_MSG_CHECKING([for available StoreIO modules])
683 SQUID_LOOK_FOR_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
defb3257 684 # disable coss
7eb77a5f 685 squid_storeio_module_candidates=`echo $squid_storeio_module_candidates|sed 's/coss//'`
d235bc84
FC
686 AC_MSG_RESULT([$squid_storeio_module_candidates])
687fi
688
dc299f29
FC
689SQUID_CLEANUP_MODULES_LIST([squid_storeio_module_candidates])
690SQUID_CHECK_EXISTING_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
691AC_MSG_NOTICE([Store modules built: $squid_storeio_module_candidates])
692
693for fs in $squid_storeio_module_candidates none; do
8154dd82 694 case "$fs" in
695 diskd)
80f756db
FC
696 if test "$squid_disk_module_candidates_Blocking" != "yes" -a \
697 "$squid_disk_module_candidates_DiskDaemon" != "yes" ; then
698 AC_MSG_ERROR([Storage diskd module requires DiskIO module: Blocking or DiskDaemon])
2513178d 699 fi
8154dd82 700 ;;
701 aufs)
80f756db
FC
702 if test "$squid_disk_module_candidates_Blocking" != "yes" -a \
703 "$squid_disk_module_candidates_DiskThreads" != "yes" ; then
704 AC_MSG_ERROR([Storage module aufs requires DiskIO module: Blocking or DiskThreads])
2513178d 705 fi
8154dd82 706 ;;
707 coss)
dc299f29 708 AC_MSG_WARN([COSS Support is not stable yet in Squid-3. Please do not use.\a])
dc299f29 709 if ! test "$squid_disk_module_candidates_AIO" = "yes"; then
2513178d
AJ
710 AC_MSG_ERROR([COSS requires POSIX AIO which is not available.])
711 fi
3256ae73 712 dnl
713 dnl Automake om MinGW needs explicit exe extension
714 dnl for STORE_TESTS substition
715 dnl
082a5e7a 716 STORE_TESTS="$STORE_TESTS tests/testCoss$EXEEXT"
717 ;;
d3b3ab85 718 ufs)
082a5e7a 719 STORE_TESTS="$STORE_TESTS tests/testUfs$EXEEXT"
8154dd82 720 esac
a2794549 721done
d3b3ab85 722
9d6186b1
FC
723dnl hack: need to define those even if not used in the build system to
724dnl make sure that global FS objects are linked to the squid binary.
7b5b7ba8
CT
725AH_TEMPLATE(HAVE_FS_UFS, "Define to 1 if ufs filesystem module is build")
726AH_TEMPLATE(HAVE_FS_AUFS, "Define to 1 if aufs filesystem module is build")
727AH_TEMPLATE(HAVE_FS_DISKD, "Define to 1 if diskd filesystem module is build")
728AH_TEMPLATE(HAVE_FS_COSS, "Define to 1 if coss filesystem module is build")
729
730
dc299f29 731dnl got final squid_storeio_module_candidates, build library lists
b66455ff
AR
732dnl This list will not be needed when each fs library has its own Makefile
733STORE_LIBS_TO_BUILD=
734dnl File system libraries to link executables with.
735dnl These are the same as STORE_LIBS_TO_BUILD, but with a path
736STORE_LIBS_TO_ADD=
dc299f29 737for fs in $squid_storeio_module_candidates; do
7b5b7ba8
CT
738 STORE_LIBS_TO_BUILD="$STORE_LIBS_TO_BUILD lib${fs}.la"
739 STORE_LIBS_TO_ADD="$STORE_LIBS_TO_ADD fs/lib${fs}.la"
6d1c1ab1
FC
740 SQUID_TOUPPER_VAR_CONTENTS([fs])
741 AC_DEFINE_UNQUOTED(HAVE_FS_${fs}, 1)
b66455ff
AR
742done
743
744AC_SUBST(STORE_LIBS_TO_BUILD)
745AC_SUBST(STORE_LIBS_TO_ADD)
082a5e7a 746AC_SUBST(STORE_TESTS)
a2794549 747
24a04df9
AJ
748
749dnl At lest one removal policy is always needed.
750dnl 'lru' removal policy is currently hard-coded by name for tests
751dnl so we must set it as default.
752REPL_POLICIES="lru"
d9180414 753AC_ARG_ENABLE(removal-policies,
56ffc413
FC
754 AS_HELP_STRING([--enable-removal-policies="list of policies"],
755 [Build support for the list of removal policies.
18cc92fb
FC
756 The default is only to build the "lru" module.
757 See src/repl for a list of available modules, or
758 Programmers Guide section 9.9 for details on how
759 to build your custom policy]),
6a566b9c 760[ case $enableval in
761 yes)
5069fb38 762 SQUID_LOOK_FOR_MODULES([$srcdir/src/repl],[REPL_POLICIES])
6a566b9c 763 ;;
764 no)
765 ;;
1c690e30 766 *)
767 REPL_POLICIES="`echo $enableval| sed -e 's/,/ /g;s/ */ /g'`"
6a566b9c 768 ;;
769 esac
6a566b9c 770])
1c690e30 771if test -n "$REPL_POLICIES"; then
56ffc413 772 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/repl],[REPL_POLICIES])
5069fb38 773 AC_MSG_NOTICE([Removal policies to build: $REPL_POLICIES])
1c690e30 774 REPL_OBJS="repl/lib`echo $REPL_POLICIES|sed -e 's% %.a repl/lib%g'`.a"
775 REPL_LIBS="`echo $REPL_OBJS|sed -e 's%repl/%%g'`"
776fi
6a566b9c 777AC_SUBST(REPL_POLICIES)
6a566b9c 778AC_SUBST(REPL_OBJS)
f71946fc 779AC_SUBST(REPL_LIBS)
6a566b9c 780
d1da2d1f 781AM_CONDITIONAL(ENABLE_PINGER, false)
e5f4e1b0 782AC_ARG_ENABLE(icmp,
62979ab1 783 AS_HELP_STRING([--enable-icmp],[Enable ICMP pinging and Network Measurement]),
e5f4e1b0 784[ if test "$enableval" = "yes" ; then
eed82608 785 AC_MSG_NOTICE([ICMP enabled])
be0c7ff0 786 AC_DEFINE(USE_ICMP,1,[Define to use Squid ICMP and Network Measurement features (highly recommended!)])
d1da2d1f 787 AM_CONDITIONAL(ENABLE_PINGER, true)
e5f4e1b0 788 fi
789])
790
a2794549 791AM_CONDITIONAL(USE_DELAY_POOLS, false)
d9180414 792AC_ARG_ENABLE(delay-pools,
62979ab1 793 AS_HELP_STRING([--enable-delay-pools],[Enable delay pools to limit bandwidth usage]),
e5f4e1b0 794[ if test "$enableval" = "yes" ; then
eed82608 795 AC_MSG_NOTICE([Delay pools enabled])
6a9f6389 796 AC_DEFINE([DELAY_POOLS],1,[Traffic management via "delay pools".])
797 AM_CONDITIONAL(USE_DELAY_POOLS, true,)
e5f4e1b0 798 fi
799])
800
5fa840c3 801dnl disable generic/common adaptation support by default
5069fb38 802squid_opt_use_adaptation=no
5fa840c3 803
5069fb38 804squid_opt_use_esi=yes
7eb77a5f
FC
805AH_TEMPLATE([USE_SQUID_ESI],
806 [Define to enable the ESI processor and Surrogate header support])
43ae1d95 807AC_ARG_ENABLE(esi,
7eb77a5f 808 AS_HELP_STRING([--enable-esi],
5069fb38 809 [Enable ESI for accelerators. Benefits from expat or libxml2.
7eb77a5f 810 Enabling ESI will cause squid reverse proxies to be capable
5069fb38
FC
811 of the Edge Acceleration Specification (www.esi.org).]),
812 [squid_opt_use_esi=$enableval], [squid_opt_use_esi=no])
88bfe098
AJ
813HAVE_LIBEXPAT=0
814EXPATLIB=
815HAVE_LIBXML2=0
816XMLLIB=
5069fb38 817if test "$squid_opt_use_esi" = "yes" ; then
3473acb1 818 AC_MSG_NOTICE([Enabling ESI processor and Surrogate header support.])
7eb77a5f
FC
819 AC_DEFINE(USE_SQUID_ESI,1,
820 [Compile the ESI processor and Surrogate header support])
821else
8075a4da 822 AC_MSG_NOTICE([Disabling ESI processor])
7eb77a5f 823fi
88bfe098 824
7eb77a5f
FC
825# ESI support libraries: expat
826AC_ARG_WITH(expat, AS_HELP_STRING([--without-expat],[Do not use expat for ESI. Default: auto-detect]))
5069fb38 827if test "$squid_opt_use_esi" = "yes" -a "$with_expat" != "no" ; then
7eb77a5f
FC
828 AC_CHECK_LIB([expat], [main], [EXPATLIB="-lexpat"; HAVE_LIBEXPAT=1])
829 AC_CHECK_HEADERS([expat.h])
830 AC_DEFINE_UNQUOTED(HAVE_LIBEXPAT, $HAVE_LIBEXPAT, [Define to 1 if you have the expat library])
831 if test "$with_expat" = "yes" && test "$HAVE_LIBEXPAT" != "1" ; then
832 AC_MSG_ERROR([Required library expat is not able to be found.])
23df48fd 833 fi
7eb77a5f 834fi
ad32c661 835
7eb77a5f 836AC_ARG_WITH(libxml2, AS_HELP_STRING([--without-libxml2],[Do not use libxml2 for ESI. Default: auto-detect]))
5069fb38 837if test "$squid_opt_use_esi" = "yes" -a "$with_libxml2" != "no" ; then
7eb77a5f
FC
838 AC_CHECK_LIB([xml2], [main], [XMLLIB="-lxml2"; HAVE_LIBXML2=1])
839 dnl Find the main header and include path...
840 AC_CHECK_HEADERS([libxml/parser.h], [], [
841 SAVED_CPPFLAGS="$CPPFLAGS"
842 CPPFLAGS="-I/usr/include/libxml2 $CPPFLAGS"
843 unset ac_cv_header_libxml_parser_h
844 AC_CHECK_HEADERS([libxml/parser.h], [ac_cv_libxml2_include=yes], [])
845 CPPFLAGS="$SAVED_CPPFLAGS"
846 ])
847 if test "x$ac_cv_libxml2_include" = "xyes"; then
848 SQUID_CXXFLAGS="-I/usr/include/libxml2 $SQUID_CXXFLAGS"
849 CPPFLAGS="-I/usr/include/libxml2 $CPPFLAGS"
850 fi
851 dnl Now that we know where to look find the other headers...
852 AC_CHECK_HEADERS(libxml/HTMLparser.h libxml/HTMLtree.h)
853 AC_DEFINE_UNQUOTED(HAVE_LIBXML2, $HAVE_LIBXML2, [Define to 1 if you have the libxml2 library])
854 if test "$with_libxml2" = "yes" && test "$HAVE_LIBXML2" != "1" ; then
855 AC_MSG_ERROR([Required library libxml2 is not able to be found.])
856 fi
43ae1d95 857fi
7eb77a5f 858
5069fb38 859AM_CONDITIONAL(USE_ESI, test "$squid_opt_use_esi" = "yes")
88bfe098
AJ
860AM_CONDITIONAL(HAVE_LIBEXPAT, test $HAVE_LIBEXPAT = 1)
861AC_SUBST(EXPATLIB)
862AM_CONDITIONAL(HAVE_LIBXML2, test $HAVE_LIBXML2 = 1)
863AC_SUBST(XMLLIB)
43ae1d95 864
8075a4da 865# icap argument handling
51952383 866AC_ARG_ENABLE(icap-client,
62979ab1 867 AS_HELP_STRING([--enable-icap-client],[Enable the ICAP client.]),
8075a4da 868 [squid_opt_use_icap_client=$enableval], [squid_opt_use_icap_client=no])
0067eb06 869SQUID_DEFINE_BOOL([ICAP_CLIENT],$squid_opt_use_icap_client,
8075a4da
FC
870 [Enable ICAP client features in Squid])
871AM_CONDITIONAL(USE_ICAP_CLIENT, [test "$squid_opt_use_icap_client" = "yes" ])
5069fb38 872if test "$squid_opt_use_icap_client" = "yes" ; then
1f3c65fc 873 ICAP_LIBS="icap/libicap.la"
5069fb38 874 squid_opt_use_adaptation=yes
51952383 875else
c21ad0f5 876 ICAP_LIBS=""
51952383 877fi
c21ad0f5 878AC_SUBST(ICAP_LIBS)
51952383 879
5069fb38 880squid_opt_use_ecap=1
3e7b6055
AR
881AC_MSG_CHECKING(whether to support eCAP)
882AC_ARG_ENABLE(ecap,
8075a4da
FC
883 AS_HELP_STRING([--enable-ecap],[support loadable content adaptation modules]), [
884 case "${enableval}" in
885 yes|no) squid_opt_use_ecap=$enableval ;;
886 *) AC_MSG_ERROR(bad value ${enableval} for --enable-ecap) ;;
887 esac
888AC_MSG_RESULT([$squid_opt_use_ecap, explicitly])
889 ], [
5069fb38
FC
890 squid_opt_use_ecap=no;
891 AC_MSG_RESULT([$squid_opt_use_ecap, implicitly])
3e7b6055
AR
892 ]
893)
894
895dnl Perform configuration consistency checks for eCAP
b61a58df 896ECAPLIB=""
5069fb38 897if test $squid_opt_use_ecap = yes;
3e7b6055 898then
5fa840c3 899 dnl eCAP support requires loadable modules, which are enabled by default
3e7b6055
AR
900 if test "$use_loadable_modules" != "yes"
901 then
945980c0 902 AC_MSG_ERROR([eCAP support requires loadable modules. Please do not use --disable-loadable-modules with --enable-ecap.]);
3e7b6055 903 fi
4cfba571
AR
904
905 dnl eCAP support requires libecap
906 AC_CHECK_LIB([ecap], [main],
b61a58df 907 [ECAPLIB="-lecap"],
591e6db0 908 [AC_MSG_FAILURE([eCAP support requires libecap library, but no usable library was found])]
4cfba571 909 )
3e7b6055
AR
910fi
911
5069fb38
FC
912AM_CONDITIONAL(USE_ECAP, test $squid_opt_use_ecap = yes)
913if test $squid_opt_use_ecap = yes;
3e7b6055
AR
914then
915 AC_DEFINE(USE_ECAP,1,[Enable eCAP support])
1f3c65fc 916 ECAP_LIBS="ecap/libecap.la $ECAP_LIBS"
5069fb38 917 squid_opt_use_adaptation=yes
3e7b6055 918else
5fa840c3 919 AC_DEFINE(USE_ECAP,0,[Disable eCAP support])
3e7b6055
AR
920 ECAP_LIBS=""
921fi
b61a58df 922dnl convenience library
3e7b6055 923AC_SUBST(ECAP_LIBS)
b61a58df
AJ
924dnl -lecap if needed
925AC_SUBST(ECAPLIB)
3e7b6055 926
3e7b6055 927
5fa840c3 928dnl enable adaptation if requested by specific adaptation mechanisms
5069fb38
FC
929AM_CONDITIONAL(USE_ADAPTATION, test $squid_opt_use_adaptation = yes)
930if test $squid_opt_use_adaptation = yes
5fa840c3
AR
931then
932 AC_DEFINE(USE_ADAPTATION,1,[common adaptation support])
933 ADAPTATION_LIBS="adaptation/libadaptation.la"
51952383 934else
5fa840c3
AR
935 AC_DEFINE(USE_ADAPTATION,0,[common adaptation support])
936 ADAPTATION_LIBS=""
51952383 937fi
5fa840c3 938AC_SUBST(ADAPTATION_LIBS)
3e7b6055
AR
939
940
0961c811 941dnl This is a developer only option. Developers know how to set defines
942dnl
943dnl AC_ARG_ENABLE(mem-gen-trace,
944dnl [ --enable-mem-gen-trace Do trace of memory stuff],
945dnl [ if test "$enableval" = "yes" ; then
eed82608 946dnl AC_MSG_NOTICE([Memory trace (to file) enabled])
6a9f6389 947dnl AC_DEFINE(MEM_GEN_TRACE,1,[Define for log file trace of mem alloc/free])
5069fb38
FC
948dnl fi
949dnl ])
950
36a97e19 951
d9180414 952AC_ARG_ENABLE(useragent-log,
1a6b111a
FC
953 AS_HELP_STRING([--enable-useragent-log],
954 [Enable logging of User-Agent header]), [
955SQUID_YESNO([$enableval],
956 [unrecognized argument to --enable-useragent-log: $enableval])
957 enable_useragent_log=$enableval
e5f4e1b0 958])
0067eb06 959SQUID_DEFINE_BOOL(USE_USERAGENT_LOG,${enable_useragent_log:=no},
1d87b6b3 960 [If you want to log User-Agent request header values, define this.])
1a6b111a 961AC_MSG_NOTICE([User-Agent logging enabled: $enable_useragent_log])
e5f4e1b0 962
dfca7e1a 963AC_ARG_ENABLE(referer-log,
1d87b6b3 964 AS_HELP_STRING([--enable-referer-log],[Enable logging of Referer header]), [
1a6b111a
FC
965SQUID_YESNO([$enableval],
966 [unrecognized argument to --enable-referer-log: $enableval])
dfca7e1a 967])
0067eb06 968SQUID_DEFINE_BOOL(USE_REFERER_LOG,${enable_referer_log:=no},
1d87b6b3 969 [If you want to log Referer request header values, define this.
1a6b111a
FC
970 By default, they are written to referer.log in the Squid logdir.
971 This feature is deprecated in favour of custom log formats])
972AC_MSG_NOTICE([Referer logging enabled: $enable_referer_log])
dfca7e1a 973
5069fb38 974AC_ARG_ENABLE(wccp,
8075a4da 975 AS_HELP_STRING([--disable-wccp],[Disable Web Cache Coordination Protocol]), [
1a6b111a 976SQUID_YESNO([$enableval],[unrecognized argument to --disable-wccp: $enableval])
5069fb38 977])
0067eb06 978SQUID_DEFINE_BOOL(USE_WCCP, ${enable_wccp:=yes}, [Define to enable WCCP])
1a6b111a 979AC_MSG_NOTICE([Web Cache Coordination Protocol enabled: $enable_wccp])
0b0cfcf2 980
0b0cfcf2 981AC_ARG_ENABLE(wccpv2,
1a6b111a
FC
982 AS_HELP_STRING([--disable-wccpv2],
983 [Disable Web Cache Coordination V2 Protocol]), [
984SQUID_YESNO([$enableval],
985 [unrecognized argument to --disable-wccpv2: $enableval])
0b0cfcf2 986])
0067eb06 987SQUID_DEFINE_BOOL(USE_WCCPv2,${enable_wccpv2:=yes},
1a6b111a
FC
988 [Define to enable WCCP V2])
989AC_MSG_NOTICE([Web Cache Coordination V2 Protocol enabled: $enable_wccpv2])
320e9f36 990
d9180414 991AC_ARG_ENABLE(kill-parent-hack,
8075a4da 992 AS_HELP_STRING([--enable-kill-parent-hack],[Kill parent on shutdown]), [
1a6b111a
FC
993SQUID_YESNO([$enableval],
994 [unrecognized argument to --enable-kill-parent-hack: $enableval])
e5f4e1b0 995])
0067eb06 996SQUID_DEFINE_BOOL(KILL_PARENT_OPT,${enable_kill_parent_hack:=no},
1a6b111a
FC
997 [A dangerous feature which causes Squid to kill its parent
998 process (presumably the RunCache script) upon receipt
999 of SIGTERM or SIGINT. Deprecated, Use with caution.])
1000AC_MSG_NOTICE([Kill parent on shutdown hack enabled: $enable_kill_parent_hack])
20ad76ab 1001
e5f4e1b0 1002AC_ARG_ENABLE(snmp,
1d87b6b3 1003 AS_HELP_STRING([--disable-snmp],[Disable SNMP monitoring support]), [
1a6b111a
FC
1004 SQUID_YESNO([$enableval],
1005 [unrecognized argument to --disable-snmp: $enableval])
87630341 1006])
0067eb06 1007SQUID_DEFINE_BOOL(SQUID_SNMP,${enable_snmp:=yes},
1a6b111a
FC
1008 [Define to enable SNMP monitoring of Squid])
1009AM_CONDITIONAL(USE_SNMP, [test "$enable_snmp" = "yes"])
1010if test "$enable_snmp" = "yes"; then
63705952 1011 SNMPLIB='../snmplib/libsnmp.a'
e5f4e1b0 1012 makesnmplib=snmplib
87630341 1013fi
1a6b111a 1014AC_MSG_NOTICE([SNMP support enabled: $enable_snmp])
e5f4e1b0 1015AC_SUBST(SNMPLIB)
e5f4e1b0 1016AC_SUBST(makesnmplib)
1017
d9180414 1018AC_ARG_ENABLE(cachemgr-hostname,
5069fb38
FC
1019 AS_HELP_STRING([--enable-cachemgr-hostname=hostname],
1020 [Make cachemgr.cgi default to this host.
1d87b6b3
FC
1021 If unspecified, uses the name of the build-host]), [
1022 case $enableval in
1023 yes)
1024 AC_DEFINE(CACHEMGR_HOSTNAME,[getfullhostname()],
1025 [If you are upset that the cachemgr.cgi form comes up with the hostname field blank, then define this to getfullhostname()])
1026 AC_MSG_NOTICE([Cachemgr default hostname == host where cachemgr runs])
1027 ;;
1028 no)
1029 : # Nothing to do..
1030 ;;
1031 *)
1032 AC_DEFINE_UNQUOTED(CACHEMGR_HOSTNAME,"${enableval}")
1033 AC_MSG_NOTICE([Cachemgr default hostname set to ${enableval}])
1034 ;;
1035 esac
e5f4e1b0 1036])
1037
ee0927b6 1038AC_ARG_ENABLE(eui,
1a6b111a
FC
1039 AS_HELP_STRING([--disable-eui],
1040 [Enable use of ARP / MAC/ EUI (ether address)]), [
1041SQUID_YESNO([$enableval],[--disable-eui expects no arguments])
1042])
1043if test ${enable_eui:=yes} = "yes" ; then
5069fb38
FC
1044 case "$squid_host_os" in
1045 linux|solaris|freebsd|openbsd|netbsd)
fe9ddf62 1046 ${TRUE}
074bf084 1047 ;;
5069fb38 1048 cygwin|mingw)
ee0927b6 1049 EUILIB="-liphlpapi"
5700029a 1050 ;;
933cc58d 1051 *)
1a6b111a 1052 AC_MSG_WARN([EUI support probably will not work on host $host.])
933cc58d 1053 ;;
1054 esac
ee0927b6
AJ
1055 AC_CHECK_HEADERS( \
1056 Iphlpapi.h \
1057 net/if.h \
1058 net/if_arp.h \
1059 net/if_dl.h \
1060 net/route.h \
1061 netinet/if_ether.h \
1062 sys/sockio.h \
1063 sys/sysctl.h \
1064 sys/ioctl.h \
1065 )
a98c2da5 1066fi
1a6b111a 1067AC_MSG_NOTICE([EUI (MAC address) controls enabled: $enable_eui])
0067eb06 1068SQUID_DEFINE_BOOL(USE_SQUID_EUI,$enable_eui,
1a6b111a 1069 [Define this to include code which lets you use ethernet addresses. This code uses API initially defined in 4.4-BSD.])
a9dfcab8 1070AM_CONDITIONAL(USE_SQUID_EUI, [test "$enable_eui" = "yes" ])
1a6b111a 1071
e5f4e1b0 1072
74075210 1073AC_ARG_ENABLE(htcp,
47d80734 1074 AS_HELP_STRING([--disable-htcp],[Disable HTCP protocol support]), [
1a6b111a
FC
1075SQUID_YESNO([$enableval],
1076 [unrecognized argument to --disable-htcp: $enableval])
74075210 1077])
0067eb06 1078SQUID_DEFINE_BOOL([USE_HTCP],${enable_htcp:=yes},
47d80734 1079 [Define this to include code for the Hypertext Cache Protocol (HTCP)])
1a6b111a
FC
1080AM_CONDITIONAL(ENABLE_HTCP, [test "$enable_htcp" = "yes"])
1081AC_MSG_NOTICE([HTCP support enabled: $enable_htcp])
1082
a2794549 1083
f88ca0d1
FC
1084# SSL is not enabled by default.
1085# Default is to use OpenSSL when available
1f7c9178 1086AC_ARG_ENABLE(ssl,
a9dfcab8
FC
1087 AS_HELP_STRING([--enable-ssl],
1088 [Enable ssl gatewaying support using OpenSSL]), [
1089SQUID_YESNO([$enableval],
1090 [unrecognized argument to --enable-ssl: $enableval])
1091])
f88ca0d1
FC
1092# USE_OPENSSL is AC_DEFINED later
1093# default for ssl is set here
1094if test ${enable_ssl:=no} = "yes" ; then
5069fb38 1095 if test "$squid_host_os" = "mingw" ; then
ee86c79b 1096 SSLLIB='-lssleay32 -leay32 -lgdi32'
5069fb38 1097 else
4b26fae9 1098 SSLLIB='-lssl -lcrypto'
5069fb38 1099 fi
a024f63d
HN
1100 if test -z "$with_openssl"; then
1101 with_openssl=yes
1102 fi
0067eb06
HN
1103 if test -z "$with_openssl"; then
1104 with_openssl=yes
1105 fi
a9dfcab8 1106fi
f88ca0d1 1107AM_CONDITIONAL(ENABLE_SSL,[ test $enable_ssl = "yes" ])
a9dfcab8
FC
1108AC_MSG_NOTICE([SSL gatewaying support enabled: $enable_ssl])
1109
3d4022fa 1110dnl User may specify OpenSSL is needed from a non-standard location
1f7c9178 1111AC_ARG_WITH(openssl,
f88ca0d1
FC
1112 AS_HELP_STRING([--with-openssl=PATH],
1113 [Compile with the OpenSSL libraries. The path to
86f53af2
FC
1114 the OpenSSL development libraries and headers
1115 installation can be specified if outside of the
f88ca0d1
FC
1116 system standard directories]), [
1117case "$with_openssl" in
a3b28798
HN
1118 yes|no)
1119 : # Nothing special to do here
1f7c9178 1120 ;;
1121 *)
f88ca0d1
FC
1122 if test ! -d $withval ; then
1123 AC_MSG_ERROR([--with-openssl path does not point to a directory])
1124 fi
46ce628c 1125 SSLLIBDIR="$with_openssl/lib"
bcce53ce 1126 CPPFLAGS="-I$with_openssl/include $CPPFLAGS"
a3b28798 1127 with_openssl=yes
1f7c9178 1128 esac
1129])
0067eb06 1130SQUID_DEFINE_BOOL(USE_SSL,$enable_ssl,
f88ca0d1 1131 [Define this to include code for SSL gatewaying support])
a024f63d 1132AC_MSG_NOTICE([Using OpenSSL MD5 implementation: ${with_openssl:=no}])
0067eb06 1133SQUID_DEFINE_BOOL(USE_OPENSSL,${with_openssl},
f88ca0d1
FC
1134 [Define this to make use of the OpenSSL libraries for MD5 calculation rather than Squid-supplied MD5 implementation or if building with SSL encryption])
1135if test "$enable_ssl" = "yes"; then
1f7c9178 1136 if test -z "$SSLLIB"; then
1137 SSLLIB="-lcrypto" # for MD5 routines
1138 fi
f88ca0d1 1139 # This is a workaround for RedHat 9 brain damage..
f11555e0 1140 if test -d /usr/kerberos/include && test -z "$SSLLIBDIR" && test -f /usr/include/openssl/kssl.h; then
eed82608 1141 AC_MSG_NOTICE([OpenSSL depends on Kerberos])
f11555e0 1142 SSLLIBDIR="/usr/kerberos/lib"
1143 CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
1144 fi
1f7c9178 1145fi
1146if test -n "$SSLLIBDIR"; then
1147 SSLLIB="-L$SSLLIBDIR $SSLLIB"
1148fi
1f7c9178 1149AC_SUBST(SSLLIB)
1150
3d4022fa 1151
02749868 1152AC_ARG_ENABLE(forw-via-db,
47d80734
FC
1153 AS_HELP_STRING([--enable-forw-via-db],[Enable Forw/Via database]), [
1154 SQUID_YESNO([$enableval],[unrecognized argument to --enable-forw-via-db: $enableval])
02749868 1155])
21f6708d 1156SQUID_DEFINE_BOOL(USE_FORW_VIA_DB,${enable_forw_via_db:=no},
9676633b
FC
1157 [Enable Forw/Via database])
1158AC_MSG_NOTICE([Forw/Via database enabled: $enable_forw_via_db])
02749868 1159
6cfa8966 1160AC_ARG_ENABLE(cache-digests,
47d80734 1161 AS_HELP_STRING([--enable-cache-digests],
9676633b
FC
1162 [Use Cache Digests. See http://wiki.squid-cache.org/SquidFaq/CacheDigests]),
1163[
1164 SQUID_YESNO($enableval,
1165 [unrecognized argument to --enable-cache-digests: $enableval])
484f2ebc 1166])
0067eb06 1167SQUID_DEFINE_BOOL(USE_CACHE_DIGESTS,${enable_cache_digests:=no},
47d80734 1168 [Use Cache Digests for locating objects in neighbor caches.])
9676633b 1169AC_MSG_NOTICE([Cache Digests enabled: $enable_cache_digests])
47d80734 1170
484f2ebc 1171
cd748f27 1172dnl Size of COSS memory buffer
47d80734 1173squid_opt_coss_membuf_size=1048576
cd748f27 1174AC_ARG_WITH(coss-membuf-size,
9676633b
FC
1175 AS_HELP_STRING([--with-coss-membuf-size=size],
1176 [COSS membuf size (default $squid_opt_coss_membuf_size bytes)]), [
1177case $withval in
1178 [[0-9]]*) squid_opt_coss_membuf_size=$withval ;;
1179 *) AC_MSG_ERROR([--with-coss-membuf-size expects a numeric argument]) ;;
1180esac
cd748f27 1181])
9676633b 1182AC_MSG_NOTICE([Setting COSS membuf size to $squid_opt_coss_membuf_size bytes])
47d80734 1183AC_DEFINE_UNQUOTED(COSS_MEMBUF_SZ, $squid_opt_coss_membuf_size,
9676633b
FC
1184 [Default COSS membuf size])
1185
1186################################
1187# check for netio plugin stuff #
1188################################
1189dnl order of these options handling is relevant in case the user
1190dnl supplies more than one --enable option. Options handled later
1191dnl override those handled earlier for io loop method manual override
1192AC_ARG_ENABLE(select,
1193 AS_HELP_STRING([--disable-select],[Disable select(2) support.]),
1194[
1195SQUID_YESNO($enableval,[--disable-select takes no extra argument])
1196test $enableval = "yes" && squid_opt_io_loop_engine="select"
1197])
1198AC_MSG_NOTICE([enabling select syscall for net I/O: ${enable_select:=auto}])
cd748f27 1199
9bb83c8b 1200AC_ARG_ENABLE(poll,
62979ab1 1201 AS_HELP_STRING([--disable-poll],[Disable poll(2) support.]),
1b3db6d9 1202[
9676633b
FC
1203SQUID_YESNO($enableval,[--disable-poll takes no extra argument])
1204test $enableval = "yes" && squid_opt_io_loop_engine="poll"
9bb83c8b 1205])
9676633b 1206AC_MSG_NOTICE([enabling poll syscall for net I/O: ${enable_poll:=auto}])
9bb83c8b 1207
9676633b 1208# kqueue support is still experiemntal and unstable. Not enabled by default.
1b3db6d9 1209AC_ARG_ENABLE(kqueue,
9676633b
FC
1210 AS_HELP_STRING([--enable-kqueue],
1211 [Enable kqueue(2) support (experimental).]), [
1212SQUID_YESNO($enableval,[--enable-kqueue takes no extra argument])
1b3db6d9 1213])
9676633b
FC
1214if test ${enable_kqueue:=no} = "yes" ; then
1215 AC_CHECK_HEADERS([sys/event.h],[],
1216 [ AC_MSG_ERROR([kqueue support requires sys/event.h header file.]) ])
1217 squid_opt_io_loop_engine="kqueue"
1218fi
1219AC_MSG_NOTICE([enabling kqueue for net I/O: $enable_kqueue])
1b3db6d9 1220
a46d2c0e 1221dnl Enable epoll()
a46d2c0e 1222AC_ARG_ENABLE(epoll,
62979ab1 1223 AS_HELP_STRING([--disable-epoll],[Disable Linux epoll(2) support.]),
a46d2c0e 1224[
9676633b
FC
1225SQUID_YESNO($enableval,[--disable-epoll takes no extra argument])
1226test $enableval = "yes" && squid_opt_io_loop_engine="epoll"
a46d2c0e 1227])
9676633b 1228AC_MSG_NOTICE([enabling epoll syscall for net I/O: ${enable_epoll:=auto}])
2ca8b332 1229
9676633b
FC
1230# auto-detect and verify epoll header and library present and working
1231# logic mapping and loop method selection are performed later
1232if test "$enable_epoll" != "no" ; then
2ca8b332 1233
9676633b
FC
1234 # check if libs are needed to support epoll
1235 # note: this code block seems quite generic. Could it be extracted
1236 # into a squid specific configure function?
af1e01a8 1237 SQUID_STATE_SAVE(squid_epoll_state)
9676633b
FC
1238 AC_SEARCH_LIBS(epoll_ctl,[epoll])
1239 if test "$ac_cv_search_epoll_ctl" = "no" ; then
1240 enable_epoll=no #disable. Needed code not found
1241 elif test "$ac_cv_search_epoll_ctl" = "none required" ; then
1242 EPOLL_LIBS=""
1243 else
1244 EPOLL_LIBS=$ac_cv_search_epoll_ctl
1245 fi
1246 AC_SUBST(EPOLL_LIBS)
1247 SQUID_STATE_ROLLBACK(squid_epoll_state) #de-pollute LIBS
a46d2c0e 1248
9676633b 1249 # epoll requires sys/epoll.h
98d13964 1250 AC_CHECK_HEADERS([sys/epoll.h])
ad32c661
AJ
1251
1252 dnl Verify that epoll really works
dcac6885 1253 if test "x$ac_cv_search_epoll_ctl" != 'xno' ; then
af1e01a8 1254 SQUID_CHECK_EPOLL
ad32c661 1255 fi
2ca8b332 1256
9676633b 1257 if test "$enable_epoll" = "yes" -a "$squid_cv_epoll_works" = "no" ; then
2ca8b332
AJ
1258 AC_MSG_ERROR([Epoll does not work. Force-enabling it is not going to help.])
1259 fi
ad32c661 1260fi
a46d2c0e 1261
9676633b 1262
72fd085a 1263AC_ARG_ENABLE(http-violations,
af1e01a8
FC
1264 AS_HELP_STRING([--disable-http-violations],
1265 [This allows you to remove code which is known to
47d80734 1266 violate the HTTP protocol specification.]), [
9676633b
FC
1267 SQUID_YESNO([$enableval],
1268 [unrecognized argument to --disable-http-violations: $enableval])
72fd085a 1269])
0067eb06 1270SQUID_DEFINE_BOOL(HTTP_VIOLATIONS, ${enable_http_violations:=yes},
47d80734 1271 [Define to enable code which volates the HTTP standard specification])
9676633b 1272AC_MSG_NOTICE([HTTP violations support enabled: $enable_http_violations])
72fd085a 1273
47d80734 1274# IPFW Transparent Proxy
68075fad 1275AC_ARG_ENABLE(ipfw-transparent,
1d26e252
FC
1276 AS_HELP_STRING([--enable-ipfw-transparent],
1277 [Enable Transparent Proxy support for systems
47d80734 1278 using FreeBSD IPFW-style firewalling.]), [
1d26e252
FC
1279 SQUID_YESNO([$enableval],
1280 [unrecognized argument to --enable-ipfw-transparent: $enableval])
68075fad 1281])
0067eb06 1282SQUID_DEFINE_BOOL(IPFW_TRANSPARENT,${enable_ipfw_transparent:=no},
2277004e 1283 [Enable support for Transparent Proxy on systems using FreeBSD IPFW-style firewalling.])
1d26e252 1284AC_MSG_NOTICE([FreeBSD IPFW-based transparent proxying enabled: $enable_ipfw_transparent])
68075fad 1285
47d80734 1286# IP-Filter Transparent Proxy
5cafc1d6 1287AC_ARG_ENABLE(ipf-transparent,
2277004e 1288 AS_HELP_STRING([--enable-ipf-transparent],
1d26e252
FC
1289 [Enable Transparent Proxy support using IPFilter-style firewalling]), [
1290 SQUID_YESNO([$enableval],
1291 [unrecognized argument to --enable-ipf-transparent: $enableval])
5cafc1d6 1292])
be0c7ff0 1293#will be AC_DEFINEd later, after checking for appropriate infrastructure
4bd144d2
FC
1294#IPF currently broken. Default-disabled for now.
1295AC_MSG_NOTICE([IPF-based transparent proxying requested: ${enable_ipf_transparent:=no}])
5cafc1d6 1296
2b0dd4ac 1297dnl Enable PF Transparent Proxy
1298AC_ARG_ENABLE(pf-transparent,
2277004e 1299 AS_HELP_STRING([--enable-pf-transparent],
47d80734 1300 [Enable Transparent Proxy support for systems using PF network address redirection.]), [
1d26e252
FC
1301 SQUID_YESNO([$enableval],
1302 [unrecognized argument to --enable-pf-transparent: $enableval])
2b0dd4ac 1303])
be0c7ff0 1304#will be AC_DEFINEd later, after checking for appropriate infrastructure
38ff0a40 1305AC_MSG_NOTICE([PF-based transparent proxying requested: ${enable_pf_transparent:=auto}])
2b0dd4ac 1306
4bd144d2 1307# Linux Netfilter Transparent Proxy
d852fbad 1308AC_ARG_ENABLE(linux-netfilter,
20ad76ab 1309 AS_HELP_STRING([--enable-linux-netfilter],
96f08e2d 1310 [Enable Transparent Proxy support for Linux (Netfilter)]), [
4bd144d2
FC
1311 SQUID_YESNO([$enableval],
1312 [unrecognized argument to --enable-linux-netfilter: $enableval])
d852fbad 1313])
4bd144d2 1314AC_MSG_NOTICE([Linux Netfilter support requested: ${enable_linux_netfilter:=auto}])
be0c7ff0 1315#will be AC_DEFINEd later, after checking for appropriate infrastructure
d852fbad 1316
bb7b5fd0 1317dnl Enable Large file support
2df6213e 1318buildmodel=""
2277004e 1319squid_opt_enable_large_files=no
2df6213e 1320
1321AC_ARG_WITH(large-files,
62979ab1 1322 AS_HELP_STRING([--with-large-files],[Enable support for large files (logs etc).]),
8b0d8e31 1323[ if test "x$withval" = "xyes"; then
2277004e 1324 squid_opt_enable_large_files=yes
bb7b5fd0 1325 fi
1326])
1327
2df6213e 1328dnl UNIX Build environment
be0c7ff0 1329dnl AS_HELP_STRING is not suited here because it cannot to specify newlines
2df6213e 1330AC_ARG_WITH(build-environment,
1331[ --with-build-environment=model
1332 The build environment to use. Normally one of
1333 POSIX_V6_ILP32_OFF32 32 bits
1334 POSIX_V6_ILP32_OFFBIG 32 bits with large file support
1335 POSIX_V6_LP64_OFF64 64 bits
1336 POSIX_V6_LPBIG_OFFBIG large pointers and files
1337 XBS5_ILP32_OFF32 32 bits (legacy)
1338 XBS5_ILP32_OFFBIG 32 bits with large file support (legacy)
1339 XBS5_LP64_OFF64 64 bits (legacy)
1340 XBS5_LPBIG_OFFBIG large pointers and files (legacy)
1341 default The default for your OS],
1342[ case "$withval" in
1343 yes|no)
2277004e 1344 AC_MSG_FAILURE([--with-build-environment expects a build environment string as used by getconf])
2df6213e 1345 ;;
1346 *)
1347 buildmodel="$withval"
1348 ;;
1349 esac
1350])
1351
2277004e
FC
1352if test "$squid_opt_enable_large_files" = "yes" -a -z "$buildmodel"; then
1353 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
1354 if test "`getconf _$model 2>/dev/null || true`" = 1 || test "`getconf $model 2>/dev/null || true`" ; then
1355 buildmodel=$model
1356 break
1357 fi
1358 done
1359 if test -z "$buildmodel"; then
1360 AC_MSG_WARN([No suitable build environment found for large files. Trying to use _FILE_OFFSET_BITS=64])
1361 fi
9b8002de
HN
1362fi
1363case "$buildmodel" in
1364default|"")
2277004e 1365 if test "$squid_opt_enable_large_files" = "yes" ; then
eed82608 1366 AC_MSG_NOTICE([Enabling -D_FILE_OFFSET_BITS=64])
2df6213e 1367 CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
cca81db1 1368 CXXFLAGS="-D_FILE_OFFSET_BITS=64 $CXXFLAGS"
2df6213e 1369 fi
9b8002de
HN
1370 ;;
1371*)
eed82608 1372 AC_MSG_NOTICE([Using $buildmodel build environment])
2df6213e 1373 if test "`getconf _$buildmodel 2>/dev/null || true`" = 1 || test "`getconf $buildmodel 2>/dev/null || true`" ; then
1374 : # All fine
1375 else
8b0d8e31 1376 AC_MSG_ERROR(Build environment $buildmodel not known to getconf.)
2df6213e 1377 fi
1378 CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
cca81db1 1379 CXXFLAGS="`getconf ${buildmodel}_CFLAGS` $CXXFLAGS"
2df6213e 1380 LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
1381 LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
2277004e
FC
1382 if "$squid_host_os" = "solaris" ; then
1383
1384# On Solaris getconf returns for CFLAGS -xarch=generic64, -Xa and -Usun options, and
1385# for LDFLAGS -xarch=generic64, but:
1386# "-Xa" is supported only by Sun cc, so we need to remove it when using gcc
1387# For gcc "-xarch=generic64" must be replaced with "-m64"
1388# The 'sun' define is needed by ipfilter includes, so we must remove "-Usun"
1389 if test "$GCC" = "yes"; then
1390 AC_MSG_NOTICE([Removing -Xa for gcc/g++ on $host])
1391 CFLAGS="`echo $CFLAGS | sed -e 's/-Xa//'`"
1392 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Xa//'`"
1393 AC_MSG_NOTICE([Replacing -xarch=generic64 with -m64 for gcc/g++ on $host])
1394 CFLAGS="`echo $CFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
1395 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
1396 LDFLAGS="`echo $LDFLAGS | sed -e 's/-xarch=generic64//'`"
1397 fi
1398 AC_MSG_NOTICE([Removing -Usun on $host])
1399 CFLAGS="`echo $CFLAGS | sed -e 's/-Usun//'`"
1400 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Usun//'`"
1401 fi
9b8002de 1402esac
2df6213e 1403
5d620373 1404dnl Enable Leak Finding Functions
47d80734 1405squid_opt_enable_leakfinder=no
5d620373 1406AC_ARG_ENABLE(leakfinder,
47d80734
FC
1407 AS_HELP_STRING([--enable-leakfinder],
1408 [Enable Leak Finding code. Enabling this alone does nothing;
1409 you also have to modify the source code to use the leak
1410 finding functions. Probably Useful for hackers only.]), [
1411 SQUID_YESNO([$enableval],[unrecognized argument to --enable-leakfinder: $enableval])
1412 squid_opt_enable_leakfinder=$enableval
5d620373 1413])
47d80734 1414AC_MSG_NOTICE([Leak Finder enabled: $squid_opt_enable_leakfinder])
0067eb06 1415SQUID_DEFINE_BOOL(USE_LEAKFINDER,$squid_opt_enable_leakfinder,
47d80734
FC
1416 [Enable code for assisting in finding memory leaks. Not for the faint of heart])
1417AM_CONDITIONAL(MAKE_LEAKFINDER, [test "$squid_opt_enable_leakfinder" = "yes"])
1418
5d620373 1419
8efb08bc 1420squid_opt_follow_xff="yes"
3d674977 1421AC_ARG_ENABLE(follow-x-forwarded-for,
62979ab1 1422 AS_HELP_STRING([--enable-follow-x-forwarded-for],[Enable support for following the X-Forwarded-For
19b4777c
FC
1423 HTTP header to try to find the IP address of the
1424 original or indirect client when a request has
8075a4da 1425 been forwarded through other proxies.]), [
47d80734
FC
1426 SQUID_YESNO([$enableval],[unrecognized argument to --enable-follow-x-forwarded-for: $enableval])
1427 squid_opt_follow_xff=$enableval
8075a4da
FC
1428])
1429AC_MSG_NOTICE([Support for X-Forwarded-For enabled: $squid_opt_follow_xff])
0067eb06 1430SQUID_DEFINE_BOOL([FOLLOW_X_FORWARDED_FOR],$squid_opt_follow_xff,
47d80734 1431 [Enable following X-Forwarded-For headers])
3d674977 1432
8efb08bc 1433squid_opt_use_ident="yes"
3898f57f 1434AC_ARG_ENABLE(ident-lookups,
8075a4da 1435 AS_HELP_STRING([--disable-ident-lookups],
47d80734
FC
1436 [Remove code that supports performing Ident (RFC 931) lookups.]), [
1437 SQUID_YESNO([$enableval],[unrecognized argument to --disable-ident-lookups: $enableval])
1438 squid_opt_use_ident=$enableval
8075a4da
FC
1439])
1440AC_MSG_NOTICE([Support for Ident lookups enabled: $squid_opt_use_ident])
0067eb06 1441SQUID_DEFINE_BOOL(USE_IDENT,$squid_opt_use_ident,[Support for Ident (RFC 931) lookups])
3898f57f 1442
8efb08bc
FC
1443squid_opt_use_dnsserver="no"
1444AH_TEMPLATE(USE_DNSSERVERS,
1445 [Use dnsserver processes instead of the internal DNS protocol support])
eb824054 1446AC_ARG_ENABLE(internal-dns,
8efb08bc
FC
1447 AS_HELP_STRING([--disable-internal-dns],
1448 [Prevents Squid from directly sending and receiving DNS messages,
1449 and instead enables the old external 'dnsserver' processes.]), [
1450 if test "$enableval" = "no" ; then
eed82608 1451 AC_MSG_WARN([Disabling Internal DNS queries])
8efb08bc
FC
1452 squid_opt_use_dnsserver="yes"
1453 AC_DEFINE(USE_DNSSERVERS,1)
1454 else
1455 AC_DEFINE(USE_DNSSERVERS,0)
eb824054 1456 fi
1457])
8efb08bc
FC
1458AM_CONDITIONAL([USE_DNSSERVER],[test "$squid_opt_use_dnsserver" = "yes" ])
1459
eb824054 1460
9d798391 1461dnl Select Default hosts file location
1462AC_ARG_ENABLE(default-hostsfile,
62979ab1 1463 AS_HELP_STRING([--enable-default-hostsfile=path],[Select default location for hosts file.
19b4777c 1464 See hosts_file directive in squid.conf for details]),
9d798391 1465[
59ad6d31 1466 if test "$enableval" != "none" -a "$enableval" != "no" ; then
20ad76ab
FC
1467 if test -f $enableval; then
1468 OPT_DEFAULT_HOSTS=$enableval
9d798391 1469 else
20ad76ab 1470 AC_MSG_WARN([Unable to find $enableval])
9d798391 1471 fi
20ad76ab
FC
1472 else
1473 OPT_DEFAULT_HOSTS="none"
1474 fi
1475 AC_MSG_NOTICE([Default hosts file set to: $enableval])
9d798391 1476],[OPT_DEFAULT_HOSTS="/etc/hosts"])
1477AC_SUBST(OPT_DEFAULT_HOSTS)
1478
47d80734 1479# Select auth schemes modules to build
94439e4e 1480AC_ARG_ENABLE(auth,
26ffc057
FC
1481 AS_HELP_STRING([--enable-auth],
1482 [Build global support for authentication. The list of schemes
1483 and helpers to be enabled is defined elsewhere]), [
1484SQUID_YESNO([$enableval],
1485 [unrecognized argument to --enable-auth: $enableval])
94439e4e 1486])
26ffc057 1487AC_MSG_NOTICE([Authentication support enabled: ${enable_auth:=yes}])
0067eb06 1488SQUID_DEFINE_BOOL([USE_AUTH],$enable_auth,
26ffc057
FC
1489 [Enable support for authentication])
1490AUTH_MODULES=""
1491
1492AC_ARG_ENABLE(auth-basic,
1493 AS_HELP_STRING([--enable-auth-basic="list of helpers"],
1494 [Enable the basic authentication scheme, and build the specified helpers.
1495 Not providing an explicit list of helpers will attempt build of
1496 all possible helpers. Default is to do so.
1497 To disable the basic authentication scheme, use --disable-auth-basic.
d9655720 1498 To enable but build no helpers, specify "none".
26ffc057
FC
1499 To see available helpers, see the helpers/basic_auth directory. ]),[
1500#nothing to do really
1501])
1502#not specified. Inherit global
1503if test "x$enable_auth_basic" = "x"; then
1504 enable_auth_basic=$enable_auth
1c690e30 1505fi
26ffc057
FC
1506#conflicts with global
1507if test "$enable_auth_basic" != "no" -a "$enable_auth" = "no" ; then
1508 AC_MSG_ERROR([Basic auth requested but auth disabled])
9ff0f5b7 1509fi
26ffc057
FC
1510#define list of modules to build
1511if test "$enable_auth_basic" = "yes" ; then
1512 SQUID_LOOK_FOR_MODULES([$srcdir/helpers/basic_auth],[enable_auth_basic])
94439e4e 1513fi
26ffc057
FC
1514#handle the "none" special case
1515if test "x$enable_auth_basic" = "xnone" ; then
1516 enable_auth_basic=""
9ff0f5b7 1517fi
26ffc057
FC
1518BASIC_AUTH_HELPERS=""
1519#enable_auth_basic contains either "no" or the list of modules to be built
1520enable_auth_basic="`echo $enable_auth_basic| sed -e 's/,/ /g;s/ */ /g'`"
1521if test "$enable_auth_basic" != "no" ; then
1522 AUTH_MODULES="$AUTH_MODULES basic"
1523 AC_DEFINE([HAVE_AUTH_MODULE_BASIC],1,[Basic auth module is built])
1524 for helper in $enable_auth_basic
1525 do
1526 dir="$srcdir/helpers/basic_auth/$helper"
1527 if test -f $dir/config.test && sh $dir/config.test "$@"; then
1528 BASIC_AUTH_HELPERS="$BASIC_AUTH_HELPERS $helper"
1529 # special case
1530 if test "$helper" = "SASL" ; then
1531 squid_require_sasl=yes
1532 fi
1533 elif test -d $srcdir/helpers/basic_auth/$helper ; then
1534 AC_MSG_NOTICE([Basic auth helper $helper ... found but cannot be built])
0bbcab1c 1535 fi
26ffc057
FC
1536 done
1537fi
1538AC_MSG_NOTICE([Basic auth helpers to be built: $BASIC_AUTH_HELPERS])
fc83a946 1539AC_SUBST(BASIC_AUTH_HELPERS)
94439e4e 1540
26ffc057
FC
1541AC_ARG_ENABLE(auth-ntlm,
1542 AS_HELP_STRING([--enable-auth-ntlm="list of helpers"],
1543 [Enable the NTLM authentication scheme, and build the specified helpers.
1544 Not providing an explicit list of helpers will attempt build of
1545 all possible helpers. Default is to do so.
1546 To disable the NTLM authentication scheme, use --disable-auth-ntlm.
1547 To enable but build no helpers, specify "none".
1548 To see available helpers, see the helpers/ntlm_auth directory. ]),[
380f0a87 1549])
26ffc057
FC
1550if test "x$enable_auth_ntlm" = "x"; then
1551 enable_auth_ntlm=$enable_auth
7f18d2bd 1552fi
26ffc057
FC
1553#conflicts with global
1554if test "x$enable_auth_ntlm" != "xno" -a "x$enable_auth" = "xno" ; then
1555 AC_MSG_ERROR([NTLM auth requested but auth disabled])
1556fi
1557#define list of modules to build
1558if test "x$enable_auth_ntlm" = "xyes" ; then
1559 SQUID_LOOK_FOR_MODULES([$srcdir/helpers/ntlm_auth],[enable_auth_ntlm])
1560fi
1561#handle the "none" special case
1562if test "x$enable_auth_ntlm" = "xnone" ; then
1563 enable_auth_ntlm=""
1564fi
1565NTLM_AUTH_HELPERS=""
1566enable_auth_ntlm="`echo $enable_auth_ntlm| sed -e 's/,/ /g;s/ */ /g'`"
1567if test "$enable_auth_ntlm" != "no" ; then
1568 AUTH_MODULES="$AUTH_MODULES ntlm"
1569 AC_DEFINE([HAVE_AUTH_MODULE_NTLM],1,[NTLM auth module is built])
1570 for helper in $enable_auth_ntlm ; do
1571 dir="$srcdir/helpers/ntlm_auth/$helper"
1572 if test -f $dir/config.test && sh $dir/config.test "$@"; then
1573 NTLM_AUTH_HELPERS="$NTLM_AUTH_HELPERS $helper"
1574 elif test -d $srcdir/helpers/ntlm_auth/$helper ; then
1575 AC_MSG_NOTICE([NTLM auth helper $helper ... found but cannot be built])
1576 fi
1577 done
380f0a87 1578fi
9ff0f5b7 1579AC_MSG_NOTICE([NTLM auth helpers built: $NTLM_AUTH_HELPERS])
94439e4e 1580AC_SUBST(NTLM_AUTH_HELPERS)
1581
26ffc057
FC
1582AC_ARG_ENABLE(auth-negotiate,
1583 AS_HELP_STRING([--enable-auth-negotiate="list of helpers"],
1584 [Enable the Negotiate authentication scheme, and build the specified
1585 helpers.
1586 Not providing an explicit list of helpers will attempt build of
1587 all possible helpers. Default is to do so.
1588 To disable the Negotiate authentication scheme,
1589 use --disable-auth-negotiate.
1590 To enable but build no helpers, specify "none".
1591 To see available helpers, see the helpers/negotiate_auth directory. ]),[
1592#nothing to do, really
6e785d85 1593])
26ffc057
FC
1594if test "x$enable_auth_negotiate" = "x"; then
1595 enable_auth_negotiate=$enable_auth
7f18d2bd 1596fi
26ffc057
FC
1597#conflicts with global
1598if test "x$enable_auth_negotiate" != "xno" -a "x$enable_auth" = "xno" ; then
1599 AC_MSG_ERROR([Negotiate auth requested but auth disabled])
1600fi
1601#define list of modules to build
1602if test "x$enable_auth_negotiate" = "xyes" ; then
1603 SQUID_LOOK_FOR_MODULES([$srcdir/helpers/negotiate_auth],[enable_auth_negotiate])
1604fi
1605#handle the "none" special case
1606if test "x$enable_auth_negotiate" = "xnone" ; then
1607 enable_auth_negotiate=""
1608fi
1609NEGOTIATE_AUTH_HELPERS=""
1610enable_auth_negotiate="`echo $enable_auth_negotiate| sed -e 's/,/ /g;s/ */ /g'`"
1611if test "$enable_auth_negotiate" != "no" ; then
1612 AUTH_MODULES="$AUTH_MODULES negotiate"
1613 AC_DEFINE([HAVE_AUTH_MODULE_NEGOTIATE],1,[Negotiate auth module is built])
1614 for helper in $enable_auth_negotiate ; do
1615 dir="$srcdir/helpers/negotiate_auth/$helper"
1616 if test -f $dir/config.test && sh $dir/config.test "$@"; then
1617 NEGOTIATE_AUTH_HELPERS="$NEGOTIATE_AUTH_HELPERS $helper"
1618 elif test -d $srcdir/helpers/negotiate_auth/$helper ; then
1619 AC_MSG_NOTICE([Negotiate auth helper $helper ... found but cannot be built])
1620 fi
1621 done
6e785d85 1622fi
59b38d95 1623AC_MSG_NOTICE([Negotiate auth helpers built: $NEGOTIATE_AUTH_HELPERS])
6e785d85 1624AC_SUBST(NEGOTIATE_AUTH_HELPERS)
1625
26ffc057
FC
1626AC_ARG_ENABLE(auth-digest,
1627 AS_HELP_STRING([--enable-auth-digest="list of helpers"],
1628 [Enable the Digest authentication scheme, and build the specified helpers.
1629 Not providing an explicit list of helpers will attempt build of
1630 all possible helpers. Default is to do so.
1631 To disable the Digest authentication scheme, use --disable-auth-digest.
1632 To enable but build no helpers, specify "none".
1633 To see available helpers, see the helpers/digest_auth directory. ]),[
1634#nothing to do, really
2d70df72 1635])
26ffc057
FC
1636if test "x$enable_auth_digest" = "x"; then
1637 enable_auth_digest=$enable_auth
7f18d2bd 1638fi
26ffc057
FC
1639#conflicts with global
1640if test "x$enable_auth_digest" != "xno" -a "x$enable_auth" = "xno" ; then
1641 AC_MSG_ERROR([Digest auth requested but auth disabled])
1642fi
1643#define list of modules to build
1644if test "x$enable_auth_digest" = "xyes" ; then
1645 SQUID_LOOK_FOR_MODULES([$srcdir/helpers/digest_auth],[enable_auth_digest])
1646fi
1647#handle the "none" special case
1648if test "x$enable_auth_digest" = "xnone" ; then
1649 enable_auth_digest=""
1650fi
1651DIGEST_AUTH_HELPERS=""
1652enable_auth_digest="`echo $enable_auth_digest| sed -e 's/,/ /g;s/ */ /g'`"
1653if test "$enable_auth_digest" != "no" ; then
1654 AUTH_MODULES="$AUTH_MODULES digest"
1655 AC_DEFINE([HAVE_AUTH_MODULE_DIGEST],1,[Digest auth module is built])
1656 for helper in $enable_auth_digest ; do
1657 dir="$srcdir/helpers/digest_auth/$helper"
1658 if test -f $dir/config.test && sh $dir/config.test "$@"; then
1659 DIGEST_AUTH_HELPERS="$DIGEST_AUTH_HELPERS $helper"
1660 elif test -d $srcdir/helpers/digest_auth/$helper ; then
1661 AC_MSG_NOTICE([Digest auth helper $helper ... found but cannot be built])
1662 fi
1663 done
2d70df72 1664fi
ea9b7bb6 1665AC_MSG_NOTICE([Digest auth helpers built: $DIGEST_AUTH_HELPERS])
2d70df72 1666AC_SUBST(DIGEST_AUTH_HELPERS)
380f0a87 1667
26ffc057
FC
1668dnl Authentication libraries to build
1669dnl This list will not be needed when each auth library has its own Makefile
be0c7ff0 1670dnl this is to be placed AFTER each auth module's handler
26ffc057
FC
1671AUTH_LIBS_TO_BUILD=
1672for module in $AUTH_MODULES; do
1673 AUTH_LIBS_TO_BUILD="$AUTH_LIBS_TO_BUILD lib${module}.la"
1674done
1675AC_SUBST(AUTH_MODULES)
1676AC_SUBST(AUTH_LIBS_TO_BUILD)
1677
82b7abe3 1678dnl Select logging daemon helpers to build
a62e8408 1679squid_opt_logdaemon_helpers="auto"
82b7abe3 1680AC_ARG_ENABLE(log-daemon-helpers,
26ffc057 1681 AS_HELP_STRING([--enable-log-daemon-helpers="list of helpers"],
a62e8408
FC
1682 [This option selects which logging daemon helpers to
1683 build and install as part of the normal build process
1684 For a list of available helpers see the helpers/log_daemon
1685 directory.]),[
1686case "$enableval" in
1687 yes) : ;;
1688 no) squid_opt_logdaemon_helpers="" ;;
1689 *) squid_opt_logdaemon_helpers="`echo $enableval| sed -e 's/,/ /g;s/ */ /g'`" ;;
82b7abe3
AJ
1690 esac
1691])
a62e8408
FC
1692if test "$squid_opt_logdaemon_helpers" = "auto" ; then
1693 squid_opt_logdaemon_helpers=""
1694 SQUID_LOOK_FOR_MODULES([$srcdir/helpers/log_daemon],[squid_opt_logdaemon_helpers])
82b7abe3 1695fi
a62e8408
FC
1696for helper in $squid_opt_logdaemon_helpers ; do
1697 dir="$srcdir/helpers/log_daemon/$helper"
1698 if test -f $dir/config.test && sh $dir/config.test "$@"; then
1699 LOG_DAEMON_HELPERS="$LOG_DAEMON_HELPERS $helper"
1700 elif test -d $srcdir/helpers/log_daemon/$helper ; then
26ffc057 1701 AC_MSG_NOTICE([Log daemon helper $helper ... found but cannot be built])
a62e8408
FC
1702 fi
1703done
1704AC_MSG_NOTICE([Log daemon helpers built: $LOG_DAEMON_HELPERS])
82b7abe3
AJ
1705AC_SUBST(LOG_DAEMON_HELPERS)
1706
3d62cc61
FC
1707dnl
1708dnl Check Kerberos/GSSAPI/SPNEGO
1709dnl
c8093f05
FC
1710SQUID_STATE_SAVE([krbsave])
1711
9ca29d23
AJ
1712AC_ARG_WITH(krb5-config,
1713 [ --with-krb5-config=PATH specify path to krb5-config @<:@default=detect@:>@],
c8093f05
FC
1714[
1715 case "$withval" in
1716 yes) unset krb5confpath ;;
1717 no) krb5confpath=no ;;
1718 *) krb5confpath=$withval ;;
1719 esac
9ca29d23
AJ
1720])
1721if test x"$krb5confpath" != xno; then
1722 if test x"$krb5confpath" != x; then
1723 if ! test -x "$krb5confpath"; then
1724 AC_MSG_WARN([krb5-config '$krb5confpath' not executable, ignoring])
1725 AC_CHECK_PROG(ac_krb5_config, krb5-config, yes, no)
1726 krb5confpath=krb5-config
1727 fi
1728 krb5_config_path=`dirname $krb5confpath`
1729 AC_CHECK_PROG(ac_krb5_config, krb5-config, yes, no, $krb5_config_path)
1730 else
1731 AC_CHECK_PROG(ac_krb5_config,krb5-config,yes,no)
1732 krb5confpath=krb5-config
1733 fi
1734fi
1735if test "$ac_krb5_config" = "yes" ; then
cf99ae25
AJ
1736 ac_heimdal="`$krb5confpath --version 2>/dev/null | grep -i heimdal`"
1737 ac_solaris="`$krb5confpath --version 2>/dev/null | grep -i solaris`"
9ca29d23
AJ
1738 if test "x$ac_heimdal" != "x" ; then
1739 AC_DEFINE(HAVE_HEIMDAL_KERBEROS,1,[Define to 1 if you have Heimdal Kerberos])
1740 else
1741 AC_DEFINE(HAVE_MIT_KERBEROS,1,[Define to 1 if you have MIT Kerberos])
1742 fi
1743 if test "$ac_solaris" != "" ; then
cf99ae25
AJ
1744 KRB5INCS="`$krb5confpath --cflags krb5 2>/dev/null`"
1745 KRB5LIBS="`$krb5confpath --libs krb5 2>/dev/null`"
9ca29d23
AJ
1746 KRB5INCS="-I/usr/include/gssapi $KRB5INCS"
1747 KRB5LIBS="-L/usr/lib -R/usr/lib -lgss -lresolv -lsocket -lnsl $KRB5LIBS"
1748 else
cf99ae25
AJ
1749 KRB5INCS="`$krb5confpath --cflags krb5 2>/dev/null`"
1750 KRB5LIBS="`$krb5confpath --libs krb5 2>/dev/null`"
9ca29d23
AJ
1751 KRB5INCS="`$krb5confpath --cflags gssapi 2>/dev/null` $KRB5INCS"
1752 KRB5LIBS="`$krb5confpath --libs gssapi 2>/dev/null` $KRB5LIBS"
1753 fi
1754 CPPFLAGS="$CPPFLAGS $KRB5INCS"
1755 LIBS="$LIBS $KRB5LIBS"
1756 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1757 if test "x$ac_heimdal" == "x" ; then
1758 AC_CHECK_HEADERS(gssapi/gssapi_generic.h)
3d62cc61 1759 AC_CHECK_HEADERS(profile.h)
9ca29d23 1760 fi
d14e78e9 1761 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
c8093f05 1762
f2d9a578 1763 SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H
3d62cc61
FC
1764 if test x"$squid_cv_broken_krb5_h" = x"yes"; then
1765 AC_DEFINE(HAVE_BROKEN_SOLARIS_KRB5_H, 1, [Define to 1 if krb5.h is broken for C++])
1766 fi
9ca29d23 1767
3d62cc61
FC
1768 ac_com_error_message=no
1769 if test "x$ac_cv_header_com_err_h" == "xyes" ; then
1770 AC_EGREP_HEADER(error_message,com_err.h,ac_com_error_message=yes)
1771 elif test "x$ac_cv_header_et_com_err_h" == "xyes" ; then
1772 AC_EGREP_HEADER(error_message,et/com_err.h,ac_com_error_message=yes)
1773 fi
c8093f05
FC
1774
1775 SQUID_CHECK_MAX_SKEW_IN_KRB5_CONTEXT
3d62cc61
FC
1776 if test x"$squid_cv_max_skew_context" = x"yes"; then
1777 AC_DEFINE(HAVE_MAX_SKEW_IN_KRB5_CONTEXT, 1, [Define to 1 if max_skew in struct krb5_context])
1778 fi
1779
1780 if test `echo $KRB5LIBS | grep -c com_err` -ne 0 -a "x$ac_com_error_message" == "xyes" ; then
1781 AC_CHECK_LIB(com_err,error_message,
c8093f05
FC
1782 AC_DEFINE(HAVE_ERROR_MESSAGE,1,
1783 [Define to 1 if you have error_message]),)
3d62cc61
FC
1784 elif test "x$ac_com_error_message" == "xyes" ; then
1785 AC_CHECK_LIB(krb5,error_message,
c8093f05
FC
1786 AC_DEFINE(HAVE_ERROR_MESSAGE,1,
1787 [Define to 1 if you have error_message]),)
9ca29d23 1788 fi
cf99ae25 1789 AC_CHECK_LIB(krb5,krb5_get_err_text,
c8093f05
FC
1790 AC_DEFINE(HAVE_KRB5_GET_ERR_TEXT,1,
1791 [Define to 1 if you have krb5_get_err_text]),)
cf99ae25 1792 AC_CHECK_LIB(krb5,krb5_get_error_message,
c8093f05
FC
1793 AC_DEFINE(HAVE_KRB5_GET_ERROR_MESSAGE,1,
1794 [Define to 1 if you have krb5_get_error_message]),)
9ca29d23 1795 AC_CHECK_LIB(krb5,krb5_kt_free_entry,
c8093f05
FC
1796 AC_DEFINE(HAVE_KRB5_KT_FREE_ENTRY,1,
1797 [Define to 1 if you have krb5_kt_free_entry]),)
9ca29d23 1798 AC_CHECK_LIB(krb5,krb5_get_init_creds_keytab,
c8093f05
FC
1799 AC_DEFINE(HAVE_GET_INIT_CREDS_KEYTAB,1,
1800 [Define to 1 if you have krb5_get_init_creds_keytab]),)
9ca29d23 1801 AC_CHECK_LIB(krb5,krb5_get_max_time_skew,
c8093f05
FC
1802 AC_DEFINE(HAVE_KRB5_GET_MAX_TIME_SKEW,1,
1803 [Define to 1 if you have krb5_get_max_time_skew]),)
9ca29d23 1804 AC_CHECK_LIB(krb5,krb5_get_profile,
c8093f05
FC
1805 AC_DEFINE(HAVE_KRB5_GET_PROFILE,1,
1806 [Define to 1 if you have krb5_get_profile]),)
9ca29d23 1807 AC_CHECK_LIB(krb5,profile_get_integer,
c8093f05
FC
1808 AC_DEFINE(HAVE_PROFILE_GET_INTEGER,1,
1809 [Define to 1 if you have profile_get_integer]),)
9ca29d23 1810 AC_CHECK_LIB(krb5,profile_release,
c8093f05
FC
1811 AC_DEFINE(HAVE_PROFILE_RELEASE,1,
1812 [Define to 1 if you have profile_release]),)
9ca29d23 1813
c8093f05 1814 SQUID_CHECK_KRB5_CONTEXT_MEMORY_CACHE
3d62cc61
FC
1815 if test "$squid_cv_memory_cache" = "yes" ; then
1816 AC_DEFINE(HAVE_KRB5_MEMORY_CACHE,1, [Define to 1 if you have MEMORY: cache support])
1817 fi
9ca29d23 1818
c8093f05 1819 SQUID_CHECK_WORKING_GSSAPI
3d62cc61
FC
1820 if test "$squid_cv_working_gssapi" = "yes" ; then
1821 AC_DEFINE(HAVE_GSSAPI, 1, [GSSAPI support])
1822 fi
1823
c8093f05 1824 SQUID_CHECK_SPNEGO_SUPPORT
3d62cc61 1825 if test "$squid_cv_have_spnego" = "yes" ; then
9ca29d23 1826 AC_DEFINE(HAVE_SPNEGO,1, [Define to 1 if you have SPNEGO support])
3d62cc61 1827 fi
c8093f05 1828
1a5ffec6 1829 SQUID_CHECK_WORKING_KRB5
3d62cc61
FC
1830 if test "$squid_cv_working_krb5" = "yes" ; then
1831 AC_DEFINE(HAVE_KRB5, 1, [KRB5 support])
1832 fi
1833
9ca29d23
AJ
1834 AC_SUBST(KRB5INCS)
1835 AC_SUBST(KRB5LIBS)
1836fi
1a5ffec6 1837SQUID_STATE_ROLLBACK([krbsave])
3d62cc61 1838AM_CONDITIONAL(HAVE_SPNEGO, test x"$squid_cv_have_spnego" = x"yes" )
9ca29d23 1839
6437ac71 1840dnl Enable "NTLM fail open"
1841AC_ARG_ENABLE(ntlm-fail-open,
1a5ffec6
FC
1842 AS_HELP_STRING([--enable-ntlm-fail-open],
1843 [Enable NTLM fail open, where a helper that fails one of the
e702812e 1844 Authentication steps can allow squid to still authenticate
d9655720
FC
1845 the user. This has security implications, and is deprecated]),
1846[
1847SQUID_YESNO([$enableval],[--enable-ntlm-fail-open takes no argument])
6437ac71 1848])
0067eb06 1849SQUID_DEFINE_BOOL(NTLM_FAIL_OPEN,${enable_ntlm_fail_open:=no},
d9655720
FC
1850 [Define if NTLM is allowed to fail gracefully when a helper has problems.])
1851AC_MSG_NOTICE([ntlm-fail-open enabled: $enable_ntlm_fail_open])
6437ac71 1852
c6588c68 1853AC_ARG_ENABLE(external-acl-helpers,
f2d9a578 1854 AS_HELP_STRING([--enable-external-acl-helpers="list of helpers"],
d9655720
FC
1855 [Enable external_acl helpers support and thelpers themselves.
1856 Default is to build all buildable helpers and enable support.
1857 To disable support, use --disable-external-acl-helpers.
1858 To build no helpers, specify "none".
1859 To see available helpers, see the helpers/external_acl
1860 directory]), [
1861#nothing to do, really
c6588c68 1862])
d9655720
FC
1863if test "x${enable_external_acl_helpers:=yes}" = "xyes" ;then
1864 SQUID_LOOK_FOR_MODULES([$srcdir/helpers/external_acl],
1865 [enable_external_acl_helpers])
7f18d2bd 1866fi
d9655720
FC
1867if test "x$enable_external_acl_helpers" = "xnone" ; then
1868 enable_external_acl_helpers=""
1869fi
1870EXTERNAL_ACL_HELPERS=""
1871enable_external_acl_helpers="`echo $enable_external_acl_helpers| sed -e 's/,/ /g;s/ */ /g'`"
1872if test "x$enable_external_acl_helpers" != "xno" ; then
1873 for helper in $enable_external_acl_helpers ; do
1874 dir="$srcdir/helpers/external_acl/$helper"
1875 if test -f $dir/config.test && sh $dir/config.test "$@"; then
1876 EXTERNAL_ACL_HELPERS="$EXTERNAL_ACL_HELPERS $helper"
1877 else
1878 AC_MSG_NOTICE([external acl helper $helper ... found but cannot be built])
1879 fi
1880 done
c6588c68 1881fi
f2d9a578 1882AC_MSG_NOTICE([External acl helpers built: $EXTERNAL_ACL_HELPERS])
c6588c68 1883AC_SUBST(EXTERNAL_ACL_HELPERS)
1884
d9655720
FC
1885
1886
fdbb3b19
AJ
1887dnl Select url_rewrite helpers to build
1888URL_REWRITE_HELPERS=all
1889AC_ARG_ENABLE(url-rewrite-helpers,
1890 AC_HELP_STRING([--enable-url-rewrite-helpers="list of helpers"],
1891 [This option selects which url_rewrite helpers to
1892 build and install as part of the normal build
1893 process. For a list of available helpers see the
1894 helpers/url_rewrite directory.]),
1895[ case "$enableval" in
1896 yes)
1897 URL_REWRITE_HELPERS=all
1898 ;;
1899 no)
1900 URL_REWRITE_HELPERS=""
1901 ;;
1902 *)
1903 URL_REWRITE_HELPERS="`echo $enableval| sed -e 's/,/ /g;s/ */ /g'`"
1904 ;;
1905 esac
1906])
1907if test "$URL_REWRITE_HELPERS" = "all" ; then
1908 URL_REWRITE_HELPERS=""
1909 for dir in $srcdir/helpers/url_rewrite/*; do
1910 helper="`basename $dir`"
1911 if test -f $dir/config.test && sh $dir/config.test "$@"; then
1912 URL_REWRITE_HELPERS="$URL_REWRITE_HELPERS $helper"
ce7c6bba
AJ
1913 elif test -d $srcdir/helpers/url_rewrite/$helper ; then
1914 AC_MSG_NOTICE([URL re-write helper $helper ... found but cannot be built])
fdbb3b19
AJ
1915 fi
1916 done
1917fi
1918if test -n "$URL_REWRITE_HELPERS"; then
1919 for helper in $URL_REWRITE_HELPERS; do
1920 if test -f $srcdir/helpers/url_rewrite/$helper/Makefile.in; then
1921 :
1922 else
1923 AC_MSG_ERROR(url_rewrite helper $helper does not exist)
1924 fi
1925 done
1926 AC_MSG_NOTICE([url_rewrite helpers built: $URL_REWRITE_HELPERS])
1927fi
1928AC_SUBST(URL_REWRITE_HELPERS)
1929
1930
3a125142 1931AC_ARG_WITH(valgrind-debug,
0f705e3b
FC
1932 AS_HELP_STRING([--with-valgrind-debug],
1933 [Include debug instrumentation for use with valgrind]),
b4bab919 1934[ case $withval in
1935 yes)
1936 valgrind=1
1937 ;;
1938 no)
1939 valgrind=
1940 ;;
1941 *)
1942 CPPFLAGS="$CPPFLAGS -I${enableval}/include"
1943 valgrind=1
1944 ;;
1945 esac
1946 if test $valgrind; then
ad32c661
AJ
1947 AC_CHECK_HEADERS(valgrind/memcheck.h,
1948 [ AC_DEFINE(WITH_VALGRIND, 1, [Valgrind memory debugger support])
eed82608
AJ
1949 AC_MSG_NOTICE([Valgrind debug support enabled]) ],
1950 [ AC_MSG_WARN([Valgrind header not found. Valgrind support disabled.]) ]
ad32c661 1951 )
b4bab919 1952 fi
1953])
1954
d96ceb8e 1955dnl Disable "memPools" code
8730e87a
HN
1956#AC_ARG_ENABLE(chunkedmempools,
1957# AS_HELP_STRING([--enable-chunkedmempools],
1958# [Enable experimental chunked memPools. Note that this option
1959# simply sets the default behaviour. Specific classes can override this
1960# at runtime, and only lib/MemPool.c needs to be altered
1961# to change the squid-wide default for all classes.]), [
1962#SQUID_YESNO([$enableval],
1963# [--enable-chunkedmempools option takes no arguments])
1964#])
4d7cefbb
HN
1965SQUID_DEFINE_BOOL(USE_CHUNKEDMEMPOOLS,${enable_chunkedmempools:=no},
1966 [Enable chunked Memory Pools support (experimental)])
8730e87a 1967#AC_MSG_NOTICE([Chunked MemPools enabled: $enable_chunkedmempools])
d96ceb8e 1968
0e657244 1969dnl Enable WIN32 Service compile mode
1970AC_ARG_ENABLE(win32-service,
054a4caa 1971 AS_HELP_STRING([--enable-win32-service],
0f705e3b
FC
1972 [Compile Squid as a WIN32 Service.
1973 Works only on MS-Windows platforms]),
0e657244 1974[ if test "$enableval" = "yes" ; then
eed82608 1975 AC_MSG_NOTICE([Enabling WIN32 run service mode])
0f705e3b
FC
1976 AC_DEFINE(USE_WIN32_SERVICE,1,
1977 [Define Windows NT & Windows 2000 run service mode])
0e657244 1978 fi
1979])
1980
b1485ff8 1981
0f705e3b
FC
1982# Check for Cyrus SASL
1983if test "$squid_require_sasl" = "yes"; then
28d80d0a
FC
1984 AC_CHECK_HEADERS(sasl/sasl.h sasl.h)
1985 AC_CHECK_LIB(sasl2,sasl_errstring,[LIBSASL="-lsasl2"],[
1986 AC_CHECK_LIB(sasl,sasl_errstring,[LIBSASL="-lsasl"], [
1987 AC_MSG_ERROR(Neither SASL nor SASL2 found)
1988 ])
1989 ])
1990 AC_SUBST(LIBSASL)
2adff954 1991fi
1992
29f22442 1993# Disable "unlinkd" code
fe0810ac 1994AC_ARG_ENABLE(unlinkd,
0a081cb0 1995 AS_HELP_STRING([--disable-unlinkd],[Do not use unlinkd]), [
0f705e3b
FC
1996SQUID_YESNO([$enableval],
1997 [unrecognized argument to --disable-unlinkd: $enableval])
fe0810ac 1998])
0067eb06 1999SQUID_DEFINE_BOOL([USE_UNLINKD],${enable_unlinkd:=yes},
0f705e3b 2000 [Enable useage of unlinkd])
fbc04c0a
FC
2001AM_CONDITIONAL(ENABLE_UNLINKD,test "$enable_unlinkd" = "yes")
2002AC_MSG_NOTICE([unlinkd enabled: $enable_unlinkd])
fe0810ac 2003
0f705e3b 2004# Enable backtraces on fatal errors
ce3d30fb 2005AC_ARG_ENABLE(stacktraces,
0f705e3b
FC
2006 AS_HELP_STRING([--enable-stacktraces],
2007 [Enable automatic call backtrace on fatal errors]), [
2008SQUID_YESNO([$enableval],
2009 [unrecognized argument to --enable-stacktraces: $enableval])
ce3d30fb 2010])
0067eb06 2011SQUID_DEFINE_BOOL([PRINT_STACK_TRACE],${enable_stacktraces:=no},
0f705e3b 2012 [Print stack traces on fatal errors])
78614cd4 2013AC_MSG_NOTICE([Automatically print stack trace on fatal errors: $enable_stacktraces])
0a081cb0 2014
ce3d30fb 2015
904676a2 2016# CPU Profiling options handling
88bfe092 2017AC_ARG_ENABLE(cpu-profiling,
0f705e3b
FC
2018 AS_HELP_STRING([--enable-cpu-profiling],
2019 [Enable instrumentation to try and understand how CPU power
2020 is spent by squid, by enabling specific probes in selected
2021 functions.
2022 New probes can only be added by modifying the source code.
2023 It is meant to help developers in optimizing performance
2024 of Squid internal functions.
87fa90fb 2025 If you are not developer you should not enable this,
0f705e3b
FC
2026 as it slows squid down somewhat.
2027 See lib/Profiler.c for more details.]), [
2028SQUID_YESNO([$enableval],
2029 [unrecognized argument to --enable-cpu-profiling: $enableval])
88bfe092 2030])
0067eb06 2031SQUID_DEFINE_BOOL([USE_XPROF_STATS],${enable_cpu_profiling:=no},
0f705e3b
FC
2032 [Define to enable CPU profiling within Squid])
2033AM_CONDITIONAL(ENABLE_XPROF_STATS,
78614cd4
FC
2034 test $enable_cpu_profiling = "yes")
2035AC_MSG_NOTICE([CPU profiling enabled: $enable_cpu_profiling])
88bfe092 2036
904676a2 2037# Enable X-Accelerator-Vary for Vary support within an accelerator setup
2092c67d 2038AC_ARG_ENABLE(x-accelerator-vary,
904676a2
FC
2039 AS_HELP_STRING([--enable-x-accelerator-vary],
2040 [Enable support for the X-Accelerator-Vary
e702812e
FC
2041 HTTP header. Can be used to indicate
2042 variance within an accelerator setup.
2043 Typically used together with other code
904676a2
FC
2044 that adds custom HTTP headers to the requests.]), [
2045SQUID_YESNO([$enableval],
2046 [unrecognized argument to --enable-x-accelerator-vary: $enableval])
f66a9ef4 2047])
0067eb06 2048SQUID_DEFINE_BOOL([X_ACCELERATOR_VARY],${enable_x_accelerator_vary:=no},
904676a2 2049 [Enable support for the X-Accelerator-Vary HTTP header])
78614cd4 2050AC_MSG_NOTICE([X-Accelerator-Vary support enabled: $enable_x_accelerator_vary])
f66a9ef4 2051
87fa90fb 2052
7172612f 2053AC_ARG_ENABLE(zph-qos,
87fa90fb
FC
2054 AS_HELP_STRING([--enable-zph-qos],[Enable ZPH QOS support]), [
2055SQUID_YESNO([$enableval],
2056 [unrecognized argument to --enable-zph-qos: $enableval])
7172612f 2057])
0067eb06 2058SQUID_DEFINE_BOOL([USE_ZPH_QOS],${enable_zph_qos:=no},
87fa90fb
FC
2059 [Enable Zero Penalty Hit QOS. When set, Squid will alter the
2060 TOS field of HIT responses to help policing network traffic])
2061AC_MSG_NOTICE([ZPH QOS enabled: $enable_zph_qos])
7172612f 2062
a41b3435
AJ
2063dnl --with-maxfd present for compatibility with Squid-2.
2064dnl undocumented in ./configure --help to encourage using the Squid-3 directive.
2065AC_ARG_WITH(maxfd,,
2066[
2067 case ${withval} in
2068 [[0-9]]*)
2069 squid_filedescriptors_num=$withval
2070 ;;
2071 *)
2072 AC_MSG_ERROR(--with-maxfd expects a numeric argument)
2073 ;;
2074 esac
2075])
f49be7d1 2076AC_ARG_WITH(filedescriptors,
62979ab1 2077 AS_HELP_STRING([--with-filedescriptors=NUMBER],[Force squid to support NUMBER filedescriptors]),
8b0d8e31
AJ
2078[
2079 case ${withval} in
2080 [[0-9]]*)
2081 squid_filedescriptors_num=$withval
2082 ;;
2083 *)
2084 AC_MSG_ERROR(--with-filedescriptors expects a numeric argument)
2085 ;;
2086 esac
2087])
f49be7d1 2088
8b5e106b 2089if $CPPUNITCONFIG --help >/dev/null; then
78cae3b4
FC
2090 squid_cv_cppunit_version="`$CPPUNITCONFIG --version`"
2091 AC_MSG_NOTICE([using system installed cppunit version $squid_cv_cppunit_version])
2092 unset squid_cv_cppunit_version
8b5e106b 2093 SQUID_CPPUNIT_LIBS="`$CPPUNITCONFIG --libs`"
2094 SQUID_CPPUNIT_LA=''
2095 SQUID_CPPUNIT_INC="`$CPPUNITCONFIG --cflags`"
2096else
eed82608 2097 AC_MSG_WARN([cppunit does not appear to be installed. squid does not require this, but code testing with 'make check' will fail.])
63d03edb 2098 SQUID_CPPUNIT_LA=''
2099 SQUID_CPPUNIT_LIBS=''
2100 SQUID_CPPUNIT_INC=''
f5691f9c 2101fi
8b5e106b 2102
f5691f9c 2103AC_ARG_WITH(cppunit-basedir,
62979ab1 2104 AS_HELP_STRING([--with-cppunit-basedir=PATH],[Path where the cppunit headers are libraries are found
b0e7900f 2105 for unit testing.]),
f5691f9c 2106[ if test -f $withval/include/cppunit/TestCase.h; then
eed82608 2107 AC_MSG_NOTICE([Using cppunit includes from $withval])
f5691f9c 2108 SQUID_CPPUNIT_INC="-I${withval}/include"
2109 else
8b0d8e31 2110 AC_MSG_ERROR(Cannot find cppunit at $withval)
f5691f9c 2111 fi
2112 if test -f $withval/lib/libcppunit.la; then
eed82608 2113 AC_MSG_NOTICE([Using cppunit lib from $withval])
549b1e60 2114 SQUID_CPPUNIT_LA="${withval}/lib/libcppunit.la"
8b5e106b 2115 SQUID_CPPUNIT_LIBS='$(SQUID_CPPUNIT_LA)'
f5691f9c 2116 else
8b0d8e31 2117 AC_MSG_ERROR(Cannot find cppunit at $withval)
f5691f9c 2118 fi
f5691f9c 2119])
8b5e106b 2120AC_SUBST(SQUID_CPPUNIT_LIBS)
f5691f9c 2121AC_SUBST(SQUID_CPPUNIT_LA)
2122AC_SUBST(SQUID_CPPUNIT_INC)
f5691f9c 2123
fd9aaa3e 2124# Force some compilers to use ANSI features
2125#
2126case "$host" in
2127 alpha-dec-osf*)
2128 if test "$ac_cv_prog_CC" = "cc" ; then
eed82608 2129 AC_MSG_NOTICE([adding '-std1' to cc args for $host])
fd9aaa3e 2130 CC="cc -std1";
2131 ac_cv_prog_CC="$CC"
2132 fi
2133 ;;
c68e9c6b 2134 *-hp-hpux*)
2135 if test "$ac_cv_prog_CC" = "cc" ; then
eed82608 2136 AC_MSG_NOTICE([adding '-Ae' to cc args for $host])
c68e9c6b 2137 CC="cc -Ae";
2138 ac_cv_prog_CC="$CC"
2139 fi
2140 ;;
fd9aaa3e 2141esac
2142
dd56802c 2143
a2794549 2144dnl automake handles this AC_PATH_PROG(MAKEDEPEND, makedepend, $TRUE)
4e9d8e26 2145
6ad85e8a 2146case "$host" in
2147 *-hp-hpux*)
be0c7ff0 2148 AC_MSG_NOTICE([Disabling ranlib for HP-UX...])
6ad85e8a 2149 RANLIB=":"
2150 ;;
2151esac
2152
090089c4 2153dnl Check for headers
2154AC_HEADER_DIRENT
2155AC_HEADER_STDC
db40ae20 2156
2157AC_CHECK_HEADERS( \
db40ae20 2158 arpa/inet.h \
30a4f2a8 2159 arpa/nameser.h \
9441aa34 2160 assert.h \
db40ae20 2161 bstring.h \
27e059d4 2162 cassert \
db40ae20 2163 crypt.h \
281422f8 2164 cstring \
30a4f2a8 2165 ctype.h \
2166 errno.h \
ce3d30fb 2167 execinfo.h \
db40ae20 2168 fcntl.h \
42ad37af 2169 fnmatch.h \
9c1d8929 2170 getopt.h \
52303a3d 2171 glob.h \
88738790 2172 gnumalloc.h \
30a4f2a8 2173 grp.h \
27e059d4
AJ
2174 iosfwd \
2175 iomanip \
2176 iostream \
5cafc1d6 2177 ip_compat.h \
42b51993 2178 ip_fil_compat.h \
5cafc1d6 2179 ip_fil.h \
2180 ip_nat.h \
dbc5782a 2181 ipl.h \
30a4f2a8 2182 libc.h \
6ad85e8a 2183 limits.h \
a1f12e30 2184 linux/posix_types.h \
d2422105 2185 linux/types.h \
1cc2f840 2186 machine/byte_swap.h \
30a4f2a8 2187 malloc.h \
04f55905 2188 map \
e0bddc45 2189 math.h \
db40ae20 2190 memory.h \
b075cbb1 2191 mount.h \
30a4f2a8 2192 netdb.h \
db40ae20 2193 netinet/in.h \
cc192b50 2194 netinet/in_systm.h \
42b51993 2195 netinet/ip_fil_compat.h \
1f7c9178 2196 openssl/err.h \
2197 openssl/md5.h \
2198 openssl/ssl.h \
8cd03ece 2199 openssl/x509v3.h \
cc192b50 2200 netinet/tcp.h \
a7ad6e4e 2201 openssl/engine.h \
27e059d4 2202 ostream \
4da086c4 2203 paths.h \
dcfe6390 2204 poll.h \
30a4f2a8 2205 pwd.h \
b5e4d7d4 2206 shadow.h \
30a4f2a8 2207 regex.h \
c68e9c6b 2208 sched.h \
519267d1 2209 security/pam_appl.h \
30a4f2a8 2210 signal.h \
27e059d4 2211 sstream \
30a4f2a8 2212 stdarg.h \
2213 stddef.h \
27e059d4 2214 stdexcept \
30a4f2a8 2215 stdio.h \
db40ae20 2216 stdlib.h \
27e059d4 2217 string \
db40ae20 2218 string.h \
2219 strings.h \
0a4e8536 2220 sys/bitypes.h \
f9576890 2221 sys/bswap.h \
2222 sys/endian.h \
db40ae20 2223 sys/file.h \
5cafc1d6 2224 sys/ioctl.h \
30a4f2a8 2225 sys/param.h \
62ae0622 2226 sys/prctl.h \
3d4022fa 2227 sys/md5.h \
77e4c0c9 2228 sys/msg.h \
30a4f2a8 2229 sys/resource.h \
db40ae20 2230 sys/select.h\
30a4f2a8 2231 sys/socket.h \
2232 sys/stat.h \
b075cbb1 2233 sys/statvfs.h \
3c641669 2234 syscall.h \
30a4f2a8 2235 sys/syscall.h \
db40ae20 2236 sys/time.h \
2237 sys/types.h \
30a4f2a8 2238 sys/un.h \
b075cbb1 2239 sys/vfs.h \
30a4f2a8 2240 sys/wait.h \
db40ae20 2241 syslog.h \
30a4f2a8 2242 time.h \
2243 unistd.h \
3c641669 2244 utime.h \
30a4f2a8 2245 varargs.h \
77d6bd88 2246 byteswap.h \
2247 glib.h \
60d096f4 2248 stdint.h \
2249 inttypes.h \
3c641669 2250 grp.h \
94331f58 2251 db.h \
5b43d209 2252 db_185.h
db40ae20 2253)
3c586e38
FC
2254
2255CHECK_STRUCT_PAM_CONV
2256
fc68f6b1 2257AC_CHECK_HEADERS(
aa46a340 2258 linux/netfilter_ipv4.h
fc68f6b1 2259,,,
dcd1dc78 2260SQUID_DEFAULT_INCLUDES
2261#if HAVE_LIMITS_H
2262#include <limits.h>
2263#endif
a74968c2
AJ
2264/* Netfilter ip(6)tables v1.4.0 has broken headers */
2265#if HAVE_NETINET_IN_H
2266#include <netinet/in.h>
2267#endif
dcd1dc78 2268)
2269
d1e5191e 2270dnl *BSD dont include the depenencies for all their net/ and netinet/ files
c92b4732 2271dnl We must include a few basic type headers for them to work.
d1e5191e
AJ
2272AC_CHECK_HEADERS( \
2273 net/if.h \
5a3237b0 2274 netinet/if_ether.h\
d1e5191e 2275 netinet/icmp6.h \
975cfef6 2276 netinet/in.h \
d1e5191e
AJ
2277 netinet/ip.h \
2278 netinet/ip6.h \
5a3237b0 2279 netinet/ip_compat.h\
975cfef6 2280 netinet/ip_fil_compat.h\
5a3237b0 2281 netinet/ip_fil.h\
d1e5191e 2282 netinet/ip_icmp.h \
dbc5782a 2283 netinet/ipl.h \
975cfef6 2284 netinet/ip_nat.h\
ec9909b0 2285 net/pf/pfvar.h \
d1e5191e 2286 net/pfvar.h \
77e4c0c9 2287 sys/mount.h\
d1e5191e
AJ
2288 resolv.h \
2289,,,
2290SQUID_BSDNET_INCLUDES)
5a3237b0 2291
aee0606f 2292AC_C_CONST
d57288d2 2293AC_C_BIGENDIAN
aee0606f 2294
6a9f6389 2295AC_STRUCT_TM
2296AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
2297#if TM_IN_SYS_TIME
2298#if HAVE_SYS_TIME_H
2299#include <sys/time.h>
2300#endif
2301#elif HAVE_TIME_H
2302#include <time.h>
2303#endif
5c51415d 2304])
46c883ed 2305
6a9f6389 2306AC_CHECK_TYPE(struct mallinfo,AC_DEFINE(HAVE_STRUCT_MALLINFO,1,[The system provides struct mallinfo]),,[
2307#if HAVE_SYS_TYPES_H
2308#include <sys/types.h>
2309#endif
eb824054 2310#if HAVE_MALLOC_H
2311#include <malloc.h>
6a9f6389 2312#endif])
eb824054 2313
6a9f6389 2314AC_CHECK_MEMBERS([struct mallinfo.mxfast],,,[
2315#if HAVE_SYS_TYPES_H
2316#include <sys/types.h>
2317#endif
2318#if HAVE_MALLOC_H
2319#include <malloc.h>
2320#endif])
090089c4 2321
08caf8c6 2322dnl Override rusage() detect on MinGW because is emulated in source code
2323case "$host_os" in
2324 mingw|mingw32)
2325 AC_DEFINE(HAVE_STRUCT_RUSAGE)
2326 ac_cv_func_getrusage='yes'
eed82608 2327 AC_MSG_NOTICE([Using own rusage on Windows.])
08caf8c6 2328 ;;
2329 *)
2330 AC_CHECK_TYPE(struct rusage,AC_DEFINE(HAVE_STRUCT_RUSAGE,1,[The system provides struct rusage]),,[
8ff51bba 2331#if HAVE_SYS_TIME_H
2332#include <sys/time.h>
2333#endif
b54a6789 2334#if HAVE_SYS_RESOURCE_H
2335#include <sys/resource.h>
6a9f6389 2336#endif])
08caf8c6 2337 ;;
2338esac
b54a6789 2339
6a9f6389 2340AC_CHECK_MEMBERS([struct iphdr.ip_hl],,,[
2341#if HAVE_SYS_TYPES_H
2342#include <sys/types.h>
2343#endif
a025a745 2344#include <netinet/in.h>
2345#include <netinet/in_systm.h>
6ad85e8a 2346#include <netinet/ip.h>
b05490a8 2347#if defined (__linux__) || defined (__CYGWIN__)
6ad85e8a 2348#define ip_hl ihl
2349#endif
2350#ifndef __linux__
b05490a8 2351#ifndef __CYGWIN__
6ad85e8a 2352#define iphdr ip
b05490a8 2353#endif
6a9f6389 2354#endif])
a025a745 2355
090089c4 2356dnl Check for typedefs
77d6bd88 2357AC_CHECK_SIZEOF(void *)
090089c4 2358
0409a509 2359dnl 8 bit integers - int8_t
2360dnl if this is defined we trust it to be 8 bits
2361AC_CHECK_TYPE(int8_t,[
2362 AC_CHECK_SIZEOF(int8_t,,SQUID_DEFAULT_SIZEOF_INCLUDES)
2363 AC_DEFINE(HAVE_INT8_T,1,[int8_t is defined in system headers])
2364 ],,SQUID_DEFAULT_INCLUDES)
2365
2366dnl fallback #1
2367AC_CHECK_TYPE(char,[
2368 AC_CHECK_SIZEOF(char,,SQUID_DEFAULT_SIZEOF_INCLUDES)
2369 AC_DEFINE(HAVE_CHAR,1,[char is defined in system headers])
2370 ],,SQUID_DEFAULT_INCLUDES)
2371
2372dnl unsigned 8 bit ints - u_int8_t
2373dnl if this is defined we trust it to be 8 bits
2374AC_CHECK_TYPE(u_int8_t,[
2375 AC_CHECK_SIZEOF(u_int8_t,,SQUID_DEFAULT_SIZEOF_INCLUDES)
2376 AC_DEFINE(HAVE_U_INT8_T,1,[u_int8_t is defined in system headers])
2377 ],,SQUID_DEFAULT_INCLUDES)
2378
2379dnl fallback #1
2380dnl if this is defined we trust it to be 8 bits
2381AC_CHECK_TYPE(uint8_t,[
2382 AC_CHECK_SIZEOF(uint8_t,,SQUID_DEFAULT_SIZEOF_INCLUDES)
2383 AC_DEFINE(HAVE_UINT8_T,1,[uint8_t is defined in system headers])
2384 ],,SQUID_DEFAULT_INCLUDES)
2385
2386dnl 16 bit integers - int16_t
6a9f6389 2387dnl if this is defined we trust it to be 16 bits
62266438 2388AC_CHECK_TYPE(int16_t,[
2389 AC_CHECK_SIZEOF(int16_t,,SQUID_DEFAULT_SIZEOF_INCLUDES)
2390 AC_DEFINE(HAVE_INT16_T,1,[int16_t is defined in system headers])
2391 ],,SQUID_DEFAULT_INCLUDES)
6a9f6389 2392
2393dnl fallback #1
2394AC_CHECK_TYPE(short,[
856e69c5 2395 AC_CHECK_SIZEOF(short,,SQUID_DEFAULT_SIZEOF_INCLUDES)
6a9f6389 2396 AC_DEFINE(HAVE_SHORT,1,[short is defined in system headers])
2397 ],,SQUID_DEFAULT_INCLUDES)
2398
2399dnl fallback #2
2400AC_CHECK_TYPE(int,[
856e69c5 2401 AC_CHECK_SIZEOF(int,,SQUID_DEFAULT_SIZEOF_INCLUDES)
6a9f6389 2402 AC_DEFINE(HAVE_INT,1,[int is defined in system headers])
2403 ],,SQUID_DEFAULT_INCLUDES)
2404
2405dnl unsigned 16 bit ints - u_int16_t
2406dnl if this is defined we trust it to be 16 bits
62266438 2407AC_CHECK_TYPE(u_int16_t,[
2408 AC_CHECK_SIZEOF(u_int16_t,,SQUID_DEFAULT_SIZEOF_INCLUDES)
2409 AC_DEFINE(HAVE_U_INT16_T,1,[u_int16_t is defined in system headers])
2410 ],,SQUID_DEFAULT_INCLUDES)
6a9f6389 2411
2412dnl fallback #1
2413dnl if this is defined we trust it to be 16 bits
62266438 2414AC_CHECK_TYPE(uint16_t,[
2415 AC_CHECK_SIZEOF(uint16_t,,SQUID_DEFAULT_SIZEOF_INCLUDES)
2416 AC_DEFINE(HAVE_UINT16_T,1,[uint16_t is defined in system headers])
2417 ],,SQUID_DEFAULT_INCLUDES)
6a9f6389 2418
2419dnl 32 bit signed int - int32_t
2420dnl if this is defined we trust it to be 32 bits
62266438 2421AC_CHECK_TYPE(int32_t,[
2422 AC_CHECK_SIZEOF(int32_t,,SQUID_DEFAULT_SIZEOF_INCLUDES)
2423 AC_DEFINE(HAVE_INT32_T,1,[int32_t is defined in system headers])
2424 ],,SQUID_DEFAULT_INCLUDES)
6a9f6389 2425
2426dnl fallback #1
2427AC_CHECK_TYPE(long,[
856e69c5 2428 AC_CHECK_SIZEOF(long,,SQUID_DEFAULT_SIZEOF_INCLUDES)
6a9f6389 2429 AC_DEFINE(HAVE_LONG,1,[long is defined in system headers])
2430 ],,SQUID_DEFAULT_INCLUDES)
2431
2432dnl 32 bit unsigned int - u_int32_t
2433dnl if this is defined we trust it to be 32 bits
62266438 2434AC_CHECK_TYPE(u_int32_t,[
2435 AC_CHECK_SIZEOF(u_int32_t,,SQUID_DEFAULT_SIZEOF_INCLUDES)
2436 AC_DEFINE(HAVE_U_INT32_T,1,[u_int32_t is defined in system headers])
2437 ],,SQUID_DEFAULT_INCLUDES)
6a9f6389 2438
2439dnl fallback #1
2440dnl if this is defined we trust it to be 32 bits
62266438 2441AC_CHECK_TYPE(uint32_t,[
2442 AC_CHECK_SIZEOF(uint32_t,,SQUID_DEFAULT_SIZEOF_INCLUDES)
2443 AC_DEFINE(HAVE_UINT32_T,1,[uint32_t is defined in system headers])
2444 ],,SQUID_DEFAULT_INCLUDES)
6a9f6389 2445
2446dnl 64 bit signed - int64_t
2447dnl if this is defind we trust it to be 64 bits
62266438 2448AC_CHECK_TYPE(int64_t,[
2449 AC_CHECK_SIZEOF(int64_t,,SQUID_DEFAULT_SIZEOF_INCLUDES)
2450 AC_DEFINE(HAVE_INT64_T,1,[int64_t is defined in system headers])
2451 ],,SQUID_DEFAULT_INCLUDES)
6a9f6389 2452
2453dnl fallback #1
2454dnl if this is defind we trust it to be 64 bits
62266438 2455AC_CHECK_TYPE(__int64,[
2456 AC_CHECK_SIZEOF(__int64,,SQUID_DEFAULT_SIZEOF_INCLUDES)
2457 AC_DEFINE(HAVE___INT64,1,[__int64 is defined in system headers])
2458 ],,SQUID_DEFAULT_INCLUDES)
6a9f6389 2459
2460dnl fallback #2
2461AC_CHECK_TYPE(long long,[
856e69c5 2462 AC_CHECK_SIZEOF(long long,,SQUID_DEFAULT_SIZEOF_INCLUDES)
6a9f6389 2463 AC_DEFINE(HAVE_LONG_LONG,1,[long long is defined in system headers])
2464 ],,SQUID_DEFAULT_INCLUDES)
2465
2466dnl 64 bit unsigned - u_int64_t
2467dnl if this is defind we trust it to be 64 bits
62266438 2468AC_CHECK_TYPE(u_int64_t,[
2469 AC_CHECK_SIZEOF(u_int64_t,,SQUID_DEFAULT_SIZEOF_INCLUDES)
2470 AC_DEFINE(HAVE_U_INT64_T,1,[u_int64_t is defined in system headers])
2471 ],,SQUID_DEFAULT_INCLUDES)
6a9f6389 2472
2473dnl fallback #1
2474dnl if this is defind we trust it to be 64 bits
62266438 2475AC_CHECK_TYPE(uint64_t,[
2476 AC_CHECK_SIZEOF(uint64_t,,SQUID_DEFAULT_SIZEOF_INCLUDES)
2477 AC_DEFINE(HAVE_UINT64_T,1,[uint64_t is defined in system headers])
2478 ],,SQUID_DEFAULT_INCLUDES)
6a9f6389 2479
588e71df 2480dnl On Solaris 9 x86, gcc may includes a "fixed" set of old system include files
2481dnl that is incompatible with the updated Solaris header files.
2482dnl For this reason, we must check if pad128_t and upad128_t are defined.
2483AC_CHECK_TYPE(pad128_t,
2484 AC_DEFINE(HAVE_PAD128_T,1,[pad128_t is defined in system headers]),
2485 ,SQUID_DEFAULT_INCLUDES)
2486
2487AC_CHECK_TYPE(upad128_t,
2488 AC_DEFINE(HAVE_UPAD128_T,1,[upad128_t is defined in system headers]),
2489 ,SQUID_DEFAULT_INCLUDES)
2490
6a9f6389 2491AC_CHECK_TYPE(pid_t, AC_DEFINE(HAVE_PID_T,1,[pid_t is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
856e69c5 2492AC_CHECK_TYPE(size_t, [AC_CHECK_SIZEOF(size_t,,SQUID_DEFAULT_SIZEOF_INCLUDES)
6a9f6389 2493 AC_DEFINE(HAVE_SIZE_T,1,[size_t is defined by the system headers])],,SQUID_DEFAULT_INCLUDES)
2494AC_CHECK_TYPE(ssize_t, AC_DEFINE(HAVE_SSIZE_T,1,[ssize_t is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
856e69c5 2495AC_CHECK_TYPE(off_t,[ AC_CHECK_SIZEOF(off_t,,SQUID_DEFAULT_SIZEOF_INCLUDES)
6a9f6389 2496 AC_DEFINE(HAVE_OFF_T,1,[off_t is defined by the system headers])],,SQUID_DEFAULT_INCLUDES)
2497AC_CHECK_TYPE(mode_t, AC_DEFINE(HAVE_MODE_T,1,[mode_t is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
2498AC_CHECK_TYPE(fd_mask, AC_DEFINE(HAVE_FD_MASK,1,[fd_mask is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
adcceb47 2499
77d6bd88 2500dnl Check for special functions
2501AC_FUNC_ALLOCA
2502
6a9f6389 2503AC_CHECK_TYPE(socklen_t,AC_DEFINE(HAVE_SOCKLEN_T,1,[socklen_t is defined by the system headers]),,[
2504#include <sys/types.h>
6637e3a5 2505#include <sys/socket.h>
2506#if STDC_HEADERS
2507#include <stdlib.h>
2508#include <stddef.h>
6a9f6389 2509#endif])
6637e3a5 2510
b50f1b2b 2511dnl Check for libcap header (assume its not broken unless
69367152
HN
2512use_libcap=auto
2513AC_ARG_WITH(libcap, AS_HELP_STRING([--without-libcap],[disable usage of Linux capabilities library to control privileges]),
2514[ if test "x$withval" = "xyes" ; then
b64b6030 2515 AC_MSG_RESULT(libcap forced enabled)
69367152 2516 use_libcap=yes
b50f1b2b 2517 else
1c9910eb 2518 AC_MSG_RESULT(libcap forced disabled)
69367152 2519 use_libcap=no
b50f1b2b 2520 fi
b64b6030 2521])
69367152 2522if test "x$use_libcap" != "xno"; then
b64b6030
HN
2523 # cap_clear_flag is the most recent libcap function we require
2524 AC_CHECK_LIB(cap, cap_clear_flag)
6a4d3ec8
HN
2525 if test "x$ac_cv_lib_cap_cap_clear_flag" = xyes; then
2526 use_libcap=yes
2527 else
69367152 2528 if test "x$use_libcap" = "xyes"; then
ff8d255b 2529 AC_MSG_ERROR([libcap forced enabled but not available or not usable, requires libcap-2.09 or later])
b64b6030 2530 fi
69367152 2531 use_libcap=no
b64b6030
HN
2532 fi
2533fi
69367152 2534
6a4d3ec8 2535if test "x$use_libcap" = "xyes"; then
b64b6030
HN
2536 AC_DEFINE(USE_LIBCAP, 1, [use libcap to set capabilities required for TPROXY])
2537 dnl Check for libcap headader breakage.
b50f1b2b 2538 AC_CHECK_HEADERS(sys/capability.h)
ff8d255b
HN
2539 AC_CACHE_CHECK([for operational libcap2 headers], squid_cv_sys_capability_works,
2540 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2541#include <stdlib.h>
2542#include <stddef.h>
2543#include <sys/capability.h>
2544]], [[
2545capget(NULL, NULL);
2546capset(NULL, NULL);
2547 ]])],[squid_cv_sys_capability_works=yes],[squid_cv_sys_capability_works=no])
b50f1b2b 2548 )
ff8d255b
HN
2549 if test x$squid_cv_sys_capability_works != xyes; then
2550 AC_DEFINE([LIBCAP_BROKEN],1,[if libcap2 headers are broken and clashing with glibc])
2551 fi
b50f1b2b 2552fi
5b43d209 2553
b64b6030 2554
6a9f6389 2555AC_CHECK_TYPE(mtyp_t,AC_DEFINE(HAVE_MTYP_T,1,[mtyp_t is defined by the system headers]),,[#include <sys/types.h>
aea1be68 2556#include <sys/ipc.h>
6a9f6389 2557#include <sys/msg.h>])
aea1be68 2558
090089c4 2559dnl Check for needed libraries
54c95954
FC
2560AC_SEARCH_LIBS([gethostbyname],[nsl resolv bind])
2561AC_SEARCH_LIBS([res_init],[resolv])
2562AC_SEARCH_LIBS([bind],[socket])
2563AC_SEARCH_LIBS([opcom_stack_trace],[opcom_stack])
2564AC_SEARCH_LIBS([strlcpy], [bsd])
85cd85f3 2565AC_SEARCH_LIBS([yp_match], [nsl nss_nis nss_nisplus])
bfe8dedf 2566dnl Check for Winsock only on MinGW, on Cygwin we must use emulated BSD socket API
4b26fae9 2567case "$host_os" in
2568 mingw|mingw32)
2569 AC_MSG_CHECKING(for winsock)
2570 save_LIBS="$LIBS"
2571 for curlib in ws2_32 wsock32; do
2572 LIBS="$LIBS -l$curlib"
62979ab1 2573 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <winsock.h>]], [[
1635bf30
GS
2574 socket(0,0,0);
2575 select(0,NULL,NULL,NULL,NULL);
2576 closesocket(0);
2577 gethostname(NULL,0);
62979ab1 2578 ]])],[have_winsock=yes],[have_winsock=no])
4b26fae9 2579
2580 if test $have_winsock = yes; then
2581 ac_cv_func_select='yes'
2582 if test $curlib = ws2_32; then
2583 have_winsock=winsock2
2584 fi
2585 break
2586 fi
2587 LIBS="$save_LIBS"
2588 done
2589 AC_MSG_RESULT($have_winsock)
bfe8dedf
GS
2590 if test $have_winsock = winsock2; then
2591 AC_CHECK_HEADERS(winsock2.h)
2592 else
2593 AC_CHECK_HEADERS(winsock.h)
2594 fi
4b26fae9 2595 ;;
2596esac
94d48591 2597
3c641669 2598dnl Ripped from the Samba sources
2599AC_CACHE_CHECK([for unix domain sockets],squid_cv_unixsocket, [
62979ab1 2600 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3c641669 2601#include <sys/types.h>
2602#include <stdlib.h>
2603#include <stddef.h>
2604#include <sys/socket.h>
62979ab1 2605#include <sys/un.h>]], [[
3c641669 2606 struct sockaddr_un sunaddr;
2607 sunaddr.sun_family = AF_UNIX;
62979ab1 2608]])],[squid_cv_unixsocket=yes],[squid_cv_unixsocket=no])])
3c641669 2609if test x"$squid_cv_unixsocket" = x"yes"; then
6a9f6389 2610 AC_DEFINE(HAVE_UNIXSOCKET,1,[Do we have unix sockets? (required for the winbind ntlm helper])
3c641669 2611fi
2612dnl end rip
2613
94d48591 2614 AC_CHECK_LIB(gnumalloc, main)
2615 if test "$ac_cv_lib_gnumalloc_main" = "yes"; then
eed82608 2616 AC_MSG_NOTICE([Disabling extended malloc functions when using gnumalloc])
94d48591 2617 ac_cv_func_mallinfo=no
2618 ac_cv_func_mallocblksize=no
2619 ac_cv_func_mallopt=no
2620 else
2621 case "$host" in
2622 *-sun-solaris*)
eed82608 2623 AC_MSG_NOTICE([skipping libmalloc check for $host])
94d48591 2624 ;;
2625 i386-*-freebsd*)
eed82608 2626 AC_MSG_NOTICE([skipping libmalloc check for $host])
94d48591 2627 ;;
2628 *)
2629
2630 AC_CHECK_LIB(malloc, main)
2631 ;;
2632 esac
2633 fi
94d48591 2634
be79ade0 2635AC_CHECK_LIB(regex, main, [REGEXLIB="-lregex"])
08caf8c6 2636case "$host_os" in
2637mingw|mingw32)
eed82608 2638 AC_MSG_NOTICE([Use MSVCRT for math functions.])
08caf8c6 2639 ;;
2640 *)
c753b5e6
AJ
2641 dnl rint() is only used in old C code for now.
2642 AC_LANG_PUSH([C])
2643 AC_SEARCH_LIBS([rint],[m])
2644 AC_LANG_POP([C])
08caf8c6 2645 ;;
2646esac
090089c4 2647
001ad4cc
AJ
2648dnl Enable IPv6 support
2649AC_MSG_CHECKING([whether to enable IPv6])
d0de3f62 2650use_ipng=auto
001ad4cc 2651AC_ARG_ENABLE(ipv6,
62979ab1 2652 AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),
d0de3f62
AJ
2653[ case $enableval in
2654 yes|no)
8d29be12 2655 use_ipng=$enableval
d0de3f62
AJ
2656 ;;
2657 *)
2658 ;;
2659 esac
2660])
2661AC_MSG_RESULT($use_ipng)
001ad4cc 2662
d0de3f62 2663if test "$use_ipng" != "no"; then
001ad4cc
AJ
2664 SAVED_LIBS="$LIBS"
2665 dnl Solaris 10/11 requires -lsocket
2666 case "$host" in
2667 *-solaris*)
2668 LIBS="$LIBS -lsocket"
2669 ;;
2670 *)
2671 ;;
2672 esac
8d29be12 2673 AC_CACHE_CHECK([if PF_INET6 is available], squid_cv_pf_inet6,
62979ab1 2674 AC_RUN_IFELSE([AC_LANG_SOURCE([[ /* PF_INET6 available check */
001ad4cc
AJ
2675# include <sys/types.h>
2676# include <sys/socket.h>
b3167ca7 2677 int main(int argc, char **argv) {
001ad4cc
AJ
2678 if (socket(PF_INET6, SOCK_STREAM, 0) < 0)
2679 return 1;
2680 else
2681 return 0;
2682 }
8d29be12 2683 ]])],[squid_cv_pf_inet6="yes" ; SAVED_LIBS="$LIBS"],[squid_cv_pf_inet6="no"],[])
001ad4cc
AJ
2684 )
2685 LIBS="$SAVED_LIBS"
2686fi
2687
d0de3f62
AJ
2688# NP: semi-silent failure as IPv4-only mode is perfectly usable on this system.
2689# unless --enable-ipv6 is explicitly used. in which case it's a hard fail.
2690if test "x$use_ipng" = "xyes" && test "x$squid_cv_pf_inet6" = "xno"; then
2691 AC_MSG_ERROR([IPv6 cannot be built on this system. Basic kernel definitions are missing.])
8d29be12 2692elif test "x$use_ipng" = "xauto" && test "x$squid_cv_pf_inet6" = "xno"; then
d0de3f62
AJ
2693 AC_MSG_WARN([IPv6 cannot be built on this system. Basic kernel definitions are missing.])
2694fi
2695
2696if test "$use_ipng" != "no" && test "$squid_cv_pf_inet6" = "yes" ; then
001ad4cc 2697 AC_DEFINE(USE_IPV6,1,[Enable support for IPv6 ])
18a8e998 2698 SET_IPV6_SETTINGS=""
001ad4cc
AJ
2699 use_v4mapped=yes
2700
44770d71 2701dnl Check for forced split-stack mode
001ad4cc
AJ
2702 AC_MSG_CHECKING([for IPv6 split-stack requirement])
2703 AC_ARG_WITH(ipv6-split-stack,
62979ab1 2704 AS_HELP_STRING([--with-ipv6-split-stack],[Force-Enable experimental split-stack support for Windows XP and *BSD. Requires IPv6.]),
001ad4cc
AJ
2705 [ use_v4mapped="no"
2706 AC_MSG_RESULT(yes)],
2707 [ AC_MSG_RESULT(no) ])
2708
44770d71
AJ
2709dnl Check for IPv6 v4-mapping availability
2710dnl Useful for other OS with hybrid-stack defaults turned OFF
001ad4cc
AJ
2711dnl But only usable if it actually works...
2712 if test "$use_v4mapped" = "yes" ; then
2713 AC_MSG_CHECKING([for IPv6 v4-mapping ability])
62979ab1 2714 AC_RUN_IFELSE([AC_LANG_SOURCE([[ /* IPPROTO_V4MAPPED is usable check */
001ad4cc
AJ
2715# include <sys/types.h>
2716# include <sys/socket.h>
2717# include <netinet/in.h>
2718#if HAVE_NETINET_IN6_H
2719# include <netinet/in6.h>
2720#endif
b3167ca7 2721 int main(int argc, char **argv) {
001ad4cc
AJ
2722 int s = socket(PF_INET6, SOCK_STREAM, 0);
2723 int tos = 0;
2724 if (setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, (char *) &tos, sizeof(int)) < 0)
2725 return 1;
2726 else
2727 return 0;
2728 }
62979ab1 2729 ]])],[ AC_MSG_RESULT(yes)
001ad4cc
AJ
2730 use_v4mapped=yes
2731 AC_DEFINE(IPV6_SPECIAL_V4MAPPED, 1, [Enable v4-mapping through v6 sockets])
62979ab1 2732 ],[ AC_MSG_RESULT(no)
001ad4cc
AJ
2733 AC_DEFINE(IPV6_SPECIAL_V4MAPPED, 0, [Enable v4-mapping through v6 sockets])
2734 use_v4mapped=no
62979ab1 2735 ],[])
001ad4cc
AJ
2736 fi
2737
be0c7ff0
FC
2738dnl if we can't defer v4-mapping to the OS we are forced to split-stack
2739dnl the FD table.
001ad4cc
AJ
2740 AC_MSG_CHECKING([for IPv6 stack type/mode])
2741 if test "$use_v4mapped" = "yes"; then
2742 AC_DEFINE(IPV6_SPECIAL_V4MAPPED, 1, [Enable v4-mapping through v6 sockets. Requires IPv6 hybrid-stack.])
2743 AC_DEFINE(IPV6_SPECIAL_SPLITSTACK, 0, [Enable support for IPv6 on split-stack implementations])
2744 AC_MSG_RESULT(mapping hybrid)
2745 else
2746 AC_DEFINE(IPV6_SPECIAL_V4MAPPED, 0, [Enable v4-mapping through v6 sockets. Requires IPv6 hybrid-stack.])
2747 AC_DEFINE(IPV6_SPECIAL_SPLITSTACK, 1, [Enable support for IPv6 on split-stack implementations])
2748 AC_MSG_RESULT(split-stack or BSD non-mapping dual-stack)
2749 fi
2750
2751dnl Check whether this OS defines sin6_len as a member of sockaddr_in6 as a backup to ss_len
2752AC_CACHE_CHECK([for sin6_len field in struct sockaddr_in6],
2753 ac_cv_have_sin6_len_in_struct_sai, [
62979ab1 2754 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
001ad4cc
AJ
2755#include <sys/types.h>
2756#include <sys/socket.h>
2757#include <netinet/in.h>
62979ab1
AJ
2758 ]], [[ struct sockaddr_in6 s; s.sin6_len = 1; ]])],[ ac_cv_have_sin6_len_in_struct_sai="yes" ],[ ac_cv_have_sin6_len_in_struct_sai="no"
2759 ])
001ad4cc
AJ
2760 ])
2761 if test "x$ac_cv_have_sin6_len_in_struct_sai" = "xyes" ; then
2762 AC_DEFINE(HAVE_SIN6_LEN_IN_SAI, 1, [Does struct sockaddr_in6 have sin6_len? 1: Yes, 0: No])
2763 else
2764 AC_DEFINE(HAVE_SIN6_LEN_IN_SAI, 0, [Does struct sockaddr_in6 have sin6_len? 1: Yes, 0: No])
2765 fi
2766
2767else
d0de3f62 2768 # IPv6 is not available, but is not explicitly required. Auto-Disable.
001ad4cc
AJ
2769 AC_DEFINE(USE_IPV6,0,[Enable support for IPv6])
2770 AC_DEFINE(IPV6_SPECIAL_SPLITSTACK,0,[Enable support for IPv6 on split-stack implementations])
2771 AC_DEFINE(IPV6_SPECIAL_V4MAPPED,0,[Enable v4-mapping through v6 sockets])
18a8e998 2772 SET_IPV6_SETTINGS="\#IPv6 Not Available: "
001ad4cc 2773fi
18a8e998 2774AC_SUBST(SET_IPV6_SETTINGS)
001ad4cc
AJ
2775
2776dnl Check whether this OS defines ss_len as a member of sockaddr_storage
2777AC_CACHE_CHECK([for ss_len field in struct sockaddr_storage],
2778 ac_cv_have_ss_len_in_struct_ss, [
62979ab1 2779 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
001ad4cc
AJ
2780#include <sys/types.h>
2781#include <sys/socket.h>
2782#include <netinet/in.h>
62979ab1
AJ
2783 ]], [[ struct sockaddr_storage s; s.ss_len = 1; ]])],[ ac_cv_have_ss_len_in_struct_ss="yes" ],[ ac_cv_have_ss_len_in_struct_ss="no"
2784 ])
001ad4cc
AJ
2785])
2786if test "x$ac_cv_have_ss_len_in_struct_ss" = "xyes" ; then
2787 AC_DEFINE(HAVE_SS_LEN_IN_SS, 1, [Does struct sockaddr_storage have ss_len? 1: Yes, 0: No])
2788else
2789 AC_DEFINE(HAVE_SS_LEN_IN_SS, 0, [Does struct sockaddr_storage have ss_len? 1: Yes, 0: No])
2790fi
2791
2792dnl Check whether this OS defines sin_len as a member of sockaddr_in as a backup to ss_len
2793AC_CACHE_CHECK([for sin_len field in struct sockaddr_in],
2794 ac_cv_have_sin_len_in_struct_sai, [
62979ab1 2795 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
001ad4cc
AJ
2796#include <sys/types.h>
2797#include <sys/socket.h>
2798#include <netinet/in.h>
62979ab1
AJ
2799 ]], [[ struct sockaddr_in s; s.sin_len = 1; ]])],[ ac_cv_have_sin_len_in_struct_sai="yes" ],[ ac_cv_have_sin_len_in_struct_sai="no"
2800 ])
001ad4cc
AJ
2801])
2802if test "x$ac_cv_have_sin_len_in_struct_sai" = "xyes" ; then
2803 AC_DEFINE(HAVE_SIN_LEN_IN_SAI, 1, [Does struct sockaddr_in have sin_len? 1: Yes, 0: No])
2804else
2805 AC_DEFINE(HAVE_SIN_LEN_IN_SAI, 0, [Does struct sockaddr_in have sin_len? 1: Yes, 0: No])
2806fi
2807
090089c4 2808dnl Check for libcrypt
0d8565ac 2809CRYPTLIB=
8154dd82 2810dnl Some of our helpers use crypt(3) which may be in libc, or in
2811dnl libcrypt (eg FreeBSD)
c1dc012a 2812AC_CHECK_LIB(crypt, crypt, [CRYPTLIB="-lcrypt"])
3d4022fa 2813dnl Solaris10 provides MD5 natively through libmd5
c1dc012a 2814AC_CHECK_LIB(md5, MD5Init, [CRYPTLIB="$CRYPTLIB -lmd5"])
be79ade0 2815AC_SUBST(CRYPTLIB)
77f675ad 2816
0d8565ac
AJ
2817# check for crypt, may require -lcrypt
2818SAVED_LIBS="$LIBS"
2819LIBS="$LIBS $CRYPTLIB"
2820AC_CHECK_FUNCS(crypt)
2821LIBS="$SAVED_LIBS"
2822
2823
042b1f8a 2824dnl Check for libdl, used by auth_modules/PAM
8154dd82 2825if test "$with_dl" = "yes"; then
2826 AC_CHECK_LIB(dl, dlopen)
2827fi
042b1f8a 2828
86ec11aa 2829dnl -lintl is needed on SCO version 3.2v4.2 for strftime()
2830dnl Robert Side <rside@aiinc.bc.ca>
2831dnl Mon, 18 Jan 1999 17:48:00 GMT
2832case "$host" in
2833 *-pc-sco3.2*)
2834 AC_CHECK_LIB(intl, strftime)
2835 ;;
2836esac
2837
20e869bf 2838dnl On MinGW OpenLDAP is not available, so LDAP helpers can be linked
2839dnl only with Windows LDAP libraries using -lwldap32
2840case "$host_os" in
2841mingw|mingw32)
428744a1
AJ
2842 LDAPLIB="-lwldap32"
2843 LBERLIB=""
2844 ;;
20e869bf 2845*)
428744a1
AJ
2846 LDAPLIB="-lldap"
2847 dnl LDAP helpers need to know if -llber is needed or not
2848 AC_CHECK_LIB(lber, main, [LBERLIB="-llber"])
2849 ;;
20e869bf 2850esac
428744a1
AJ
2851AC_SUBST(LDAPLIB)
2852AC_SUBST(LBERLIB)
20e869bf 2853
b7a1c19e 2854dnl Check for libdb
6b5de50d 2855dnl this is not fully functional if db.h is for a differend db version
b7a1c19e 2856DBLIB=
6b5de50d
FC
2857
2858dnl check that dbopen is actually defined in the header
2859dnl FIXME: in case of failure undef db-related includes etc.
2860AC_CHECK_DECL(dbopen,,,[
06fbee01
FC
2861#if HAVE_SYS_TYPES_H
2862#include <sys/types.h>
2863#endif
2864#if HAVE_LIMITS_H
2865#include <limits.h>
2866#endif
6b5de50d
FC
2867#if HAVE_DB_185_H
2868#include <db_185.h>
2869#elif HAVE_DB_H
2870#include <db.h>
2871#endif])
2872
01b4931d 2873dnl 1.85
a258dfca 2874AC_CACHE_CHECK(if dbopen needs -ldb,ac_cv_dbopen_libdb, [
32d0bbd7 2875SAVED_LIBS="$LIBS"; LIBS="$LIBS -ldb"
62979ab1 2876 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
06fbee01
FC
2877#if HAVE_SYS_TYPES_H
2878#include <sys/types.h>
2879#endif
2880#if HAVE_LIMITS_H
2881#include <limits.h>
2882#endif
a258dfca 2883#if HAVE_DB_185_H
2884#include <db_185.h>
2885#elif HAVE_DB_H
2886#include <db.h>
62979ab1 2887#endif]], [[dbopen("", 0, 0, DB_HASH, (void *)0L)]])],[ac_cv_dbopen_libdb="yes"],[ac_cv_dbopen_libdb="no"])
32d0bbd7 2888LIBS="$SAVED_LIBS"
a258dfca 2889])
2b2161bb 2890if test $ac_cv_dbopen_libdb = yes; then
32d0bbd7 2891 LIB_DB="-ldb"
2892fi
01b4931d 2893AC_SUBST(LIB_DB)
b7a1c19e 2894
77f675ad 2895dnl System-specific library modifications
2896dnl
2897case "$host" in
88738790 2898 i386-*-solaris2.*)
7149a49f 2899 if test "$GCC" = "yes"; then
eed82608 2900 AC_MSG_NOTICE([Removing -O for gcc on $host])
80e92d6d 2901 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9]]*//'`"
7149a49f 2902 fi
2903 ;;
77f675ad 2904 *-sgi-irix*)
eed82608 2905 AC_MSG_NOTICE([Removing -lsocket for IRIX...])
6716b242 2906 LIBS=`echo $LIBS | sed -e s/-lsocket//`
eed82608 2907 AC_MSG_NOTICE([Removing -lnsl for IRIX...])
6716b242 2908 LIBS=`echo $LIBS | sed -e s/-lnsl//`
c415c128 2909 ac_cv_lib_nsl_main=no
eed82608 2910 AC_MSG_NOTICE([Removing -lbsd for IRIX...])
b44c0fb4 2911 LIBS=`echo $LIBS | sed -e s/-lbsd//`
77f675ad 2912 ;;
4ba0bd0e 2913dnl From: c0032033@ws.rz.tu-bs.de (Joerg Schumacher)
2914dnl Date: Thu, 17 Oct 1996 04:09:30 +0200
2915dnl Please change your configure script. AIX doesn't need -lbsd.
2916 *-ibm-aix*)
eed82608 2917 AC_MSG_NOTICE([Removing -lbsd for AIX...])
4ba0bd0e 2918 LIBS=`echo $LIBS | sed -e s/-lbsd//`
2919 ;;
30a4f2a8 2920 *m88k*)
fa035612 2921 SQUID_CFLAGS="$SQUID_CFLAGS -D_SQUID_MOTOROLA_"
2922 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_SQUID_MOTOROLA_"
6a9f6389 2923 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1,[If gettimeofday is known to take only one argument])
7149a49f 2924 ;;
580ce039 2925 [*-*-solaris2.[0-4]])
6a9f6389 2926 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)
30a4f2a8 2927 ;;
711fa75e 2928 [*-sony-newsos[56]*])
6a9f6389 2929 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)
f62c73dc 2930 ;;
77f675ad 2931esac
090089c4 2932
57faa85a 2933# Remove optimization for GCC 2.95.[123]
d20b1cd0 2934# gcc -O[2] on *BSD and Linux (x86) causes pointers to magically become NULL
2935if test "$GCC" = "yes"; then
2936 GCCVER=`$CC -v 2>&1 | awk '$2 == "version" {print $3}'`
2937 case "$GCCVER" in
57faa85a 2938 [2.95.[123]])
eed82608 2939 AC_MSG_NOTICE([Removing -O for gcc on $host with GCC $GCCVER])
d20b1cd0 2940 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9]]*//'`"
2941 ;;
2942 esac
2943fi
2944
176d10ee 2945# Recommended by Balint Nagy Endre <bne@CareNet.hu>
2946case "$host" in
2947 *-univel-sysv4.2MP)
2948 if test `uname -v` = "2.03"; then
eed82608 2949 AC_MSG_NOTICE([disabling mallinfo for $host])
176d10ee 2950 ac_cv_func_mallinfo=no
2951 fi
2952 ;;
2953esac
2954
84cecfd2 2955dnl This has to be before AC_CHECK_FUNCS
2956# Disable poll() on certain platforms. Override by setting ac_cv_func_poll
2957# when running configure.
2958if test -z "$ac_cv_func_poll"; then
2959 case "$host" in
2960 [alpha-dec-osf3.*])
2961 # John Kay (jkay@nlanr.net) 19970818
eed82608 2962 AC_MSG_NOTICE([disabling poll for $host...])
84cecfd2 2963 ac_cv_func_poll='no'
2964 ;;
2965 [*-hp-hpux*.*])
2966 # Duane Wessels
eed82608 2967 AC_MSG_NOTICE([disabling poll for $host...])
84cecfd2 2968 ac_cv_func_poll='no'
2969 ;;
2970 [*-linux-*])
f5cec332 2971 # Henrik Nordstrom (hno@squid-cache.org) 19980817
9bb83c8b 2972 # poll is problematic on Linux. We disable it
2973 # by default until Linux gets it right.
b6a2f15e 2974 rev=`uname -r | awk -F. '{printf "%03d%03d",$1,$2}'`
2975 if test $rev -lt 002002; then
eed82608 2976 AC_MSG_NOTICE([disabling poll for $host < 2.2...])
b6a2f15e 2977 ac_cv_func_poll='no'
2978 fi
84cecfd2 2979 ;;
c68e9c6b 2980 [powerpc-ibm-aix4.1.*])
2981 # Mike Laster (mlaster@metavillage.com) 19981021
eed82608 2982 AC_MSG_NOTICE([disabling poll for $host...])
c68e9c6b 2983 ac_cv_func_poll='no'
2984 ;;
86ec11aa 2985 [*-pc-sco3.2*])
2986 # Robert Side <rside@aiinc.bc.ca>
2987 # Mon, 18 Jan 1999 17:48:00 GMT
eed82608 2988 AC_MSG_NOTICE([disabling poll for $host...])
86ec11aa 2989 ac_cv_func_poll='no'
2990 ;;
84cecfd2 2991 esac
2992fi
176d10ee 2993
08caf8c6 2994dnl Override statfs() detect on MinGW becasue is emulated in source code
2995case "$host_os" in
2996mingw|mingw32)
2997 ac_cv_func_statfs='yes'
2998 ;;
2999esac
3000
6716b242 3001dnl Check for library functions
3002AC_CHECK_FUNCS(\
ce3d30fb 3003 backtrace_symbols_fd \
3a144521 3004 bcopy \
3005 bswap_16 \
3006 bswap_32 \
f9576890 3007 bswap16 \
3008 bswap32 \
4ac29a5b 3009 fchmod \
6716b242 3010 getdtablesize \
8505e57b 3011 getpagesize \
230c091c 3012 getpass \
3a144521 3013 getrlimit \
30a4f2a8 3014 getrusage \
9c1d8929 3015 getspnam \
379d5751 3016 gettimeofday \
52303a3d 3017 glob \
f9576890 3018 htobe16 \
3019 htole16 \
d474c7a6 3020 kqueue\
30a4f2a8 3021 lrand48 \
6716b242 3022 mallinfo \
0f5efab0 3023 mallocblksize \
6716b242 3024 mallopt \
2ae6b9b0 3025 memcpy \
30a4f2a8 3026 memmove \
dac27377 3027 memset \
b99a6dec 3028 mkstemp \
1812b6c7 3029 mktime \
88738790 3030 mstats \
84cecfd2 3031 poll \
62ae0622 3032 prctl \
3a144521 3033 pthread_attr_setschedparam \
cd748f27 3034 pthread_attr_setscope \
3035 pthread_setschedparam \
42b51993 3036 pthread_sigmask \
c68e9c6b 3037 putenv \
b1e77ec1 3038 random \
6716b242 3039 regcomp \
3040 regexec \
3041 regfree \
30a4f2a8 3042 res_init \
af76ec93 3043 __res_init \
4915be3b 3044 rint \
a4ba1105 3045 sbrk \
3a144521 3046 select \
234967c9 3047 seteuid \
c415c128 3048 setgroups \
30a4f2a8 3049 setpgrp \
6716b242 3050 setrlimit \
30a4f2a8 3051 setsid \
3052 sigaction \
11430c03 3053 snprintf \
1ccc0d40 3054 socketpair \
30a4f2a8 3055 srand48 \
b1e77ec1 3056 srandom \
0343b99c 3057 statfs \
6716b242 3058 sysconf \
3059 syslog \
234967c9 3060 timegm \
28da5e0d 3061 vsnprintf \
6716b242 3062)
f5e5c4cf 3063dnl ... and some we provide local replacements for
3064AC_REPLACE_FUNCS(\
3065 drand48 \
a98c2da5 3066 eui64_aton \
cc192b50 3067 inet_ntop \
3068 inet_pton \
f5e5c4cf 3069 initgroups \
cc192b50 3070 getaddrinfo \
3071 getnameinfo \
f5e5c4cf 3072 strerror \
585cddda
AJ
3073 strsep \
3074 strtoll \
f5e5c4cf 3075 tempnam \
3076)
6716b242 3077
9676633b
FC
3078# Magic which checks whether we are forcing a type of comm loop we
3079# are actually going to (ab)use.
3080# Mostly ripped from squid-commloops, thanks to adrian and benno
1b3db6d9 3081
8075a4da
FC
3082if test -n "$squid_opt_io_loop_engine"; then
3083 AC_MSG_NOTICE([choosing user-specified net I/O API $squid_opt_io_loop_engine])
9676633b 3084elif test "$enable_epoll" != "no" && test "$squid_cv_epoll_works" = "yes" ; then
8075a4da 3085 squid_opt_io_loop_engine="epoll"
9676633b 3086elif test "$enable_kqueue" != "no" && test "$ac_cv_func_kqueue" = "yes" ; then
8075a4da 3087 squid_opt_io_loop_engine="kqueue"
9676633b 3088elif test "$enable_poll" != "no" && test "$ac_cv_func_poll" = "yes" ; then
8075a4da 3089 squid_opt_io_loop_engine="poll"
9676633b 3090elif test "$enable_select" != "no" && test "$ac_cv_func_select" = "yes" ; then
8075a4da 3091 squid_opt_io_loop_engine="select"
bf53a520 3092 if test "$squid_host_os" = "mingw" ; then
8075a4da 3093 squid_opt_io_loop_engine="select_win32"
bf53a520 3094 fi
1b3db6d9 3095else
be0c7ff0
FC
3096 AC_MSG_WARN([Eep! Cannot find poll, kqueue, epoll, or select!])
3097 AC_MSG_WARN([Will try select and hope for the best.])
8075a4da 3098 squid_opt_io_loop_engine="select"
1b3db6d9 3099fi
d474c7a6 3100
8075a4da 3101AC_MSG_NOTICE([Using ${squid_opt_io_loop_engine} for the IO loop.])
d474c7a6 3102
8075a4da
FC
3103AM_CONDITIONAL([USE_POLL], [test $squid_opt_io_loop_engine = poll])
3104AM_CONDITIONAL([USE_EPOLL], [test $squid_opt_io_loop_engine = epoll])
3105AM_CONDITIONAL([USE_SELECT], [test $squid_opt_io_loop_engine = select])
3106AM_CONDITIONAL([USE_SELECT_SIMPLE], [test $squid_opt_io_loop_engine = select_simple])
3107AM_CONDITIONAL([USE_SELECT_WIN32], [test $squid_opt_io_loop_engine = select_win32])
3108AM_CONDITIONAL([USE_KQUEUE], [test $squid_opt_io_loop_engine = kqueue])
3109AM_CONDITIONAL([USE_DEVPOLL], [test $squid_opt_io_loop_engine = devpoll])
d474c7a6 3110
8075a4da 3111case $squid_opt_io_loop_engine in
0abb39dd
FC
3112 epoll) AC_DEFINE(USE_EPOLL,1,[Use epoll() for the IO loop]) ;;
3113 poll) AC_DEFINE(USE_POLL,1,[Use poll() for the IO loop]) ;;
3114 kqueue) AC_DEFINE(USE_KQUEUE,1,[Use kqueue() for the IO loop]) ;;
3115 select_win32) AC_DEFINE(USE_SELECT_WIN32,1,[Use Winsock select() for the IO loop]) ;;
3116 select) AC_DEFINE(USE_SELECT,1,[Use select() for the IO loop]) ;;
d474c7a6 3117esac
1b3db6d9 3118
be0c7ff0 3119AC_CACHE_CHECK(if setresuid is actually implemented, ac_cv_func_setresuid,
62979ab1 3120 AC_RUN_IFELSE([AC_LANG_SOURCE([[
60939927 3121#include <stdlib.h>
b3167ca7 3122 int main(int argc, char **argv) {
5c51415d 3123 if(setresuid(-1,-1,-1)) {
3124 perror("setresuid:");
b3167ca7 3125 return 1;
60939927 3126 }
b3167ca7 3127 return 0;
5c51415d 3128 }
62979ab1 3129 ]])],[ac_cv_func_setresuid="yes"],[ac_cv_func_setresuid="no"],[])
60939927 3130)
5c51415d 3131if test "$ac_cv_func_setresuid" = "yes" ; then
be0c7ff0 3132 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 3133fi
60939927 3134
0abb39dd
FC
3135SQUID_CHECK_FUNC_STRNSTR
3136SQUID_CHECK_FUNC_VACOPY
3137SQUID_CHECK_FUNC___VACOPY
cee08cbc 3138
c3d0c8b5 3139
5cafc1d6 3140dnl IP-Filter support requires ipf header files. These aren't
3141dnl installed by default, so we need to check for them
1d26e252 3142if test "$enable_ipf_transparent" != "no" ; then
20ad76ab 3143 AC_MSG_CHECKING(for availability of IP-Filter header files)
42b51993 3144 # hold on to your hats...
3145 if test "$ac_cv_header_ip_compat_h" = "yes" ||
3146 test "$ac_cv_header_ip_fil_compat_h" = "yes" ||
87d21d8b 3147 test "$ac_cv_header_netinet_ip_compat_h" = "yes" ||
3148 test "$ac_cv_header_netinet_ip_fil_compat_h" = "yes" ; then
42b51993 3149 have_ipfilter_compat_header="yes"
3150 fi
20ad76ab 3151 if test "$have_ipfilter_compat_header" = "yes" &&
eb824054 3152 test "$ac_cv_header_ip_fil_h" = "yes" &&
3153 test "$ac_cv_header_ip_nat_h" = "yes" ; then
1d26e252 3154 enable_ipf_transparent="yes"
42b51993 3155 elif test "$have_ipfilter_compat_header" = "yes" &&
eb824054 3156 test "$ac_cv_header_netinet_ip_fil_h" = "yes" &&
3157 test "$ac_cv_header_netinet_ip_nat_h" = "yes" ; then
1d26e252 3158 enable_ipf_transparent="yes"
eb824054 3159 else
1d26e252 3160 enable_ipf_transparent="no"
5cafc1d6 3161 fi
3162 AC_MSG_RESULT($IPF_TRANSPARENT)
1d26e252
FC
3163fi
3164AC_MSG_NOTICE([IPF-based transparent proxying enabled: $enable_ipf_transparent])
0067eb06 3165SQUID_DEFINE_BOOL([IPF_TRANSPARENT],$enable_ipf_transparent,
1d26e252
FC
3166 [Enable support for IPF-style transparent proxying])
3167
3168if test "$enable_ipf_transparent" = "yes" -a "$squid_host_os" = "solaris" ; then
8f6ca20d 3169dnl On Solaris Ipfilter includes expect that SOLARIS2 is defined with the
3170dnl Solaris minor version (8, 9, 10, ...)
20ad76ab
FC
3171 solrev=`uname -r | sh -c 'IFS=. read j n x; echo $n'`
3172 CFLAGS="-DSOLARIS2=$solrev $CFLAGS"
3173 CXXFLAGS="-DSOLARIS2=$solrev $CXXFLAGS"
5cafc1d6 3174fi
3175
2b0dd4ac 3176dnl PF support requires a header file.
1d26e252 3177if test "$enable_pf_transparent" != "no" ; then
38ff0a40
FC
3178 if test "$ac_cv_header_net_pfvar_h" = "yes" -o \
3179 "$ac_cv_header_net_pf_pfvar_h" = "yes"; then
3180 if test "$enable_pf_transparent" = "auto" ; then
3181 enable_pf_transparent="yes"
3182 fi
3183 else
3184 if test "$enable_pf_transparent" = "yes" ; then
3185 AC_MSG_ERROR([PF-based transparent proxy requested but needed header not found])
3186 fi
3187 enable_pf_transparent="no"
3188 fi
2b0dd4ac 3189fi
0067eb06 3190SQUID_DEFINE_BOOL([PF_TRANSPARENT],$enable_pf_transparent,
38ff0a40 3191 [Enable support for PF-style transparent proxying])
2b0dd4ac 3192
4bd144d2
FC
3193if test "$enable_linux_netfilter" != "no" ; then
3194 if test "$ac_cv_header_linux_netfilter_ipv4_h" = "yes"; then
3195 if test "$enable_linux_netfilter" = "auto" ; then
3196 enable_linux_netfilter=yes
3197 fi
3198 else
3199 if test "$enable_linux_netfilter" = "auto" ; then
3200 enable_linux_netfilter=no
d852fbad 3201 else
4bd144d2 3202 AC_MSG_ERROR([Linux Netfilter support requested but needed headers not found])
d852fbad 3203 fi
4bd144d2 3204 fi
b50f1b2b 3205fi
969d4051
HN
3206SQUID_DEFINE_BOOL([LINUX_NETFILTER],$enable_linux_netfilter,
3207 [Enable support for Transparent Proxy on Linux via Netfilter])
20ad76ab 3208
b50f1b2b 3209dnl Netfilter TPROXY depends on libcap but the NAT parts can still work.
4bd144d2
FC
3210AC_MSG_NOTICE([Support for Netfilter-based interception proxy requested: $enable_linux_netfilter])
3211if test "$enable_linux_netfilter" = "yes" && test "$use_libcap" != "yes" ; then
b50f1b2b
AJ
3212 AC_MSG_WARN([Missing needed capabilities (libcap or libcap2) for TPROXY])
3213 AC_MSG_WARN([Linux Transparent Proxy support WILL NOT be enabled])
3214 AC_MSG_WARN([Reduced support to Interception Proxy])
be0c7ff0 3215 # AC_DEFINEd later
96f08e2d
FC
3216fi
3217
cc937513 3218AC_ARG_ENABLE(gnuregex,
a5eb3731
FC
3219 AS_HELP_STRING([--enable-gnuregex],
3220 [Compile GNUregex. Unless you have reason to use
cc937513
AJ
3221 this option, you should not enable it.
3222 This library file is usually only required on Windows and
3223 very old Unix boxes which do not have their own regex
3224 library built in.]),
3225[USE_GNUREGEX=$enableval])
91bc414e 3226if test -z "$USE_GNUREGEX" ; then
3227 case "$host" in
3228 *-sun-solaris2.[[0-4]])
3229 USE_GNUREGEX="yes"
3230 ;;
3231 *-next-nextstep*)
3232 USE_GNUREGEX="yes"
3233 ;;
3234 esac
3235fi
7a081912 3236AC_MSG_CHECKING(if GNUregex needs to be compiled)
91bc414e 3237if test -z "$USE_GNUREGEX"; then
55878dfd 3238if test "$ac_cv_func_regcomp" = "no" || test "$USE_GNUREGEX" = "yes" ; then
74946a0f 3239 USE_GNUREGEX="yes"
00fa2c12 3240else
62979ab1
AJ
3241 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3242#include <regex.h>]], [[regex_t t; regcomp(&t,"",0);]])],[USE_GNUREGEX="no"],[USE_GNUREGEX="yes"])
91bc414e 3243fi
00fa2c12 3244fi
74946a0f 3245AC_MSG_RESULT($USE_GNUREGEX)
3246if test "$USE_GNUREGEX" = "yes"; then
cc937513
AJ
3247 # override system regex with ours. Not good. But what was asked for.
3248 REGEXLIB=""
6a9f6389 3249 AC_DEFINE(USE_GNUREGEX,1,[Define if we should use GNU regex])
7a081912 3250fi
26675bf4 3251AC_SUBST(REGEXLIB)
cc937513 3252#AC_SUBST(LIBREGEX)
7a081912 3253
5c51415d 3254dnl Not cached since people are likely to tune this
e924600d 3255AC_MSG_CHECKING(Default FD_SETSIZE value)
62979ab1 3256AC_RUN_IFELSE([AC_LANG_SOURCE([[
e924600d 3257#if HAVE_STDIO_H
3258#include <stdio.h>
3259#endif
3260#if HAVE_UNISTD_H
3261#include <unistd.h>
3262#endif
cf69e4f2
HN
3263#if HAVE_STDLIB_H
3264#include <stdlib.h>
3265#endif
e924600d 3266#if HAVE_SYS_TIME_H
3267#include <sys/time.h>
3268#endif
3269#if HAVE_SYS_SELECT_H
3270#include <sys/select.h>
3271#endif
3272#if HAVE_SYS_TYPES_H
3273#include <sys/types.h>
3274#endif
bfe8dedf
GS
3275#if HAVE_WINSOCK_H
3276#include <winsock.h>
3277#endif
3278#if HAVE_WINSOCK2_H
3279#include <winsock2.h>
3280#endif
b3167ca7 3281int main(int argc, char **argv) {
635e6242 3282 FILE *fp = fopen("conftestval", "w");
3283 fprintf (fp, "%d\n", FD_SETSIZE);
b3167ca7 3284 return 0;
e924600d 3285}
62979ab1 3286]])],[DEFAULT_FD_SETSIZE=`cat conftestval`],[DEFAULT_FD_SETSIZE=256],[DEFAULT_FD_SETSIZE=256])
e924600d 3287AC_MSG_RESULT($DEFAULT_FD_SETSIZE)
6a9f6389 3288AC_DEFINE_UNQUOTED(DEFAULT_FD_SETSIZE, $DEFAULT_FD_SETSIZE, [Default FD_SETSIZE value])
e924600d 3289
f49be7d1 3290
5c51415d 3291dnl Not cached since people are likely to tune this
234967c9 3292AC_MSG_CHECKING(Maximum number of filedescriptors we can open)
be0c7ff0 3293dnl damn! FreeBSD pthreads break dup2().
5132a9eb 3294TLDFLAGS="$LDFLAGS"
f49be7d1 3295if test -n "$squid_filedescriptors_num" ; then
3296 SQUID_MAXFD=$squid_filedescriptors_num
3297 AC_MSG_RESULT($SQUID_MAXFD (user-forced))
3298else
f49be7d1 3299 case $host in
3300 i386-unknown-freebsd*)
3301 if echo "$LDFLAGS" | grep -q pthread; then
3302 LDFLAGS=`echo $LDFLAGS | sed -e "s/-pthread//"`
3303 fi
3304 esac
62979ab1 3305 AC_RUN_IFELSE([AC_LANG_SOURCE([[
8cca06da 3306#include <stdio.h>
234967c9 3307#include <unistd.h>
cf69e4f2 3308#include <stdlib.h>
30a4f2a8 3309#include <sys/time.h> /* needed on FreeBSD */
234967c9 3310#include <sys/param.h>
3311#include <sys/resource.h>
b3167ca7 3312int main(int argc, char **argv) {
635e6242 3313 FILE *fp;
234967c9 3314 int i,j;
42b51993 3315#if defined(__CYGWIN32__) || defined (__CYGWIN__)
b05490a8 3316 /* getrlimit and sysconf returns bogous values on cygwin32.
df087e68 3317 * Number of fds is virtually unlimited in cygwin (sys/param.h)
b05490a8 3318 * __CYGWIN32__ is deprecated.
df087e68 3319 */
3320 i = NOFILE;
b05490a8 3321#else
3322#if HAVE_SETRLIMIT
234967c9 3323 struct rlimit rl;
3324#if defined(RLIMIT_NOFILE)
3325 if (getrlimit(RLIMIT_NOFILE, &rl) < 0) {
3326 perror("getrlimit: RLIMIT_NOFILE");
3327 } else {
f168f0c5
AJ
3328#if defined(__APPLE__)
3329 /* asking for more than OPEN_MAX fails on Leopard */
3330 rl.rlim_cur = (OPEN_MAX < rl.rlim_max ? OPEN_MAX : rl.rlim_max);
3331#else
234967c9 3332 rl.rlim_cur = rl.rlim_max; /* set it to the max */
f168f0c5 3333#endif
234967c9 3334 if (setrlimit(RLIMIT_NOFILE, &rl) < 0) {
3335 perror("setrlimit: RLIMIT_NOFILE");
3336 }
3337 }
3338#elif defined(RLIMIT_OFILE)
3339 if (getrlimit(RLIMIT_OFILE, &rl) < 0) {
3340 perror("getrlimit: RLIMIT_OFILE");
3341 } else {
3342 rl.rlim_cur = rl.rlim_max; /* set it to the max */
3343 if (setrlimit(RLIMIT_OFILE, &rl) < 0) {
3344 perror("setrlimit: RLIMIT_OFILE");
3345 }
3346 }
3347#endif /* RLIMIT_NOFILE */
3348#endif /* HAVE_SETRLIMIT */
d9399075 3349 /* by starting at 2^14, we will never get higher
3350 than 2^15 for SQUID_MAXFD */
3351 i = j = 1<<14;
3352 while (j) {
3353 j >>= 1;
3354 if (dup2(0, i) < 0) {
3355 i -= j;
3356 } else {
3357 close(i);
3358 i += j;
3359 }
3360 }
3361 i++;
b05490a8 3362#endif /* IF !DEF CYGWIN */
635e6242 3363 fp = fopen("conftestval", "w");
a4d7e961 3364 fprintf (fp, "%d\n", i & ~0x3F);
b3167ca7 3365 return 0;
234967c9 3366}
62979ab1 3367 ]])],[SQUID_MAXFD=`cat conftestval`],[SQUID_MAXFD=256],[SQUID_MAXFD=256])
4b26fae9 3368 dnl Microsoft MSVCRT.DLL supports 2048 maximum FDs
3369 case "$host_os" in
3370 mingw|mingw32)
3371 SQUID_MAXFD="2048"
3372 ;;
3373 esac
f49be7d1 3374 AC_MSG_RESULT($SQUID_MAXFD)
3375fi
6a9f6389 3376AC_DEFINE_UNQUOTED(SQUID_MAXFD, $SQUID_MAXFD,[Maximum number of open filedescriptors])
b9cc811d 3377if test "$SQUID_MAXFD" -lt 512 ; then
eed82608
AJ
3378 AC_MSG_WARN([$SQUID_MAXFD may not be enough filedescriptors if your])
3379 AC_MSG_WARN([cache will be very busy. Please see the FAQ page])
3380 AC_MSG_WARN([http://wiki.squid-cache.org/SquidFaq/TroubleShooting])
3381 AC_MSG_WARN([on how to increase your filedescriptor limit])
80ab193b 3382fi
c76d8acc 3383LDFLAGS="$TLDFLAGS"
234967c9 3384
d0f9207a 3385if test `expr $SQUID_MAXFD % 64` != 0; then
eed82608 3386 AC_MSG_WARN([$SQUID_MAXFD is not an multiple of 64. This may cause issues on certain platforms.])
a4d7e961 3387fi
3388
5c51415d 3389dnl Not cached since people are likely to tune this
30a4f2a8 3390AC_MSG_CHECKING(Default UDP send buffer size)
62979ab1 3391AC_RUN_IFELSE([AC_LANG_SOURCE([[
8cca06da 3392#include <stdlib.h>
3393#include <stdio.h>
30a4f2a8 3394#include <sys/types.h>
bfe8dedf 3395#if HAVE_SYS_SOCKET_H
30a4f2a8 3396#include <sys/socket.h>
bfe8dedf
GS
3397#endif
3398#if HAVE_NETINET_IN_H
30a4f2a8 3399#include <netinet/in.h>
bfe8dedf
GS
3400#endif
3401#if HAVE_WINSOCK_H
3402#include <winsock.h>
3403#endif
3404#if HAVE_WINSOCK2_H
3405#include <winsock2.h>
3406#endif
b3167ca7 3407int main(int argc, char **argv)
30a4f2a8 3408{
635e6242 3409 FILE *fp;
eab7694a 3410 int fd,val=0;
bfe8dedf 3411#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
eab7694a 3412 int len=sizeof(int);
bfe8dedf
GS
3413 WSADATA wsaData;
3414 WSAStartup(2, &wsaData);
eab7694a
GS
3415#else
3416 socklen_t len=sizeof(socklen_t);
bfe8dedf 3417#endif
b3167ca7 3418 if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) return 1;
bfe8dedf 3419#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
b3167ca7 3420 if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char *)&val, &len) < 0) return 1;
bfe8dedf 3421 WSACleanup();
f3f3e961 3422#else
b3167ca7 3423 if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &val, &len) < 0) return 1;
bfe8dedf 3424#endif
b3167ca7 3425 if (val<=0) return 1;
635e6242 3426 fp = fopen("conftestval", "w");
3427 fprintf (fp, "%d\n", val);
b3167ca7 3428 return 0;
30a4f2a8 3429}
62979ab1 3430]])],[SQUID_DETECT_UDP_SO_SNDBUF=`cat conftestval`],[SQUID_DETECT_UDP_SO_SNDBUF=16384],[SQUID_DETECT_UDP_SO_SNDBUF=16384])
6a9f6389 3431AC_MSG_RESULT($SQUID_DETECT_UDP_SO_SNDBUF)
3432AC_DEFINE_UNQUOTED(SQUID_DETECT_UDP_SO_SNDBUF, $SQUID_DETECT_UDP_SO_SNDBUF,[UDP send buffer size])
30a4f2a8 3433
5c51415d 3434dnl Not cached since people are likely to tune this
30a4f2a8 3435AC_MSG_CHECKING(Default UDP receive buffer size)
62979ab1 3436AC_RUN_IFELSE([AC_LANG_SOURCE([[
8cca06da 3437#include <stdlib.h>
3438#include <stdio.h>
30a4f2a8 3439#include <sys/types.h>
bfe8dedf 3440#if HAVE_SYS_SOCKET_H
30a4f2a8 3441#include <sys/socket.h>
bfe8dedf
GS
3442#endif
3443#if HAVE_NETINET_IN_H
30a4f2a8 3444#include <netinet/in.h>
bfe8dedf
GS
3445#endif
3446#if HAVE_WINSOCK_H
3447#include <winsock.h>
3448#endif
3449#if HAVE_WINSOCK2_H
3450#include <winsock2.h>
3451#endif
b3167ca7 3452int main(int argc, char **argv)
30a4f2a8 3453{
635e6242 3454 FILE *fp;
eab7694a 3455 int fd,val=0;
bfe8dedf 3456#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
eab7694a 3457 int len=sizeof(int);
bfe8dedf
GS
3458 WSADATA wsaData;
3459 WSAStartup(2, &wsaData);
eab7694a
GS
3460#else
3461 socklen_t len=sizeof(socklen_t);
bfe8dedf 3462#endif
b3167ca7 3463 if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) return 1;
bfe8dedf 3464#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
b3167ca7 3465 if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char *)&val, &len) < 0) return 1;
bfe8dedf 3466 WSACleanup();
f3f3e961 3467#else
b3167ca7 3468 if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len) < 0) return 1;
bfe8dedf 3469#endif
b3167ca7 3470 if (val <= 0) return 1;
635e6242 3471 fp = fopen("conftestval", "w");
3472 fprintf (fp, "%d\n", val);
b3167ca7 3473 return 0;
30a4f2a8 3474}
62979ab1 3475]])],[SQUID_DETECT_UDP_SO_RCVBUF=`cat conftestval`],[SQUID_DETECT_UDP_SO_RCVBUF=16384],[SQUID_DETECT_UDP_SO_RCVBUF=16384])
6a9f6389 3476AC_MSG_RESULT($SQUID_DETECT_UDP_SO_RCVBUF)
3477AC_DEFINE_UNQUOTED(SQUID_DETECT_UDP_SO_RCVBUF, $SQUID_DETECT_UDP_SO_RCVBUF,[UDP receive buffer size])
30a4f2a8 3478
5c51415d 3479dnl Not cached since people are likely to tune this
30a4f2a8 3480AC_MSG_CHECKING(Default TCP send buffer size)
62979ab1 3481AC_RUN_IFELSE([AC_LANG_SOURCE([[
8cca06da 3482#include <stdlib.h>
3483#include <stdio.h>
30a4f2a8 3484#include <sys/types.h>
bfe8dedf 3485#if HAVE_SYS_SOCKET_H
30a4f2a8 3486#include <sys/socket.h>
bfe8dedf
GS
3487#endif
3488#if HAVE_NETINET_IN_H
30a4f2a8 3489#include <netinet/in.h>
bfe8dedf
GS
3490#endif
3491#if HAVE_WINSOCK_H
3492#include <winsock.h>
3493#endif
3494#if HAVE_WINSOCK2_H
3495#include <winsock2.h>
3496#endif
b3167ca7 3497int main(int argc, char **argv)
30a4f2a8 3498{
635e6242 3499 FILE *fp;
eab7694a 3500 int fd,val=0;
bfe8dedf 3501#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
eab7694a 3502 int len=sizeof(int);
bfe8dedf
GS
3503 WSADATA wsaData;
3504 WSAStartup(2, &wsaData);
eab7694a
GS
3505#else
3506 socklen_t len=sizeof(socklen_t);
bfe8dedf 3507#endif
b3167ca7 3508 if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) return 1;
bfe8dedf 3509#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
b3167ca7 3510 if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char *)&val, &len) < 0) return 1;
bfe8dedf 3511 WSACleanup();
f3f3e961 3512#else
b3167ca7 3513 if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &val, &len) < 0) return 1;
bfe8dedf 3514#endif
b3167ca7 3515 if (val <= 0) return 1;
635e6242 3516 fp = fopen("conftestval", "w");
3517 fprintf (fp, "%d\n", val);
b3167ca7 3518 return 0;
30a4f2a8 3519}
62979ab1 3520]])],[SQUID_TCP_SO_SNDBUF=`cat conftestval`],[SQUID_TCP_SO_SNDBUF=16384],[SQUID_TCP_SO_SNDBUF=16384])
30a4f2a8 3521AC_MSG_RESULT($SQUID_TCP_SO_SNDBUF)
2aa6ca58 3522if test $SQUID_TCP_SO_SNDBUF -gt 32768; then
eed82608 3523 AC_MSG_NOTICE([Limiting send buffer size to 32K])
2aa6ca58 3524 SQUID_TCP_SO_SNDBUF=32768
3525fi
6a9f6389 3526AC_DEFINE_UNQUOTED(SQUID_TCP_SO_SNDBUF, $SQUID_TCP_SO_SNDBUF,[TCP send buffer size])
30a4f2a8 3527
5c51415d 3528dnl Not cached since people are likely to tune this
30a4f2a8 3529AC_MSG_CHECKING(Default TCP receive buffer size)
62979ab1 3530AC_RUN_IFELSE([AC_LANG_SOURCE([[
8cca06da 3531#include <stdlib.h>
3532#include <stdio.h>
30a4f2a8 3533#include <sys/types.h>
bfe8dedf 3534#if HAVE_SYS_SOCKET_H
30a4f2a8 3535#include <sys/socket.h>
bfe8dedf
GS
3536#endif
3537#if HAVE_NETINET_IN_H
30a4f2a8 3538#include <netinet/in.h>
bfe8dedf
GS
3539#endif
3540#if HAVE_WINSOCK_H
3541#include <winsock.h>
3542#endif
3543#if HAVE_WINSOCK2_H
3544#include <winsock2.h>
3545#endif
b3167ca7 3546int main(int argc, char **argv)
30a4f2a8 3547{
635e6242 3548 FILE *fp;
eab7694a 3549 int fd,val=0;
bfe8dedf 3550#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
eab7694a 3551 int len=sizeof(int);
bfe8dedf
GS
3552 WSADATA wsaData;
3553 WSAStartup(2, &wsaData);
eab7694a
GS
3554#else
3555 socklen_t len=sizeof(socklen_t);
bfe8dedf 3556#endif
b3167ca7 3557 if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) return 1;
bfe8dedf 3558#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
b3167ca7 3559 if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char *)&val, &len) < 0) return 1;
bfe8dedf 3560 WSACleanup();
f3f3e961 3561#else
b3167ca7 3562 if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len) < 0) return 1;
bfe8dedf 3563#endif
b3167ca7 3564 if (val <= 0) return 1;
635e6242 3565 fp = fopen("conftestval", "w");
3566 fprintf (fp, "%d\n", val);
b3167ca7 3567 return 0;
30a4f2a8 3568}
62979ab1 3569]])],[SQUID_TCP_SO_RCVBUF=`cat conftestval`],[SQUID_TCP_SO_RCVBUF=16384],[SQUID_TCP_SO_RCVBUF=16384])
30a4f2a8 3570AC_MSG_RESULT($SQUID_TCP_SO_RCVBUF)
2aa6ca58 3571if test $SQUID_TCP_SO_RCVBUF -gt 65535; then
eed82608 3572 AC_MSG_NOTICE([Limiting receive buffer size to 64K])
2aa6ca58 3573 SQUID_TCP_SO_RCVBUF=65535
3574fi
6a9f6389 3575AC_DEFINE_UNQUOTED(SQUID_TCP_SO_RCVBUF, $SQUID_TCP_SO_RCVBUF,[TCP receive buffer size])
5c51415d 3576AC_CACHE_CHECK(if sys_errlist is already defined, ac_cv_needs_sys_errlist,
62979ab1 3577 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[char *s = sys_errlist;]])],[ac_cv_needs_sys_errlist="no"],[ac_cv_needs_sys_errlist="yes"])
5c51415d 3578)
3579if test "$ac_cv_needs_sys_errlist" = "yes" ; then
6a9f6389 3580 AC_DEFINE(NEED_SYS_ERRLIST,1,[If we need to declare sys_errlist[] as external])
5c51415d 3581fi
30a4f2a8 3582
ef364f64
AJ
3583dnl Hurd does not supply MAXPATHLEN. we may need to define it outselves.
3584dnl Other system define it in system headers
3585AC_CHECK_HEADERS([sys/param.h])
3586AC_MSG_CHECKING(for MAXPATHLEN)
3587AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/param.h>]],[[int i = MAXPATHLEN;]])],[AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)
3588 AC_DEFINE(MAXPATHLEN,256,[If MAXPATHLEN has not been defined])])
3589
3590
5c51415d 3591dnl Not cached since people are likely to change this
6bf65235 3592AC_MSG_CHECKING(for libresolv _dns_ttl_ hack)
62979ab1
AJ
3593AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern int _dns_ttl_;]], [[return _dns_ttl_;]])],[AC_MSG_RESULT(yes)
3594AC_DEFINE(LIBRESOLV_DNS_TTL_HACK,1,[If libresolv.a has been hacked to export _dns_ttl_])],[AC_MSG_RESULT(no)])
6bf65235 3595
b6a2f15e 3596if test "$ac_cv_header_sys_statvfs_h" = "yes" ; then
c68e9c6b 3597AC_MSG_CHECKING(for working statvfs() interface)
62979ab1 3598AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
c68e9c6b 3599#include <stdlib.h>
3600#include <stdio.h>
3601#include <sys/types.h>
3602#include <sys/statvfs.h>
62979ab1 3603]], [[
c68e9c6b 3604struct statvfs sfs;
3605sfs.f_blocks = sfs.f_bfree = sfs.f_frsize =
3606sfs.f_files = sfs.f_ffree = 0;
3607statvfs("/tmp", &sfs);
62979ab1 3608]])],[ac_cv_func_statvfs=yes],[ac_cv_func_statvfs=no])
c68e9c6b 3609AC_MSG_RESULT($ac_cv_func_statvfs)
6b8e7481 3610if test "$ac_cv_func_statvfs" = "yes" ; then
6a9f6389 3611 AC_DEFINE(HAVE_STATVFS,1,[If your system has statvfs(), and if it actually works!])
b6a2f15e 3612fi
6b8e7481 3613fi
c68e9c6b 3614
cc192b50 3615dnl Detect what resolver fields we have available to use...
3616AC_CACHE_CHECK(for _res_ext.nsaddr_list, ac_cv_have_res_ext_nsaddr_list,
62979ab1 3617AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
cc192b50 3618#if HAVE_SYS_TYPES_H
3619#include <sys/types.h>
3620#endif
3621#if HAVE_NETINET_IN_H
3622#include <netinet/in.h>
3623#endif
3624#if HAVE_ARPA_INET_H
3625#include <arpa/inet.h>
3626#endif
3627#if HAVE_ARPA_NAMESER_H
3628#include <arpa/nameser.h>
3629#endif
3630#if HAVE_RESOLV_H
3631#include <resolv.h>
3632#endif
62979ab1 3633]], [[_res_ext.nsaddr_list[[0]].s_addr;]])],[ac_cv_have_res_ext_nsaddr_list="yes"],[ac_cv_have_res_ext_nsaddr_list="no"]))
cc192b50 3634if test "$ac_cv_have_res_ext_nsaddr_list" = "yes" ; then
3635 AC_DEFINE(_SQUID_RES_NSADDR6_LARRAY,_res_ext.nsaddr_list,[If _res_ext structure has nsaddr_list member])
3636 AC_DEFINE(_SQUID_RES_NSADDR6_COUNT,ns6count,[Nameserver Counter for IPv6 _res_ext])
3637fi
3638
0873b2ab 3639if test "$_SQUID_RES_NSADDR6_LIST" = ""; then
cc192b50 3640AC_CACHE_CHECK(for _res._u._ext.nsaddrs, ac_cv_have_res_ext_nsaddrs,
62979ab1 3641AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
cc192b50 3642#if HAVE_SYS_TYPES_H
3643#include <sys/types.h>
3644#endif
3645#if HAVE_NETINET_IN_H
3646#include <netinet/in.h>
3647#endif
3648#if HAVE_ARPA_INET_H
3649#include <arpa/inet.h>
3650#endif
3651#if HAVE_ARPA_NAMESER_H
3652#include <arpa/nameser.h>
3653#endif
3654#if HAVE_RESOLV_H
3655#include <resolv.h>
3656#endif
62979ab1 3657]], [[_res._u._ext.nsaddrs[[0]]->sin6_addr;]])],[ac_cv_have_res_ext_nsaddrs="yes"],[ac_cv_have_res_ext_nsaddrs="no"]))
cc192b50 3658if test "$ac_cv_have_res_ext_nsaddrs" = "yes" ; then
3659 AC_DEFINE(_SQUID_RES_NSADDR6_LPTR,_res._u._ext.nsaddrs,[If _res structure has _ext.nsaddrs member])
3660 AC_DEFINE(_SQUID_RES_NSADDR6_COUNT,_res._u._ext.nscount6,[Nameserver Counter for IPv6 _res])
3661fi
3662fi
3663
c68e9c6b 3664AC_CACHE_CHECK(for _res.nsaddr_list, ac_cv_have_res_nsaddr_list,
62979ab1 3665AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
c68e9c6b 3666#if HAVE_SYS_TYPES_H
3667#include <sys/types.h>
3668#endif
3669#if HAVE_NETINET_IN_H
3670#include <netinet/in.h>
3671#endif
3672#if HAVE_ARPA_INET_H
3673#include <arpa/inet.h>
3674#endif
3675#if HAVE_ARPA_NAMESER_H
3676#include <arpa/nameser.h>
3677#endif
3678#if HAVE_RESOLV_H
3679#include <resolv.h>
3680#endif
62979ab1 3681]], [[_res.nsaddr_list[[0]];]])],[ac_cv_have_res_nsaddr_list="yes"],[ac_cv_have_res_nsaddr_list="no"]))
c68e9c6b 3682if test $ac_cv_have_res_nsaddr_list = "yes" ; then
cc192b50 3683 AC_DEFINE(_SQUID_RES_NSADDR_LIST,_res.nsaddr_list,[If _res structure has nsaddr_list member])
3684 AC_DEFINE(_SQUID_RES_NSADDR_COUNT,_res.nscount,[Nameserver counter for IPv4 _res])
c68e9c6b 3685fi
3686
0873b2ab 3687if test "$_SQUID_RES_NSADDR_LIST" = ""; then
c68e9c6b 3688AC_CACHE_CHECK(for _res.ns_list, ac_cv_have_res_ns_list,
62979ab1 3689AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
c68e9c6b 3690#if HAVE_SYS_TYPES_H
3691#include <sys/types.h>
3692#endif
3693#if HAVE_NETINET_IN_H
3694#include <netinet/in.h>
3695#endif
3696#if HAVE_ARPA_INET_H
3697#include <arpa/inet.h>
3698#endif
3699#if HAVE_ARPA_NAMESER_H
3700#include <arpa/nameser.h>
3701#endif
3702#if HAVE_RESOLV_H
3703#include <resolv.h>
3704#endif
62979ab1 3705]], [[_res.ns_list[[0]].addr;]])],[ac_cv_have_res_ns_list="yes"],[ac_cv_have_res_ns_list="no"]))
c68e9c6b 3706if test $ac_cv_have_res_ns_list = "yes" ; then
cc192b50 3707 AC_DEFINE(_SQUID_RES_NSADDR_LIST,_res.ns_list,[If _res structure has ns_list member])
3708 AC_DEFINE(_SQUID_RES_NSADDR_COUNT,_res.nscount,[Nameserver counter for IPv4 _res])
c68e9c6b 3709fi
3710fi
3711
461b8219 3712dnl Squid will usually attempt to translate when packaging or building from VCS
44e0a249 3713use_translation="yes"
461b8219 3714AC_ARG_ENABLE(translation,
62979ab1 3715 AS_HELP_STRING([--disable-translation],[Prevent Squid generating localized error page templates and manuals.
b3fed8c3 3716 Which is usually tried, but may not be needed.]),
461b8219
AJ
3717[ if test "$enableval" = "no" ; then
3718 use_translation=no
3719 fi
3720])
e4b70b44 3721dnl Squid now has .po translation capability, given the right toolkit
461b8219
AJ
3722if test "$use_translation" = "yes" ; then
3723 AX_WITH_PROG([PO2HTML],[po2html])
3724else
3725 PO2HTML="off"
3726fi
3727AC_SUBST(PO2HTML)
ee1a8ac2 3728
43000484
AJ
3729dnl Squid now has limited locale handling ...
3730dnl on error pages
8db7a54b 3731use_errlocale=yes
43000484 3732AC_ARG_ENABLE(auto-locale,
62979ab1 3733 AS_HELP_STRING([--disable-auto-locale],[This prevents Squid providing localized error pages based on the
21d5413e
AJ
3734 clients request headers.
3735 When disabled Squid requires explicit language configuration.]),
8db7a54b
AJ
3736[ if test "$enableval" = "no" ; then
3737 use_errlocale=no
3738 fi
3739])
3740if test "$use_errlocale" = "yes" ; then
eed82608 3741 AC_MSG_NOTICE([Enabling Multi-Language Support])
43000484 3742 AC_DEFINE(USE_ERR_LOCALES,1,[Use multi-language support on error pages])
8db7a54b 3743else
eed82608 3744 AC_MSG_WARN([Disabling Multi-Language Support])
43000484 3745 AC_DEFINE(USE_ERR_LOCALES,0,[Use multi-language support on error pages])
8db7a54b 3746fi
43000484 3747
090089c4 3748dnl Need the debugging version of malloc if available
3749XTRA_OBJS=''
6509a1a0 3750if test "$ac_cv_lib_malloc_main" = "yes" ; then
090089c4 3751 if test -r /usr/lib/debug/malloc.o ; then
3752 XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/malloc.o"
3753 fi
3754 if test -r /usr/lib/debug/mallocmap.o ; then
3755 XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/mallocmap.o"
3756 fi
3757fi
3758AC_SUBST(XTRA_OBJS)
3759
38fea766 3760if test -z "$XTRA_LIBS"; then
3761 XTRA_LIBS="$LIBS"
0f5a16f8 3762 dnl minor cleanup
3763 XTRA_LIBS=`echo $XTRA_LIBS | sed -e "s/ */ /g"`
38fea766 3764 LIBS=''
3765fi
090089c4 3766AC_SUBST(XTRA_LIBS)
3767
090089c4 3768dnl Clean up after OSF/1 core dump bug
3769rm -f core
3770
6a9f6389 3771AC_CONFIG_FILES([\
a2794549 3772 Makefile \
eee95dfe 3773 compat/Makefile \
a2794549 3774 lib/Makefile \
a2794549 3775 scripts/Makefile \
a2794549 3776 src/Makefile \
5bd7a218 3777 src/base/Makefile \
bcf44a2c 3778 src/acl/Makefile \
a2794549 3779 src/fs/Makefile \
3780 src/repl/Makefile \
3781 src/auth/Makefile \
5fa840c3 3782 src/adaptation/Makefile \
1f3c65fc
AR
3783 src/adaptation/icap/Makefile \
3784 src/adaptation/ecap/Makefile \
04f55905 3785 src/comm/Makefile \
f99c2cfe 3786 src/esi/Makefile \
ee0927b6 3787 src/eui/Makefile \
663ff9aa 3788 src/icmp/Makefile \
4daaf3cb 3789 src/ident/Makefile \
f963428c 3790 src/ip/Makefile \
82b7abe3 3791 src/log/Makefile \
a2794549 3792 contrib/Makefile \
3793 snmplib/Makefile \
3794 icons/Makefile \
3795 errors/Makefile \
1077c1b8 3796 test-suite/Makefile \
99db07b3 3797 doc/Makefile \
3faa6da8 3798 doc/manuals/Makefile \
0c510f3c 3799 helpers/Makefile \
3800 helpers/basic_auth/Makefile \
5a48ed18
AJ
3801 helpers/basic_auth/DB/Makefile \
3802 helpers/basic_auth/getpwnam/Makefile \
0c510f3c 3803 helpers/basic_auth/LDAP/Makefile \
3804 helpers/basic_auth/MSNT/Makefile \
5a48ed18 3805 helpers/basic_auth/MSNT-multi-domain/Makefile \
0c510f3c 3806 helpers/basic_auth/NCSA/Makefile \
5a48ed18 3807 helpers/basic_auth/NIS/Makefile \
0c510f3c 3808 helpers/basic_auth/PAM/Makefile \
bcf74be7 3809 helpers/basic_auth/POP3/Makefile \
5a48ed18
AJ
3810 helpers/basic_auth/RADIUS/Makefile \
3811 helpers/basic_auth/SASL/Makefile \
3812 helpers/basic_auth/SMB/Makefile \
3813 helpers/basic_auth/SSPI/Makefile \
0c510f3c 3814 helpers/digest_auth/Makefile \
89f77e43 3815 helpers/digest_auth/eDirectory/Makefile \
54e8823b
AJ
3816 helpers/digest_auth/file/Makefile \
3817 helpers/digest_auth/ldap/Makefile \
0c510f3c 3818 helpers/ntlm_auth/Makefile \
75aa769b 3819 helpers/ntlm_auth/fake/Makefile \
3963d7b1
AJ
3820 helpers/ntlm_auth/smb_lm/Makefile \
3821 helpers/ntlm_auth/smb_lm/smbval/Makefile \
6e785d85 3822 helpers/ntlm_auth/mswin_sspi/Makefile \
3823 helpers/negotiate_auth/Makefile \
45b2de83 3824 helpers/negotiate_auth/kerberos/Makefile \
6e785d85 3825 helpers/negotiate_auth/mswin_sspi/Makefile \
c6588c68 3826 helpers/external_acl/Makefile \
3827 helpers/external_acl/ip_user/Makefile \
3828 helpers/external_acl/ldap_group/Makefile \
74ab8d10 3829 helpers/external_acl/session/Makefile \
c6588c68 3830 helpers/external_acl/unix_group/Makefile \
736a9a4d 3831 helpers/external_acl/wbinfo_group/Makefile \
9e6e0372 3832 helpers/external_acl/mswin_ad_group/Makefile \
94ab55b0 3833 helpers/external_acl/mswin_lm_group/Makefile \
82b7abe3
AJ
3834 helpers/log_daemon/Makefile \
3835 helpers/log_daemon/file/Makefile \
fdbb3b19
AJ
3836 helpers/url_rewrite/Makefile \
3837 helpers/url_rewrite/fake/Makefile \
94ab55b0 3838 tools/Makefile
53cbe3e4 3839])
43ae1d95 3840
377792e4 3841AC_CONFIG_SUBDIRS(lib/libTrie)
3842
3e7b6055 3843# must configure libltdl subdir unconditionally for "make distcheck" to work
660faa02 3844AC_CONFIG_SUBDIRS(libltdl)
3e7b6055 3845
6a9f6389 3846AC_OUTPUT