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