]> git.ipfire.org Git - thirdparty/squid.git/blob - configure.ac
Bug 5060: Parallel builds are not reliable (#927)
[thirdparty/squid.git] / configure.ac
1 ## Copyright (C) 1996-2021 The Squid Software Foundation and contributors
2 ##
3 ## Squid software is distributed under GPLv2+ license and includes
4 ## contributions from numerous individuals and organizations.
5 ## Please see the COPYING and CONTRIBUTORS files for details.
6 ##
7
8 AC_INIT([Squid Web Proxy],[5.2-VCS],[http://bugs.squid-cache.org/],[squid])
9 AC_PREREQ(2.61)
10 AC_CONFIG_HEADERS([include/autoconf.h])
11 AC_CONFIG_AUX_DIR(cfgaux)
12 AC_CONFIG_SRCDIR([src/main.cc])
13 AM_INIT_AUTOMAKE([tar-ustar nostdinc subdir-objects dist-xz])
14 AC_REVISION($Revision$)dnl
15 AC_PREFIX_DEFAULT(/usr/local/squid)
16 AM_MAINTAINER_MODE
17
18 m4_include([acinclude/ax_with_prog.m4])
19 m4_include([acinclude/init.m4])
20 m4_include([acinclude/squid-util.m4])
21 m4_include([acinclude/compiler-flags.m4])
22 m4_include([acinclude/os-deps.m4])
23 m4_include([acinclude/krb5.m4])
24 m4_include([acinclude/pam.m4])
25 m4_include([acinclude/pkg.m4])
26 m4_include([acinclude/tdb.m4])
27 m4_include([acinclude/lib-checks.m4])
28 m4_include([acinclude/ax_cxx_compile_stdcxx_11.m4])
29 m4_include([acinclude/ax_cxx_0x_types.m4])
30
31 PRESET_CFLAGS="$CFLAGS"
32 PRESET_CXXFLAGS="$CXXFLAGS"
33 PRESET_LDFLAGS="$LDFLAGS"
34
35 dnl Set default LDFLAGS
36 if test "x$LDFLAGS" = "x" ; then
37 LDFLAGS="-g"
38 fi
39
40 # Check for GNU cc
41 AC_PROG_CC
42 AM_PROG_CC_C_O
43 AC_PROG_CXX
44 AC_LANG([C++])
45 AC_CANONICAL_HOST
46
47 # Clang 3.2 on some CPUs requires -march-native to detect correctly.
48 # GCC 4.3+ can also produce faster executables when its used.
49 # But building inside a virtual machine environment has been found to
50 # cause random Illegal Instruction errors due to mis-detection of CPU.
51 AC_ARG_ENABLE(arch-native,
52 AS_HELP_STRING([--disable-arch-native],[Some compilers offer CPU-specific
53 optimizations with the -march=native parameter.
54 This flag disables the optimization. The default is to
55 auto-detect compiler support and use where available.]), [
56 SQUID_YESNO([$enableval],
57 [Unrecognized argument to --disable-arch-native: $enableval])
58 ])
59 AC_MSG_NOTICE([CPU arch native optimization enabled: ${enable_arch_native:=auto}])
60 if test "x${enable_arch_native}" != "xno"; then
61 SQUID_CC_CHECK_ARGUMENT([squid_cv_check_marchnative],[-march=native])
62 fi
63
64 # might be cross-compiling.
65 # NP: BUILDCXXFLAGS defined at the end of configure after CXXFLAGS fully known.
66 AC_ARG_VAR([BUILDCXX],[path to compiler for building compile-time tools. e.g. cf_gen])
67 if test "x$HOSTCXX" != "x" -a "x$BUILDCXX" = "x"; then
68 AC_MSG_WARN([Cross-compiling with HOSTCXX is deprecated. Uses BUILDCXX instead.])
69 BUILDCXX="$HOSTCXX"
70 fi
71 if test "x$BUILDCXX" = "x"; then
72 BUILDCXX="$CXX"
73 if test "x$squid_cv_check_marchnative" = "xyes"; then
74 CXXFLAGS="$CXXFLAGS -march=native"
75 fi
76 fi
77 AC_SUBST(BUILDCXX)
78
79 AC_MSG_CHECKING([simplified host os])
80 simple_host_os=`echo $host_os|sed 's/[0-9].*//g;s/-.*//g'`
81 squid_host_os_version=`echo $host_os|tr -d "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-"`
82 if test -n "$squid_host_os_version"; then
83 squid_host_os="`echo $simple_host_os| sed s/$squid_host_os_version//g`"
84 else
85 squid_host_os="$simple_host_os"
86 fi
87 AC_MSG_RESULT($squid_host_os (version $squid_host_os_version))
88 # on windows squid_host_os is either mingw or cygwin, version is 32
89
90 # this needs to be before any test is run, to have more standard
91 # functions available on some Unix sysems (e.g. Solaris)
92 if test "x$squid_host_os" = "solaris" -a "x$GCC" != "x" ; then
93 AC_USE_SYSTEM_EXTENSIONS
94 fi
95
96 # If the user did not specify a C++ version.
97 user_cxx=`echo "$PRESET_CXXFLAGS" | grep -o -E "\-std="`
98 if test "x$user_cxx" = "x"; then
99 # Check for C++11 compiler support
100 AX_CXX_COMPILE_STDCXX_11([noext],[mandatory])
101 fi
102
103 # test for programs
104 AC_PROG_RANLIB
105 AC_PROG_CPP
106 AC_PROG_INSTALL
107 AC_PROG_LN_S
108 AC_PROG_EGREP
109
110 AC_PATH_PROG(SH, sh, /bin/sh)
111 AC_PATH_PROG(FALSE, false, /usr/bin/false)
112 AC_PATH_PROG(TRUE, true, /usr/bin/true)
113 AC_PATH_PROG(MV, mv, $FALSE)
114 AC_PATH_PROG(MKDIR, mkdir, $FALSE)
115 AC_PATH_PROG(LN, ln, cp)
116 AC_PATH_PROG(CHMOD, chmod, $FALSE)
117 AC_PATH_PROG(TR, tr, $FALSE)
118 AC_PATH_PROG(RM, rm, $FALSE)
119 dnl Libtool 2.2.6 requires: rm -f
120 RM="$RM -f"
121
122 PKG_PROG_PKG_CONFIG
123
124 AC_PATH_PROG(PERL, perl, none)
125 if test "x$ac_cv_path_PERL" = "xnone"; then
126 AC_MSG_FAILURE([Perl is required to compile Squid. Please install Perl and then re-run configure ])
127 fi
128 AC_PATH_PROG(POD2MAN, pod2man, $FALSE)
129 AM_CONDITIONAL(ENABLE_POD2MAN_DOC, test "x${ac_cv_path_POD2MAN}" != "x$FALSE")
130
131 dnl set $(AR) if not provided by the build environment
132 if test "x$AR" = "x"; then
133 AC_PATH_PROG(AR, ar, $FALSE)
134 fi
135 AR_R="$AR r"
136 AC_SUBST(AR_R)
137
138 AC_PATH_PROG(LINUXDOC, linuxdoc, $FALSE)
139 AM_CONDITIONAL(ENABLE_RELEASE_DOCS, test "x${ac_cv_path_LINUXDOC}" != "x$FALSE")
140
141 # pre-define DEFAULT_PREFIX, some modules need it.
142 if test "${prefix}" = "NONE" ; then
143 squid_prefix=$ac_default_prefix
144 else
145 squid_prefix=$prefix
146 fi
147 AC_DEFINE_UNQUOTED(DEFAULT_PREFIX,[$squid_prefix],[The install prefix])
148
149 AC_ARG_ENABLE(strict-error-checking,
150 AS_HELP_STRING([--disable-strict-error-checking],[By default squid is compiled
151 with all possible static compiler error-checks enabled.
152 This flag disables the behavior]), [
153 SQUID_YESNO([$enableval],
154 [Unrecognized argument to --disable-strict-error-checking: $enableval])
155 ])
156 AC_MSG_NOTICE([strict error checking enabled: ${enable_strict_error_checking:=yes}])
157
158 AC_MSG_CHECKING(whether to use loadable modules)
159 AC_ARG_ENABLE(loadable-modules,
160 AS_HELP_STRING([--disable-loadable-modules],[do not support loadable modules]) , [
161 SQUID_YESNO([$enableval],
162 [Unrecognized argument to --disable-loadable-modules: $enableval])
163 ])
164 AM_CONDITIONAL(ENABLE_LOADABLE_MODULES, test "x${enable_loadable_modules:=yes}" = "xyes")
165 AC_MSG_RESULT([$enable_loadable_modules])
166
167 if test "x$enable_loadable_modules" = "xyes";
168 then
169 AC_DEFINE(USE_LOADABLE_MODULES, 1, [Support Loadable Modules])
170 AC_ENABLE_SHARED
171 else
172 AC_DISABLE_SHARED
173 fi
174
175 # LT_INIT requires libtool v2, might as well state it loud
176 LT_PREREQ([2.2])
177 LT_INIT([dlopen],[disable-shared])
178 if ! test "${ac_top_build_prefix}" = "";
179 then
180 # LTDL v3-v7 macros assume the autoconf 2.62 variable top_build_prefix is defined
181 # But from autoconf 2.64 its called ac_top_build_prefix and not automatically added to the Makefile
182 # This fixes Linux LTDLv3-v7, and BSD LTDL v2.2
183 top_build_prefix=${ac_top_build_prefix}
184 AC_SUBST(top_build_prefix)
185 fi
186 LTDL_INIT
187
188 dnl LibTool environment is now prepared for setup. Check that it is usable and initialize.
189 LT_LIB_DLLOAD
190
191 # Do we need these unconditionally for "make distcheck" to work?
192 AC_SUBST(INCLTDL)
193 AC_SUBST(LIBLTDL)
194
195 if test "x$enable_loadable_modules" = "xyes";
196 then
197 # Why is this needed? Should not LT_INIT (or LT_LIB_DLLOAD) from libtool do that?
198 LIBADD_DL=${lt_cv_dlopen_libs}
199 AC_SUBST([LIBADD_DL])
200 fi
201
202 SQUID_CC_GUESS_VARIANT
203 SQUID_CC_GUESS_OPTIONS
204
205 dnl find out the exe extension for this platform.
206 dnl If it is not empty, use it for CGI as well.
207 AC_EXEEXT
208 AC_OBJEXT
209
210 if test "x$EXEEXT" = "x" ; then
211 CGIEXT=".cgi"
212 else
213 # automake automatically adds .exe when installing binaries
214 CGIEXT=""
215 fi
216 AC_SUBST(CGIEXT)
217
218 AM_CONDITIONAL(ENABLE_WIN32SPECIFIC,[test "x$squid_host_os" = "xmingw"])
219 AM_CONDITIONAL(ENABLE_WIN32_IPC,[test "x$squid_host_os" = "xmingw"])
220
221 case "$squid_host_os" in
222 mingw)
223 AC_PATH_PROG(WIN32_PSAPI, psapi.dll, none)
224 CFLAGS="$CFLAGS -mthreads"
225 CXXFLAGS="$CXXFLAGS -mthreads -static-libgcc -static-libstdc++"
226 if test "x$ac_cv_path_WIN32_PSAPI" = "xnone"; then
227 AC_MSG_NOTICE([PSAPI.DLL is recommended to run Squid on Windows NT Platform])
228 AC_MSG_NOTICE([Please see PSAPI.DLL section on doc/win32-relnotes.html.])
229 else
230 AC_DEFINE(HAVE_WIN32_PSAPI,1,[Define if you have PSAPI.DLL on Windows systems])
231 LIBS="$LIBS -lpsapi"
232 fi
233 MINGW_LIBS="-lmingwex"
234 AC_SUBST(MINGW_LIBS)
235 ;;
236 freebsd)
237 # FreeBSD places local libraries and packages in /usr/local
238 CFLAGS="$CFLAGS -I/usr/local/include"
239 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
240 LDFLAGS="$LDFLAGS -L/usr/local/lib -Wl,-R/usr/local/lib"
241 ;;
242 *)
243 ;;
244 esac
245
246 dnl Substitutions
247 AC_DEFINE_UNQUOTED(CONFIG_HOST_TYPE, "$host",[Host type from configure])
248
249 AC_DEFINE_UNQUOTED(SQUID_CONFIGURE_OPTIONS, "$ac_configure_args",
250 [configure command line used to configure Squid])
251
252 CACHE_EFFECTIVE_USER="nobody"
253 AC_ARG_WITH(default-user,
254 AS_HELP_STRING([--with-default-user=USER],[System user account for squid permissions. Default: nobody]),
255 [ CACHE_EFFECTIVE_USER="$withval" ]
256 )
257 AC_SUBST(CACHE_EFFECTIVE_USER)
258
259 DEFAULT_LOG_DIR="$localstatedir/logs"
260 AC_ARG_WITH(logdir,
261 AS_HELP_STRING([--with-logdir=PATH],
262 [Default location for squid logs. default: PREFIX/var/logs]), [
263 case $withval in
264 yes|no)
265 AC_MSG_ERROR( --with-logdir requires a directory PATH. --with-logdir=PATH )
266 ;;
267 *)
268 DEFAULT_LOG_DIR="$withval"
269 ;;
270 esac
271 ]
272 )
273 AC_SUBST(DEFAULT_LOG_DIR)
274
275 DEFAULT_PID_FILE="$localstatedir/run/@SERVICE_NAME@.pid"
276 AC_ARG_WITH(pidfile,
277 AS_HELP_STRING([--with-pidfile=PATH],
278 [Default location for squid pid file. Default: PREFIX/var/run/squid.pid]), [
279 case $withval in
280 yes|no)
281 AC_MSG_ERROR( --with-pidfile requires a file PATH. --with-pidfile=PATH )
282 ;;
283 *)
284 DEFAULT_PID_FILE="$withval"
285 ;;
286 esac
287 ])
288 AC_SUBST(DEFAULT_PID_FILE)
289
290 DEFAULT_SWAP_DIR="$localstatedir/cache/squid"
291 AC_ARG_WITH(swapdir,
292 AS_HELP_STRING([--with-swapdir=PATH],
293 [Default location for squid cache directories. Default: PREFIX/var/cache/squid]), [
294 case $withval in
295 yes|no)
296 AC_MSG_ERROR( --with-swapdir requires a directory PATH. --with-swapdir=PATH )
297 ;;
298 *)
299 DEFAULT_SWAP_DIR="$withval"
300 ;;
301 esac
302 ])
303 AC_SUBST(DEFAULT_SWAP_DIR)
304
305 dnl Set Default CFLAGS
306 if test "x$PRESET_CFLAGS" = "x"; then
307 if test "$squid_cv_compiler" = "gcc"; then
308 case "$host" in
309 *-sun-sunos*)
310 # sunos has too many warnings for this to be useful
311 # motorola too
312 ;;
313 *m88k*)
314 # Motorola cc/ld does not like -02 but is ok on -O
315 CFLAGS=`echo $CFLAGS | sed -e 's/-O[0-9]/-O/'`
316 ;;
317 *)
318 CFLAGS="$squid_cv_cc_option_wall $CFLAGS"
319 ;;
320 esac
321 else
322 case "$host" in
323 *mips-sgi-irix6.*)
324 # suggested by Rafael Seidl <rafaels@cthulhu.engr.sgi.com>
325 CFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
326 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
327 -Wl,-woff,85,-woff,84,-woff,134 \
328 -nostdinc -I/usr/include -D_BSD_SIGNALS $CFLAGS"
329 CXXFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
330 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
331 -Wl,-woff,85,-woff,84,-woff,134 \
332 -nostdinc -I/usr/include -D_BSD_SIGNALS $CXXFLAGS"
333 ;;
334 *)
335 ;;
336 esac
337 fi
338 fi
339
340 dnl set squid required flags
341 if test "$squid_cv_compiler" = "gcc"; then
342 case "$squid_host_os" in
343 mingw)
344 dnl Guido Serassio (serassio@squid-cache.org) 20070811
345 dnl Using the latest MinGW (gcc 3.4.5 + mingw-runtime 3.13) cannot build with
346 dnl -Werror -Wmissing-prototypes -Wmissing-declarations
347 dnl TODO: check if the problem will be present in any other newer MinGW release.
348 SQUID_CFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow"
349 ;;
350 *)
351 SQUID_CFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wcomments -Wshadow"
352 ;;
353 esac
354 SQUID_CXXFLAGS="$squid_cv_cc_option_wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual"
355 else
356 SQUID_CFLAGS=
357 SQUID_CXXFLAGS=
358 fi
359
360 dnl CentOS (and RHEL) still define ntohs() using deprecated C++ features
361 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_wno_deprecated_register],[-Werror -Wno-deprecated-register],[[#include <arpa/inet.h>]],[[int fox=ntohs(1);]])
362
363 if test "x$enable_strict_error_checking" != "xno"; then
364 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_option_werror"
365 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cxx_option_werror"
366 fi
367
368 if test "x$ac_cv_require_wno_deprecated_register" = "xyes"; then
369 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -Wno-deprecated-register"
370 fi
371
372 # squid_cv_cc_arg_pipe is set by SQUID_CC_GUESS_OPTIONS
373 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cc_arg_pipe"
374 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_arg_pipe"
375
376 # possibly include some build info tag into squid -v
377 SQUID_EMBED_BUILD_INFO
378
379 AC_ARG_ENABLE(optimizations,
380 AS_HELP_STRING([--disable-optimizations],
381 [Do not compile Squid with compiler optimizations enabled.
382 Optimization is good for production builds, but not
383 good for debugging. During development, use
384 --disable-optimizations to reduce compilation times
385 and allow easier debugging.]), [
386 if test "x$enableval" = "xno" ; then
387 AC_MSG_NOTICE([Disabling compiler optimizations (-O flag)])
388 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9g]]*//'`"
389 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-O[[0-9g]]*//'`"
390 fi
391 ])
392
393 AC_ARG_ENABLE(debug-cbdata,
394 AS_HELP_STRING([--enable-debug-cbdata],
395 [Provide some debug information in cbdata]), [
396 SQUID_YESNO([$enableval],
397 [unrecognized argument to --enable-debug-cbdata: $enableval])
398 ])
399 SQUID_DEFINE_BOOL(USE_CBDATA_DEBUG,${enable_debug_cbdata:=no},
400 [Enable support for cbdata debug information])
401 AC_MSG_NOTICE([cbdata debugging enabled: $enable_debug_cbdata])
402
403
404 dnl Nasty hack to get autoconf 2.64 on Linux to run.
405 dnl all other uses of RUN_IFELSE are wrapped inside CACHE_CHECK which breaks on 2.64
406 AC_RUN_IFELSE([AC_LANG_SOURCE([[ int main(int argc, char **argv) { return 0; } ]])],[],[],[:])
407
408 AH_TEMPLATE(XMALLOC_STATISTICS,[Define to have malloc statistics])
409 AC_ARG_ENABLE(xmalloc-statistics,
410 AS_HELP_STRING([--enable-xmalloc-statistics],
411 [Show malloc statistics in status page]), [
412 SQUID_YESNO([$enableval],
413 [unrecognized argument to --enable-xmalloc-statistics: $enableval])
414 ])
415 SQUID_DEFINE_BOOL(XMALLOC_STATISTICS,${enable_xmalloc_statistics:=no},
416 [Show malloc statistics in status page])
417 AC_MSG_NOTICE([xmalloc stats display: $enable_xmalloc_statistics])
418
419 squid_opt_aufs_threads=""
420 AC_ARG_WITH(aufs-threads,
421 AS_HELP_STRING([--with-aufs-threads=N_THREADS],
422 [Tune the number of worker threads for the aufs object store.]), [
423 case $withval in
424 [[0-9]]*)
425 squid_opt_aufs_threads=$withval
426 ;;
427 *)
428 AC_MSG_ERROR(--with-aufs-threads expects a numeric argument)
429 ;;
430 esac
431 ])
432 if test "x$squid_opt_aufs_threads" != "x"; then
433 AC_MSG_NOTICE([With $squid_opt_aufs_threads aufs threads])
434 AC_DEFINE_UNQUOTED(AUFS_IO_THREADS,$squid_opt_aufs_threads,
435 [Defines how many threads aufs uses for I/O])
436 fi
437
438 AC_ARG_WITH(dl, AS_HELP_STRING([--with-dl],[Use dynamic linking]))
439 if test "x$with_dl" = "xyes"; then
440 AC_MSG_NOTICE([With dl])
441 fi
442
443 AC_DEFUN([LIBATOMIC_CHECKER],[
444 AC_MSG_CHECKING(whether linking $1 -latomic works)
445 AC_LINK_IFELSE([
446 AC_LANG_SOURCE([[
447 #include <atomic>
448 #include <cstdint>
449 int
450 main(int argc, char **) {
451 return (
452 std::atomic<uint8_t>(uint8_t(argc)).exchange(0) &&
453 std::atomic<uint64_t>{}.is_lock_free()
454 ) ? 0 : 1;
455 }
456 ]])],[
457 AC_MSG_RESULT(yes)
458 libatomic_checker_result="yes"],[
459 AC_MSG_RESULT(no)
460 libatomic_checker_result="no"
461 ])])
462
463 ## check for atomics library before anything that might need it
464 SQUID_STATE_SAVE(LIBATOMIC)
465 LIBATOMIC_CHECKER(without)
466 AS_IF([test "x$libatomic_checker_result" = "xno"],[
467 LIBS="$LIBS -latomic"
468 LIBATOMIC_CHECKER(with)
469 AS_IF([test "x$libatomic_checker_result" = "xyes"],[
470 ATOMICLIB="-latomic"],[
471 AC_MSG_ERROR([Required library libatomic not found.])
472 ])])
473 SQUID_STATE_ROLLBACK(LIBATOMIC)
474 AC_SUBST(ATOMICLIB)
475
476 AC_SEARCH_LIBS([shm_open], [rt])
477 if test "x$ac_cv_search_shm_open" != "xno" ; then
478 AC_DEFINE(HAVE_SHM,1,[Support shared memory features])
479 fi
480
481 AC_MSG_CHECKING([for DiskIO modules to be enabled])
482 squid_disk_module_candidates=""
483 squid_opt_enable_diskio="auto" #values: no, yes, "auto"(=yes+detect modules)
484 AC_ARG_ENABLE(disk-io,
485 AS_HELP_STRING([--enable-disk-io="list of modules"],
486 [Build support for the list of disk I/O modules.
487 Set without a value or omitted, all available modules will be built.
488 See src/DiskIO for a list of available modules, or
489 Programmers Guide section on DiskIO
490 for details on how to build your custom disk module]), [
491 case $enableval in
492 yes)
493 ${TRUE}
494 #do nothing, "auto" is ok
495 ;;
496 no)
497 squid_opt_enable_diskio="no"
498 ;;
499 *)
500 squid_opt_enable_diskio="yes"
501 squid_disk_module_candidates=" `echo $enableval| sed -e 's/,/ /g;s/ */ /g'` "
502 SQUID_CLEANUP_MODULES_LIST([squid_disk_module_candidates])
503 ;;
504 esac
505 ])
506
507 # if requested to autodetect, find out what we have
508 if test "x$squid_opt_enable_diskio" = "xauto"; then
509 squid_opt_enable_diskio="yes"
510 SQUID_LOOK_FOR_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
511 if test "x$ac_cv_search_shm_open" = "xno" ; then
512 # disable IpcIo
513 squid_disk_module_candidates=`echo $squid_disk_module_candidates|sed 's/IpcIo//'`
514 fi
515 fi
516
517 AC_MSG_RESULT([${squid_disk_module_candidates:-none}])
518 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
519 SQUID_DEFINE_BOOL(USE_DISKIO,$squid_opt_enable_diskio,
520 [DiskIO modules are expected to be available.])
521
522
523
524 dnl Some autoconf.h defines we might enable later...
525 AC_ARG_WITH(pthreads,AS_HELP_STRING([--without-pthreads],[Disable POSIX Threads]))
526 AC_ARG_WITH(aio, AS_HELP_STRING([--without-aio],[Do not use POSIX AIO. Default: auto-detect]))
527 ENABLE_WIN32_AIOPS=0
528 squid_opt_use_aio=
529 squid_opt_use_diskthreads=
530 AIOLIB=
531
532 dnl Setup the module paths etc.
533 DISK_LIBS=
534 DISK_MODULES=
535 AH_TEMPLATE(HAVE_DISKIO_MODULE_AIO, [Whether POSIX AIO Disk I/O module is built])
536 AH_TEMPLATE(HAVE_DISKIO_MODULE_BLOCKING, [Whether Blocking Disk I/O module is built])
537 AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKDAEMON, [Whether DiskDaemon Disk I/O module is built])
538 AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKTHREADS, [Whether DiskThreads Disk I/O module is built])
539 AH_TEMPLATE(HAVE_DISKIO_MODULE_IPCIO, [Whether IpcIo Disk I/O module is built])
540 AH_TEMPLATE(HAVE_DISKIO_MODULE_MMAPPED, [Whether Mmapped Disk I/O module is built])
541 for module in $squid_disk_module_candidates none; do
542 # maybe not needed
543 if test "x$module" = "xnone"; then
544 continue
545 fi
546 if ! test -d "$srcdir/src/DiskIO/$module"; then
547 AC_MSG_ERROR(disk-io $module does not exist)
548 fi
549 case "$module" in
550
551 AIO)
552 dnl Check for POSIX AIO availability
553 squid_opt_use_aio="yes"
554 AIOLIB=
555 if test "x$with_aio" != "xno"; then
556 have_aio_header=no
557 AC_CHECK_HEADERS(aio.h,[have_aio_header=yes])
558 dnl On some systems POSIX AIO functions are in librt
559 dnl On some systems POSIX AIO functions are in libaio
560 AC_CHECK_LIB(rt,aio_read,[AIOLIB="-lrt"],AC_CHECK_LIB(aio,aio_read,[AIOLIB="-laio"],[]))
561 dnl Enable AIO if the library and headers are found
562 if test "x$AIOLIB" != "x" && test "x$have_aio_header" = "xyes"; then
563 AC_MSG_NOTICE([Native POSIX AIO support detected.])
564 squid_opt_use_aio="yes"
565 else
566 dnl Windows does things differently. We provide wrappers.
567 dnl TODO: Windows really needs its own DiskIO module or its Overlaped IO
568 case "$squid_host_os" in
569 mingw)
570 squid_opt_use_aio="yes"
571 AC_MSG_NOTICE([Windows being built. Maybe-enable POSIX AIO.])
572 ;;
573 *)
574 AC_MSG_NOTICE([Native POSIX AIO support not detected. AIO automatically disabled.])
575 squid_opt_use_aio="no"
576 ;;
577 esac
578 fi
579 else
580 AC_MSG_NOTICE([POSIX AIO support manually disabled.])
581 squid_opt_use_aio="no"
582 fi
583 dnl Use the POSIX AIO pieces if we actually need them.
584 if test "x$squid_opt_use_aio" = "xyes" ; then
585 DISK_MODULES="$DISK_MODULES AIO"
586 AC_DEFINE([HAVE_DISKIO_MODULE_AIO],1,[POSIX AIO Disk I/O module is built])
587 case "$squid_host_os" in
588 mingw)
589 ENABLE_WIN32_AIO=1
590 AC_MSG_NOTICE([Replacing AIO DiskIO module with: Windows overlapped I/O support])
591 ;;
592 *)
593 AC_MSG_NOTICE([Enabling AIO DiskIO module])
594 ;;
595 esac
596 else
597 AC_MSG_NOTICE([AIO DiskIO Module disabled. Missing POSIX AIO support.])
598 squid_disk_module_candidates_AIO=no
599 fi
600 ;;
601
602 Blocking)
603 AC_MSG_NOTICE([Enabling Blocking DiskIO module])
604 DISK_MODULES="$DISK_MODULES Blocking"
605 AC_DEFINE([HAVE_DISKIO_MODULE_BLOCKING],1,[Blocking Disk I/O module is built])
606 ;;
607
608 DiskDaemon)
609 case "$squid_host_os" in
610 mingw)
611 AC_MSG_NOTICE(["DiskDaemon not supported on MinGW"])
612 squid_disk_module_candidates_DiskDaemon=no
613 ;;
614 *)
615 AC_MSG_NOTICE([Enabling DiskDaemon DiskIO module])
616 DISK_MODULES="$DISK_MODULES DiskDaemon"
617 AC_DEFINE([HAVE_DISKIO_MODULE_DISKDAEMON],1,[DiskDaemon Disk I/O module is built])
618 ;;
619 esac
620 ;;
621
622 DiskThreads)
623 squid_opt_use_diskthreads="yes"
624 LIBPTHREADS=
625 SQUID_STATE_SAVE([diskthreads_state],[SQUID_CFLAGS SQUID_CXXFLAGS])
626 if test "x$with_pthreads" != "xno"; then
627 dnl TODO: this needs to be extended to handle more systems and better
628 dnl REF: http://www.openldap.org/lists/openldap-bugs/200006/msg00070.html
629 dnl REF: http://autoconf-archive.cryp.to/acx_pthread.html
630 case "$squid_host_os" in
631 mingw)
632 ENABLE_WIN32_AIOPS=1
633 AC_MSG_NOTICE([Windows threads support automatically enabled])
634 ;;
635 freebsd)
636 if test `echo "$squid_host_os_version" | tr -d .` -lt 70 ; then
637 AC_MSG_NOTICE(pthread library requires FreeBSD 7 or later)
638 squid_opt_use_diskthreads="no"
639 else
640 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
641 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
642 if test "x$GCC" = "xyes" -a "x$PRESET_LDFLAGS" = "x" ; then
643 LDFLAGS="$LDFLAGS -pthread"
644 fi
645 fi
646 ;;
647 openbsd)
648 if test `echo "$squid_host_os_version" | tr -d .` -lt 52 ; then
649 AC_MSG_NOTICE(pthread library requires OpenBSD 5.2 or later)
650 squid_opt_use_diskthreads="no"
651 else
652 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
653 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
654 LDFLAGS="$LDFLAGS -lpthread"
655 fi
656 ;;
657 solaris)
658 if test "x$GCC" = "xyes" ; then
659 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -pthreads"
660 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -pthreads"
661 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
662 AC_MSG_NOTICE(pthread library required but cannot be found.)
663 squid_opt_use_diskthreads="no"
664 ])
665 else
666 dnl test for -lpthread first. libc version is a stub apparently on Solaris.
667 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -lpthread"
668 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -lpthread"
669 AC_SEARCH_LIBS([pthread_create],[pthread thread],[
670 LIBPTHREADS="" #in LIBS
671 ],[
672 AC_MSG_NOTICE(pthread library required but cannot be found.)
673 squid_opt_use_diskthreads="no"
674 ])
675 fi
676 ;;
677 *)
678 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
679 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
680 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
681 AC_MSG_NOTICE(pthread library required but cannot be found.)
682 squid_opt_use_diskthreads="no"
683 ])
684 ;;
685 esac
686 else
687 AC_MSG_NOTICE([Native pthreads support manually disabled.])
688 squid_opt_use_diskthreads="no"
689 fi
690 if test "x$squid_opt_use_diskthreads" = "xyes" ; then
691 AC_MSG_NOTICE([Enabling DiskThreads DiskIO module])
692 DISK_MODULES="$DISK_MODULES DiskThreads"
693 AC_DEFINE([HAVE_DISKIO_MODULE_DISKTHREADS],1,[DiskThreads Disk I/O module is built])
694 else
695 AC_MSG_NOTICE([Native pthreads support disabled. DiskThreads module automaticaly disabled.])
696 SQUID_STATE_ROLLBACK([diskthreads_state])
697 squid_disk_module_candidates_DiskThreads=no
698 fi
699 ;;
700
701 IpcIo)
702 if test "x$ac_cv_search_shm_open" = "xno" ; then
703 AC_MSG_NOTICE([DiskIO IpcIo module requires shared memory support])
704 squid_disk_module_candidates_IpcIo=no
705 else
706 AC_MSG_NOTICE([Enabling IpcIo DiskIO module])
707 DISK_MODULES="$DISK_MODULES IpcIo"
708 AC_DEFINE([HAVE_DISKIO_MODULE_IPCIO],1,[IpcIo Disk I/O module is built])
709 fi
710 ;;
711
712 Mmapped)
713 dnl TODO: use availability of sys/mman.h and/or mmap to define
714 dnl OR support windows mmap functions
715 if test "x$squid_host_os" = "xmingw" ; then
716 AC_MSG_NOTICE([Mmapped DiskIO is not available on Mingw])
717 squid_disk_module_candidates_Mmapped=no
718 else
719 AC_MSG_NOTICE([Enabling Mmapped DiskIO module])
720 DISK_MODULES="$DISK_MODULES Mmapped"
721 AC_DEFINE([HAVE_DISKIO_MODULE_MMAPPED],1,[Mmapped Disk I/O module is built])
722 fi
723 ;;
724
725 *)
726 AC_MSG_NOTICE([Enabling $module DiskIO module])
727 DISK_LIBS="$DISK_LIBS lib${module}.la"
728 DISK_MODULES="$DISK_MODULES ${module}"
729 ;;
730 esac
731 done
732 AC_MSG_NOTICE([IO Modules built: $DISK_MODULES])
733 AC_SUBST(DISK_MODULES)
734 AC_SUBST(DISK_LIBS)
735 AM_CONDITIONAL(ENABLE_DISKIO_AIO, test "x$squid_disk_module_candidates_AIO" = "xyes")
736 AC_SUBST(AIOLIB)
737 AM_CONDITIONAL(ENABLE_WIN32_AIO, test "x$squid_disk_module_candidates_AIO" = "xyes" -a "x$ENABLE_WIN32_AIO" = "x1")
738 AM_CONDITIONAL(ENABLE_DISKIO_BLOCKING, test "x$squid_disk_module_candidates_Blocking" = "xyes")
739 AM_CONDITIONAL(ENABLE_DISKIO_DISKDAEMON, test "x$squid_disk_module_candidates_DiskDaemon" = "xyes")
740 AM_CONDITIONAL(ENABLE_DISKIO_DISKTHREADS, test "x$squid_disk_module_candidates_DiskThreads" = "xyes")
741 AC_SUBST(LIBPTHREADS)
742 AM_CONDITIONAL(ENABLE_WIN32_AIOPS, test "x$squid_disk_module_candidates_DiskThreads" = "xyes" -a "x$ENABLE_WIN32_AIOPS" = "x1")
743 AM_CONDITIONAL(ENABLE_DISKIO_IPCIO, test "x$squid_disk_module_candidates_IpcIo" = "xyes")
744 AM_CONDITIONAL(ENABLE_DISKIO_MMAPPED, test "x$squid_disk_module_candidates_Mmapped" = "xyes")
745
746 dnl Check what Storage formats are wanted.
747 dnl This version will error out with a message saying why if a required DiskIO is missing.
748 squid_opt_enable_storeio=auto
749 AC_ARG_ENABLE([storeio],
750 AS_HELP_STRING([--enable-storeio="list of modules"],
751 [Build support for the list of store I/O modules.
752 The default is only to build the "ufs" module.
753 See src/fs for a list of available modules, or
754 Programmers Guide section <not yet written>
755 for details on how to build your custom store module]), [
756 case $enableval in
757 yes)
758 squid_opt_enable_storeio=auto
759 ;;
760 no)
761 squid_opt_enable_storeio=no
762 ;;
763 *)
764 squid_opt_enable_storeio=yes
765 squid_storeio_module_candidates="`echo $enableval| sed -e 's/,/ /g;s/ */ /g'`"
766 # ufs is really always needed as it has low-level routines
767 # if it is a dupe it will be cleaned-up later
768 squid_storeio_module_candidates="$squid_storeio_module_candidates ufs"
769 ;;
770 esac
771 ])
772 if test "x$squid_opt_enable_storeio" = "xauto"; then
773 squid_opt_enable_storeio=yes
774 AC_MSG_CHECKING([for available StoreIO modules])
775 SQUID_LOOK_FOR_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
776 AC_MSG_RESULT([$squid_storeio_module_candidates])
777 fi
778
779 SQUID_CLEANUP_MODULES_LIST([squid_storeio_module_candidates])
780 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
781 AC_MSG_NOTICE([Store modules built: $squid_storeio_module_candidates])
782
783 for fs in $squid_storeio_module_candidates none; do
784 case "$fs" in
785 diskd)
786 if test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
787 "$squid_disk_module_candidates_DiskDaemon" != "yes" ; then
788 AC_MSG_ERROR([Storage diskd module requires DiskIO module: Blocking or DiskDaemon])
789 fi
790 ;;
791 aufs)
792 if test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
793 "$squid_disk_module_candidates_DiskThreads" != "yes" ; then
794 AC_MSG_ERROR([Storage module aufs requires DiskIO module: Blocking or DiskThreads])
795 fi
796 ;;
797 rock)
798 if test "x$squid_disk_module_candidates_IpcIo" != "xyes" -a \
799 "x$squid_disk_module_candidates_Blocking" != "xyes"; then
800 AC_MSG_ERROR([Storage module Rock requires DiskIO module: Blocking or IpcIo])
801 fi
802 squid_do_build_rock=true
803 ;;
804 ufs)
805 if test "x$squid_disk_module_candidates_Blocking" != "xyes"; then
806 AC_MSG_ERROR([Storage module ufs requires DiskIO module: Blocking])
807 fi
808 squid_do_build_ufs=true
809 ;;
810 esac
811 done
812
813 AM_CONDITIONAL(ENABLE_FS_UFS, test "x$squid_do_build_ufs" = "xtrue")
814 AM_CONDITIONAL(ENABLE_FS_ROCK, test "x$squid_do_build_rock" = "xtrue")
815 dnl hack: need to define those even if not used in the build system to
816 dnl make sure that global FS objects are linked to the squid binary.
817 AH_TEMPLATE(HAVE_FS_UFS, "Define to 1 if ufs filesystem module is build")
818 AH_TEMPLATE(HAVE_FS_AUFS, "Define to 1 if aufs filesystem module is build")
819 AH_TEMPLATE(HAVE_FS_DISKD, "Define to 1 if diskd filesystem module is build")
820 AH_TEMPLATE(HAVE_FS_ROCK, "Define to 1 if rock filesystem module is build")
821
822
823 dnl got final squid_storeio_module_candidates, build library lists
824 dnl This list will not be needed when each fs library has its own Makefile
825 STORE_LIBS_TO_BUILD=
826 dnl File system libraries to link executables with.
827 dnl These are the same as STORE_LIBS_TO_BUILD, but with a path
828 STORE_LIBS_TO_ADD=
829 for fs in $squid_storeio_module_candidates; do
830 STORE_LIBS_TO_BUILD="$STORE_LIBS_TO_BUILD lib${fs}.la"
831 STORE_LIBS_TO_ADD="$STORE_LIBS_TO_ADD fs/lib${fs}.la"
832 SQUID_TOUPPER_VAR_CONTENTS([fs])
833 AC_DEFINE_UNQUOTED(HAVE_FS_${fs}, 1)
834 done
835
836 AC_SUBST(STORE_LIBS_TO_BUILD)
837 AC_SUBST(STORE_LIBS_TO_ADD)
838 AC_SUBST(STORE_TESTS)
839
840
841 dnl At lest one removal policy is always needed.
842 dnl 'lru' removal policy is currently hard-coded by name for tests
843 dnl so we must set it as default.
844 REPL_POLICIES="lru"
845 AC_ARG_ENABLE(removal-policies,
846 AS_HELP_STRING([--enable-removal-policies="list of policies"],
847 [Build support for the list of removal policies.
848 The default is only to build the "lru" module.
849 See src/repl for a list of available modules, or
850 Programmers Guide section 9.9 for details on how
851 to build your custom policy]), [
852 case $enableval in
853 yes)
854 SQUID_LOOK_FOR_MODULES([$srcdir/src/repl],[REPL_POLICIES])
855 ;;
856 no)
857 ;;
858 *)
859 REPL_POLICIES="`echo $enableval| sed -e 's/,/ /g;s/ */ /g'`"
860 ;;
861 esac
862 ])
863 if test "x$REPL_POLICIES" != "x" ; then
864 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/repl],[REPL_POLICIES])
865 AC_MSG_NOTICE([Removal policies to build: $REPL_POLICIES])
866 REPL_OBJS="repl/lib`echo $REPL_POLICIES|sed -e 's% %.a repl/lib%g'`.a"
867 REPL_LIBS="`echo $REPL_OBJS|sed -e 's%repl/%%g'`"
868 fi
869 AC_SUBST(REPL_POLICIES)
870 AC_SUBST(REPL_OBJS)
871 AC_SUBST(REPL_LIBS)
872
873 AM_CONDITIONAL(ENABLE_PINGER, false)
874 AC_ARG_ENABLE(icmp,
875 AS_HELP_STRING([--enable-icmp],[Enable ICMP pinging and Network Measurement]),
876 [ if test "x$enableval" = "xyes" ; then
877 AC_MSG_NOTICE([ICMP enabled])
878 AC_DEFINE(USE_ICMP,1,[Define to use Squid ICMP and Network Measurement features (highly recommended!)])
879 AM_CONDITIONAL(ENABLE_PINGER, true)
880 fi
881 ])
882
883 AM_CONDITIONAL(ENABLE_DELAY_POOLS, false)
884 AC_ARG_ENABLE(delay-pools,
885 AS_HELP_STRING([--enable-delay-pools],[Enable delay pools to limit bandwidth usage]),
886 [ if test "x$enableval" = "xyes" ; then
887 AC_MSG_NOTICE([Delay pools enabled])
888 AC_DEFINE([USE_DELAY_POOLS],1,[Traffic management via "delay pools".])
889 AM_CONDITIONAL(ENABLE_DELAY_POOLS, true)
890 fi
891 ])
892
893 dnl disable generic/common adaptation support by default
894 squid_opt_use_adaptation=no
895
896 squid_opt_use_esi=auto
897 AH_TEMPLATE([USE_SQUID_ESI],[Define to enable the ESI processor])
898 AC_ARG_ENABLE(esi,
899 AS_HELP_STRING([--disable-esi],
900 [Disable ESI for accelerators. ESI requires expat or libxml2.
901 Enabling ESI will cause squid reverse proxies to be capable
902 of the Edge Acceleration Specification (www.esi.org).]),
903 [squid_opt_use_esi=$enableval],[])
904 HAVE_LIBEXPAT=0
905 EXPATLIB=
906 HAVE_LIBXML2=0
907 XMLLIB=
908
909 # ESI support libraries: expat
910 AC_ARG_WITH(expat, AS_HELP_STRING([--without-expat],[Do not use expat for ESI. Default: auto-detect]))
911 if test "x$squid_opt_use_esi" != "xno" -a "x$with_expat" != "xno" ; then
912 AC_CHECK_LIB([expat], [main], [EXPATLIB="-lexpat"; HAVE_LIBEXPAT=1])
913 AC_CHECK_HEADERS([expat.h])
914 AC_DEFINE_UNQUOTED(HAVE_LIBEXPAT, $HAVE_LIBEXPAT, [Define to 1 if you have the expat library])
915 AS_IF(test "x$HAVE_LIBEXPAT" = "x1",[
916 squid_opt_use_esi=yes
917 ],[
918 AS_IF(test "x$with_expat" = "xyes",[
919 AC_MSG_ERROR([Required library expat not found.])
920 ],[
921 AC_MSG_NOTICE([Library expat not found.])
922 ])
923 ])
924 fi
925
926 AC_ARG_WITH(libxml2, AS_HELP_STRING([--without-libxml2],[Do not use libxml2 for ESI. Default: auto-detect]))
927 if test "x$squid_opt_use_esi" != "xno" -a "x$with_libxml2" != "xno" ; then
928 SQUID_STATE_SAVE([squid_libxml2_save])
929 PKG_CHECK_MODULES([LIBXML2],[libxml-2.0],[],[
930 AC_CHECK_LIB([xml2], [main], [LIBXML2_LIBS="$LIBXML2_LIBS -lxml2"])
931 dnl Find the main header and include path...
932 AC_CACHE_CHECK([location of libxml2 include files], [ac_cv_libxml2_include], [
933 AC_CHECK_HEADERS([libxml/parser.h], [], [
934 AC_MSG_NOTICE([Testing in /usr/include/libxml2])
935 SAVED_CPPFLAGS="$CPPFLAGS"
936 CPPFLAGS="-I/usr/include/libxml2 $CPPFLAGS"
937 unset ac_cv_header_libxml_parser_h
938 AC_CHECK_HEADERS([libxml/parser.h], [LIBXML2_CFLAGS="$LIBXML2_CFLAGS -I/usr/include/libxml2"], [
939 AC_MSG_NOTICE([Testing in /usr/local/include/libxml2])
940 CPPFLAGS="-I/usr/local/include/libxml2 $SAVED_CPPFLAGS"
941 unset ac_cv_header_libxml_parser_h
942 AC_CHECK_HEADERS([libxml/parser.h], [LIBXML2_CFLAGS="$LIBXML2_CFLAGS -I/usr/local/include/libxml2"], [
943 AC_MSG_NOTICE([Failed to find libxml2 header file libxml/parser.h])
944 ])
945 ])
946 CPPFLAGS="$SAVED_CPPFLAGS"
947 ])
948 ])
949 ])
950 CPPFLAGS="$CPPFLAGS $LIBXML2_CFLAGS"
951 dnl Now that we know where to look find the headers...
952 AC_CHECK_HEADERS(libxml/parser.h libxml/HTMLparser.h libxml/HTMLtree.h)
953 SQUID_STATE_ROLLBACK([squid_libxml2_save])
954
955 if test "x$LIBXML2_LIBS" != "x"; then
956 HAVE_LIBXML2=1
957 squid_opt_use_esi=yes
958 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $LIBXML2_CFLAGS"
959 CPPFLAGS="$CPPFLAGS $LIBXML2_CFLAGS"
960 XMLLIB="$LIBXML2_LIBS"
961 AC_DEFINE_UNQUOTED(HAVE_LIBXML2, $HAVE_LIBXML2, [Define to 1 if you have the libxml2 library])
962 elif test "x$with_libxml2" = "xyes"; then
963 AC_MSG_ERROR([Required library libxml2 not found])
964 else
965 AC_MSG_NOTICE([Library libxml2 not found.])
966 fi
967 fi
968
969 AS_IF([test "x$squid_opt_use_esi" = "xyes"],[
970 AS_IF(test "x$HAVE_LIBXML2" = "x0" -a "x$HAVE_LIBEXPAT" = "x0",[
971 AC_MSG_ERROR([ESI processor requires libxml2 or libexpat])
972 ])
973 AC_MSG_NOTICE([Enabling ESI processor: $EXPATLIB $XMLLIB])
974 AC_DEFINE(USE_SQUID_ESI,1,[Compile the ESI processor])
975 ],[
976 AS_IF(test "x$squid_opt_use_esi" = "xno",[
977 AC_MSG_NOTICE([Disabling ESI processor.])
978 ],[
979 AC_MSG_NOTICE([Disabling ESI processor. libxml2 and libexpat not found.])
980 ])
981 ])
982 AM_CONDITIONAL(ENABLE_ESI, test "x$squid_opt_use_esi" = "xyes")
983 AM_CONDITIONAL(ENABLE_LIBEXPAT, test "x$HAVE_LIBEXPAT" = "x1")
984 AC_SUBST(EXPATLIB)
985 AM_CONDITIONAL(ENABLE_LIBXML2, test "x$HAVE_LIBXML2" = "x1")
986 AC_SUBST(XMLLIB)
987
988 # icap argument handling
989 AC_ARG_ENABLE(icap-client,
990 AS_HELP_STRING([--disable-icap-client],[Disable the ICAP client.]),[
991 SQUID_YESNO([$enableval],[Unrecognized argument to --disable-icap-client: $enableval])
992 ])
993 SQUID_DEFINE_BOOL(ICAP_CLIENT,${enable_icap_client:=yes}, [Enable ICAP client features in Squid])
994 AS_IF(test "x$enable_icap_client" != "xno", squid_opt_use_adaptation="yes")
995 AM_CONDITIONAL(ENABLE_ICAP_CLIENT, test "x$enable_icap_client" != "xno")
996
997 squid_opt_use_ecap=1
998 AC_MSG_CHECKING(whether to support eCAP)
999 AC_ARG_ENABLE(ecap,
1000 AS_HELP_STRING([--enable-ecap],[support loadable content adaptation modules]), [
1001 case "${enableval}" in
1002 yes|no) squid_opt_use_ecap=$enableval ;;
1003 *) AC_MSG_ERROR(bad value ${enableval} for --enable-ecap) ;;
1004 esac
1005 AC_MSG_RESULT([$squid_opt_use_ecap, explicitly])
1006 ], [
1007 squid_opt_use_ecap=no;
1008 AC_MSG_RESULT([$squid_opt_use_ecap, implicitly])
1009 ]
1010 )
1011
1012 dnl Perform configuration consistency checks for eCAP
1013 if test "x$squid_opt_use_ecap" != "xno";
1014 then
1015 dnl eCAP support requires loadable modules, which are enabled by default
1016 if test "x$enable_loadable_modules" != "xyes"
1017 then
1018 AC_MSG_ERROR([eCAP support requires loadable modules. Please do not use --disable-loadable-modules with --enable-ecap.])
1019 fi
1020
1021 if test -n "$PKG_CONFIG"; then
1022 dnl eCAP support requires libecap.
1023 dnl This Squid supports libecap v1.0.x.
1024 dnl Use EXT_ prefix to distinguish external libecap (that we check for
1025 dnl here) from our own convenience ecap library in Makefiles.
1026 PKG_CHECK_MODULES([EXT_LIBECAP],[libecap >= 1.0 libecap < 1.1])
1027 else
1028 AC_MSG_NOTICE([eCAP support requires pkg-config to verify the correct library version. Trouble may follow.])
1029 fi
1030
1031 SQUID_STATE_SAVE(squid_ecap_state)
1032 AC_MSG_CHECKING([whether -lecap will link])
1033 CXXFLAGS="$CXXFLAGS $EXT_LIBECAP_CFLAGS"
1034 LIBS="$LIBS $EXT_LIBECAP_LIBS"
1035 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <libecap/common/names.h>]],[[
1036 const libecap::Name test("test", libecap::Name::NextId());
1037 ]])],[
1038 AC_MSG_RESULT(yes)
1039 squid_opt_use_adaptation=yes
1040 ],[
1041 AC_MSG_RESULT(no)
1042 AS_IF(
1043 test "x$squid_opt_use_ecap" = "xyes", AC_MSG_ERROR([eCAP library will not link.
1044 You may need to rebuild libecap using the same version of GCC as Squid.
1045 There have been breaking ABI changes in the libstdc++ STL with GCC 5.]),
1046
1047 [AC_MSG_NOTICE([eCAP library will not link.
1048 You may need to rebuild libecap using the same version of GCC as Squid.
1049 There have been breaking ABI changes in the libstdc++ STL with GCC 5.])
1050 squid_opt_use_ecap="no"
1051 ])
1052 ])
1053 SQUID_STATE_ROLLBACK(squid_ecap_state)
1054 fi
1055 SQUID_DEFINE_BOOL(USE_ECAP,${squid_opt_use_ecap:=no},[Whether to use eCAP support])
1056 AM_CONDITIONAL(ENABLE_ECAP, test "x$squid_opt_use_ecap" = "xyes")
1057
1058 dnl enable adaptation if requested by specific adaptation mechanisms
1059 ADAPTATION_LIBS=""
1060 if test "x$squid_opt_use_adaptation" = "xyes"; then
1061 ADAPTATION_LIBS="adaptation/libadaptation.la"
1062 fi
1063 SQUID_DEFINE_BOOL(USE_ADAPTATION,${squid_opt_use_adaptation:=no}, [common adaptation support])
1064 AM_CONDITIONAL(ENABLE_ADAPTATION, test "x$squid_opt_use_adaptation" = "xyes")
1065 AC_SUBST(ADAPTATION_LIBS)
1066
1067 test "x$squid_host_os" = "xmingw" && enable_wccp=no
1068 AC_ARG_ENABLE(wccp,
1069 AS_HELP_STRING([--disable-wccp],[Disable Web Cache Coordination Protocol]), [
1070 SQUID_YESNO([$enableval],[unrecognized argument to --disable-wccp: $enableval])
1071 ])
1072 SQUID_DEFINE_BOOL(USE_WCCP, ${enable_wccp:=yes}, [Define to enable WCCP])
1073 AC_MSG_NOTICE([Web Cache Coordination Protocol enabled: $enable_wccp])
1074
1075 test "x$squid_host_os" = "xmingw" && enable_wccpv2=no
1076 AC_ARG_ENABLE(wccpv2,
1077 AS_HELP_STRING([--disable-wccpv2],
1078 [Disable Web Cache Coordination V2 Protocol]), [
1079 SQUID_YESNO([$enableval],
1080 [unrecognized argument to --disable-wccpv2: $enableval])
1081 ])
1082 SQUID_DEFINE_BOOL(USE_WCCPv2,${enable_wccpv2:=yes},
1083 [Define to enable WCCP V2])
1084 AC_MSG_NOTICE([Web Cache Coordination V2 Protocol enabled: $enable_wccpv2])
1085
1086 AC_ARG_ENABLE(kill-parent-hack,
1087 AS_HELP_STRING([--enable-kill-parent-hack],[Kill parent on shutdown]), [
1088 SQUID_YESNO([$enableval],
1089 [unrecognized argument to --enable-kill-parent-hack: $enableval])
1090 ])
1091 SQUID_DEFINE_BOOL(KILL_PARENT_OPT,${enable_kill_parent_hack:=no},
1092 [A dangerous feature which causes Squid to kill its parent
1093 process (presumably the RunCache script) upon receipt
1094 of SIGTERM or SIGINT. Deprecated, Use with caution.])
1095 AC_MSG_NOTICE([Kill parent on shutdown hack enabled: $enable_kill_parent_hack])
1096
1097 AC_ARG_ENABLE(snmp,
1098 AS_HELP_STRING([--disable-snmp],[Disable SNMP monitoring support]), [
1099 SQUID_YESNO([$enableval],
1100 [unrecognized argument to --disable-snmp: $enableval])
1101 ])
1102 SQUID_DEFINE_BOOL(SQUID_SNMP,${enable_snmp:=yes},
1103 [Define to enable SNMP monitoring of Squid])
1104 AM_CONDITIONAL(ENABLE_SNMP, [test "x$enable_snmp" = "xyes"])
1105 if test "x$enable_snmp" = "xyes"; then
1106 SNMPLIB='../lib/snmplib/libsnmplib.la'
1107 fi
1108 AC_MSG_NOTICE([SNMP support enabled: $enable_snmp])
1109 AC_SUBST(SNMPLIB)
1110
1111 AC_ARG_ENABLE(cachemgr-hostname,
1112 AS_HELP_STRING([--enable-cachemgr-hostname=hostname],
1113 [Make cachemgr.cgi default to this host.
1114 If unspecified, uses the name of the build-host]), [
1115 case $enableval in
1116 yes)
1117 AC_DEFINE(CACHEMGR_HOSTNAME,[getfullhostname()],
1118 [If you are upset that the cachemgr.cgi form comes up with the hostname field blank, then define this to getfullhostname()])
1119 AC_MSG_NOTICE([Cachemgr default hostname == host where cachemgr runs])
1120 ;;
1121 no)
1122 : # Nothing to do..
1123 ;;
1124 *)
1125 AC_DEFINE_UNQUOTED(CACHEMGR_HOSTNAME,"${enableval}")
1126 AC_MSG_NOTICE([Cachemgr default hostname set to ${enableval}])
1127 ;;
1128 esac
1129 ])
1130
1131 AC_ARG_ENABLE(eui,
1132 AS_HELP_STRING([--disable-eui],
1133 [Disable use of ARP / MAC/ EUI (ether address)]), [
1134 SQUID_YESNO([$enableval],[--disable-eui expects no arguments])
1135 ])
1136 if test "x${enable_eui:=yes}" = "xyes" ; then
1137 SQUID_STATE_SAVE(LIBEUI)
1138 # GLIBC 2.30 deprecates sysctl.h. Test with the same flags that (may) break includes later.
1139 CFLAGS=$SQUID_CFLAGS
1140 CXXFLAGS=$SQUID_CXXFLAGS
1141 case "$squid_host_os" in
1142 linux|solaris|freebsd|openbsd|netbsd|cygwin)
1143 ${TRUE}
1144 ;;
1145 mingw)
1146 EUILIB="-liphlpapi"
1147 ;;
1148 *)
1149 AC_MSG_WARN([EUI support probably will not work on host $host.])
1150 ;;
1151 esac
1152 # iphlpapi.h check delayed after winsock2.h
1153 AC_CHECK_HEADERS( \
1154 windows.h \
1155 sys/sockio.h \
1156 sys/param.h,
1157 [], [], [[
1158 #if HAVE_WINDOWS_H
1159 include <windows.h>
1160 #endif
1161 ]]
1162 )
1163 AC_CHECK_HEADERS( \
1164 net/if_arp.h \
1165 net/route.h,
1166 [], [], [[
1167 #include <sys/types.h>
1168 #include <sys/socket.h>
1169 ]])
1170
1171 # OpenBSD, FreeBSD and NetBSD requires sys/param.h to be included before sysctl.h and net/if_dl.h
1172 AC_CHECK_HEADERS( \
1173 net/if_dl.h \
1174 sys/sysctl.h,
1175 [], [], [[
1176 #if HAVE_SYS_PARAM_H
1177 #include <sys/param.h>
1178 #endif
1179 ]])
1180 SQUID_STATE_ROLLBACK(LIBEUI)
1181 fi
1182 AC_SUBST(EUILIB)
1183 AC_MSG_NOTICE([EUI (MAC address) controls enabled: $enable_eui])
1184 SQUID_DEFINE_BOOL(USE_SQUID_EUI,$enable_eui,
1185 [Define this to include code which lets you use ethernet addresses. This code uses API initially defined in 4.4-BSD.])
1186 AM_CONDITIONAL(ENABLE_EUI, [test "x$enable_eui" = "xyes" ])
1187
1188
1189 AC_ARG_ENABLE(htcp,
1190 AS_HELP_STRING([--disable-htcp],[Disable HTCP protocol support]), [
1191 SQUID_YESNO([$enableval],
1192 [unrecognized argument to --disable-htcp: $enableval])
1193 ])
1194 SQUID_DEFINE_BOOL(USE_HTCP,${enable_htcp:=yes},
1195 [Define this to include code for the Hypertext Cache Protocol (HTCP)])
1196 AM_CONDITIONAL(ENABLE_HTCP, [test "x$enable_htcp" = "xyes"])
1197 AC_MSG_NOTICE([HTCP support enabled: $enable_htcp])
1198
1199 # Cryptograhic libraries
1200 AC_ARG_WITH(nettle,
1201 AS_HELP_STRING([--without-nettle],[Compile without the Nettle crypto library.]),[
1202 case "$with_nettle" in
1203 yes|no)
1204 : # Nothing special to do here
1205 ;;
1206 *)
1207 if test ! -d "$withval" ; then
1208 AC_MSG_ERROR([--with-nettle path does not point to a directory])
1209 fi
1210 NETTLELIBDIR="-L$with_nettle/lib"
1211 CPPFLAGS="-I$with_nettle/include $CPPFLAGS"
1212 with_nettle=yes
1213 esac
1214 ])
1215 if test "x$with_nettle" != "xno" ; then
1216 AC_CHECK_LIB(nettle, nettle_md5_init,[
1217 NETTLELIB="$NETTLELIBDIR -lnettle"
1218 AC_CHECK_HEADERS(nettle/md5.h)
1219 ],[with_nettle=no])
1220 if test "x$with_nettle" != "xno" ; then
1221 # Base64 uses the nettle 3.4 API
1222 # which matters on 64-bit systems
1223 AC_CHECK_HEADERS(nettle/base64.h)
1224 AC_MSG_CHECKING([for Nettle 3.4 API compatibility])
1225 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1226 # include <cstddef>
1227 # include <cstdint>
1228 # include <nettle/base64.h>
1229 ]],[[
1230 char inData[10]; inData[0] = '\0';
1231 size_t srcLen = 0;
1232 struct base64_decode_ctx ctx;
1233 base64_decode_init(&ctx);
1234 uint8_t outData[10];
1235 size_t dstLen = 0;
1236 if (!base64_decode_update(&ctx, &dstLen, outData, srcLen, inData) ||
1237 !base64_decode_final(&ctx)) {
1238 return 1;
1239 }
1240 ]])],[AC_MSG_RESULT(yes)
1241 AC_DEFINE(HAVE_NETTLE34_BASE64,1,[set to 1 if Nettle 3.4 API will link])
1242 ],[AC_MSG_RESULT(no)])
1243 fi
1244 fi
1245 AC_MSG_NOTICE([Using Nettle cryptographic library: ${with_nettle:=yes}])
1246 AC_SUBST(NETTLELIB)
1247
1248 dnl Check for libcrypt
1249 CRYPTLIB=
1250 dnl Some of our helpers use crypt(3) which may be in libc, or in
1251 dnl libcrypt (eg FreeBSD)
1252 AC_CHECK_LIB(crypt, crypt, [CRYPTLIB="-lcrypt"])
1253 dnl Solaris10 provides MD5 natively through libmd5
1254 AC_CHECK_LIB(md5, MD5Init, [CRYPTLIB="$CRYPTLIB -lmd5"])
1255 AC_SUBST(CRYPTLIB)
1256
1257 SSLLIB=""
1258
1259 dnl User may want to disable GnuTLS
1260 AC_ARG_WITH(gnutls,
1261 AS_HELP_STRING([--without-gnutls],
1262 [Do not use GnuTLS for SSL. Default: auto-detect]), [
1263 case "$with_gnutls" in
1264 yes|no)
1265 : # Nothing special to do here
1266 ;;
1267 *)
1268 if test ! -d "$withval" ; then
1269 AC_MSG_ERROR([--with-gnutls path does not point to a directory])
1270 fi
1271 LIBGNUTLS_PATH="-L$with_gnutls/lib"
1272 CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
1273 esac
1274 ])
1275 AH_TEMPLATE(USE_GNUTLS,[GnuTLS support is available])
1276 if test "x$with_gnutls" != "xno"; then
1277 SQUID_STATE_SAVE(squid_gnutls_state)
1278
1279 # User may have provided a custom location for GnuTLS. Otherwise...
1280 LIBS="$LIBS $LIBGNUTLS_PATH"
1281
1282 # auto-detect using pkg-config
1283 PKG_CHECK_MODULES([LIBGNUTLS],[gnutls >= 3.4.0],[
1284 CPPFLAGS="$CPPFLAGS $LIBGNUTLS_CFLAGS"
1285 ],[
1286 ## find the package without pkg-config
1287 ## check that the library is actually new enough.
1288 ## by testing for a 3.4.0+ function which we use
1289 AC_CHECK_LIB(gnutls,gnutls_pcert_export_x509,[LIBGNUTLS_LIBS="-lgnutls"])
1290 ])
1291 AC_CHECK_HEADERS(gnutls/gnutls.h gnutls/x509.h gnutls/abstract.h)
1292
1293 SQUID_STATE_ROLLBACK(squid_gnutls_state) #de-pollute LIBS
1294
1295 if test "x$with_gnutls" = "xyes" -a "x$LIBGNUTLS_LIBS" = "x"; then
1296 AC_MSG_ERROR([Required GnuTLS library not found])
1297 fi
1298 if test "x$LIBGNUTLS_LIBS" != "x" ; then
1299 CXXFLAGS="$LIBGNUTLS_CFLAGS $CXXFLAGS"
1300 SSLLIB="$LIBGNUTLS_PATH $LIBGNUTLS_LIBS $SSLLIB"
1301 AC_DEFINE(USE_GNUTLS,1,[GnuTLS support is available])
1302 else
1303 with_gnutls=no
1304 fi
1305 fi
1306 AC_MSG_NOTICE([GnuTLS library support: ${with_gnutls:=auto} ${LIBGNUTLS_PATH} ${LIBGNUTLS_LIBS}])
1307
1308 dnl User may specify OpenSSL is needed from a non-standard location
1309 AC_ARG_WITH(openssl,
1310 AS_HELP_STRING([--with-openssl=PATH],
1311 [Compile with the OpenSSL libraries. The path to
1312 the OpenSSL development libraries and headers
1313 installation can be specified if outside of the
1314 system standard directories]), [
1315 case "$with_openssl" in
1316 yes|no)
1317 : # Nothing special to do here
1318 ;;
1319 *)
1320 if test ! -d "$withval" ; then
1321 AC_MSG_ERROR([--with-openssl path does not point to a directory])
1322 fi
1323 LIBOPENSSL_PATH="-L$with_openssl/lib"
1324 CPPFLAGS="-I$with_openssl/include $CPPFLAGS"
1325 with_openssl=yes
1326 esac
1327 ])
1328 AH_TEMPLATE(USE_OPENSSL,[OpenSSL support is available])
1329 ## OpenSSL is default disable due to licensing issues on some OS
1330 if test "x$with_openssl" = "xyes"; then
1331 AC_CHECK_HEADERS( \
1332 openssl/asn1.h \
1333 openssl/bio.h \
1334 openssl/bn.h \
1335 openssl/crypto.h \
1336 openssl/dh.h \
1337 openssl/err.h \
1338 openssl/evp.h \
1339 openssl/lhash.h \
1340 openssl/md5.h \
1341 openssl/opensslv.h \
1342 openssl/rsa.h \
1343 openssl/ssl.h \
1344 openssl/x509.h \
1345 openssl/x509v3.h \
1346 openssl/engine.h \
1347 openssl/txt_db.h \
1348 )
1349
1350 # User may have provided a custom location for OpenSSL. Otherwise...
1351 SQUID_STATE_SAVE(squid_openssl_state)
1352 LIBS="$LIBS $LIBOPENSSL_PATH"
1353
1354 # auto-detect using pkg-config
1355 PKG_CHECK_MODULES([LIBOPENSSL],[openssl],,[
1356 ## For some OS pkg-config is broken or unavailable.
1357 ## Detect libraries the hard way.
1358
1359 # Windows MinGW has some special libraries ...
1360 if test "x$squid_host_os" = "xmingw" ; then
1361 LIBOPENSSL_LIBS='-lssleay32 -leay32 -lgdi32 $LIBOPENSSL_LIBS'
1362 AC_MSG_NOTICE([Windows OpenSSL library support: yes -lssleay32 -leay32 -lgdi32])
1363 fi
1364
1365 AC_CHECK_LIB(crypto,[CRYPTO_new_ex_data],[LIBOPENSSL_LIBS="-lcrypto $LIBOPENSSL_LIBS"],[
1366 AC_MSG_ERROR([library 'crypto' is required for OpenSSL])
1367 ],$LIBOPENSSL_LIBS)
1368 AC_CHECK_LIB(ssl,[SSL_CTX_new],[LIBOPENSSL_LIBS="-lssl $LIBOPENSSL_LIBS"],[
1369 AC_MSG_ERROR([library 'ssl' is required for OpenSSL])
1370 ],$LIBOPENSSL_LIBS)
1371 ])
1372
1373 # This is a workaround for RedHat 9 brain damage..
1374 if test -d /usr/kerberos/include -a -f /usr/include/openssl/kssl.h; then
1375 AC_MSG_NOTICE([OpenSSL depends on Kerberos])
1376 LIBOPENSSL_LIBS="-L/usr/kerberos/lib $LIBOPENSSL_LIBS"
1377 CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
1378 fi
1379 SQUID_STATE_ROLLBACK(squid_openssl_state) #de-pollute LIBS
1380
1381 if test "x$LIBOPENSSL_LIBS" != "x"; then
1382 CXXFLAGS="$LIBOPENSSL_CFLAGS $CXXFLAGS"
1383 SSLLIB="$LIBOPENSSL_PATH $LIBOPENSSL_LIBS $SSLLIB"
1384 AC_DEFINE(USE_OPENSSL,1,[OpenSSL support is available])
1385
1386 # check for API functions
1387 SQUID_CHECK_LIBCRYPTO_API
1388 SQUID_CHECK_LIBSSL_API
1389 SQUID_CHECK_OPENSSL_TLS_METHODS
1390 SQUID_STATE_SAVE(check_SSL_CTX_get0_certificate)
1391 LIBS="$LIBS $SSLLIB"
1392 AC_CHECK_LIB(ssl, SSL_CTX_get0_certificate, [
1393 AC_DEFINE(HAVE_SSL_CTX_GET0_CERTIFICATE, 1, [SSL_CTX_get0_certificate is available])
1394 ], [
1395 missing_SSL_CTX_get0_certificate=yes
1396 ])
1397 SQUID_STATE_ROLLBACK(check_SSL_CTX_get0_certificate)
1398
1399 # check for other specific broken implementations
1400 if test "x$missing_SSL_CTX_get0_certificate" = "xyes"; then
1401 SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS
1402 fi
1403 SQUID_CHECK_OPENSSL_CONST_SSL_METHOD
1404 SQUID_CHECK_OPENSSL_CONST_CRYPTO_EX_DATA
1405 SQUID_CHECK_OPENSSL_CONST_SSL_SESSION_CB_ARG
1406 SQUID_CHECK_OPENSSL_CONST_X509_GET0_SIGNATURE_ARGS
1407 SQUID_CHECK_OPENSSL_TXTDB
1408 SQUID_CHECK_OPENSSL_HELLO_OVERWRITE_HACK
1409 fi
1410 if test "x$SSLLIB" = "x"; then
1411 AC_MSG_ERROR([Required OpenSSL library not found])
1412 fi
1413 fi
1414 AC_MSG_NOTICE([OpenSSL library support: ${with_openssl:=no} ${LIBOPENSSL_PATH} ${LIBOPENSSL_LIBS}])
1415 AM_CONDITIONAL(ENABLE_SSL,[ test "x$with_openssl" = "xyes" ])
1416 AC_SUBST(SSLLIB)
1417
1418 dnl User may specify MIT Kerberos is needed from a non-standard location
1419 AC_ARG_WITH(mit-krb5,
1420 AS_HELP_STRING([--without-mit-krb5],
1421 [Compile without MIT Kerberos support.]), [
1422 case "$with_mit_krb5" in
1423 yes|no)
1424 : # Nothing special to do here
1425 ;;
1426 *)
1427 if test ! -d "$withval" ; then
1428 AC_MSG_ERROR([--with-mit-krb5 path does not point to a directory])
1429 fi
1430 if test -d "$with_mit_krb5/lib64" ; then
1431 LIB_KRB5_PATH="-L$with_mit_krb5/lib64 -L$with_mit_krb5/lib"
1432 else
1433 LIB_KRB5_PATH="-L$with_mit_krb5/lib"
1434 fi
1435 CXXFLAGS="-I$with_mit_krb5/include $CXXFLAGS"
1436 krb5confpath="$with_mit_krb5/bin"
1437 with_mit_krb5=yes
1438 esac
1439 ])
1440 AH_TEMPLATE(USE_APPLE_KRB5,[Apple Kerberos support is available])
1441 AH_TEMPLATE(USE_MIT_KRB5,[MIT Kerberos support is available])
1442 AH_TEMPLATE(USE_SOLARIS_KRB5,[Solaris Kerberos support is available])
1443
1444 ## find out if pkg-config or krb5-config will work
1445 if test "x$with_mit_krb5" != "xno"; then
1446 # find installed libs via pkg-config or krb5-config
1447 squid_pc_krb5_name=
1448 PKG_CHECK_EXISTS(mit-krb5-gssapi mit-krb5, [squid_pc_krb5_name="mit-krb5-gssapi mit-krb5"],[
1449 PKG_CHECK_EXISTS(gssapi-krb5 krb5, [squid_pc_krb5_name="gssapi-krb5 krb5"])
1450 ])
1451 if test "x$squid_pc_krb5_name" = "x" -a "$cross_compiling" = "no"; then
1452 # Look for krb5-config (unless cross-compiling)
1453 AC_PATH_PROG(krb5_config,krb5-config,no,$krb5confpath)
1454 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1455 krb5confpath="`dirname $ac_cv_path_krb5_config`"
1456 ac_heimdal="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i heimdal`"
1457 ac_solaris="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i solaris`"
1458 ac_apple="`$ac_cv_path_krb5_config --vendor 2>/dev/null | grep -c -i apple`"
1459 if test $ac_solaris -gt 0 ; then
1460 with_solaris_krb5=yes
1461 elif test $ac_apple -gt 0 ; then
1462 with_apple_krb5=yes
1463 elif test $ac_heimdal -gt 0; then
1464 with_mit_krb5=no
1465 if test "x$with_mit_krb5" = "xyes"; then
1466 AC_MSG_ERROR([Could not find pkg-config or krb5-config for MIT Kerberos])
1467 fi
1468 fi
1469 else
1470 if test "x$with_mit_krb5" = "xyes"; then
1471 AC_MSG_ERROR([Could not find krb5-config in path])
1472 else
1473 with_mit_krb5=no
1474 fi
1475 fi
1476 fi
1477 fi
1478
1479 # detect MIT Kerberos dependencies (except on Solaris)
1480 if test "x$with_mit_krb5" != "xno" -a "x$with_solaris_krb5" != "xyes"; then
1481 SQUID_STATE_SAVE([squid_krb5_save])
1482 LIBS="$LIBS $LIB_KRB5_PATH"
1483
1484 # auto-detect using pkg-config
1485 PKG_CHECK_MODULES([LIB_KRB5], $squid_pc_krb5_name,,[
1486 # look for krb5-config (unless cross-compiling)
1487 if test "$cross_compiling" = "no"; then
1488 if test "x$krb5confpath" = "x" ; then
1489 AC_PATH_PROG(krb5_config,krb5-config,no)
1490 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1491 ac_krb5_config="$ac_cv_path_krb5_config"
1492 fi
1493 else
1494 ac_krb5_config="$krb5confpath/krb5-config"
1495 fi
1496 fi
1497 if test "x$ac_krb5_config" != "x" && test -x "$ac_krb5_config"; then
1498 # Get libs, etc
1499 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1500 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1501 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1502 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1503 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1504 else
1505 ## For some OS pkg-config is broken or unavailable.
1506 ## Detect libraries the hard way.
1507
1508 SQUID_STATE_SAVE([squid_mit_save])
1509 missing_required=
1510 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1511 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
1512 AC_MSG_WARN([library 'com_err' is required for MIT Kerberos])
1513 missing_required=yes
1514 ])
1515 LIBS=$LIB_KRB5_LIBS
1516 AC_CHECK_LIB(k5crypto, [main], [LIB_KRB5_LIBS="-lk5crypto $LIB_KRB5_LIBS"],[
1517 AC_MSG_WARN([library 'k5crypto' is required for MIT Kerberos])
1518 missing_required=yes
1519 ])
1520 LIBS=$LIB_KRB5_LIBS
1521 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1522 AC_MSG_WARN([library 'krb5' is required for MIT Kerberos])
1523 missing_required=yes
1524 ])
1525 LIBS=$LIB_KRB5_LIBS
1526 AC_CHECK_LIB(gssapi_krb5, [main], [LIB_KRB5_LIBS="-lgssapi_krb5 $LIB_KRB5_LIBS"],[
1527 AC_MSG_WARN([library 'gssapi_krb5' is required for MIT Kerberos])
1528 missing_required=yes
1529 ])
1530 SQUID_STATE_ROLLBACK([squid_mit_save])
1531 if test "x$missing_required" = "xyes"; then
1532 LIB_KRB5_LIBS=""
1533 fi
1534 fi
1535 ])
1536
1537 if test "x$LIB_KRB5_LIBS" != "x"; then
1538 if test "x$with_apple_krb5" = "xyes" ; then
1539 AC_DEFINE(USE_APPLE_KRB5,1,[Apple Kerberos support is available])
1540 KRB5_FLAVOUR="Apple"
1541 else
1542 AC_DEFINE(USE_MIT_KRB5,1,[MIT Kerberos support is available])
1543 KRB5_FLAVOUR="MIT"
1544 fi
1545 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1546 KRB5INCS="$LIB_KRB5_CFLAGS"
1547
1548 # check for other specific broken implementations
1549 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1550 LIBS="$LIBS $KRB5LIBS"
1551
1552 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1553 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1554 AC_CHECK_HEADERS(gssapi/gssapi_generic.h)
1555 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1556 AC_CHECK_HEADERS(profile.h)
1557
1558 SQUID_CHECK_KRB5_FUNCS
1559 fi
1560 if test "x$with_mit_krb5" = "xyes" -a "x$KRB5LIBS" = "x"; then
1561 AC_MSG_ERROR([Required Kerberos library not found])
1562 elif test "x$KRB5LIBS" = "x"; then
1563 with_mit_krb5=no
1564 with_apple_krb5=no
1565 fi
1566 SQUID_STATE_ROLLBACK([squid_krb5_save])
1567 fi
1568
1569 # detect Solaris Kerberos dependencies
1570 if test "x$with_solaris_krb5" = "xyes" -a "x$KRB5LIBS" = "x"; then
1571 SQUID_STATE_SAVE([squid_krb5_save])
1572 LIBS="$LIBS $LIB_KRB5_PATH"
1573
1574 # no pkg-config for solaris native Kerberos
1575 # look for krb5-config (unless cross-compiling)
1576 if test "$cross_compiling" = "no"; then
1577 if test "x$krb5confpath" = "x" ; then
1578 AC_PATH_PROG(krb5_config,krb5-config,no)
1579 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1580 ac_krb5_config="$ac_cv_path_krb5_config"
1581 fi
1582 else
1583 ac_krb5_config="$krb5confpath/krb5-config"
1584 fi
1585 fi
1586 if test "x$ac_krb5_config" != "x" && test -x "$ac_krb5_config"; then
1587 # Get libs, etc
1588 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1589 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1590 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1591 # Solaris 10 Update 11 patches the krb5-config tool to produce stderr messages on stdout.
1592 SOLARIS_BROKEN_KRB5CONFIG_GSSAPI="`$ac_krb5_config --libs gssapi 2>/dev/null | grep "krb5-config"`"
1593 if test "x$SOLARIS_BROKEN_KRB5CONFIG_GSSAPI" = "x"; then
1594 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1595 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1596 fi
1597 else
1598 ## For some OS pkg-config is broken or unavailable.
1599 ## Detect libraries the hard way.
1600
1601 CXXFLAGS="-I/usr/include/kerberosv5 $CXXFLAGS"
1602
1603 SQUID_STATE_SAVE([squid_solaris_save])
1604 missing_required=
1605 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1606 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1607 AC_MSG_WARN([library 'krb5' is required for Solaris Kerberos])
1608 missing_required=yes
1609 ])
1610 LIBS=$LIB_KRB5_LIBS
1611 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
1612 AC_MSG_WARN([library 'gss' is required for Solaris Kerberos])
1613 missing_required=yes
1614 ])
1615 SQUID_STATE_ROLLBACK([squid_solaris_save])
1616 if test "x$missing_required" = "xyes"; then
1617 LIB_KRB5_LIBS=""
1618 fi
1619 fi
1620
1621 if test "x$LIB_KRB5_LIBS" != "x"; then
1622 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1623 KRB5INCS="$LIB_KRB5_CFLAGS"
1624 AC_DEFINE(USE_SOLARIS_KRB5,1,[Solaris Kerberos support is available])
1625 KRB5_FLAVOUR="Solaris"
1626
1627 # check for other specific broken implementations
1628 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1629 LIBS="$LIBS $KRB5LIBS"
1630
1631 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1632 AC_CHECK_HEADERS(gssapi/gssapi.h gssapi/gssapi_ext.h)
1633 AC_CHECK_HEADERS(krb5.h com_err.h)
1634
1635 SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H
1636 if test "x$squid_cv_broken_krb5_h" = "xyes"; then
1637 AC_DEFINE(HAVE_BROKEN_SOLARIS_KRB5_H, 1, [Define to 1 if Solaris krb5.h is broken for C++])
1638 AC_MSG_WARN([You have a broken Solaris <krb5.h> system include.])
1639 AC_MSG_WARN([Please see http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6837512])
1640 AC_MSG_WARN([If you need Kerberos support you will have to patch])
1641 AC_MSG_WARN([your system. See contrib/solaris/solaris-krb5-include.patch])
1642 fi
1643 SQUID_CHECK_KRB5_FUNCS
1644 fi
1645 if test "x$with_mit_krb5" = "xyes" -a "x$KRB5LIBS" = "x"; then
1646 # Error only if Solaris flavour was detected while looking for required MIT Kerberos
1647 AC_MSG_ERROR([Required Kerberos library not found])
1648 elif test "x$KRB5LIBS" = "x"; then
1649 with_solaris_krb5=no
1650 with_mit_krb5=no
1651 fi
1652 SQUID_STATE_ROLLBACK([squid_krb5_save])
1653 fi
1654
1655 dnl User may specify Heimdal Kerberos is needed from a non-standard location
1656 AC_ARG_WITH(heimdal-krb5,
1657 AS_HELP_STRING([--without-heimdal-krb5],
1658 [Compile without Heimdal Kerberos support.]), [
1659 case "$with_heimdal_krb5" in
1660 yes|no)
1661 : # Nothing special to do here
1662 ;;
1663 *)
1664 if test ! -d "$withval" ; then
1665 AC_MSG_ERROR([--with-heimdal-krb5 path does not point to a directory])
1666 fi
1667 if test -d "$with_heimdal_krb5/lib64" ; then
1668 LIB_KRB5_PATH="-L$with_heimdal_krb5/lib64 -L$with_heimdal_krb5/lib"
1669 else
1670 LIB_KRB5_PATH="-L$with_heimdal_krb5/lib"
1671 fi
1672 CXXFLAGS="-I$with_heimdal_krb5/include $CXXFLAGS"
1673 krb5confpath="$with_heimdal_krb5/bin"
1674 with_heimdal_krb5=yes
1675 esac
1676 ])
1677 AH_TEMPLATE(USE_HEIMDAL_KRB5,[Heimdal Kerberos support is available])
1678 if test "x$with_heimdal_krb5" != "xno" -a "x$KRB5LIBS" = "x"; then
1679 # find installed libs via pkg-config or krb5-config
1680 PKG_CHECK_EXISTS(heimdal-krb5, [squid_pc_krb5_name="heimdal-krb5"])
1681 if test "x$squid_pc_krb5_name" = "x"; then
1682 PKG_CHECK_EXISTS(heimdal-gssapi, [squid_pc_krb5_name="heimdal-gssapi"])
1683 fi
1684 if test "x$squid_pc_krb5_name" = "x" -a "$cross_compiling" = "no"; then
1685 # Look for krb5-config (unless cross-compiling)
1686 AC_PATH_PROG(krb5_config,krb5-config,no,$krb5confpath)
1687 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1688 krb5confpath="`dirname $ac_cv_path_krb5_config`"
1689 ac_heimdal="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i heimdal`"
1690 if test "x$with_heimdal_krb5" = "xyes" -a $ac_heimdal = 0; then
1691 AC_MSG_ERROR([Could not find pkg-config or krb5-config for Heimdal Kerberos])
1692 fi
1693 else
1694 if test "x$with_heimdal_krb5" = "xyes"; then
1695 AC_MSG_ERROR([Could not find krb5-config in path])
1696 else
1697 AC_MSG_WARN([Could not find krb5-config in path])
1698 with_heimdal_krb5=no
1699 fi
1700 fi
1701 fi
1702 fi
1703 if test "x$with_heimdal_krb5" != "xno" -a "x$KRB5LIBS" = "x"; then
1704 SQUID_STATE_SAVE([squid_krb5_save])
1705 LIBS="$LIBS $LIB_KRB5_PATH"
1706
1707 # auto-detect using pkg-config
1708 PKG_CHECK_MODULES([LIB_KRB5], $squid_pc_krb5_name,,[
1709 # look for krb5-config (unless cross-compiling)
1710 if test "$cross_compiling" = "no"; then
1711 if test "x$krb5confpath" = "x" ; then
1712 AC_PATH_PROG(krb5_config,krb5-config,no)
1713 if test "x$ac_cv_path_krb5_config" != "xno" ; then
1714 ac_krb5_config="$ac_cv_path_krb5_config"
1715 fi
1716 else
1717 ac_krb5_config="$krb5confpath/krb5-config"
1718 fi
1719 fi
1720 if test "x$ac_krb5_config" != "x" -a -x "$ac_krb5_config"; then
1721 # Get libs, etc
1722 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1723 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1724 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1725 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1726 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1727 else
1728 ## For some OS pkg-config is broken or unavailable.
1729 ## Detect libraries the hard way.
1730 SQUID_STATE_SAVE([squid_heimdal_save])
1731 missing_required=
1732 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1733 AC_CHECK_LIB(resolv, [main], [LIB_KRB5_LIBS="-lresolv $LIB_KRB5_LIBS"],[
1734 AC_MSG_WARN([library 'resolv' is required for Heimdal Kerberos])
1735 missing_required=yes
1736 ])
1737 LIBS=$LIB_KRB5_LIBS
1738 AC_CHECK_LIB(crypt, [main], [LIB_KRB5_LIBS="-lcrypt $LIB_KRB5_LIBS"],[
1739 AC_MSG_WARN([library 'crypt' is required for Heimdal Kerberos])
1740 missing_required=yes
1741 ])
1742 LIBS=$LIB_KRB5_LIBS
1743 AC_CHECK_LIB(roken, [main], [LIB_KRB5_LIBS="-lroken $LIB_KRB5_LIBS"],[
1744 AC_MSG_WARN([library 'roken' is required for Heimdal Kerberos])
1745 missing_required=yes
1746 ])
1747 LIBS=$LIB_KRB5_LIBS
1748 AC_CHECK_LIB(heimbase, [main], [LIB_KRB5_LIBS="-lheimbase $LIB_KRB5_LIBS"],[
1749 AC_MSG_WARN([library 'heimbase' may be required for Heimdal Kerberos])
1750 ])
1751 LIBS=$LIB_KRB5_LIBS
1752 AC_CHECK_LIB(wind, [main], [LIB_KRB5_LIBS="-lwind $LIB_KRB5_LIBS"],[
1753 AC_MSG_WARN([library 'wind' may be required for Heimdal Kerberos])
1754 ])
1755 LIBS=$LIB_KRB5_LIBS
1756 AC_CHECK_LIB(crypto, [main], [LIB_KRB5_LIBS="-lcrypto $LIB_KRB5_LIBS"],[
1757 AC_MSG_WARN([library 'crypto' is required for Heimdal Kerberos])
1758 missing_required=yes
1759 ])
1760 LIBS=$LIB_KRB5_LIBS
1761 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
1762 AC_MSG_WARN([library 'com_err' is required for Heimdal Kerberos])
1763 missing_required=yes
1764 ])
1765 LIBS=$LIB_KRB5_LIBS
1766 AC_CHECK_LIB(hx509, [main], [LIB_KRB5_LIBS="-lhx509 $LIB_KRB5_LIBS"],[
1767 AC_MSG_WARN([library 'hx509' may be required for Heimdal Kerberos])
1768 ])
1769 LIBS=$LIB_KRB5_LIBS
1770 AC_CHECK_LIB(asn1, [main], [LIB_KRB5_LIBS="-lasn1 $LIB_KRB5_LIBS"],[
1771 AC_MSG_WARN([library 'asn1' is required for Heimdal Kerberos])
1772 missing_required=yes
1773 ])
1774 LIBS=$LIB_KRB5_LIBS
1775 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1776 AC_MSG_WARN([library 'krb5' is required for Heimdal Kerberos])
1777 missing_required=yes
1778 ])
1779 LIBS=$LIB_KRB5_LIBS
1780 AC_CHECK_LIB(heimntlm, [main], [LIB_KRB5_LIBS="-lheimntlm $LIB_KRB5_LIBS"],[
1781 AC_MSG_WARN([library 'heimntlm' may be required for Heimdal Kerberos])
1782 ])
1783 LIBS=$LIB_KRB5_LIBS
1784 AC_CHECK_LIB(gssapi, [main], [LIB_KRB5_LIBS="-lgssapi $LIB_KRB5_LIBS"],[
1785 AC_MSG_WARN([library 'gssapi' is required for Heimdal Kerberos])
1786 missing_required=yes
1787 ])
1788 SQUID_STATE_ROLLBACK([squid_heimdal_save])
1789 if test "x$missing_required" = "xyes"; then
1790 LIB_KRB5_LIBS=""
1791 fi
1792 fi
1793 ])
1794 if test "x$LIB_KRB5_LIBS" != "x"; then
1795 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1796 KRB5INCS="$LIB_KRB5_CFLAGS"
1797 AC_DEFINE(USE_HEIMDAL_KRB5,1,[Heimdal Kerberos support is available])
1798 KRB5_FLAVOUR="Heimdal"
1799
1800 # check for other specific broken implementations
1801 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1802 LIBS="$LIBS $KRB5LIBS"
1803
1804 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1805 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1806 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1807
1808 SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H
1809 if test "x$squid_cv_broken_heimdal_krb5_h" = "xyes"; then
1810 AC_DEFINE(HAVE_BROKEN_HEIMDAL_KRB5_H, 1, [Define to 1 if Heimdal krb5.h is broken for C++])
1811 fi
1812 SQUID_CHECK_KRB5_FUNCS
1813 fi
1814 if test "x$KRB5LIBS" = "x"; then
1815 if test "x$with_heimdal_krb5" = "xyes"; then
1816 AC_MSG_ERROR([Required Heimdal Kerberos library not found])
1817 else
1818 AC_MSG_WARN([Heimdal Kerberos library not found])
1819 fi
1820 fi
1821 SQUID_STATE_ROLLBACK([squid_krb5_save])
1822 fi
1823
1824 dnl User may specify GNU gss is needed from a non-standard location
1825 AC_ARG_WITH(gnugss,
1826 AS_HELP_STRING([--without-gnugss],
1827 [Compile without the GNU gss libraries.]), [
1828 case "$with_gnugss" in
1829 yes|no)
1830 : # Nothing special to do here
1831 ;;
1832 *)
1833 if test ! -d "$withval" ; then
1834 AC_MSG_ERROR([--with-gnugss path does not point to a directory])
1835 fi
1836 if test ! -d "$with_gnugss/lib64" ; then
1837 LIB_KRB5_PATH="-L$with_gnugss/lib64 -L$with_gnugss/lib"
1838 else
1839 LIB_KRB5_PATH="-L$with_gnugss/lib"
1840 fi
1841 CXXFLAGS="-I$with_gnugss/include $CXXFLAGS"
1842 krb5confpath=
1843 with_gnugss=yes
1844 esac
1845 ])
1846 AH_TEMPLATE(USE_GNUGSS,[GNU gss support is available])
1847 if test "x$with_gnugss" != "xno" -a "x$KRB5LIBS" = "x"; then
1848 SQUID_STATE_SAVE([squid_krb5_save])
1849 LIBS="$LIBS $LIB_KRB5_PATH"
1850
1851 # auto-detect using pkg-config
1852 PKG_CHECK_MODULES([LIB_KRB5],[gss],,[
1853 ## For some OS pkg-config is broken or unavailable.
1854 ## Detect libraries the hard way.
1855
1856 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1857 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
1858 AC_MSG_WARN([library 'com_err' is required for GNU Kerberos])
1859 ])
1860 ])
1861
1862 if test "x$LIB_KRB5_LIBS" != "x"; then
1863 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1864 KRB5INCS="$LIB_KRB5_CFLAGS"
1865 AC_DEFINE(USE_GNUGSS,1,[GNU Kerberos support is available])
1866 KRB5_FLAVOUR="GNU GSS"
1867
1868 # check for other specific broken implementations
1869 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1870 LIBS="$LIBS $KRB5LIBS"
1871
1872 AC_MSG_NOTICE([Try to find Kerbeors headers in given path])
1873 AC_CHECK_HEADERS(gss.h)
1874
1875 SQUID_CHECK_WORKING_GSSAPI
1876 SQUID_DEFINE_BOOL(HAVE_GSSAPI,$squid_cv_working_gssapi,[GSSAPI support])
1877
1878 SQUID_CHECK_SPNEGO_SUPPORT
1879 SQUID_DEFINE_BOOL(HAVE_SPNEGO,$squid_cv_have_spnego,[SPNEGO support])
1880
1881 SQUID_CHECK_WORKING_KRB5
1882 SQUID_DEFINE_BOOL(HAVE_KRB5,$squid_cv_working_krb5,[KRB5 support])
1883 fi
1884 if test "x$KRB5LIBS" = "x"; then
1885 if test "x$with_gnugss" = "xyes"; then
1886 AC_MSG_ERROR([Required GNU GSS Kerberos library not found])
1887 else
1888 AC_MSG_WARN([GNU GSS Kerberos library not found])
1889 fi
1890 fi
1891 SQUID_STATE_ROLLBACK([squid_krb5_save])
1892 fi
1893
1894 if test "x$KRB5LIBS" != "x"; then
1895 with_krb5=yes
1896 fi
1897 AC_MSG_NOTICE([$KRB5_FLAVOUR Kerberos library support: ${with_krb5:=no} ${LIB_KRB5_PATH} ${LIB_KRB5_LIBS}])
1898 AC_SUBST(KRB5INCS)
1899 AC_SUBST(KRB5LIBS)
1900
1901 dnl On MinGW OpenLDAP is not available, so LDAP helpers can be linked
1902 dnl only with Windows LDAP libraries using -lwldap32
1903 case "$squid_host_os" in
1904 mingw)
1905 LDAPLIB="-lwldap32"
1906 LBERLIB=""
1907 ;;
1908 *)
1909 AC_CHECK_LIB(ldap, ldap_init, [LDAPLIB="-lldap"])
1910 dnl LDAP helpers need to know if -llber is needed or not
1911 AC_CHECK_LIB(lber, ber_init, [LBERLIB="-llber"])
1912 dnl if no ldap lib found check for mozilla version
1913 if test "x$ac_cv_lib_ldap_ldap_init" != x""yes; then
1914 oLIBS=$LIBS
1915 LIBS="$LIBPTHREADS"
1916 AC_CHECK_LIB(ldap60, ldap_init, [LDAPLIB="-lldap60"])
1917 LIBS="$LDAPLIB $LIBPTHREADS"
1918 AC_CHECK_LIB(prldap60, prldap_init, [LDAPLIB="-lprldap60 $LDAPLIB"])
1919 LIBS="$LDAPLIB $LIBPTHREADS"
1920 AC_CHECK_LIB(ssldap60, ldapssl_init, [LDAPLIB="-lssldap60 $LDAPLIB"])
1921 LIBS=$oLIBS
1922 fi
1923
1924 AC_CHECK_HEADERS(ldap.h lber.h)
1925 AC_CHECK_HEADERS(mozldap/ldap.h)
1926
1927 dnl
1928 dnl Check for LDAP_OPT_DEBUG_LEVEL
1929 dnl
1930 AC_MSG_CHECKING([for LDAP_OPT_DEBUG_LEVEL])
1931 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1932 # include <ldap.h>
1933 ]],[[
1934 int i=LDAP_OPT_DEBUG_LEVEL
1935 ]])],
1936 [ AC_MSG_RESULT(yes) ],
1937 [ AC_MSG_RESULT(no) ])
1938
1939 dnl
1940 dnl Check for working ldap
1941 dnl
1942 oLIBS=$LIBS
1943 LIBS="$LDAPLIB $LBERLIB $LIBPTHREADS"
1944 AC_MSG_CHECKING([for working ldap])
1945 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1946 # define LDAP_DEPRECATED 1
1947 # if HAVE_LDAP_H
1948 # include <ldap.h>
1949 # elif HAVE_MOZLDAP_LDAP_H
1950 # include <mozldap/ldap.h>
1951 # endif
1952 int
1953 main(void)
1954 {
1955 char host[]="";
1956 int port;
1957
1958 ldap_init((const char *)&host, port);
1959
1960 return 0;
1961 }
1962 ]])],
1963 [ AC_DEFINE(HAVE_LDAP, 1, [LDAP support])
1964 AC_MSG_RESULT(yes) ],
1965 [ AC_MSG_RESULT(no) ],
1966 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1967 LIBS=$oLIBS
1968
1969 dnl
1970 dnl Check for ldap vendor
1971 dnl
1972 AC_MSG_CHECKING([for OpenLDAP])
1973 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1974 # if HAVE_LDAP_H
1975 # include <ldap.h>
1976 # endif
1977 # include <string.h>
1978 int
1979 main(void)
1980 {
1981 return strcmp(LDAP_VENDOR_NAME,"OpenLDAP");
1982 }
1983 ]])],
1984 [ AC_DEFINE(HAVE_OPENLDAP, 1, [OpenLDAP support])
1985 AC_MSG_RESULT(yes) ],
1986 [ AC_MSG_RESULT(no) ],
1987 [ AC_MSG_RESULT(cross-compiler cant tell) ])
1988
1989 AC_MSG_CHECKING([for Sun LDAP SDK])
1990 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1991 # if HAVE_LDAP_H
1992 # include <ldap.h>
1993 # endif
1994 # include <string.h>
1995 int
1996 main(void)
1997 {
1998 return strcmp(LDAP_VENDOR_NAME,"Sun Microsystems Inc.");
1999 }
2000 ]])],
2001 [ AC_DEFINE(HAVE_SUN_LDAP_SDK, 1, [Sun LDAP SDK support])
2002 AC_MSG_RESULT(yes) ],
2003 [ AC_MSG_RESULT(no) ],
2004 [ AC_MSG_RESULT(cross-compiler cant tell) ])
2005
2006 AC_MSG_CHECKING([for Mozilla LDAP SDK])
2007 AC_RUN_IFELSE([AC_LANG_SOURCE([[
2008 # if HAVE_LDAP_H
2009 # include <ldap.h>
2010 # elif HAVE_MOZLDAP_LDAP_H
2011 # include <mozldap/ldap.h>
2012 # endif
2013 # include <string.h>
2014 int
2015 main(void)
2016 {
2017 return strcmp(LDAP_VENDOR_NAME,"mozilla.org");
2018 }
2019 ]])],
2020 [ AC_DEFINE(HAVE_MOZILLA_LDAP_SDK, 1, [Mozilla LDAP SDK support])
2021 AC_MSG_RESULT(yes) ],
2022 [ AC_MSG_RESULT(no)],
2023 [ AC_MSG_RESULT(cross-compiler cant tell) ])
2024
2025 dnl
2026 dnl Check for LDAP_REBINDPROC_CALLBACK
2027 dnl
2028 AC_MSG_CHECKING([for LDAP_REBINDPROC_CALLBACK])
2029 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2030 # if HAVE_LDAP_H
2031 # include <ldap.h>
2032 # elif HAVE_MOZLDAP_LDAP_H
2033 # include <mozldap/ldap.h>
2034 # endif
2035 ]],[[
2036 LDAP_REBINDPROC_CALLBACK ldap_rebind;
2037 ]])],
2038 [ AC_DEFINE(HAVE_LDAP_REBINDPROC_CALLBACK,1,[Define to 1 if you have LDAP_REBINDPROC_CALLBACK])
2039 AC_MSG_RESULT(yes) ],
2040 [ AC_MSG_RESULT(no) ])
2041
2042 dnl
2043 dnl Check for LDAP_REBIND_PROC
2044 dnl
2045 AC_MSG_CHECKING([for LDAP_REBIND_PROC])
2046 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2047 # if HAVE_LDAP_H
2048 # include <ldap.h>
2049 # elif HAVE_MOZLDAP_LDAP_H
2050 # include <mozldap/ldap.h>
2051 # endif
2052 ]],[[
2053 LDAP_REBIND_PROC ldap_rebind;
2054 ]])],
2055 [ AC_DEFINE(HAVE_LDAP_REBIND_PROC,1,[Define to 1 if you have LDAP_REBIND_PROC])
2056 AC_MSG_RESULT(yes) ],
2057 [ AC_MSG_RESULT(no) ])
2058
2059 dnl
2060 dnl Check for LDAP_REBIND_FUNCTION
2061 dnl
2062 AC_MSG_CHECKING([for LDAP_REBIND_FUNCTION])
2063 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2064 # define LDAP_REFERRALS
2065 # if HAVE_LDAP_H
2066 # include <ldap.h>
2067 # elif HAVE_MOZLDAP_LDAP_H
2068 # include <mozldap/ldap.h>
2069 # endif
2070 ]],[[
2071 LDAP_REBIND_FUNCTION ldap_rebind;
2072 ]])],
2073 [ AC_DEFINE(HAVE_LDAP_REBIND_FUNCTION,1,[Define to 1 if you have LDAP_REBIND_FUNCTION])
2074 AC_MSG_RESULT(yes) ],
2075 [ AC_MSG_RESULT(no) ])
2076
2077 dnl
2078 dnl Check for LDAP_SCOPE_DEFAULT
2079 dnl
2080 AC_MSG_CHECKING([for LDAP_SCOPE_DEFAULT])
2081 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2082 # if HAVE_LDAP_H
2083 # include <ldap.h>
2084 # elif HAVE_MOZLDAP_LDAP_H
2085 # include <mozldap/ldap.h>
2086 # endif
2087 ]],[[
2088 int i=LDAP_SCOPE_DEFAULT;
2089 ]])],
2090 [ AC_DEFINE(HAVE_LDAP_SCOPE_DEFAULT,1,[Define to 1 if you have LDAP_SCOPE_DEFAULT])
2091 AC_MSG_RESULT(yes) ],
2092 [ AC_MSG_RESULT(no) ])
2093
2094 dnl
2095 dnl Check for ldap_url_desc.lud_scheme
2096 dnl
2097 AC_CHECK_MEMBER(struct ldap_url_desc.lud_scheme,
2098 AC_DEFINE(HAVE_LDAP_URL_LUD_SCHEME,1,
2099 [Define to 1 if you have LDAPURLDesc.lud_scheme]),,[#include <ldap.h>])
2100
2101 dnl
2102 dnl Check for ldapssl_client_init
2103 dnl
2104 AC_CHECK_LIB(ldap,ldapssl_client_init,
2105 AC_DEFINE(HAVE_LDAPSSL_CLIENT_INIT,1,[Define to 1 if you have ldapssl_client_init]),)
2106
2107 dnl
2108 dnl Check for ldap_url_desc2str
2109 dnl
2110 AC_CHECK_LIB(ldap,ldap_url_desc2str,
2111 AC_DEFINE(HAVE_LDAP_URL_DESC2STR,1,[Define to 1 if you have ldap_url_desc2str]),)
2112
2113 dnl
2114 dnl Check for ldap_url_parse
2115 dnl
2116 AC_CHECK_LIB(ldap,ldap_url_parse,
2117 AC_DEFINE(HAVE_LDAP_URL_PARSE,1,[Define to 1 if you have ldap_url_parse]),)
2118
2119 dnl
2120 dnl Check for ldap_start_tls_s
2121 dnl
2122 AC_CHECK_LIB(ldap,ldap_start_tls_s,
2123 AC_DEFINE(HAVE_LDAP_START_TLS_S,1,[Define to 1 if you have ldap_start_tls_s]),)
2124 ;;
2125 esac
2126
2127 AC_SUBST(LDAPLIB)
2128 AC_SUBST(LBERLIB)
2129
2130 AC_ARG_WITH(systemd,
2131 AS_HELP_STRING([--without-systemd],
2132 [Do not use systemd API to send start-up completion
2133 notification. Default: auto-detect]), [
2134 case "$with_systemd" in
2135 yes|no)
2136 : # Nothing special to do here
2137 ;;
2138 *)
2139 if test ! -d "$withval" ; then
2140 AC_MSG_ERROR([--with-systemd path does not point to a directory])
2141 fi
2142 SYSTEMD_PATH="-L$with_systemd/lib"
2143 CPPFLAGS="-I$with_systemd/include $CPPFLAGS"
2144 esac
2145 ])
2146 AH_TEMPLATE(USE_SYSTEMD,[systemd support is available])
2147 if test "x$with_systemd" != "xno" -a "x$squid_host_os" = "xlinux"; then
2148 SQUID_STATE_SAVE(squid_systemd_state)
2149
2150 # User may have provided a custom location for systemd. Otherwise...
2151 LIBS="$LIBS $SYSTEMD_PATH"
2152
2153 # auto-detect using pkg-config
2154 PKG_CHECK_MODULES(SYSTEMD,[libsystemd],,[
2155 # systemd < 209
2156 PKG_CHECK_MODULES(SYSTEMD,[libsystemd-daemon],,[:])
2157 ])
2158
2159 AC_CHECK_HEADERS(systemd/sd-daemon.h)
2160
2161 SQUID_STATE_ROLLBACK(squid_systemd_state) #de-pollute LIBS
2162
2163 if test "x$with_systemd" = "xyes" -a "x$SYSTEMD_LIBS" = "x"; then
2164 AC_MSG_ERROR([Required systemd library not found])
2165 fi
2166 if test "x$SYSTEMD_LIBS" != "x" ; then
2167 CXXFLAGS="$SYSTEMD_CFLAGS $CXXFLAGS"
2168 AC_DEFINE(USE_SYSTEMD,1,[systemd support is available])
2169 else
2170 with_systemd=no
2171 fi
2172 fi
2173 AC_MSG_NOTICE([systemd library support: ${with_systemd:=auto} ${SYSTEMD_PATH} ${SYSTEMD_LIBS}])
2174
2175 AC_ARG_ENABLE(forw-via-db,
2176 AS_HELP_STRING([--enable-forw-via-db],[Enable Forw/Via database]), [
2177 SQUID_YESNO([$enableval],[unrecognized argument to --enable-forw-via-db: $enableval])
2178 ])
2179 SQUID_DEFINE_BOOL(USE_FORW_VIA_DB,${enable_forw_via_db:=no},
2180 [Enable Forw/Via database])
2181 AC_MSG_NOTICE([Forw/Via database enabled: $enable_forw_via_db])
2182
2183 AC_ARG_ENABLE(cache-digests,
2184 AS_HELP_STRING([--enable-cache-digests],
2185 [Use Cache Digests. See http://wiki.squid-cache.org/SquidFaq/CacheDigests]),
2186 [
2187 SQUID_YESNO($enableval,
2188 [unrecognized argument to --enable-cache-digests: $enableval])
2189 ])
2190 SQUID_DEFINE_BOOL(USE_CACHE_DIGESTS,${enable_cache_digests:=no},
2191 [Use Cache Digests for locating objects in neighbor caches.])
2192 AC_MSG_NOTICE([Cache Digests enabled: $enable_cache_digests])
2193
2194
2195 ################################
2196 # check for netio plugin stuff #
2197 ################################
2198 dnl order of these options handling is relevant in case the user
2199 dnl supplies more than one --enable option. Options handled later
2200 dnl override those handled earlier for io loop method manual override
2201 AC_ARG_ENABLE(select,
2202 AS_HELP_STRING([--disable-select],[Disable select(2) support.]),
2203 [
2204 SQUID_YESNO($enableval,[--disable-select takes no extra argument])
2205 if test "x$enableval" = "xyes"; then
2206 if test "x$squid_host_os" = "xmingw"; then
2207 squid_opt_io_loop_engine="select_win32"
2208 else
2209 squid_opt_io_loop_engine="select"
2210 fi
2211 fi
2212 ])
2213 AC_MSG_NOTICE([enabling select syscall for net I/O: ${enable_select:=auto}])
2214
2215 AC_ARG_ENABLE(poll,
2216 AS_HELP_STRING([--disable-poll],[Disable poll(2) support.]),
2217 [
2218 SQUID_YESNO($enableval,[--disable-poll takes no extra argument])
2219 test "x$enableval" = "xyes" && squid_opt_io_loop_engine="poll"
2220 ])
2221 AC_MSG_NOTICE([enabling poll syscall for net I/O: ${enable_poll:=auto}])
2222
2223 AC_ARG_ENABLE(kqueue,
2224 AS_HELP_STRING([--disable-kqueue],
2225 [Disable kqueue(2) support.]), [
2226 SQUID_YESNO($enableval,[--enable-kqueue takes no extra argument])
2227 ])
2228 if test "x${enable_kqueue:=auto}" != "xno" ; then
2229 AC_CHECK_HEADERS([sys/event.h],[],[
2230 if test "x${enable_kqueue}" = "xyes" ; then
2231 AC_MSG_ERROR([kqueue support requires sys/event.h header file.])
2232 fi
2233 ])
2234 AC_CHECK_FUNCS(kqueue,[],[
2235 if test "x${enable_kqueue}" = "xyes" ; then
2236 AC_MSG_ERROR([kqueue support missing in libc library.])
2237 fi
2238 ])
2239 if test "x$ac_cv_func_kqueue" = "xyes" -a "x$ac_cv_header_sys_event_h" = "xyes" ; then
2240 squid_opt_io_loop_engine="kqueue"
2241 else
2242 enable_kqueue="no"
2243 fi
2244 fi
2245 AC_MSG_NOTICE([enabling kqueue for net I/O: ${enable_kqueue:=auto}])
2246
2247 dnl Enable epoll()
2248 AC_ARG_ENABLE(epoll,
2249 AS_HELP_STRING([--disable-epoll],[Disable Linux epoll(2) support.]),
2250 [
2251 SQUID_YESNO($enableval,[--disable-epoll takes no extra argument])
2252 test "x$enableval" = "xyes" && squid_opt_io_loop_engine="epoll"
2253 ])
2254 AC_MSG_NOTICE([enabling epoll syscall for net I/O: ${enable_epoll:=auto}])
2255
2256 # auto-detect and verify epoll header and library present and working
2257 # logic mapping and loop method selection are performed later
2258 if test "x$enable_epoll" != "xno" ; then
2259
2260 # check if libs are needed to support epoll
2261 # note: this code block seems quite generic. Could it be extracted
2262 # into a squid specific configure function?
2263 SQUID_STATE_SAVE(squid_epoll_state)
2264 AC_SEARCH_LIBS(epoll_ctl,[epoll])
2265 if test "x$ac_cv_search_epoll_ctl" = "xno" ; then
2266 enable_epoll=no #disable. Needed code not found
2267 elif test "x$ac_cv_search_epoll_ctl" = "xnone required" ; then
2268 EPOLL_LIBS=""
2269 else
2270 EPOLL_LIBS=$ac_cv_search_epoll_ctl
2271 fi
2272 AC_SUBST(EPOLL_LIBS)
2273 SQUID_STATE_ROLLBACK(squid_epoll_state) #de-pollute LIBS
2274
2275 # epoll requires sys/epoll.h
2276 AC_CHECK_HEADERS([sys/epoll.h])
2277
2278 dnl Verify that epoll really works
2279 if test "x$ac_cv_search_epoll_ctl" != 'xno' ; then
2280 SQUID_CHECK_EPOLL
2281 fi
2282
2283 if test "x$enable_epoll" = "xyes" -a "x$squid_cv_epoll_works" = "xno" ; then
2284 AC_MSG_ERROR([Epoll does not work. Force-enabling it is not going to help.])
2285 fi
2286 fi
2287
2288 dnl Enable /dev/poll
2289 AC_ARG_ENABLE(devpoll,
2290 AS_HELP_STRING([--disable-devpoll],[Disable Solaris /dev/poll support.]),
2291 [
2292 SQUID_YESNO($enableval,[--disable-devpoll takes no extra argument])
2293 test "x$enableval" = "xyes" && squid_opt_io_loop_engine="devpoll"
2294 ])
2295 AC_MSG_NOTICE([enabling /dev/poll for net I/O: ${enable_devpoll:=auto}])
2296
2297 ## auto-detect and verify devpoll header and library present and working
2298 if test "x$enable_devpoll" != "xno"; then
2299
2300 # /dev/poll requires ioctl() and write()
2301 AC_CHECK_FUNCS(ioctl)
2302 AC_CHECK_FUNCS(write)
2303
2304 # /dev/poll requires sys/devpoll.h
2305 AC_CHECK_HEADERS([sys/devpoll.h],,[
2306 if test "x$enable_devpoll" = "xyes"; then
2307 AC_MSG_ERROR([--enable-devpoll specified but /dev/poll headers not found])
2308 fi
2309 enable_devpoll=no])
2310
2311 # Verify that /dev/poll really works
2312 if test "x$enable_devpoll" != 'xno' ; then
2313 SQUID_CHECK_DEVPOLL
2314 fi
2315
2316 if test "x$enable_devpoll" = "xyes" -a "x$squid_cv_devpoll_works" = "xno" ; then
2317 AC_MSG_ERROR([/dev/poll does not work. Force-enabling it is not going to help.])
2318 fi
2319 fi
2320
2321
2322 AC_ARG_ENABLE(http-violations,
2323 AS_HELP_STRING([--disable-http-violations],
2324 [This allows you to remove code which is known to
2325 violate the HTTP protocol specification.]), [
2326 SQUID_YESNO([$enableval],
2327 [unrecognized argument to --disable-http-violations: $enableval])
2328 ])
2329 SQUID_DEFINE_BOOL(USE_HTTP_VIOLATIONS, ${enable_http_violations:=yes},
2330 [Define to enable code which volates the HTTP standard specification])
2331 AC_MSG_NOTICE([HTTP violations support enabled: $enable_http_violations])
2332
2333 # IPFW Transparent Proxy
2334 AC_ARG_ENABLE(ipfw-transparent,
2335 AS_HELP_STRING([--enable-ipfw-transparent],
2336 [Enable Transparent Proxy support for systems
2337 using FreeBSD IPFW-style firewalling.]), [
2338 SQUID_YESNO([$enableval],
2339 [unrecognized argument to --enable-ipfw-transparent: $enableval])
2340 ])
2341 SQUID_DEFINE_BOOL(IPFW_TRANSPARENT,${enable_ipfw_transparent:=no},
2342 [Enable support for Transparent Proxy on systems using FreeBSD IPFW-style firewalling.])
2343 AC_MSG_NOTICE([FreeBSD IPFW-based transparent proxying enabled: $enable_ipfw_transparent])
2344
2345 # IP-Filter Transparent Proxy
2346 AC_ARG_ENABLE(ipf-transparent,
2347 AS_HELP_STRING([--enable-ipf-transparent],
2348 [Enable Transparent Proxy support using IPFilter-style firewalling]), [
2349 SQUID_YESNO([$enableval],
2350 [unrecognized argument to --enable-ipf-transparent: $enableval])
2351 ])
2352 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2353 #IPF currently broken. Default-disabled for now.
2354 AC_MSG_NOTICE([IPF-based transparent proxying requested: ${enable_ipf_transparent:=no}])
2355
2356 dnl Enable PF Transparent Proxy
2357 AC_ARG_ENABLE(pf-transparent,
2358 AS_HELP_STRING([--enable-pf-transparent],
2359 [Enable Transparent Proxy support for systems using PF network address redirection.]), [
2360 SQUID_YESNO([$enableval],
2361 [unrecognized argument to --enable-pf-transparent: $enableval])
2362 ])
2363 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2364 AC_MSG_NOTICE([PF-based transparent proxying requested: ${enable_pf_transparent:=no}])
2365
2366 dnl Enable /dev/pf support for older PF Transparent Proxy systems (OpenBSD 4.x and older)
2367 AC_ARG_WITH(nat-devpf,
2368 AS_HELP_STRING([--with-nat-devpf],
2369 [Enable /dev/pf support for NAT on older OpenBSD and FreeBSD kernels.]), [
2370 SQUID_YESNO([$enableval],
2371 [unrecognized argument to --with-nat-devpf: $enableval])
2372 ])
2373 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2374 AC_MSG_NOTICE([NAT lookups via /dev/pf: ${with_nat_devpf:=no}])
2375
2376 # Linux Netfilter Transparent Proxy
2377 AC_ARG_ENABLE(linux-netfilter,
2378 AS_HELP_STRING([--enable-linux-netfilter],
2379 [Enable Transparent Proxy support for Linux (Netfilter)]), [
2380 SQUID_YESNO([$enableval],
2381 [unrecognized argument to --enable-linux-netfilter: $enableval])
2382 ])
2383 AC_MSG_NOTICE([Linux Netfilter support requested: ${enable_linux_netfilter:=auto}])
2384 #will be AC_DEFINEd later, after checking for appropriate infrastructure
2385
2386
2387 dnl Look for libnetfilter_conntrack options (needed for QOS netfilter marking)
2388 dnl squid_opt_netfilterconntrack is set only when option is explicity specified
2389 AC_ARG_WITH(netfilter-conntrack,
2390 AS_HELP_STRING([--without-netfilter-conntrack],
2391 [Do not use Netfilter conntrack libraries for packet marking.
2392 A path to alternative library location may be specified by
2393 using --with-netfilter-conntrack=PATH. Default: auto-detect.]), [
2394 case "$with_netfilter_conntrack" in
2395 yes|no)
2396 squid_opt_netfilterconntrack=$with_netfilter_conntrack
2397 ;;
2398 *)
2399 if test ! -d "$withval" ; then
2400 AC_MSG_ERROR([--with-netfilter-conntrack path does not point to a directory])
2401 fi
2402 squid_opt_netfilterconntrackpath=$withval
2403 LDFLAGS="-L$squid_opt_netfilterconntrackpath/lib $LDFLAGS"
2404 CPPFLAGS="-I$squid_opt_netfilterconntrackpath/include $CPPFLAGS"
2405 with_netfilter_conntrack=yes
2406 squid_opt_netfilterconntrack=yes
2407 esac
2408 ])
2409 AC_MSG_NOTICE([Linux Netfilter Conntrack support requested: ${with_netfilter_conntrack:=auto}])
2410 if test "x$with_netfilter_conntrack" != "xno"; then
2411 AC_SEARCH_LIBS([nfct_query], [netfilter_conntrack],,[
2412 if test x"$with_netfilter_conntrack" = "xyes"; then
2413 AC_MSG_ERROR([--with-netfilter-conntrack specified but libnetfilter-conntrack library not found])
2414 fi
2415 with_netfilter_conntrack=no])
2416 AC_CHECK_HEADERS([libnetfilter_conntrack/libnetfilter_conntrack.h \
2417 libnetfilter_conntrack/libnetfilter_conntrack_tcp.h],,[
2418 if test x"$with_netfilter_conntrack" = "xyes"; then
2419 AC_MSG_ERROR([--with-netfilter-conntrack specified but libnetfilter-conntrack headers not found])
2420 fi
2421 with_netfilter_conntrack=no])
2422 # If nothing is broken; enable the libraries usage.
2423 if test "x$with_netfilter_conntrack" != "xno"; then
2424 with_netfilter_conntrack=yes
2425 fi
2426 fi
2427
2428
2429 dnl Enable Large file support
2430 buildmodel=""
2431 squid_opt_enable_large_files=no
2432
2433 AC_ARG_WITH(large-files,
2434 AS_HELP_STRING([--with-large-files],[Enable support for large files (logs etc).]), [
2435 if test "x$withval" = "xyes"; then
2436 squid_opt_enable_large_files=yes
2437 fi
2438 ])
2439
2440 dnl UNIX Build environment
2441 dnl AS_HELP_STRING is not suited here because it cannot to specify newlines
2442 AC_ARG_WITH(build-environment,
2443 AS_HELP_STRING([--with-build-environment=model],
2444 [The build environment to use. Normally one of
2445 POSIX_V6_ILP32_OFF32 (32 bits),
2446 POSIX_V6_ILP32_OFFBIG (32 bits with large file support),
2447 POSIX_V6_LP64_OFF64 (64 bits),
2448 POSIX_V6_LPBIG_OFFBIG (large pointers and files),
2449 XBS5_ILP32_OFF32 i(legacy, 32 bits),
2450 XBS5_ILP32_OFFBIG (legacy, 32 bits with large file support),
2451 XBS5_LP64_OFF64 (legacy, 64 bits),
2452 XBS5_LPBIG_OFFBIG (legacy, large pointers and files)
2453 or default (The default for your OS)]), [
2454 case "$withval" in
2455 yes|no)
2456 AC_MSG_FAILURE([--with-build-environment expects a build environment string as used by getconf])
2457 ;;
2458 *)
2459 buildmodel="$withval"
2460 ;;
2461 esac
2462 ])
2463
2464 #hack. Let's early-detect sizeof(long)
2465 AC_CHECK_SIZEOF(long)
2466
2467 if test "x$squid_opt_enable_large_files" = "xyes" -a "x$buildmodel" = "x"; then
2468 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
2469 if test "`getconf _$model 2>/dev/null || true`" = 1 || test "`getconf $model 2>/dev/null || true`" ; then
2470 buildmodel=$model
2471 break
2472 fi
2473 done
2474 if test "x$buildmodel" = "x"; then
2475 AC_MSG_WARN([No suitable build environment found for large files. Trying to use _FILE_OFFSET_BITS=64])
2476 fi
2477 fi
2478 if test "x$buildmodel" = "xdefault" -o "x$buildmodel" = "x"; then
2479 # define _FILE_OFFSET_BITS if requested and needed
2480 if test "x$squid_opt_enable_large_files" = "xyes" -a $ac_cv_sizeof_long -le 4 ; then
2481 AC_MSG_NOTICE([Enabling -D_FILE_OFFSET_BITS=64])
2482 CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
2483 CXXFLAGS="-D_FILE_OFFSET_BITS=64 $CXXFLAGS"
2484 fi
2485 else
2486 AC_MSG_NOTICE([Using $buildmodel build environment])
2487 if test "`getconf _$buildmodel 2>/dev/null || true`" = 1 || test "`getconf $buildmodel 2>/dev/null || true`" ; then
2488 : # All fine
2489 else
2490 AC_MSG_ERROR(Build environment $buildmodel not known to getconf.)
2491 fi
2492 CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
2493 CXXFLAGS="`getconf ${buildmodel}_CFLAGS` $CXXFLAGS"
2494 LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
2495 LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
2496 if test "x$squid_host_os" = "xsolaris" ; then
2497
2498 # On Solaris getconf returns for CFLAGS -xarch=generic64, -Xa and -Usun options, and
2499 # for LDFLAGS -xarch=generic64, but:
2500 # "-Xa" is supported only by Sun cc, so we need to remove it when using gcc
2501 # For gcc "-xarch=generic64" must be replaced with "-m64"
2502 # The 'sun' define is needed by ipfilter includes, so we must remove "-Usun"
2503 if test "x$GCC" = "xyes"; then
2504 AC_MSG_NOTICE([Removing -Xa for gcc/g++ on $host])
2505 CFLAGS="`echo $CFLAGS | sed -e 's/-Xa//'`"
2506 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Xa//'`"
2507 AC_MSG_NOTICE([Replacing -xarch=generic64 with -m64 for gcc/g++ on $host])
2508 CFLAGS="`echo $CFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
2509 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
2510 LDFLAGS="`echo $LDFLAGS | sed -e 's/-xarch=generic64//'`"
2511 fi
2512 AC_MSG_NOTICE([Removing -Usun on $host])
2513 CFLAGS="`echo $CFLAGS | sed -e 's/-Usun//'`"
2514 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Usun//'`"
2515 fi
2516 fi
2517
2518 dnl Enable Leak Finding Functions
2519 AC_ARG_ENABLE(leakfinder,
2520 AS_HELP_STRING([--enable-leakfinder],
2521 [Enable Leak Finding code. Enabling this alone does nothing;
2522 you also have to modify the source code to use the leak
2523 finding functions. Probably Useful for hackers only.]), [
2524 SQUID_YESNO([$enableval],
2525 [unrecognized argument to --enable-leakfinder: $enableval])
2526 ])
2527 AC_MSG_NOTICE([Leak Finder enabled: ${enable_leakfinder:=no}])
2528 SQUID_DEFINE_BOOL(USE_LEAKFINDER,$enable_leakfinder,
2529 [Enable code for assisting in finding memory leaks. Not for the faint of heart])
2530 AM_CONDITIONAL(ENABLE_LEAKFINDER, [test "x$enable_leakfinder" = "xyes"])
2531
2532
2533 AC_ARG_ENABLE(follow-x-forwarded-for,
2534 AS_HELP_STRING([--enable-follow-x-forwarded-for],
2535 [Enable support for following the X-Forwarded-For
2536 HTTP header to try to find the IP address of the
2537 original or indirect client when a request has
2538 been forwarded through other proxies.]), [
2539 SQUID_YESNO([$enableval],
2540 [unrecognized argument to --enable-follow-x-forwarded-for: $enableval])
2541 ])
2542 AC_MSG_NOTICE([Support for X-Forwarded-For enabled: ${enable_follow_x_forwarded_for:=yes}])
2543 SQUID_DEFINE_BOOL(FOLLOW_X_FORWARDED_FOR,$enable_follow_x_forwarded_for,
2544 [Enable following X-Forwarded-For headers])
2545
2546 AC_ARG_ENABLE(ident-lookups,
2547 AS_HELP_STRING([--disable-ident-lookups],
2548 [Remove code that supports performing Ident (RFC 931) lookups.]), [
2549 SQUID_YESNO([$enableval],[unrecognized argument to --disable-ident-lookups: $enableval])
2550 ])
2551 AC_MSG_NOTICE([Support for Ident lookups enabled: ${enable_ident_lookups:=yes}])
2552 SQUID_DEFINE_BOOL(USE_IDENT,$enable_ident_lookups,[Support for Ident (RFC 931) lookups])
2553
2554 dnl Select Default hosts file location
2555 AC_ARG_ENABLE(default-hostsfile,
2556 AS_HELP_STRING([--enable-default-hostsfile=path],
2557 [Select default location for hosts file.
2558 See hosts_file directive in squid.conf for details]), [
2559 if test "x$enableval" != "xnone" -a "x$enableval" != "xno" ; then
2560 if test \! -f "$enableval"; then
2561 AC_MSG_WARN([Unable to find file $enableval. I hope you know what you are doing.])
2562 fi
2563 squid_opt_default_hosts=$enableval
2564 else
2565 squid_opt_default_hosts="none"
2566 fi
2567 ])
2568 AC_MSG_NOTICE([Default hosts file set to: ${squid_opt_default_hosts:=/etc/hosts}])
2569 DEFAULT_HOSTS=$squid_opt_default_hosts
2570 AC_SUBST(DEFAULT_HOSTS)
2571
2572 # Select auth schemes modules to build
2573 AC_ARG_ENABLE(auth,
2574 AS_HELP_STRING([--enable-auth],
2575 [Build global support for authentication. The list of schemes
2576 and helpers to be enabled is defined elsewhere]), [
2577 SQUID_YESNO([$enableval],
2578 [unrecognized argument to --enable-auth: $enableval])
2579 ])
2580 AC_MSG_NOTICE([Authentication support enabled: ${enable_auth:=yes}])
2581 SQUID_DEFINE_BOOL(USE_AUTH,$enable_auth,[Enable support for authentication])
2582 AM_CONDITIONAL(ENABLE_AUTH, test "x$enable_auth" != "xno")
2583 AUTH_MODULES=""
2584 require_smblib="no"
2585
2586 AC_ARG_ENABLE(auth-basic,
2587 AS_HELP_STRING([--enable-auth-basic="list of helpers"],
2588 [Enable the basic authentication scheme, and build the specified helpers.
2589 Not providing an explicit list of helpers will attempt build of
2590 all possible helpers. Default is to do so.
2591 To disable the basic authentication scheme, use --disable-auth-basic.
2592 To enable but build no helpers, specify "none".
2593 To see available helpers, see the src/auth/basic/ directory. ]),[
2594 #nothing to do really
2595 ])
2596 m4_include([src/auth/basic/helpers.m4])
2597
2598 AC_ARG_ENABLE(auth-digest,
2599 AS_HELP_STRING([--enable-auth-digest="list of helpers"],
2600 [Enable the Digest authentication scheme, and build the specified helpers.
2601 Not providing an explicit list of helpers will attempt build of
2602 all possible helpers. Default is to do so.
2603 To disable the Digest authentication scheme, use --disable-auth-digest.
2604 To enable but build no helpers, specify "none".
2605 To see available helpers, see the src/auth/digest/ directory. ]),[
2606 #nothing to do, really
2607 ])
2608 m4_include([src/auth/digest/helpers.m4])
2609
2610 AC_ARG_ENABLE(auth-negotiate,
2611 AS_HELP_STRING([--enable-auth-negotiate="list of helpers"],
2612 [Enable the Negotiate authentication scheme, and build the specified
2613 helpers.
2614 Not providing an explicit list of helpers will attempt build of
2615 all possible helpers. Default is to do so.
2616 To disable the Negotiate authentication scheme,
2617 use --disable-auth-negotiate.
2618 To enable but build no helpers, specify "none".
2619 To see available helpers, see the src/auth/negotiate/ directory. ]),[
2620 #nothing to do, really
2621 ])
2622 m4_include([src/auth/negotiate/helpers.m4])
2623
2624 AC_ARG_ENABLE(auth-ntlm,
2625 AS_HELP_STRING([--enable-auth-ntlm="list of helpers"],
2626 [Enable the NTLM authentication scheme, and build the specified helpers.
2627 Not providing an explicit list of helpers will attempt build of
2628 all possible helpers. Default is to do so.
2629 To disable the NTLM authentication scheme, use --disable-auth-ntlm.
2630 To enable but build no helpers, specify "none".
2631 To see available helpers, see the src/auth/ntlm/ directory. ]),[
2632 ])
2633 m4_include([src/auth/ntlm/helpers.m4])
2634
2635 dnl Authentication libraries to build
2636 dnl This list will not be needed when each auth library has its own Makefile
2637 dnl this is to be placed AFTER each auth module's handler
2638 AUTH_LIBS_TO_BUILD=
2639 for module in $AUTH_MODULES; do
2640 AUTH_LIBS_TO_BUILD="$AUTH_LIBS_TO_BUILD ${module}/lib${module}.la"
2641 done
2642 AC_SUBST(AUTH_MODULES)
2643 AC_SUBST(AUTH_LIBS_TO_BUILD)
2644 AM_CONDITIONAL(ENABLE_SMBLIB, test "x$require_smblib" = "xyes")
2645
2646 dnl Select logging daemon helpers to build
2647 AC_ARG_ENABLE(log-daemon-helpers,
2648 AS_HELP_STRING([--enable-log-daemon-helpers="list of helpers"],
2649 [This option selects which logging daemon helpers to
2650 build and install as part of the normal build process
2651 For a list of available helpers see the src/log/
2652 directory.]),[
2653 #nothing to do, really
2654 ])
2655 m4_include([src/log/helpers.m4])
2656
2657 AC_ARG_ENABLE(external-acl-helpers,
2658 AS_HELP_STRING([--enable-external-acl-helpers="list of helpers"],
2659 [Enable external_acl helpers support and the helpers themselves.
2660 Default is to build all buildable helpers and enable support.
2661 To disable support, use --disable-external-acl-helpers.
2662 To build no helpers, specify "none".
2663 To see available helpers, see the src/acl/external/
2664 directory]), [
2665 #nothing to do, really
2666 ])
2667 m4_include([src/acl/external/helpers.m4])
2668
2669 dnl Select url_rewrite helpers to build
2670 AC_ARG_ENABLE(url-rewrite-helpers,
2671 AS_HELP_STRING([--enable-url-rewrite-helpers="list of helpers"],
2672 [This option selects which url_rewrite helpers to
2673 build and install as part of the normal build
2674 process. The default is to attempt the build of all possible
2675 helpers. Use --disable-url-rewrite-helpers to build none.
2676 For a list of available helpers see the
2677 src/http/url_rewriters/ directory.]),[
2678 ])
2679 m4_include([src/http/url_rewriters/helpers.m4])
2680
2681 dnl Select security helpers to build
2682 AC_ARG_ENABLE(security-cert-validators,
2683 AS_HELP_STRING([--enable-security-cert-validators="list of helpers"],
2684 [This option selects which security certificate validator
2685 helpers to build and install as part of the normal build
2686 process. The default is to attempt the build of all possible
2687 helpers. Use --disable-security-cert-validators to
2688 build none. For a list of available helpers see the
2689 src/security/cert_validators/ directory.]),[
2690 ])
2691 m4_include([src/security/cert_validators/helpers.m4])
2692
2693 AC_ARG_ENABLE(security-cert-generators,
2694 AS_HELP_STRING([--enable-security-cert-generators="list of helpers"],
2695 [This option selects which security certificate validator
2696 helpers to build and install as part of the normal build
2697 process. The default is to attempt the build of all possible
2698 helpers. Use --disable-security-cert-genrators to
2699 build none. For a list of available helpers see the
2700 src/security/cert_generators/ directory.]),[
2701 ])
2702 m4_include([src/security/cert_generators/helpers.m4])
2703
2704 dnl Select storeid_rewrite helpers to build
2705 AC_ARG_ENABLE(storeid-rewrite-helpers,
2706 AS_HELP_STRING([--enable-storeid-rewrite-helpers="list of helpers"],
2707 [This option selects which Store-ID rewrite helpers to
2708 build and install as part of the normal build
2709 process. The default is to attempt the build of all possible
2710 helpers. Use --disable-storeid-rewrite-helpers to build none.
2711 For a list of available helpers see the
2712 src/store/id_rewriters/ directory.]),[
2713 ])
2714 m4_include([src/store/id_rewriters/helpers.m4])
2715
2716 AC_ARG_WITH(valgrind-debug,
2717 AS_HELP_STRING([--with-valgrind-debug],
2718 [Include debug instrumentation for use with valgrind]),
2719 [
2720 SQUID_YESNO([$withval],
2721 [unrecognized argument to --with-valgrind-debug: $withval])
2722 if test "x$withval" != "xno" ; then
2723 AC_CHECK_HEADERS(valgrind/memcheck.h,[],[
2724 AC_MSG_ERROR([Valgrind support requested, needed headers not found.])
2725 ])
2726 fi
2727 ])
2728 SQUID_DEFINE_BOOL(WITH_VALGRIND,${with_valgrind_debug:=no},
2729 [Valgrind memory debugger support])
2730 AC_MSG_NOTICE([Valgrind debug support enabled: $with_valgrind_debug])
2731
2732 dnl Enable WIN32 Service compile mode
2733 AC_ARG_ENABLE(win32-service,
2734 AS_HELP_STRING([--enable-win32-service],
2735 [Compile Squid as a WIN32 Service.
2736 Works only on MS-Windows platforms]), [
2737 SQUID_YESNO([$enableval],
2738 [unrecognized argument to --enable-win32-service: $enableval])
2739 ])
2740 SQUID_DEFINE_BOOL(USE_WIN32_SERVICE,${enable_win32_service:=no},
2741 [Enable code supporting MS Windows service mode])
2742 AC_MSG_NOTICE([MS Windows service mode enabled: $enable_win32_service])
2743
2744
2745 # Disable "unlinkd" code
2746 AC_ARG_ENABLE(unlinkd,
2747 AS_HELP_STRING([--disable-unlinkd],[Do not use unlinkd]), [
2748 SQUID_YESNO([$enableval],
2749 [unrecognized argument to --disable-unlinkd: $enableval])
2750 ])
2751 SQUID_DEFINE_BOOL(USE_UNLINKD,${enable_unlinkd:=yes},
2752 [Enable useage of unlinkd])
2753 AM_CONDITIONAL(ENABLE_UNLINKD,test "x$enable_unlinkd" = "xyes")
2754 AC_MSG_NOTICE([unlinkd enabled: $enable_unlinkd])
2755
2756 # Enable backtraces on fatal errors
2757 AC_ARG_ENABLE(stacktraces,
2758 AS_HELP_STRING([--enable-stacktraces],
2759 [Enable automatic call backtrace on fatal errors]), [
2760 SQUID_YESNO([$enableval],
2761 [unrecognized argument to --enable-stacktraces: $enableval])
2762 ])
2763 SQUID_DEFINE_BOOL(PRINT_STACK_TRACE,${enable_stacktraces:=no},
2764 [Print stack traces on fatal errors])
2765 AC_MSG_NOTICE([Automatically print stack trace on fatal errors: $enable_stacktraces])
2766
2767
2768 # CPU Profiling options handling
2769 AC_ARG_ENABLE(cpu-profiling,
2770 AS_HELP_STRING([--enable-cpu-profiling],
2771 [Enable instrumentation to try and understand how CPU power
2772 is spent by squid, by enabling specific probes in selected
2773 functions.
2774 New probes can only be added by modifying the source code.
2775 It is meant to help developers in optimizing performance
2776 of Squid internal functions.
2777 If you are not developer you should not enable this,
2778 as it slows squid down somewhat.
2779 See lib/Profiler.c for more details.]), [
2780 SQUID_YESNO([$enableval],
2781 [unrecognized argument to --enable-cpu-profiling: $enableval])
2782 ])
2783 # Default OFF. This is a debug feature. Only check and enable if forced ON.
2784 if test "x$enable_cpu_profiling" = "xyes"; then
2785 AC_CHECK_FUNCS(clock_gettime_nsec_np)
2786 SQUID_CHECK_FUNCTIONAL_CPU_PROFILER
2787 if test "x$squid_cv_cpu_profiler_works" = "xno"; then
2788 AC_MSG_ERROR([CPU profiling will not be functional in this build.])
2789 fi
2790 fi
2791 SQUID_DEFINE_BOOL(USE_XPROF_STATS,${enable_cpu_profiling:=no},
2792 [Define to enable CPU profiling within Squid])
2793 AM_CONDITIONAL(ENABLE_XPROF_STATS,
2794 test "x$enable_cpu_profiling" = "xyes")
2795 AC_MSG_NOTICE([CPU profiling enabled: $enable_cpu_profiling])
2796
2797 # Enable X-Accelerator-Vary for Vary support within an accelerator setup
2798 AC_ARG_ENABLE(x-accelerator-vary,
2799 AS_HELP_STRING([--enable-x-accelerator-vary],
2800 [Enable support for the X-Accelerator-Vary
2801 HTTP header. Can be used to indicate
2802 variance within an accelerator setup.
2803 Typically used together with other code
2804 that adds custom HTTP headers to the requests.]), [
2805 SQUID_YESNO([$enableval],
2806 [unrecognized argument to --enable-x-accelerator-vary: $enableval])
2807 ])
2808 SQUID_DEFINE_BOOL(X_ACCELERATOR_VARY,${enable_x_accelerator_vary:=no},
2809 [Enable support for the X-Accelerator-Vary HTTP header])
2810 AC_MSG_NOTICE([X-Accelerator-Vary support enabled: $enable_x_accelerator_vary])
2811
2812 AC_ARG_WITH([cppunit], AS_HELP_STRING([--without-cppunit],[Do not use cppunit test framework]),[
2813 AS_CASE($with_cppunit, [yes|no],[],
2814 [
2815 AS_IF([test ! -d "$withval"],AC_MSG_ERROR([--with-cppunit PATH does not point to a directory]))
2816 LIBCPPUNIT_CFLAGS="-I$with_cppunit/include"
2817 LIBCPPUNIT_LIBS="-L$with_cppunit/lib -lcppunit"
2818 ])
2819 ])
2820 AS_IF([test "x$with_cppunit" != "xno"],[
2821 PKG_CHECK_MODULES([LIBCPPUNIT],[cppunit],[
2822 squid_cv_cppunit_version="`pkg-config cppunit --version`"
2823 AC_MSG_NOTICE([using system installed cppunit version $squid_cv_cppunit_version])
2824 AS_UNSET(squid_cv_cppunit_version)
2825
2826 SQUID_STATE_SAVE(squid_cppunit_state)
2827 CXXFLAGS="${CXXFLAGS} ${LIBCPPUNIT_CFLAGS}"
2828 LIBS="${LIBS} ${LIBCPPUNIT_LIBS}"
2829 AC_CHECK_HEADERS(cppunit/extensions/HelperMacros.h)
2830 SQUID_STATE_ROLLBACK(squid_cppunit_state)
2831 ],[
2832 AC_MSG_WARN([cppunit does not appear to be installed. Squid does not require this, but code testing with 'make check' will fail.])
2833 ])
2834 ])
2835
2836 # Force some compilers to use ANSI features
2837 #
2838 case "$host" in
2839 *-hp-hpux*)
2840 if test "x$ac_cv_prog_CC" = "xcc" ; then
2841 AC_MSG_NOTICE([adding '-Ae' to cc args for $host])
2842 CC="cc -Ae";
2843 ac_cv_prog_CC="$CC"
2844 fi
2845 ;;
2846 esac
2847
2848
2849 dnl automake handles this AC_PATH_PROG(MAKEDEPEND, makedepend, $TRUE)
2850
2851 case "$host" in
2852 *hpux*)
2853 AC_MSG_NOTICE([Disabling ranlib for HP-UX...])
2854 RANLIB=":"
2855 ;;
2856 esac
2857
2858 dnl Check for headers
2859 AC_HEADER_DIRENT
2860 AC_HEADER_STDC
2861
2862 AC_CHECK_HEADERS( \
2863 arpa/inet.h \
2864 arpa/nameser.h \
2865 assert.h \
2866 bstring.h \
2867 crypt.h \
2868 ctype.h \
2869 direct.h \
2870 errno.h \
2871 execinfo.h \
2872 fcntl.h \
2873 fnmatch.h \
2874 getopt.h \
2875 glob.h \
2876 gnumalloc.h \
2877 grp.h \
2878 ipl.h \
2879 lber.h \
2880 ldap.h \
2881 libc.h \
2882 limits.h \
2883 linux/posix_types.h \
2884 linux/types.h \
2885 malloc.h \
2886 math.h \
2887 memory.h \
2888 mount.h \
2889 netdb.h \
2890 netinet/in.h \
2891 netinet/in_systm.h \
2892 netinet/tcp.h \
2893 paths.h \
2894 poll.h \
2895 pwd.h \
2896 regex.h \
2897 sched.h \
2898 siginfo.h \
2899 signal.h \
2900 stdarg.h \
2901 stddef.h \
2902 stdio.h \
2903 stdlib.h \
2904 string.h \
2905 strings.h \
2906 sys/bitypes.h \
2907 sys/file.h \
2908 sys/ioctl.h \
2909 sys/ipc.cc \
2910 sys/param.h \
2911 sys/prctl.h \
2912 sys/md5.h \
2913 sys/mman.h \
2914 sys/msg.h \
2915 sys/resource.h \
2916 sys/select.h \
2917 sys/shm.h \
2918 sys/socket.h \
2919 sys/stat.h \
2920 syscall.h \
2921 sys/syscall.h \
2922 sys/time.h \
2923 sys/types.h \
2924 sys/uio.h \
2925 sys/un.h \
2926 sys/vfs.h \
2927 sys/wait.h \
2928 syslog.h \
2929 time.h \
2930 unistd.h \
2931 utime.h \
2932 varargs.h \
2933 byteswap.h \
2934 glib.h \
2935 stdint.h \
2936 inttypes.h \
2937 wchar.h
2938 )
2939
2940 AC_CHECK_HEADERS( \
2941 linux/netfilter_ipv4.h \
2942 linux/netfilter_ipv6/ip6_tables.h \
2943 ,,,
2944 SQUID_DEFAULT_INCLUDES
2945 #if HAVE_LIMITS_H
2946 #include <limits.h>
2947 #endif
2948 /* Netfilter ip(6)tables v1.4.0 has broken headers */
2949 #if HAVE_NETINET_IN_H
2950 #include <netinet/in.h>
2951 #endif
2952 )
2953
2954 dnl *BSD do not include the dependencies for all their net/ and netinet/ files
2955 dnl We must include a few basic type headers for them to work.
2956 AC_CHECK_HEADERS( \
2957 net/if.h \
2958 netinet/if_ether.h\
2959 netinet/icmp6.h \
2960 netinet/in.h \
2961 netinet/ip.h \
2962 netinet/ip6.h \
2963 netinet/ip_icmp.h \
2964 netinet/ipl.h \
2965 net/pf/pfvar.h \
2966 net/pfvar.h \
2967 sys/mount.h\
2968 resolv.h \
2969 ,,,
2970 SQUID_BSDNET_INCLUDES)
2971
2972 AC_C_CONST
2973 AC_C_BIGENDIAN
2974
2975 AC_STRUCT_TM
2976 AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
2977 #if TM_IN_SYS_TIME
2978 #if HAVE_SYS_TIME_H
2979 #include <sys/time.h>
2980 #endif
2981 #elif HAVE_TIME_H
2982 #include <time.h>
2983 #endif
2984 ])
2985
2986 dnl Override rusage() detect on MinGW because is emulated in source code
2987 case "$squid_host_os" in
2988 mingw)
2989 AC_DEFINE(HAVE_STRUCT_RUSAGE)
2990 ac_cv_func_getrusage='yes'
2991 AC_MSG_NOTICE([Using own rusage on Windows.])
2992 ;;
2993 *)
2994 AC_CHECK_TYPE(struct rusage,AC_DEFINE(HAVE_STRUCT_RUSAGE,1,[The system provides struct rusage]),,[
2995 #if HAVE_SYS_TIME_H
2996 #include <sys/time.h>
2997 #endif
2998 #if HAVE_SYS_RESOURCE_H
2999 #include <sys/resource.h>
3000 #endif])
3001 ;;
3002 esac
3003
3004 AC_CHECK_MEMBERS([struct iphdr.ip_hl],,,[
3005 #if HAVE_SYS_TYPES_H
3006 #include <sys/types.h>
3007 #endif
3008 #include <netinet/in.h>
3009 #include <netinet/in_systm.h>
3010 #include <netinet/ip.h>
3011 #if defined (__linux__) || defined (__CYGWIN__)
3012 #define ip_hl ihl
3013 #endif
3014 #ifndef __linux__
3015 #ifndef __CYGWIN__
3016 #define iphdr ip
3017 #endif
3018 #endif])
3019
3020 dnl Check for typedefs
3021 AC_CHECK_SIZEOF(void *)
3022
3023 # check for a bunch of types
3024 AC_TYPE_INT8_T
3025 AC_TYPE_UINT8_T
3026 AC_TYPE_INT16_T
3027 AC_TYPE_UINT16_T
3028 AC_TYPE_INT32_T
3029 AC_TYPE_UINT32_T
3030 AC_TYPE_INT64_T
3031 AC_TYPE_UINT64_T
3032 AC_TYPE_PID_T
3033 AC_TYPE_SIZE_T
3034 AC_TYPE_SSIZE_T
3035 AC_TYPE_OFF_T
3036 AC_TYPE_UID_T
3037 AC_CHECK_TYPE([bool])
3038 #need the defines for PRId64
3039 AC_CHECK_SIZEOF(int64_t)
3040 AC_CHECK_SIZEOF(long)
3041 #need the defines for PRIuSIZE
3042 AC_CHECK_SIZEOF(size_t)
3043 #need the define for overflow checks
3044 AC_CHECK_SIZEOF(off_t)
3045 AC_CHECK_SIZEOF(size_t)
3046
3047 dnl Some C++11 types we try to use
3048 AX_CXX_TYPE_NULLPTR
3049 AX_CXX_TYPE_UNIQUE_PTR
3050 AX_CXX_TYPE_UNIFORM_DISTRIBUTIONS
3051 SQUID_CXX_STD_UNDERLYING_TYPE
3052
3053 dnl On Solaris 9 x86, gcc may includes a "fixed" set of old system include files
3054 dnl that is incompatible with the updated Solaris header files.
3055 dnl For this reason, we must check if pad128_t and upad128_t are defined.
3056 AC_CHECK_TYPE(pad128_t,
3057 AC_DEFINE(HAVE_PAD128_T,1,[pad128_t is defined in system headers]),
3058 ,SQUID_DEFAULT_INCLUDES)
3059
3060 AC_CHECK_TYPE(upad128_t,
3061 AC_DEFINE(HAVE_UPAD128_T,1,[upad128_t is defined in system headers]),
3062 ,SQUID_DEFAULT_INCLUDES)
3063
3064 AC_CHECK_TYPE(mode_t, AC_DEFINE(HAVE_MODE_T,1,[mode_t is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
3065 AC_CHECK_TYPE(fd_mask, AC_DEFINE(HAVE_FD_MASK,1,[fd_mask is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
3066
3067 AC_CHECK_TYPE(socklen_t,AC_DEFINE(HAVE_SOCKLEN_T,1,[socklen_t is defined by the system headers]),,[
3068 #include <sys/types.h>
3069 #include <sys/socket.h>
3070 #if STDC_HEADERS
3071 #include <stdlib.h>
3072 #include <stddef.h>
3073 #endif])
3074
3075 AC_CHECK_TYPE(mtyp_t,AC_DEFINE(HAVE_MTYP_T,1,
3076 [mtyp_t is defined by the system headers]),,[#include <sys/types.h>
3077 #include <sys/ipc.h>
3078 #include <sys/msg.h>])
3079
3080 AC_CHECK_TYPE(cpu_set_t,
3081 AC_DEFINE(HAVE_CPU_SET_T,1,[cpu_set_t is defined by the system headers]),,[
3082 #if HAVE_SCHED_H
3083 #include <sched.h>
3084 #endif
3085 ])
3086
3087 # check for compiler support of %zu printf macro
3088 AH_TEMPLATE(PRIuSIZE,[Compiler supports %zu printf macro])
3089 AC_MSG_CHECKING([for compiler %zu support])
3090 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3091 #include <stdio.h>
3092 ]],[[size_t n=1;printf("%zu",n);]])],[
3093 AC_DEFINE(PRIuSIZE,"zu")
3094 AC_MSG_RESULT(yes)
3095 ],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
3096
3097
3098 dnl Check for special functions
3099 AC_FUNC_ALLOCA
3100
3101
3102 dnl Check for libcap header (assume its not broken unless
3103 AC_ARG_WITH(libcap, AS_HELP_STRING([--without-libcap],
3104 [disable usage of Linux capabilities library to control privileges]), [
3105 SQUID_YESNO([$withval],[unrecognized argument to --without-libcap: $withval])
3106 ],[with_libcap=auto])
3107
3108 if test "x$with_libcap" != "xno"; then
3109 # cap_clear_flag is the most recent libcap function we require
3110 AC_CHECK_HEADERS(sys/capability.h)
3111 AC_CHECK_LIB(cap, cap_clear_flag)
3112 SQUID_CHECK_FUNCTIONAL_LIBCAP2
3113
3114 # if it can't be supported..
3115 if test "x$ac_cv_header_sys_capability_h" = "xno" -o \
3116 "x$ac_cv_lib_cap_cap_clear_flag" = "xno"; then
3117 # and it was forced on: error
3118 if test "x$with_libcap" = "xyes" ; then
3119 AC_MSG_ERROR([libcap forced enabled but not available or not usable, requires libcap-2.09 or later])
3120 else
3121 # with_libcap is "auto"; it can't be supported. Disable.
3122 with_libcap=no
3123 fi
3124 else
3125 # header and lib are ok, we support
3126 with_libcap=yes
3127 fi
3128
3129 fi
3130
3131 SQUID_DEFINE_BOOL(USE_LIBCAP,$with_libcap,
3132 [use libcap to set capabilities required for TPROXY])
3133 AC_MSG_NOTICE([libcap support enabled: $with_libcap])
3134 SQUID_DEFINE_BOOL(LIBCAP_BROKEN,${squid_cv_sys_capability_works:=no},
3135 [libcap2 headers are broken and clashing with glibc])
3136 AC_MSG_NOTICE([libcap2 headers are ok: $squid_cv_sys_capability_works])
3137
3138
3139 dnl Check for needed libraries
3140 AC_SEARCH_LIBS([gethostbyname],[nsl resolv bind])
3141 AC_SEARCH_LIBS([res_init],[resolv])
3142 AC_SEARCH_LIBS([__res_search],[resolv])
3143 AC_SEARCH_LIBS([bind],[socket])
3144 AC_SEARCH_LIBS([opcom_stack_trace],[opcom_stack])
3145 AC_SEARCH_LIBS([strlcpy], [bsd])
3146 AC_SEARCH_LIBS([yp_match], [nsl nss_nis nss_nisplus])
3147 dnl Check for Winsock only on MinGW, on Cygwin we must use emulated BSD socket API
3148 if test "x$squid_host_os" = "xmingw" ; then
3149 SQUID_CHECK_WINSOCK_LIB
3150 AC_CHECK_HEADERS( \
3151 windows.h \
3152 ws2tcpip.h \
3153 iphlpapi.h ,,,[
3154 #if HAVE_WINSOCK2_H
3155 #include <winsock2.h>
3156 #endif
3157 #if HAVE_WINDOWS_H
3158 #include <windows.h>
3159 #endif
3160 #if HAVE_WS2TCPIP_H
3161 #include <ws2tcpip.h>
3162 #endif
3163 ])
3164 fi
3165
3166 # check that we have unix sockets
3167 SQUID_CHECK_UNIX_SOCKET
3168 SQUID_DEFINE_BOOL(HAVE_UNIXSOCKET,$squid_cv_unixsocket,[System supports unix sockets])
3169
3170 AC_CHECK_LIB(gnumalloc, malloc)
3171 if test "x$ac_cv_lib_gnumalloc_malloc" = "xyes"; then
3172 AC_MSG_NOTICE([Disabling extended malloc functions when using bundled gnumalloc])
3173 ac_cv_func_mallocblksize=no
3174 ac_cv_func_mallopt=no
3175 else
3176 case "$squid_host_os" in
3177 solaris)
3178 AC_MSG_NOTICE([skipping libmalloc check for $host])
3179 ;;
3180 freebsd)
3181 AC_MSG_NOTICE([skipping libmalloc check for $host])
3182 ;;
3183 *)
3184 # XXX: used later
3185 AC_CHECK_LIB(malloc, main)
3186 ;;
3187 esac
3188 fi
3189
3190 case "$squid_host_os" in
3191 mingw)
3192 AC_MSG_NOTICE([Use MSVCRT for math functions.])
3193 ;;
3194 *)
3195 dnl rint() and log() are only used in old C code for now.
3196 AC_LANG_PUSH([C])
3197 AC_SEARCH_LIBS([rint],[m])
3198 AC_SEARCH_LIBS([log],[m])
3199 AC_LANG_POP([C])
3200 ;;
3201 esac
3202
3203 dnl --with-maxfd present for compatibility with Squid-2.
3204 dnl undocumented in ./configure --help to encourage using the Squid-3 directive
3205 AC_ARG_WITH(maxfd,,
3206 [
3207 case ${withval} in
3208 [[0-9]]*)
3209 squid_filedescriptors_num=$withval
3210 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
3211 ;;
3212 *)
3213 AC_MSG_ERROR(--with-maxfd expects a numeric argument)
3214 ;;
3215 esac
3216 ])
3217
3218 AC_ARG_WITH(filedescriptors,
3219 AS_HELP_STRING([--with-filedescriptors=NUMBER],
3220 [Force squid to support NUMBER filedescriptors]),
3221 [
3222 case ${withval} in
3223 [[0-9]]*)
3224 squid_filedescriptors_num=$withval
3225 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
3226 ;;
3227 *)
3228 AC_MSG_ERROR(--with-filedescriptors expects a numeric argument)
3229 ;;
3230 esac
3231 ])
3232
3233 SQUID_CHECK_DEFAULT_FD_SETSIZE
3234 SQUID_CHECK_MAXFD
3235
3236
3237 dnl Enable IPv6 support
3238 AC_MSG_CHECKING([whether to enable IPv6])
3239 AC_ARG_ENABLE(ipv6,
3240 AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support. The default is to probe system capabilities on startup.]), [
3241 SQUID_YESNO([$enableval],[unrecognized argument to --disable-ipv6: $enableval])
3242 ])
3243 AC_MSG_RESULT(${enable_ipv6:=yes})
3244 SQUID_DEFINE_BOOL(USE_IPV6,$enable_ipv6,[Enable support for IPv6 ])
3245
3246 if test "x$enable_ipv6" = "xyes" ; then
3247 SQUID_CHECK_SIN6_LEN_IN_SAI
3248 fi
3249 SQUID_CHECK_SS_LEN_IN_SOCKADDR_STORAGE
3250 SQUID_CHECK_SIN_LEN_IN_SOCKADDR_IN
3251
3252
3253 dnl Check for libdl, used by auth_modules/PAM
3254 if test "x$with_dl" = "xyes"; then
3255 AC_CHECK_LIB(dl, dlopen)
3256 fi
3257
3258 dnl -lintl is needed on SCO version 3.2v4.2 for strftime()
3259 dnl Robert Side <rside@aiinc.bc.ca>
3260 dnl Mon, 18 Jan 1999 17:48:00 GMT
3261 case "$host" in
3262 *-pc-sco3.2*)
3263 AC_CHECK_LIB(intl, strftime)
3264 ;;
3265 esac
3266
3267 dnl System-specific library modifications
3268 dnl
3269 case "$host" in
3270 i386-*-solaris2.*)
3271 if test "x$GCC" = "xyes"; then
3272 AC_MSG_NOTICE([Removing -O for gcc on $host])
3273 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9g]]*//'`"
3274 fi
3275 ;;
3276
3277 *-sgi-irix*)
3278 AC_MSG_NOTICE([Removing -lsocket for IRIX...])
3279 LIBS=`echo $LIBS | sed -e s/-lsocket//`
3280 AC_MSG_NOTICE([Removing -lnsl for IRIX...])
3281 LIBS=`echo $LIBS | sed -e s/-lnsl//`
3282 ac_cv_lib_nsl_main=no
3283 AC_MSG_NOTICE([Removing -lbsd for IRIX...])
3284 LIBS=`echo $LIBS | sed -e s/-lbsd//`
3285 ;;
3286 dnl From: c0032033@ws.rz.tu-bs.de (Joerg Schumacher)
3287 dnl Date: Thu, 17 Oct 1996 04:09:30 +0200
3288 dnl Please change your configure script. AIX doesn't need -lbsd.
3289 *-ibm-aix*)
3290 AC_MSG_NOTICE([Removing -lbsd for AIX...])
3291 LIBS=`echo $LIBS | sed -e s/-lbsd//`
3292
3293 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_rtti],[-rtti],[[
3294 #include <assert.h>
3295 #ifndef NULL
3296 #define NULL 0
3297 #endif
3298 class Foo{
3299 public:virtual ~Foo(){}
3300 };
3301 class Bar:public Foo{
3302 public:Bar():Foo(){}
3303 };
3304 ]],[[
3305 Foo * myFoo=new Bar();
3306 Bar * myBar=dynamic_cast<Bar *>(myFoo);
3307 assert(myBar != NULL);
3308 ]])
3309 if test "$ac_cv_require_rtti" = "yes"; then
3310 SQUID_CFLAGS="-rtti $SQUID_CFLAGS"
3311 SQUID_CXXFLAGS="-rtti $SQUID_CXXFLAGS"
3312 fi
3313
3314 AC_LANG_PUSH([C])
3315 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_qcpluscmt],[-qcpluscmt],[[]],[[//c++ cmt]])
3316 AC_LANG_POP([C])
3317 if test "$ac_cv_require_qcpluscmt" = "yes"; then
3318 SQUID_CFLAGS="-qcpluscmt $SQUID_CFLAGS"
3319 fi
3320 ;;
3321
3322 *m88k*)
3323 SQUID_CFLAGS="$SQUID_CFLAGS -D_SQUID_MOTOROLA_"
3324 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_SQUID_MOTOROLA_"
3325 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1,
3326 [If gettimeofday is known to take only one argument])
3327 ;;
3328 [*-*-solaris2.[0-4]])
3329 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)
3330 ;;
3331 [*-sony-newsos[56]*])
3332 AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)
3333 ;;
3334 esac
3335
3336 dnl This has to be before AC_CHECK_FUNCS
3337 # Disable poll() on certain platforms. Override by setting ac_cv_func_poll
3338 # when running configure.
3339 if test "x$ac_cv_func_poll" = "x" ; then
3340 case "$host" in
3341 [*-hp-hpux*.*])
3342 # Duane Wessels
3343 AC_MSG_NOTICE([disabling poll for $host...])
3344 ac_cv_func_poll='no'
3345 ;;
3346 [*-linux-*])
3347 # Henrik Nordstrom (hno@squid-cache.org) 19980817
3348 # poll is problematic on Linux. We disable it
3349 # by default until Linux gets it right.
3350 rev=`uname -r | awk -F. '{printf "%03d%03d",$1,$2}'`
3351 if test $rev -lt 002002; then
3352 AC_MSG_NOTICE([disabling poll for $host < 2.2...])
3353 ac_cv_func_poll='no'
3354 fi
3355 ;;
3356 [powerpc-ibm-aix4.1.*])
3357 # Mike Laster (mlaster@metavillage.com) 19981021
3358 AC_MSG_NOTICE([disabling poll for $host...])
3359 ac_cv_func_poll='no'
3360 ;;
3361 [*-pc-sco3.2*])
3362 # Robert Side <rside@aiinc.bc.ca>
3363 # Mon, 18 Jan 1999 17:48:00 GMT
3364 AC_MSG_NOTICE([disabling poll for $host...])
3365 ac_cv_func_poll='no'
3366 ;;
3367 esac
3368 fi
3369
3370 dnl Check for library functions
3371 AC_CHECK_FUNCS(\
3372 backtrace_symbols_fd \
3373 bcopy \
3374 eui64_aton \
3375 fchmod \
3376 getdtablesize \
3377 getpagesize \
3378 getpass \
3379 getrusage \
3380 getspnam \
3381 gettimeofday \
3382 glob \
3383 mallocblksize \
3384 mallopt \
3385 memcpy \
3386 memmove \
3387 memrchr \
3388 memset \
3389 mkstemp \
3390 mktime \
3391 mstats \
3392 poll \
3393 prctl \
3394 pthread_attr_setschedparam \
3395 pthread_attr_setscope \
3396 pthread_setschedparam \
3397 pthread_sigmask \
3398 putenv \
3399 regcomp \
3400 regexec \
3401 regfree \
3402 res_init \
3403 __res_init \
3404 rint \
3405 sched_getaffinity \
3406 sched_setaffinity \
3407 select \
3408 seteuid \
3409 setgroups \
3410 setpgrp \
3411 setsid \
3412 sigaction \
3413 snprintf \
3414 socketpair \
3415 sysconf \
3416 syslog \
3417 timegm \
3418 vsnprintf \
3419 )
3420 dnl ... and some we provide local replacements for
3421 AC_REPLACE_FUNCS(\
3422 initgroups \
3423 psignal \
3424 strerror \
3425 strtoll \
3426 tempnam \
3427 )
3428
3429 AC_CHECK_DECLS([getaddrinfo,getnameinfo,inet_ntop,inet_pton,InetNtopA,InetPtonA],,,[
3430 /*
3431 * BSD requires sys/types.h, sys/socket.h, netinet/in.h, netdb.h, arpa/inet.h
3432 * Linux requires sys/types.h, sys/socket.h, arpa/inet.h
3433 * Windows requires sys/socket.h, winsock2.h, ws2tcpip.h
3434 */
3435 #if HAVE_SYS_TYPES_H
3436 #include <sys/types.h>
3437 #endif
3438 #if HAVE_NETINET_IN_H
3439 #include <netinet/in.h>
3440 #endif
3441 #if HAVE_SYS_SOCKET_H
3442 #include <sys/socket.h>
3443 #endif
3444 #if HAVE_NETDB_H
3445 #include <netdb.h>
3446 #endif
3447 #if HAVE_ARPA_INET_H
3448 #include <arpa/inet.h>
3449 #endif
3450 #if HAVE_WINSOCK2_H
3451 #include <winsock2.h>
3452 #endif
3453 #if HAVE_WS2TCPIP_H
3454 #include <ws2tcpip.h>
3455 #endif
3456 ])
3457
3458 # Magic which checks whether we are forcing a type of comm loop we
3459 # are actually going to (ab)use.
3460 # Mostly ripped from squid-commloops, thanks to adrian and benno
3461
3462 if test "x$squid_opt_io_loop_engine" != "x"; then
3463 AC_MSG_NOTICE([choosing user-specified net I/O API $squid_opt_io_loop_engine])
3464 elif test "x$enable_epoll" != "xno" -a "x$squid_cv_epoll_works" = "xyes" ; then
3465 squid_opt_io_loop_engine="epoll"
3466 elif test "x$enable_kqueue" != "xno" ; then
3467 squid_opt_io_loop_engine="kqueue"
3468 elif test "x$enable_devpoll" != "xno" ; then
3469 squid_opt_io_loop_engine="devpoll"
3470 elif test "x$enable_poll" != "xno" -a "x$ac_cv_func_poll" = "xyes" ; then
3471 squid_opt_io_loop_engine="poll"
3472 elif test "x$enable_select" != "xno" -a "x$ac_cv_func_select" = "xyes"; then
3473 squid_opt_io_loop_engine="select"
3474 elif test "x$enable_select" != "xno" -a "x$squid_host_os" = "xmingw"; then
3475 squid_opt_io_loop_engine="select_win32"
3476 else
3477 AC_MSG_WARN([Eep! Cannot find epoll, kqueue, /dev/poll, poll or select!])
3478 AC_MSG_WARN([Will try select and hope for the best.])
3479 squid_opt_io_loop_engine="select"
3480 fi
3481
3482 AC_MSG_NOTICE([Using ${squid_opt_io_loop_engine} for the IO loop.])
3483
3484 AM_CONDITIONAL(ENABLE_POLL, test "x$squid_opt_io_loop_engine" = "xpoll")
3485 AM_CONDITIONAL(ENABLE_EPOLL, test "x$squid_opt_io_loop_engine" = "xepoll")
3486 AM_CONDITIONAL(ENABLE_SELECT, test "x$squid_opt_io_loop_engine" = "xselect")
3487 AM_CONDITIONAL(ENABLE_SELECT_WIN32, test "x$squid_opt_io_loop_engine" = "xselect_win32")
3488 AM_CONDITIONAL(ENABLE_KQUEUE, test "x$squid_opt_io_loop_engine" = "xkqueue")
3489 AM_CONDITIONAL(ENABLE_DEVPOLL, test "x$squid_opt_io_loop_engine" = "xdevpoll")
3490
3491 case $squid_opt_io_loop_engine in
3492 epoll) AC_DEFINE(USE_EPOLL,1,[Use epoll() for the IO loop]) ;;
3493 devpoll) AC_DEFINE(USE_DEVPOLL,1,[Use /dev/poll for the IO loop]) ;;
3494 poll) AC_DEFINE(USE_POLL,1,[Use poll() for the IO loop]) ;;
3495 kqueue) AC_DEFINE(USE_KQUEUE,1,[Use kqueue() for the IO loop]) ;;
3496 select_win32) AC_DEFINE(USE_SELECT_WIN32,1,[Use Winsock select() for the IO loop]) ;;
3497 select) AC_DEFINE(USE_SELECT,1,[Use select() for the IO loop]) ;;
3498 esac
3499
3500 if test "x$ac_cv_func_sched_getaffinity" = "xyes" -a "x$ac_cv_func_sched_setaffinity" = "xyes" ; then
3501 AC_DEFINE(HAVE_CPU_AFFINITY,1,[Support setting CPU affinity for workers])
3502 fi
3503
3504 SQUID_CHECK_SETRESUID_WORKS
3505 if test "x$squid_cv_resuid_works" = "xyes" ; then
3506 AC_DEFINE(HAVE_SETRESUID,1,[Yay! Another Linux brokenness. Knowing that setresuid() exists is not enough, because RedHat 5.0 declares setresuid() but does not implement it.])
3507 fi
3508
3509 AC_CHECK_HEADERS(mswsock.h)
3510 AC_MSG_CHECKING([for constant CMSG_SPACE])
3511 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
3512 #if HAVE_SYS_SOCKET_H
3513 #include <sys/socket.h>
3514 #endif
3515 #if HAVE_MSWSOCK_H
3516 #include <mswsock.h>
3517 #endif
3518
3519 int a[CMSG_SPACE(int)];
3520 ]])], [
3521 AC_MSG_RESULT(yes)
3522 AC_DEFINE(HAVE_CONSTANT_CMSG_SPACE, 1, [Define to 1 if CMSG_SPACE is constant])
3523 ], [
3524 AC_MSG_RESULT(no)
3525 ])
3526
3527 AC_CHECK_TYPE(struct cmsghdr,AC_DEFINE(HAVE_CMSGHDR,1,[The system provides struct cmsghdr]),,[
3528 #if HAVE_SYS_SOCKET_H
3529 #include <sys/socket.h>
3530 #endif
3531 #if HAVE_MSWSOCK_H
3532 #include <mswsock.h>
3533 #endif
3534 #if HAVE_WINSOCK2_H
3535 #include <winsock2.h>
3536 #endif
3537 ])
3538
3539 AC_CHECK_TYPE(struct iovec,AC_DEFINE(HAVE_IOVEC,1,[The system provides struct iovec]),,[
3540 #if HAVE_SYS_SOCKET_H
3541 #include <sys/socket.h>
3542 #endif
3543 #if HAVE_WINSOCK2_H
3544 #include <winsock2.h>
3545 #endif
3546 #if HAVE_SYS_UIO_H
3547 #include <sys/uio.h>
3548 #endif
3549 ])
3550
3551 AC_CHECK_TYPE(struct msghdr,AC_DEFINE(HAVE_MSGHDR,1,[The system provides struct msghdr]),,[
3552 #if HAVE_SYS_SOCKET_H
3553 #include <sys/socket.h>
3554 #endif
3555 #if HAVE_MSWSOCK_H
3556 #include <mswsock.h>
3557 #endif
3558 #if HAVE_WINSOCK2_H
3559 #include <winsock2.h>
3560 #endif
3561 ])
3562
3563 AC_CHECK_TYPE(struct sockaddr_un,AC_DEFINE(HAVE_SOCKADDR_UN,1,[The system provides sockaddr_un]),,[
3564 #if HAVE_SYS_UN_H
3565 #include <sys/un.h>
3566 #endif
3567 #if HAVE_SYS_SOCKET_H
3568 #include <sys/socket.h>
3569 #endif
3570 #if HAVE_WINSOCK2_H
3571 #include <winsock2.h>
3572 #endif
3573 ])
3574
3575 SQUID_CHECK_FUNC_STRNSTR
3576
3577 dnl IP-Filter support requires ipf header files. These aren't
3578 dnl installed by default, so we need to check for them
3579 if test "x$enable_ipf_transparent" != "xno" ; then
3580 SQUID_CHECK_BROKEN_SOLARIS_IPFILTER
3581 AC_MSG_CHECKING(for availability of IP-Filter header files)
3582 # hold on to your hats...
3583 if test "x$ac_cv_header_ip_compat_h" = "xyes" -o \
3584 "x$ac_cv_header_ip_fil_compat_h" = "xyes" -o \
3585 "x$ac_cv_header_netinet_ip_compat_h" = "xyes" -o \
3586 "x$ac_cv_header_netinet_ip_fil_compat_h" = "xyes" ; then
3587 have_ipfilter_compat_header="yes"
3588 fi
3589 if test "x$have_ipfilter_compat_header" = "xyes" -a \
3590 "x$ac_cv_header_ip_fil_h" = "xyes" -a \
3591 "x$ac_cv_header_ip_nat_h" = "xyes" ; then
3592 enable_ipf_transparent="yes"
3593 elif test "x$have_ipfilter_compat_header" = "xyes" -a \
3594 "x$ac_cv_header_netinet_ip_fil_h" = "xyes" -a \
3595 "x$ac_cv_header_netinet_ip_nat_h" = "xyes" ; then
3596 enable_ipf_transparent="yes"
3597 else
3598 enable_ipf_transparent="no"
3599 fi
3600 AC_MSG_RESULT($IPF_TRANSPARENT)
3601
3602 ## On Solaris Ipfilter includes expect that SOLARIS2 is defined with the
3603 ## Solaris minor version (8, 9, 10, ...)
3604 if test "x$enable_ipf_transparent" = "xyes" -a "x$squid_host_os" = "xsolaris" ; then
3605 solrev=`uname -r | sh -c 'IFS=. read j n x; echo $n'`
3606 CFLAGS="-DSOLARIS2=$solrev $CFLAGS"
3607 CXXFLAGS="-DSOLARIS2=$solrev $CXXFLAGS"
3608 fi
3609
3610 fi
3611 AC_MSG_NOTICE([IPF-based transparent proxying enabled: $enable_ipf_transparent])
3612 SQUID_DEFINE_BOOL(IPF_TRANSPARENT,$enable_ipf_transparent,
3613 [Enable support for IPF-style transparent proxying])
3614
3615 dnl PF /dev/pf support requires a header file.
3616 if test "x$with_nat_devpf" != "xno" ; then
3617 if test "x$ac_cv_header_net_pfvar_h" = "xyes" -o \
3618 "x$ac_cv_header_net_pf_pfvar_h" = "xyes"; then
3619 if test "x$with_nat_devpf" = "xauto" ; then
3620 with_nat_devpf="no"
3621 fi
3622 else
3623 if test "x$with_nat_devpf" = "xyes" ; then
3624 AC_MSG_ERROR([PF /dev/pf based NAT requested but needed header not found])
3625 fi
3626 with_nat_devpf="no"
3627 fi
3628 fi
3629 SQUID_DEFINE_BOOL(PF_TRANSPARENT,${enable_pf_transparent:=no},
3630 [Enable support for PF-style transparent proxying])
3631 SQUID_DEFINE_BOOL(USE_NAT_DEVPF,${with_nat_devpf:=no},
3632 [Enable support for /dev/pf NAT lookups])
3633
3634 if test "x$enable_linux_netfilter" != "xno" ; then
3635 if test "x$ac_cv_header_linux_netfilter_ipv4_h" = "xyes"; then
3636 if test "x$enable_linux_netfilter" = "xauto" ; then
3637 enable_linux_netfilter=yes
3638 fi
3639 else
3640 if test "x$enable_linux_netfilter" = "xauto" ; then
3641 enable_linux_netfilter=no
3642 else
3643 AC_MSG_ERROR([Linux Netfilter support requested but needed headers not found])
3644 fi
3645 fi
3646 fi
3647 SQUID_DEFINE_BOOL(LINUX_NETFILTER,$enable_linux_netfilter,
3648 [Enable support for Transparent Proxy on Linux via Netfilter])
3649
3650 dnl Netfilter TPROXY depends on libcap but the NAT parts can still work.
3651 AC_MSG_NOTICE([Support for Netfilter-based interception proxy requested: $enable_linux_netfilter])
3652 if test "x$enable_linux_netfilter" = "xyes" -a "x$with_libcap" != "xyes" ; then
3653 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for TPROXY])
3654 AC_MSG_WARN([Linux Transparent Proxy (version 4+) support WILL NOT be enabled])
3655 AC_MSG_WARN([Reduced support to NAT Interception Proxy])
3656 # AC_DEFINEd later
3657 fi
3658
3659 if test "x$squid_opt_netfilterconntrack" = "xyes" -a "x$with_libcap" != "xyes" ; then
3660 AC_MSG_ERROR([Linux netfilter conntrack requires libcap support (libcap 2.09+)])
3661 fi
3662 if test "x$with_netfilter_conntrack" = "xyes" -a "x$with_libcap" != "xyes" ; then
3663 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for netfilter mark support])
3664 AC_MSG_WARN([Linux netfilter marking support WILL NOT be enabled])
3665 with_netfilter_conntrack=no
3666 fi
3667 AC_MSG_NOTICE([Linux Netfilter Conntrack support enabled: ${with_netfilter_conntrack} ${squid_opt_netfilterconntrackpath}])
3668
3669
3670 AC_ARG_ENABLE(zph-qos,
3671 AS_HELP_STRING([--enable-zph-qos],[Enable ZPH QOS support]), [
3672 SQUID_YESNO([$enableval],
3673 [unrecognized argument to --enable-zph-qos: $enableval])
3674 ])
3675 SQUID_DEFINE_BOOL(USE_QOS_TOS,${enable_zph_qos:=yes},
3676 [Enable Zero Penalty Hit QOS. When set, Squid will alter the
3677 TOS field of HIT responses to help policing network traffic])
3678 AC_MSG_NOTICE([ZPH QOS enabled: $enable_zph_qos])
3679 if test x"$enable_zph_qos" = "xyes" ; then
3680 AC_MSG_NOTICE([QOS netfilter mark preservation enabled: $with_netfilter_conntrack])
3681 SQUID_DEFINE_BOOL(USE_LIBNETFILTERCONNTRACK,${with_netfilter_conntrack:=no},
3682 [Enable support for QOS netfilter mark preservation])
3683 fi
3684
3685
3686 AC_CHECK_LIB(regex, regexec, [REGEXLIB="-lregex"],[REGEXLIB=''])
3687 AC_ARG_ENABLE(gnuregex,
3688 AS_HELP_STRING([--enable-gnuregex],
3689 [Compile GNUregex. Unless you have reason to use
3690 this option, you should not enable it.
3691 This library file is usually only required on Windows and
3692 very old Unix boxes which do not have their own regex
3693 library built in.]), [
3694 SQUID_YESNO([$enableval],[unrecognized argument to --enable-gnuregex: $enableval])
3695 ])
3696 # force-enable on old solaris and nextstep
3697 if test "x${enable_gnuregex:=auto}" = "xauto" ; then
3698 case "$host" in
3699 *-sun-solaris2.[[0-4]])
3700 enable_gnuregex="yes"
3701 ;;
3702 *-next-nextstep*)
3703 enable_gnuregex="yes"
3704 ;;
3705 esac
3706 fi
3707
3708 # try detecting if it is needed
3709 if test "x$enable_gnuregex" = "xauto" ; then
3710 SQUID_CHECK_REGEX_WORKS
3711 if test "x$squid_cv_regex_works" = "xyes" ; then
3712 enable_gnuregex=no
3713 else
3714 enable_gnuregex=yes
3715 fi
3716 fi
3717 AC_MSG_CHECKING(if GNUregex needs to be compiled)
3718 AC_MSG_RESULT($enable_gnuregex)
3719 if test "x$enable_gnuregex" = "xyes"; then
3720 # for some reason (force-enable, test..) gnuregex was found as needed. Override any system lib
3721 REGEXLIB=""
3722 fi
3723 #if no reason was found to enable gnuregex, disable it
3724 if test "x$enable_gnuregex" = "xauto" ; then
3725 enable_gnuregex=no
3726 fi
3727 SQUID_DEFINE_BOOL(USE_GNUREGEX,$enable_gnuregex,[Define if we should use GNU regex])
3728 AC_SUBST(REGEXLIB)
3729
3730 SQUID_DETECT_UDP_SND_BUFSIZE
3731 SQUID_DETECT_UDP_RECV_BUFSIZE
3732 SQUID_DETECT_TCP_SND_BUFSIZE
3733 SQUID_DETECT_TCP_RECV_BUFSIZE
3734
3735 SQUID_CHECK_RECV_ARG_TYPE
3736 SQUID_CHECK_NEED_SYS_ERRLIST
3737 SQUID_CHECK_MAXPATHLEN
3738
3739 SQUID_CHECK_LIBRESOLV_DNS_TTL_HACK
3740 SQUID_CHECK_RESOLVER_FIELDS
3741
3742 AC_CHECK_HEADERS(sys/statvfs.h)
3743 if test "x$ac_cv_header_sys_statvfs_h" = "xyes" ; then
3744 SQUID_CHECK_WORKING_STATVFS
3745 fi
3746 if test "x$ac_cv_func_statvfs" != "xyes" ; then
3747 AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/vfs.h sys/statfs.h)
3748 AC_CHECK_FUNCS(statfs)
3749 SQUID_CHECK_F_FRSIZE_IN_STATFS
3750 fi
3751
3752 dnl Squid will not usually attempt to translate templates when building
3753 AC_ARG_ENABLE(translation,
3754 AS_HELP_STRING([--enable-translation],[Generate the localized error page templates and manuals.
3755 Which can also be downloaded from http://www.squid-cache.org/Versions/langpack/.]), [
3756 SQUID_YESNO([$enableval],
3757 [unrecognized argument to --enable-translation: $enableval])
3758 ])
3759 if test "x${enable_translation:=no}" = "xyes" ; then
3760 AX_WITH_PROG([PO2HTML],[po2html])
3761 AX_WITH_PROG([PO2TEXT],[po2txt])
3762 else
3763 PO2HTML="off"
3764 PO2TEXT="off"
3765 fi
3766 AC_SUBST(PO2HTML)
3767 AC_SUBST(PO2TEXT)
3768
3769 dnl Squid now has limited locale handling ...
3770 dnl on error pages
3771 AC_ARG_ENABLE(auto-locale,
3772 AS_HELP_STRING([--disable-auto-locale],[This prevents Squid providing localized error pages based on the
3773 clients request headers.
3774 When disabled Squid requires explicit language configuration.]), [
3775 SQUID_YESNO([$enableval],
3776 [unrecognized argument to --disable-auto-locale: $enableval])
3777 ])
3778 AC_MSG_NOTICE([Multi-Language support enabled: ${enable_auto_locale:=yes}])
3779 SQUID_DEFINE_BOOL(USE_ERR_LOCALES,$enable_auto_locale,
3780 [Use multi-language support on error pages])
3781
3782
3783 dnl Need the debugging version of malloc if available
3784 XTRA_OBJS=''
3785 if test "x$ac_cv_lib_malloc_main" = "xyes" ; then
3786 if test -r /usr/lib/debug/malloc.o ; then
3787 XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/malloc.o"
3788 fi
3789 if test -r /usr/lib/debug/mallocmap.o ; then
3790 XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/mallocmap.o"
3791 fi
3792 fi
3793 AC_SUBST(XTRA_OBJS)
3794
3795 if test "x$XTRA_LIBS" = "x"; then
3796 XTRA_LIBS="$LIBS"
3797 dnl minor cleanup
3798 XTRA_LIBS=`echo $XTRA_LIBS | sed -e "s/ */ /g"`
3799 LIBS=''
3800 fi
3801 AC_SUBST(XTRA_LIBS)
3802
3803 AC_SUBST(SQUID_CFLAGS)
3804 AC_SUBST(SQUID_CXXFLAGS)
3805
3806 AC_ARG_VAR([BUILDCXXFLAGS],[C++ compiler flags for building compile-time tools. e.g. cf_gen])
3807 if test "x$BUILDCXXFLAGS" = "x"; then
3808 # if we are NOT cross-compiling, use the default build flags for cf_gen and friends
3809 # otherwise rely on the user-provided value
3810 if test "x$squid_cv_check_marchnative" = "xyes"; then
3811 # always valid for the Build compiler.
3812 BUILDCXXFLAGS="-march=native"
3813 fi
3814 BUILDCXXFLAGS="$BUILDCXXFLAGS $CXXFLAGS"
3815 fi
3816 AC_SUBST(BUILDCXXFLAGS)
3817
3818 AC_MSG_NOTICE([BUILD LIBRARIES: $LIBS])
3819 AC_MSG_NOTICE([BUILD EXTRA LIBRARIES: $XTRA_LIBS])
3820 AC_MSG_NOTICE([BUILD OBJECTS: $OBJS])
3821 AC_MSG_NOTICE([BUILD EXTRA OBJECTS: $XTRA_OBJS])
3822 AC_MSG_NOTICE([BUILD C FLAGS: $CFLAGS])
3823 AC_MSG_NOTICE([BUILD EXTRA C FLAGS: $SQUID_CFLAGS])
3824 AC_MSG_NOTICE([BUILD C++ FLAGS: $CXXFLAGS])
3825 AC_MSG_NOTICE([BUILD EXTRA C++ FLAGS: $SQUID_CXXFLAGS])
3826 AC_MSG_NOTICE([BUILD Tools C++ FLAGS: $BUILDCXXFLAGS])
3827
3828 dnl Clean up after OSF/1 core dump bug
3829 rm -f core
3830
3831 AC_CONFIG_FILES([
3832 Makefile
3833 compat/Makefile
3834 contrib/Makefile
3835 doc/Makefile
3836 doc/manuals/Makefile
3837 doc/release-notes/Makefile
3838 errors/Makefile
3839 icons/Makefile
3840 lib/Makefile
3841 lib/libTrie/Makefile
3842 lib/libTrie/test/Makefile
3843 lib/ntlmauth/Makefile
3844 lib/profiler/Makefile
3845 lib/rfcnb/Makefile
3846 lib/smblib/Makefile
3847 lib/snmplib/Makefile
3848 scripts/Makefile
3849 src/Makefile
3850 src/acl/Makefile
3851 src/acl/external/Makefile
3852 src/acl/external/AD_group/Makefile
3853 src/acl/external/delayer/Makefile
3854 src/acl/external/eDirectory_userip/Makefile
3855 src/acl/external/file_userip/Makefile
3856 src/acl/external/kerberos_ldap_group/Makefile
3857 src/acl/external/kerberos_sid_group/Makefile
3858 src/acl/external/LDAP_group/Makefile
3859 src/acl/external/LM_group/Makefile
3860 src/acl/external/session/Makefile
3861 src/acl/external/SQL_session/Makefile
3862 src/acl/external/unix_group/Makefile
3863 src/acl/external/wbinfo_group/Makefile
3864 src/acl/external/time_quota/Makefile
3865 src/adaptation/Makefile
3866 src/adaptation/icap/Makefile
3867 src/adaptation/ecap/Makefile
3868 src/anyp/Makefile
3869 src/auth/Makefile
3870 src/auth/basic/Makefile
3871 src/auth/basic/DB/Makefile
3872 src/auth/basic/fake/Makefile
3873 src/auth/basic/getpwnam/Makefile
3874 src/auth/basic/LDAP/Makefile
3875 src/auth/basic/NCSA/Makefile
3876 src/auth/basic/NIS/Makefile
3877 src/auth/basic/PAM/Makefile
3878 src/auth/basic/POP3/Makefile
3879 src/auth/basic/RADIUS/Makefile
3880 src/auth/basic/SASL/Makefile
3881 src/auth/basic/SMB/Makefile
3882 src/auth/basic/SMB_LM/Makefile
3883 src/auth/basic/SSPI/Makefile
3884 src/auth/digest/Makefile
3885 src/auth/digest/eDirectory/Makefile
3886 src/auth/digest/file/Makefile
3887 src/auth/digest/LDAP/Makefile
3888 src/auth/negotiate/Makefile
3889 src/auth/negotiate/kerberos/Makefile
3890 src/auth/negotiate/SSPI/Makefile
3891 src/auth/negotiate/wrapper/Makefile
3892 src/auth/ntlm/Makefile
3893 src/auth/ntlm/fake/Makefile
3894 src/auth/ntlm/SMB_LM/Makefile
3895 src/auth/ntlm/SSPI/Makefile
3896 src/base/Makefile
3897 src/clients/Makefile
3898 src/comm/Makefile
3899 src/dns/Makefile
3900 src/DiskIO/Makefile
3901 src/DiskIO/AIO/Makefile
3902 src/DiskIO/Blocking/Makefile
3903 src/DiskIO/DiskDaemon/Makefile
3904 src/DiskIO/DiskThreads/Makefile
3905 src/DiskIO/IpcIo/Makefile
3906 src/DiskIO/Mmapped/Makefile
3907 src/error/Makefile
3908 src/esi/Makefile
3909 src/eui/Makefile
3910 src/format/Makefile
3911 src/fs/Makefile
3912 src/ftp/Makefile
3913 src/helper/Makefile
3914 src/http/Makefile
3915 src/http/one/Makefile
3916 src/http/url_rewriters/Makefile
3917 src/http/url_rewriters/fake/Makefile
3918 src/http/url_rewriters/LFS/Makefile
3919 src/icmp/Makefile
3920 src/ident/Makefile
3921 src/ip/Makefile
3922 src/ipc/Makefile
3923 src/log/Makefile
3924 src/log/DB/Makefile
3925 src/log/file/Makefile
3926 src/mem/Makefile
3927 src/mgr/Makefile
3928 src/parser/Makefile
3929 src/proxyp/Makefile
3930 src/repl/Makefile
3931 src/sbuf/Makefile
3932 src/security/Makefile
3933 src/security/cert_generators/Makefile
3934 src/security/cert_generators/file/Makefile
3935 src/security/cert_validators/Makefile
3936 src/security/cert_validators/fake/Makefile
3937 src/servers/Makefile
3938 src/snmp/Makefile
3939 src/ssl/Makefile
3940 src/store/Makefile
3941 src/store/id_rewriters/Makefile
3942 src/store/id_rewriters/file/Makefile
3943 test-suite/Makefile
3944 tools/Makefile
3945 tools/apparmor/Makefile
3946 tools/helper-mux/Makefile
3947 tools/purge/Makefile
3948 tools/squidclient/Makefile
3949 tools/systemd/Makefile
3950 tools/sysvinit/Makefile
3951 ])
3952
3953 # must configure libltdl subdir unconditionally for "make distcheck" to work
3954 #AC_CONFIG_SUBDIRS(libltdl)
3955
3956 AC_OUTPUT