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