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