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