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