]> git.ipfire.org Git - thirdparty/squid.git/blob - configure.ac
Maintenance: update --with-nettle detection (#1708)
[thirdparty/squid.git] / configure.ac
1 ## Copyright (C) 1996-2023 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],[7.0.0-VCS],[https://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/ldap.m4])
25 m4_include([acinclude/pam.m4])
26 m4_include([acinclude/pkg.m4])
27 m4_include([acinclude/tdb.m4])
28 m4_include([acinclude/lib-checks.m4])
29 m4_include([acinclude/ax_cxx_compile_stdcxx.m4])
30 m4_include([acinclude/win32-sspi.m4])
31
32 PRESET_CFLAGS="$CFLAGS"
33 PRESET_CXXFLAGS="$CXXFLAGS"
34 PRESET_LDFLAGS="$LDFLAGS"
35
36 dnl Set default LDFLAGS
37 AS_IF([test "x$LDFLAGS" = "x"],[LDFLAGS="-g"])
38
39 # check for host OS detail
40 AC_CANONICAL_HOST
41 AC_MSG_CHECKING([simplified host os])
42 simple_host_os=`echo $host_os|sed 's/[0-9].*//g;s/-.*//g'`
43 squid_host_os_version=`echo $host_os|tr -d "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-"`
44 AS_IF([test -n "$squid_host_os_version"],[
45 squid_host_os="`echo $simple_host_os| sed s/$squid_host_os_version//g`"
46 ],[
47 squid_host_os="$simple_host_os"
48 ])
49 AC_MSG_RESULT($squid_host_os (version $squid_host_os_version))
50 # on windows squid_host_os is either mingw or cygwin, version is 32
51
52 AC_PROG_CC
53 AM_PROG_CC_C_O
54 AC_PROG_CXX
55
56 # AC_USE_SYSTEM_EXTENSIONS should be called before any macros that run the C compiler.
57 AC_USE_SYSTEM_EXTENSIONS
58
59 AC_LANG([C++])
60
61 # Clang 3.2 on some CPUs requires -march-native to detect correctly.
62 # GCC 4.3+ can also produce faster executables when its used.
63 # But building inside a virtual machine environment has been found to
64 # cause random Illegal Instruction errors due to mis-detection of CPU.
65 AC_ARG_ENABLE(arch-native,
66 AS_HELP_STRING([--disable-arch-native],[Some compilers offer CPU-specific
67 optimizations with the -march=native parameter.
68 This flag disables the optimization. The default is to
69 auto-detect compiler support and use where available.]), [
70 SQUID_YESNO([$enableval],[--enable-arch-native])
71 ])
72 AC_MSG_NOTICE([CPU arch native optimization enabled: ${enable_arch_native:=auto}])
73 AS_IF([test "x${enable_arch_native}" != "xno"],[
74 SQUID_CC_CHECK_ARGUMENT([squid_cv_check_marchnative],[-march=native])
75 ])
76
77 # If the user did not specify a C++ version.
78 user_cxx=`echo "$PRESET_CXXFLAGS" | grep -o -E "(-)std="`
79 AS_IF([test "x$user_cxx" = "x"],[
80 # Check for C++17 compiler support
81 # May change CXX.
82 AX_CXX_COMPILE_STDCXX([17],[noext],[mandatory])
83 ])
84
85 # Prerequisite: CXX has been finalized.
86 # BUILDCXXFLAGS are defined later, after CXXFLAGS have been finalized.
87 AC_ARG_VAR([BUILDCXX],[path to compiler for building compile-time tools. e.g. cf_gen])
88 AS_IF([test "x$HOSTCXX" != "x" -a "x$BUILDCXX" = "x"],[
89 AC_MSG_WARN([Cross-compiling with HOSTCXX is deprecated. Use BUILDCXX instead.])
90 BUILDCXX="$HOSTCXX"
91 ])
92 AS_IF([test "x$BUILDCXX" = "x"],[
93 BUILDCXX="$CXX"
94 AS_IF([test "x$squid_cv_check_marchnative" = "xyes"],[
95 CXXFLAGS="$CXXFLAGS -march=native"
96 ])
97 ])
98 AC_SUBST(BUILDCXX)
99
100 # test for programs
101 AC_PROG_RANLIB
102 AC_PROG_CPP
103 AC_PROG_INSTALL
104 AC_PROG_LN_S
105 AC_PROG_EGREP
106
107 AC_PATH_PROG(SH, sh, /bin/sh)
108 AC_PATH_PROG(FALSE, false, /usr/bin/false)
109 AC_PATH_PROG(TRUE, true, /usr/bin/true)
110 AC_PATH_PROG(MV, mv, $FALSE)
111 AC_PATH_PROG(MKDIR, mkdir, $FALSE)
112 AC_PATH_PROG(LN, ln, cp)
113 AC_PATH_PROG(CHMOD, chmod, $FALSE)
114 AC_PATH_PROG(TR, tr, $FALSE)
115 AC_PATH_PROG(RM, rm, $FALSE)
116 dnl Libtool 2.2.6 requires: rm -f
117 RM="$RM -f"
118
119 PKG_PROG_PKG_CONFIG
120
121 AC_PATH_PROG(PERL, perl, none)
122 AS_IF([test "x$ac_cv_path_PERL" = "xnone"],[
123 AC_MSG_FAILURE([Perl is required to compile Squid. Please install Perl and then re-run configure ])
124 ])
125 AC_PATH_PROG(POD2MAN, pod2man, $FALSE)
126 AM_CONDITIONAL(ENABLE_POD2MAN_DOC, test "x${ac_cv_path_POD2MAN}" != "x$FALSE")
127
128 AC_PATH_PROG(AR, ar, $FALSE)
129 AR_R="$AR r"
130 AC_SUBST(AR_R)
131
132 AC_PATH_PROG(LINUXDOC, linuxdoc, $FALSE)
133 AM_CONDITIONAL(ENABLE_RELEASE_DOCS, test "x${ac_cv_path_LINUXDOC}" != "x$FALSE")
134
135 SQUID_RELEASE=`echo $VERSION | cut -d. -f1`
136 AC_SUBST(SQUID_RELEASE)
137
138 # pre-define DEFAULT_PREFIX, some modules need it.
139 AS_IF([test "${prefix}" = "NONE"],[squid_prefix=$ac_default_prefix],[squid_prefix=$prefix])
140 AC_DEFINE_UNQUOTED(DEFAULT_PREFIX,[$squid_prefix],[The install prefix])
141
142 AC_ARG_ENABLE(strict-error-checking,
143 AS_HELP_STRING([--disable-strict-error-checking],[By default squid is compiled
144 with all possible static compiler error-checks enabled.
145 This flag disables the behavior]), [
146 SQUID_YESNO([$enableval],[--enable-strict-error-checking])
147 ])
148 AC_MSG_NOTICE([strict error checking enabled: ${enable_strict_error_checking:=yes}])
149
150 # LT_INIT requires libtool v2, might as well state it loud
151 LT_PREREQ([2.2])
152 LT_INIT([dlopen])
153 AS_IF([test "x$ac_top_build_prefix" != "x"],[
154 # LTDL v3-v7 macros assume the autoconf 2.62 variable top_build_prefix is defined
155 # But from autoconf 2.64 its called ac_top_build_prefix and not automatically added to the Makefile
156 # This fixes Linux LTDLv3-v7, and BSD LTDL v2.2
157 top_build_prefix=${ac_top_build_prefix}
158 AC_SUBST(top_build_prefix)
159 ])
160 LTDL_INIT
161
162 dnl LibTool environment is now prepared for setup. Check that it is usable and initialize.
163 LT_LIB_DLLOAD
164
165 # Do we need these unconditionally for "make distcheck" to work?
166 AC_SUBST(INCLTDL)
167 AC_SUBST(LIBLTDL)
168
169 AC_MSG_CHECKING(whether to use loadable modules)
170 AS_IF([test "x${enable_shared:=yes}" = "xyes"],[AC_DEFINE(USE_LOADABLE_MODULES,1,[Support Loadable Modules])])
171 AM_CONDITIONAL(ENABLE_LOADABLE_MODULES, test "x${enable_shared:=yes}" = "xyes")
172 AC_MSG_RESULT([$enable_shared])
173
174 SQUID_CC_GUESS_VARIANT
175 SQUID_CC_GUESS_OPTIONS
176
177 dnl find out the exe extension for this platform.
178 dnl If it is not empty, use it for CGI as well.
179 AC_EXEEXT
180 AC_OBJEXT
181 AS_IF([test "x$EXEEXT" = "x"],[CGIEXT=".cgi"],[CGIEXT=""])
182 AC_SUBST(CGIEXT)
183
184 AM_CONDITIONAL(ENABLE_WIN32SPECIFIC,[test "x$squid_host_os" = "xmingw"])
185 AM_CONDITIONAL(ENABLE_WIN32_IPC,[test "x$squid_host_os" = "xmingw"])
186
187 AS_CASE(["$squid_host_os"],
188 [mingw],[
189 CFLAGS="$CFLAGS -mthreads"
190 CXXFLAGS="$CXXFLAGS -mthreads -static-libgcc -static-libstdc++"
191 dnl Check for Winsock only on MinGW
192 SQUID_CHECK_WINSOCK_LIB
193 AC_CHECK_HEADERS([ws2tcpip.h winsock2.h windows.h io.h],,,[
194 #if HAVE_WS2TCPIP_H
195 #include <ws2tcpip.h>
196 #endif
197 #if HAVE_WINSOCK2_H
198 #include <winsock2.h>
199 #endif
200 #if HAVE_WINDOWS_H
201 #include <windows.h>
202 #endif
203 ])
204 MINGW_LIBS="-lmingwex"
205 AC_SUBST(MINGW_LIBS)
206 AC_CHECK_FUNCS([fsync])
207 ],
208
209 [freebsd],[
210 # FreeBSD places local libraries and packages in /usr/local
211 CFLAGS="$CFLAGS -I/usr/local/include"
212 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
213 LDFLAGS="$LDFLAGS -L/usr/local/lib -Wl,-R/usr/local/lib"
214 ]
215 )
216
217 dnl Substitutions
218 AC_DEFINE_UNQUOTED(CONFIG_HOST_TYPE, "$host",[Host type from configure])
219
220 AC_DEFINE_UNQUOTED(SQUID_CONFIGURE_OPTIONS, "$ac_configure_args",
221 [configure command line used to configure Squid])
222
223 CACHE_EFFECTIVE_USER="nobody"
224 AC_ARG_WITH(default-user,
225 AS_HELP_STRING([--with-default-user=USER],[System user account for squid permissions. Default: nobody]),
226 [ CACHE_EFFECTIVE_USER="$withval" ]
227 )
228 AC_SUBST(CACHE_EFFECTIVE_USER)
229
230 DEFAULT_LOG_DIR="$localstatedir/logs"
231 AC_ARG_WITH(logdir,
232 AS_HELP_STRING([--with-logdir=PATH],
233 [Default location for squid logs. default: PREFIX/var/logs]),[
234 AS_CASE([$withval],
235 [yes|no],[AC_MSG_ERROR([--with-logdir requires a directory PATH. --with-logdir=PATH])],
236 [DEFAULT_LOG_DIR="$withval"]
237 )
238 ])
239 AC_SUBST(DEFAULT_LOG_DIR)
240
241 DEFAULT_PID_FILE="$localstatedir/run/@SERVICE_NAME@.pid"
242 AC_ARG_WITH(pidfile,
243 AS_HELP_STRING([--with-pidfile=PATH],
244 [Default location for squid pid file. Default: PREFIX/var/run/squid.pid]),[
245 AS_CASE([$withval],
246 [yes|no],[AC_MSG_ERROR([--with-pidfile requires a file PATH. --with-pidfile=PATH])],
247 [DEFAULT_PID_FILE="$withval"]
248 )
249 ])
250 AC_SUBST(DEFAULT_PID_FILE)
251
252 DEFAULT_SWAP_DIR="$localstatedir/cache/squid"
253 AC_ARG_WITH(swapdir,
254 AS_HELP_STRING([--with-swapdir=PATH],
255 [Default location for squid cache directories. Default: PREFIX/var/cache/squid]),[
256 AS_CASE([$withval],
257 [yes|no],[AC_MSG_ERROR([--with-swapdir requires a directory PATH. --with-swapdir=PATH])],
258 [DEFAULT_SWAP_DIR="$withval"]
259 )
260 ])
261 AC_SUBST(DEFAULT_SWAP_DIR)
262
263 dnl Set Default CFLAGS
264 AS_IF([test "x$PRESET_CFLAGS" = "x"],[
265 AS_IF([test "$squid_cv_compiler" = "gcc"],[
266 # TODO check if these exceptions are still necessary
267 AS_CASE(["$host"],
268 [*-sun-sunos*],[
269 # sunos has too many warnings for -Wall to be useful
270 ],
271 [CFLAGS="$squid_cv_cc_option_wall $CFLAGS"]
272 )
273 ],[
274 AS_CASE(["$host"],
275 [*mips-sgi-irix6.*],[
276 # suggested by Rafael Seidl <rafaels@cthulhu.engr.sgi.com>
277 CFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
278 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
279 -Wl,-woff,85,-woff,84,-woff,134 \
280 -nostdinc -I/usr/include -D_BSD_SIGNALS $CFLAGS"
281 CXXFLAGS="$squid_cv_cc_option_optimize -OPT:Olimit=0:space=OFF \
282 -woff 1009,1014,1110,1116,1183,1185,1188,1204,1230,1233,1355 \
283 -Wl,-woff,85,-woff,84,-woff,134 \
284 -nostdinc -I/usr/include -D_BSD_SIGNALS $CXXFLAGS"
285 ])
286 ])
287 ])
288
289 AC_MSG_CHECKING([compiler name-version])
290 squid_cv_cc_name=`$CC --version | head -1 | cut -f1 -d" "`
291 AS_CASE([$squid_cv_cc_name],
292 [gcc|clang],[squid_cv_cc_majversion=`$CC -dumpversion | cut -f1 -d.`],
293 [squid_cv_cc_majversion="unknown"]
294 )
295 squid_cv_cc_simplified="$squid_cv_cc_name-$squid_cv_cc_majversion"
296 AC_MSG_RESULT($squid_cv_cc_simplified)
297
298 # warning flags
299
300 # -Wall
301 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([$squid_cv_cc_option_wall])
302
303 # -Wextra
304 AS_IF([test "$squid_cv_cc_simplified" = "gcc-4"],[
305 AC_MSG_NOTICE([skipping -Wextra on $squid_cv_cc_simplified])
306 ],[
307 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wextra])
308
309 # Now disable or configure certain warnings enabled by -Wextra
310
311 # -Wunused-private-field causes a huge number of false positives
312 # in unit tests. Disable that
313 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wno-unused-private-field])
314
315 # ...=5: Do not trust comments about fallthrough cases (GCC).
316 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wimplicit-fallthrough=5])
317 AS_IF([test "x$squid_cv_cc_arg_wimplicit_fallthrough_5" != "xyes"], [
318 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wno-implicit-fallthrough])
319 ])
320 ])
321
322 # useful warnings that may not be included in -Wall -Wextra
323 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wpointer-arith])
324 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wwrite-strings])
325 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wcomments])
326 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wshadow])
327 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Wmissing-declarations])
328 SQUID_CC_ADD_CXXFLAG_WARNING_IF_SUPPORTED([-Woverloaded-virtual])
329
330 dnl CentOS (and RHEL) still define ntohs() using deprecated C++ features
331 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_wno_deprecated_register],[-Werror -Wno-deprecated-register],[[#include <arpa/inet.h>]],[[int fox=ntohs(1);]])
332
333 AS_IF([test "x$enable_strict_error_checking" != "xno"],[
334 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_option_werror"
335 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cxx_option_werror"
336 ])
337
338 AS_IF([test "x$ac_cv_require_wno_deprecated_register" = "xyes"],[
339 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -Wno-deprecated-register"
340 ])
341
342 # squid_cv_cc_arg_pipe is set by SQUID_CC_GUESS_OPTIONS
343 SQUID_CXXFLAGS="$SQUID_CXXFLAGS $squid_cv_cc_arg_pipe"
344 SQUID_CFLAGS="$SQUID_CFLAGS $squid_cv_cc_arg_pipe"
345
346 # possibly include some build info tag into squid -v
347 SQUID_EMBED_BUILD_INFO
348
349 AC_ARG_ENABLE(optimizations,
350 AS_HELP_STRING([--disable-optimizations],
351 [Do not compile Squid with compiler optimizations enabled.
352 Optimization is good for production builds, but not
353 good for debugging. During development, use
354 --disable-optimizations to reduce compilation times
355 and allow easier debugging.]), [
356 AS_IF([test "x$enableval" = "xno"],[
357 AC_MSG_NOTICE([Disabling compiler optimizations (-O flag)])
358 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9g]]*//'`"
359 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-O[[0-9g]]*//'`"
360 ])
361 ])
362
363 dnl Nasty hack to get autoconf 2.64 on Linux to run.
364 dnl all other uses of RUN_IFELSE are wrapped inside CACHE_CHECK which breaks on 2.64
365 AC_RUN_IFELSE([AC_LANG_SOURCE([[ int main(int argc, char **argv) { return 0; } ]])],[],[],[:])
366
367 AH_TEMPLATE(XMALLOC_STATISTICS,[Define to have malloc statistics])
368 AC_ARG_ENABLE(xmalloc-statistics,
369 AS_HELP_STRING([--enable-xmalloc-statistics],
370 [Show malloc statistics in status page]), [
371 SQUID_YESNO([$enableval],[--enable-xmalloc-statistics])
372 ])
373 SQUID_DEFINE_BOOL(XMALLOC_STATISTICS,${enable_xmalloc_statistics:=no},
374 [Show malloc statistics in status page])
375 AC_MSG_NOTICE([xmalloc stats display: $enable_xmalloc_statistics])
376
377 squid_opt_aufs_threads=""
378 AC_ARG_WITH(aufs-threads,
379 AS_HELP_STRING([--with-aufs-threads=N_THREADS],
380 [Tune the number of worker threads for the aufs object store.]), [
381 AS_CASE([$withval],
382 [@<:@0-9@:>@*],[squid_opt_aufs_threads=$withval],
383 AC_MSG_ERROR(--with-aufs-threads expects a numeric argument)
384 )
385 ])
386 AS_IF([test "x$squid_opt_aufs_threads" != "x"],[
387 AC_MSG_NOTICE([With $squid_opt_aufs_threads aufs threads])
388 AC_DEFINE_UNQUOTED(AUFS_IO_THREADS,$squid_opt_aufs_threads,
389 [Defines how many threads aufs uses for I/O])
390 ])
391
392 ## TODO check if this is necessary, LT_INIT does these checks
393 SQUID_AUTO_LIB(dl,[dynamic linking],[LIBDL])
394 SQUID_CHECK_LIB_WORKS(dl,[
395 LDFLAGS="$LIBDL_PATH $LDFLAGS"
396 AC_CHECK_LIB(dl, dlopen,[LIBDL_LIBS="-ldl"])
397 LIBS="$LIBDL_LIBS $LIBS"
398 ])
399
400 AC_DEFUN([LIBATOMIC_CHECKER],[
401 AC_MSG_CHECKING(whether linking $1 -latomic works)
402 AC_LINK_IFELSE([
403 AC_LANG_SOURCE([[
404 #include <atomic>
405 #include <cstdint>
406 int
407 main(int argc, char **) {
408 return (
409 std::atomic<uint8_t>(uint8_t(argc)).exchange(0) &&
410 std::atomic<uint64_t>{}.is_lock_free()
411 ) ? 0 : 1;
412 }
413 ]])],[
414 AC_MSG_RESULT(yes)
415 libatomic_checker_result="yes"],[
416 AC_MSG_RESULT(no)
417 libatomic_checker_result="no"
418 ])])
419
420 ## check for atomics library before anything that might need it
421 SQUID_STATE_SAVE(LIBATOMIC)
422 LIBATOMIC_CHECKER(without)
423 AS_IF([test "x$libatomic_checker_result" = "xno"],[
424 LIBS="$LIBS -latomic"
425 LIBATOMIC_CHECKER(with)
426 AS_IF([test "x$libatomic_checker_result" = "xyes"],[
427 ATOMICLIB="-latomic"],[
428 AC_MSG_ERROR([Required library libatomic not found.])
429 ])])
430 SQUID_STATE_ROLLBACK(LIBATOMIC)
431 AC_SUBST(ATOMICLIB)
432
433 SQUID_AUTO_LIB(psapi,[Windows PSAPI.dll],[LIBPSAPI])
434 AS_IF([test "x$with_psapi" != "xno"],[
435 SQUID_STATE_SAVE(squid_psapi_state)
436 CPPFLAGS="$LIBPSAPI_CFLAGS $CPPFLAGS"
437 LIBS="$LIBPSAPI_PATH $LIBS"
438 AC_CHECK_LIB([psapi],[K32GetProcessMemoryInfo],[LIBPSAPI_LIBS="-lpsapi"])
439 AC_CHECK_HEADER([psapi.h],,,[
440 #if HAVE_WINDOWS_H
441 #include <windows.h>
442 #endif
443 ])
444 SQUID_STATE_ROLLBACK(squid_psapi_state)
445 AS_IF([test "x$LIBPSAPI_LIBS" != "x"],[
446 CXXFLAGS="$LIBPSAPI_CFLAGS $CXXFLAGS"
447 LIBPSAPI_LIBS="$LIBPSAPI_PATH $LIBPSAPI_LIBS"
448 ],[test "x$with_psapi" = "xyes"],[
449 AC_MSG_ERROR([Required library PSAPI.dll not found])
450 ],[
451 AC_MSG_NOTICE([Library PSAPI.dll not found.])
452 ])
453 ])
454 AC_MSG_NOTICE([Using Windows PSAPI.dll library: ${with_psapi:=auto}])
455 AC_SUBST(LIBPSAPI_LIBS)
456
457 AC_SEARCH_LIBS([shm_open], [rt])
458 AS_IF([test "x$ac_cv_search_shm_open" != "xno"],[
459 AC_DEFINE(HAVE_SHM,1,[Support shared memory features])
460 ])
461
462 squid_disk_module_candidates=
463 AC_ARG_ENABLE(disk-io,
464 AS_HELP_STRING([--enable-disk-io="list of modules"],
465 [Build support for the list of disk I/O modules.
466 Set without a value or omitted, all available modules will be built.
467 See src/DiskIO for a list of available modules, or
468 Programmers Guide section on DiskIO
469 for details on how to build your custom disk module]),
470 AS_CASE(["$enableval"],
471 [yes],[],
472 [no|none],[enable_disk_io="no"],
473 [
474 enable_disk_io="yes"
475 squid_disk_module_candidates="$enableval"
476 ])
477 )
478 AS_IF([test "x${enable_disk_io:=yes}" = "xyes"],[
479 SQUID_LOOK_FOR_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
480 AS_IF([test "x$ac_cv_search_shm_open" = "xno"],[
481 squid_disk_module_candidates=`echo "$squid_disk_module_candidates" | sed 's/IpcIo//g'`
482 ])
483 ])
484 SQUID_CLEANUP_MODULES_LIST([squid_disk_module_candidates])
485 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/DiskIO],[squid_disk_module_candidates])
486 AC_MSG_NOTICE([DiskIO modules built: ${squid_disk_module_candidates:-none}])
487 SQUID_DEFINE_BOOL(USE_DISKIO,$enable_disk_io,[DiskIO modules are expected to be available.])
488
489 dnl Some autoconf.h defines we might enable later...
490 AC_ARG_WITH(pthreads,AS_HELP_STRING([--without-pthreads],[Disable POSIX Threads]))
491 AC_ARG_WITH(aio, AS_HELP_STRING([--without-aio],[Do not use POSIX AIO. Default: auto-detect]))
492 ENABLE_WIN32_AIOPS=0
493 squid_opt_use_aio=
494 squid_opt_use_diskthreads=
495 AIOLIB=
496
497 dnl Setup the module paths etc.
498 DISK_LIBS=
499 DISK_MODULES=
500 AH_TEMPLATE(HAVE_DISKIO_MODULE_AIO, [Whether POSIX AIO Disk I/O module is built])
501 AH_TEMPLATE(HAVE_DISKIO_MODULE_BLOCKING, [Whether Blocking Disk I/O module is built])
502 AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKDAEMON, [Whether DiskDaemon Disk I/O module is built])
503 AH_TEMPLATE(HAVE_DISKIO_MODULE_DISKTHREADS, [Whether DiskThreads Disk I/O module is built])
504 AH_TEMPLATE(HAVE_DISKIO_MODULE_IPCIO, [Whether IpcIo Disk I/O module is built])
505 AH_TEMPLATE(HAVE_DISKIO_MODULE_MMAPPED, [Whether Mmapped Disk I/O module is built])
506 for module in $squid_disk_module_candidates none; do
507 # maybe not needed
508 AS_IF([test "x$module" = "xnone"],[continue])
509 AS_IF([! test -d "$srcdir/src/DiskIO/$module"],[AC_MSG_ERROR([disk-io $module does not exist])])
510 AS_CASE(["$module"],
511 [AIO],[
512 dnl Check for POSIX AIO availability
513 squid_opt_use_aio="yes"
514 AIOLIB=
515 AS_IF([test "x$with_aio" != "xno"],[
516 have_aio_header=no
517 AC_CHECK_HEADERS(aio.h,[have_aio_header=yes])
518 dnl On some systems POSIX AIO functions are in librt
519 dnl On some systems POSIX AIO functions are in libaio
520 AC_CHECK_LIB(rt,aio_read,[AIOLIB="-lrt"],AC_CHECK_LIB(aio,aio_read,[AIOLIB="-laio"],[]))
521 dnl Enable AIO if the library and headers are found
522 AS_IF([test "x$AIOLIB" != "x" -a "x$have_aio_header" = "xyes"],[
523 AC_MSG_NOTICE([Native POSIX AIO support detected.])
524 squid_opt_use_aio="yes"
525 ],[
526 dnl Windows does things differently. We provide wrappers.
527 dnl TODO: Windows really needs its own DiskIO module or its Overlaped IO
528 AS_IF([test "$squid_host_os" = "mingw"],[
529 squid_opt_use_aio="yes"
530 AC_MSG_NOTICE([Windows being built. Maybe-enable POSIX AIO.])
531 ],[
532 squid_opt_use_aio="no"
533 AC_MSG_NOTICE([Native POSIX AIO support not detected. AIO automatically disabled.])
534 ])
535 ])
536 ],[
537 AC_MSG_NOTICE([POSIX AIO support manually disabled.])
538 squid_opt_use_aio="no"
539 ])
540 dnl Use the POSIX AIO pieces if we actually need them.
541 AS_IF([test "x$squid_opt_use_aio" = "xyes"],[
542 DISK_MODULES="$DISK_MODULES AIO"
543 AC_DEFINE([HAVE_DISKIO_MODULE_AIO],1,[POSIX AIO Disk I/O module is built])
544 AS_IF([test "$squid_host_os" = "mingw"],[
545 ENABLE_WIN32_AIO=1
546 AC_MSG_NOTICE([Replacing AIO DiskIO module with: Windows overlapped I/O support])
547 ],[
548 AC_MSG_NOTICE([Enabling AIO DiskIO module])
549 ])
550 ],[
551 AC_MSG_NOTICE([AIO DiskIO Module disabled. Missing POSIX AIO support.])
552 squid_disk_module_candidates_AIO=no
553 ])
554 ],
555
556 [Blocking],[
557 AC_MSG_NOTICE([Enabling Blocking DiskIO module])
558 DISK_MODULES="$DISK_MODULES Blocking"
559 AC_DEFINE([HAVE_DISKIO_MODULE_BLOCKING],1,[Blocking Disk I/O module is built])
560 ],
561
562 [DiskDaemon],[
563 AS_IF([test "$squid_host_os" = "mingw"],[
564 AC_MSG_NOTICE([DiskDaemon not supported on MinGW])
565 squid_disk_module_candidates_DiskDaemon=no
566 ],[
567 AC_MSG_NOTICE([Enabling DiskDaemon DiskIO module])
568 DISK_MODULES="$DISK_MODULES DiskDaemon"
569 AC_DEFINE([HAVE_DISKIO_MODULE_DISKDAEMON],1,[DiskDaemon Disk I/O module is built])
570 ])
571 ],
572
573 [DiskThreads],[
574 squid_opt_use_diskthreads="yes"
575 LIBPTHREADS=
576 SQUID_STATE_SAVE([diskthreads_state],[SQUID_CFLAGS SQUID_CXXFLAGS])
577 AS_IF([test "x$with_pthreads" != "xno"],[
578 dnl TODO: this needs to be extended to handle more systems and better
579 dnl REF: http://www.openldap.org/lists/openldap-bugs/200006/msg00070.html
580 dnl REF: http://autoconf-archive.cryp.to/acx_pthread.html
581 AS_CASE(["$squid_host_os"],
582 [mingw],[
583 ENABLE_WIN32_AIOPS=1
584 AC_MSG_NOTICE([Windows threads support automatically enabled])
585 ],
586
587 [freebsd],[
588 AS_IF([test `echo "$squid_host_os_version" | tr -d .` -lt 70],[
589 AC_MSG_NOTICE(pthread library requires FreeBSD 7 or later)
590 squid_opt_use_diskthreads="no"
591 ],[
592 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
593 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
594 AS_IF([test "x$GCC" = "xyes" -a "x$PRESET_LDFLAGS" = "x"],[LDFLAGS="$LDFLAGS -pthread"])
595 ])
596 ],
597
598 [openbsd],[
599 AS_IF([test `echo "$squid_host_os_version" | tr -d .` -lt 52],[
600 AC_MSG_NOTICE(pthread library requires OpenBSD 5.2 or later)
601 squid_opt_use_diskthreads="no"
602 ],[
603 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
604 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
605 LDFLAGS="$LDFLAGS -lpthread"
606 ])
607 ],
608
609 [solaris],[
610 AS_IF([test "x$GCC" = "xyes"],[
611 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -pthreads"
612 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -pthreads"
613 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
614 AC_MSG_NOTICE(pthread library required but cannot be found.)
615 squid_opt_use_diskthreads="no"
616 ])
617 ],[
618 dnl test for -lpthread first. libc version is a stub apparently on Solaris.
619 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT -lpthread"
620 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT -lpthread"
621 AC_SEARCH_LIBS([pthread_create],[pthread thread],[
622 LIBPTHREADS="" #in LIBS
623 ],[
624 AC_MSG_NOTICE(pthread library required but cannot be found.)
625 squid_opt_use_diskthreads="no"
626 ])
627 ])
628 ],
629
630 [
631 SQUID_CFLAGS="$SQUID_CFLAGS -D_REENTRANT"
632 SQUID_CXXFLAGS="$SQUID_CXXFLAGS -D_REENTRANT"
633 AC_CHECK_LIB(pthread, pthread_create ,[LIBPTHREADS="-lpthread"], [
634 AC_MSG_NOTICE(pthread library required but cannot be found.)
635 squid_opt_use_diskthreads="no"
636 ])
637 ]
638 )
639 ],[
640 AC_MSG_NOTICE([Native pthreads support manually disabled.])
641 squid_opt_use_diskthreads="no"
642 ])
643 AS_IF([test "x$squid_opt_use_diskthreads" = "xyes"],[
644 AC_MSG_NOTICE([Enabling DiskThreads DiskIO module])
645 DISK_MODULES="$DISK_MODULES DiskThreads"
646 AC_DEFINE([HAVE_DISKIO_MODULE_DISKTHREADS],1,[DiskThreads Disk I/O module is built])
647 ],[
648 AC_MSG_NOTICE([Native pthreads support disabled. DiskThreads module automaticaly disabled.])
649 SQUID_STATE_ROLLBACK([diskthreads_state])
650 squid_disk_module_candidates_DiskThreads=no
651 ])
652 ],
653
654 [IpcIo],[
655 AS_IF([test "x$ac_cv_search_shm_open" = "xno"],[
656 AC_MSG_NOTICE([DiskIO IpcIo module requires shared memory support])
657 squid_disk_module_candidates_IpcIo=no
658 ],[
659 AC_MSG_NOTICE([Enabling IpcIo DiskIO module])
660 DISK_MODULES="$DISK_MODULES IpcIo"
661 AC_DEFINE([HAVE_DISKIO_MODULE_IPCIO],1,[IpcIo Disk I/O module is built])
662 ])
663 ],
664
665 [Mmapped],[
666 dnl TODO: use availability of sys/mman.h and/or mmap to define
667 dnl OR support windows mmap functions
668 AS_IF([test "x$squid_host_os" = "xmingw"],[
669 AC_MSG_NOTICE([Mmapped DiskIO is not available on Mingw])
670 squid_disk_module_candidates_Mmapped=no
671 ],[
672 AC_MSG_NOTICE([Enabling Mmapped DiskIO module])
673 DISK_MODULES="$DISK_MODULES Mmapped"
674 AC_DEFINE([HAVE_DISKIO_MODULE_MMAPPED],1,[Mmapped Disk I/O module is built])
675 ])
676 ],
677
678 [
679 AC_MSG_NOTICE([Enabling $module DiskIO module])
680 DISK_LIBS="$DISK_LIBS lib${module}.la"
681 DISK_MODULES="$DISK_MODULES ${module}"
682 ])
683 done
684 AC_MSG_NOTICE([IO Modules built: $DISK_MODULES])
685 AC_SUBST(DISK_MODULES)
686 AC_SUBST(DISK_LIBS)
687 AM_CONDITIONAL(ENABLE_DISKIO_AIO, test "x$squid_disk_module_candidates_AIO" = "xyes")
688 AC_SUBST(AIOLIB)
689 AM_CONDITIONAL(ENABLE_WIN32_AIO, test "x$squid_disk_module_candidates_AIO" = "xyes" -a "x$ENABLE_WIN32_AIO" = "x1")
690 AM_CONDITIONAL(ENABLE_DISKIO_BLOCKING, test "x$squid_disk_module_candidates_Blocking" = "xyes")
691 AM_CONDITIONAL(ENABLE_DISKIO_DISKDAEMON, test "x$squid_disk_module_candidates_DiskDaemon" = "xyes")
692 AM_CONDITIONAL(ENABLE_DISKIO_DISKTHREADS, test "x$squid_disk_module_candidates_DiskThreads" = "xyes")
693 AC_SUBST(LIBPTHREADS)
694 AM_CONDITIONAL(ENABLE_WIN32_AIOPS, test "x$squid_disk_module_candidates_DiskThreads" = "xyes" -a "x$ENABLE_WIN32_AIOPS" = "x1")
695 AM_CONDITIONAL(ENABLE_DISKIO_IPCIO, test "x$squid_disk_module_candidates_IpcIo" = "xyes")
696 AM_CONDITIONAL(ENABLE_DISKIO_MMAPPED, test "x$squid_disk_module_candidates_Mmapped" = "xyes")
697
698 dnl Check what Storage formats are wanted.
699 dnl This version will error out with a message saying why if a required DiskIO is missing.
700 AC_ARG_ENABLE([storeio],
701 AS_HELP_STRING([--enable-storeio="list of modules"],
702 [Build support for the list of store I/O modules.
703 The default is only to build the "ufs" module.
704 See src/fs for a list of available modules, or
705 Programmers Guide section <not yet written>
706 for details on how to build your custom store module]), [
707 AS_CASE(["$enableval"],
708 [yes],[],
709 [no|none],[enable_storeio="no"],
710 [
711 enable_storeio="yes"
712 # ufs is really always needed as it has low-level routines
713 # if it is a dupe it will be cleaned-up later
714 squid_storeio_module_candidates="$enableval ufs"
715 ])
716 ])
717 AS_IF([test "x${enable_storeio:=yes}" = "xyes"],[
718 SQUID_LOOK_FOR_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
719 ])
720 SQUID_CLEANUP_MODULES_LIST([squid_storeio_module_candidates])
721 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/fs],[squid_storeio_module_candidates])
722 AC_MSG_NOTICE([Store modules built: ${squid_storeio_module_candidates:-none}])
723
724 for fs in ${squid_storeio_module_candidates:-none}; do
725 AS_CASE([$fs],
726 [diskd],[
727 AS_IF([test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
728 "x$squid_disk_module_candidates_DiskDaemon" != "xyes"],[
729 AC_MSG_ERROR([Storage diskd module requires DiskIO module: Blocking or DiskDaemon])
730 ])
731 ],
732 [aufs],[
733 AS_IF([test "x$squid_disk_module_candidates_Blocking" != "xyes" -a \
734 "x$squid_disk_module_candidates_DiskThreads" != "xyes"],[
735 AC_MSG_ERROR([Storage module aufs requires DiskIO module: Blocking or DiskThreads])
736 ])
737 ],
738 [rock],[
739 AS_IF([test "x$squid_disk_module_candidates_IpcIo" != "xyes" -a \
740 "x$squid_disk_module_candidates_Blocking" != "xyes"],[
741 AC_MSG_ERROR([Storage module Rock requires DiskIO module: Blocking or IpcIo])
742 ])
743 squid_do_build_rock=true
744 ],
745 [ufs],[
746 AS_IF([test "x$squid_disk_module_candidates_Blocking" != "xyes"],[
747 AC_MSG_ERROR([Storage module ufs requires DiskIO module: Blocking])
748 ])
749 squid_do_build_ufs=true
750 ]
751 )
752 done
753
754 AM_CONDITIONAL(ENABLE_FS_UFS, test "x$squid_do_build_ufs" = "xtrue")
755 AM_CONDITIONAL(ENABLE_FS_ROCK, test "x$squid_do_build_rock" = "xtrue")
756 dnl hack: need to define those even if not used in the build system to
757 dnl make sure that global FS objects are linked to the squid binary.
758 AH_TEMPLATE(HAVE_FS_UFS, "Define to 1 if ufs filesystem module is build")
759 AH_TEMPLATE(HAVE_FS_AUFS, "Define to 1 if aufs filesystem module is build")
760 AH_TEMPLATE(HAVE_FS_DISKD, "Define to 1 if diskd filesystem module is build")
761 AH_TEMPLATE(HAVE_FS_ROCK, "Define to 1 if rock filesystem module is build")
762
763
764 dnl got final squid_storeio_module_candidates, build library lists
765 dnl This list will not be needed when each fs library has its own Makefile
766 STORE_LIBS_TO_BUILD=
767 dnl File system libraries to link executables with.
768 dnl These are the same as STORE_LIBS_TO_BUILD, but with a path
769 STORE_LIBS_TO_ADD=
770 for fs in $squid_storeio_module_candidates; do
771 STORE_LIBS_TO_BUILD="$STORE_LIBS_TO_BUILD lib${fs}.la"
772 STORE_LIBS_TO_ADD="$STORE_LIBS_TO_ADD fs/lib${fs}.la"
773 SQUID_TOUPPER_VAR_CONTENTS([fs])
774 AC_DEFINE_UNQUOTED(HAVE_FS_${fs}, 1)
775 done
776
777 AC_SUBST(STORE_LIBS_TO_BUILD)
778 AC_SUBST(STORE_LIBS_TO_ADD)
779 AC_SUBST(STORE_TESTS)
780
781
782 dnl At lest one removal policy is always needed.
783 dnl 'lru' removal policy is currently hard-coded by name for tests
784 dnl so we must set it as default.
785 REPL_POLICIES="lru"
786 AC_ARG_ENABLE(removal-policies,
787 AS_HELP_STRING([--enable-removal-policies="list of policies"],
788 [Build support for the list of removal policies.
789 The default is only to build the "lru" module.
790 See src/repl for a list of available modules, or
791 Programmers Guide section 9.9 for details on how
792 to build your custom policy]), [
793 AS_CASE(["$enableval"],
794 [yes],[ SQUID_LOOK_FOR_MODULES([$srcdir/src/repl],[REPL_POLICIES]) ],
795 [no],[],
796 [ REPL_POLICIES="$enableval" ]
797 )
798 ])
799 SQUID_CLEANUP_MODULES_LIST([REPL_POLICIES])
800 SQUID_CHECK_EXISTING_MODULES([$srcdir/src/repl],[REPL_POLICIES])
801 AC_MSG_NOTICE([Removal policies to build: $REPL_POLICIES])
802 REPL_OBJS="repl/lib`echo \"$REPL_POLICIES\" | sed -e 's% %.a repl/lib%g'`.a"
803 REPL_LIBS=`echo "$REPL_OBJS" | sed -e 's%repl/%%g'`
804 AC_SUBST(REPL_POLICIES)
805 AC_SUBST(REPL_OBJS)
806 AC_SUBST(REPL_LIBS)
807
808 AM_CONDITIONAL(ENABLE_PINGER, false)
809 AC_ARG_ENABLE(icmp,
810 AS_HELP_STRING([--enable-icmp],[Enable ICMP pinging and Network Measurement]),[
811 AS_IF([test "x$enableval" = "xyes"],[
812 AC_MSG_NOTICE([ICMP enabled])
813 AC_DEFINE(USE_ICMP,1,[Define to use Squid ICMP and Network Measurement features (highly recommended!)])
814 AM_CONDITIONAL(ENABLE_PINGER, true)
815 ])
816 ])
817
818 AM_CONDITIONAL(ENABLE_DELAY_POOLS, false)
819 AC_ARG_ENABLE(delay-pools,
820 AS_HELP_STRING([--enable-delay-pools],[Enable delay pools to limit bandwidth usage]),[
821 AS_IF([test "x$enableval" = "xyes"],[
822 AC_MSG_NOTICE([Delay pools enabled])
823 AC_DEFINE([USE_DELAY_POOLS],1,[Traffic management via "delay pools".])
824 AM_CONDITIONAL(ENABLE_DELAY_POOLS, true)
825 ])
826 ])
827
828 dnl disable generic/common adaptation support by default
829 squid_opt_use_adaptation=no
830
831 squid_opt_use_esi=auto
832 AH_TEMPLATE([USE_SQUID_ESI],[Define to enable the ESI processor])
833 AC_ARG_ENABLE(esi,
834 AS_HELP_STRING([--disable-esi],
835 [Disable ESI for accelerators. ESI requires expat or xml2 library.
836 Enabling ESI will cause squid reverse proxies to be capable
837 of the Edge Acceleration Specification (www.esi.org).]),
838 [squid_opt_use_esi=$enableval],[])
839
840 # ESI support libraries: expat
841 AH_TEMPLATE(HAVE_LIBEXPAT,[Define to 1 if you have the expat library])
842 SQUID_AUTO_LIB(expat,[ESI expat library],[LIBEXPAT])
843 AS_IF([test "x$squid_opt_use_esi" != "xno" -a "x$with_expat" != "xno"],[
844 SQUID_STATE_SAVE(squid_expat_state)
845 PKG_CHECK_MODULES([LIBEXPAT],[expat],[],[
846 AC_CHECK_LIB([expat],[main],[LIBEXPAT_LIBS="-lexpat"])
847 ])
848 CPPFLAGS="$LIBEXPAT_CFLAGS $CPPFLAGS"
849 AC_CHECK_HEADERS(expat.h)
850 SQUID_STATE_ROLLBACK(squid_expat_state)
851 AS_IF([test "x$LIBEXPAT_LIBS" != "x"],[
852 squid_opt_use_esi=yes
853 LIBEXPAT_LIBS="$LIBEXPAT_PATH $LIBEXPAT_LIBS"
854 AC_DEFINE(HAVE_LIBEXPAT,1,[Define to 1 if you have the expat library])
855 ],
856 [test "x$with_expat" = "xyes"],[AC_MSG_ERROR([Required library expat not found.])],
857 [AC_MSG_NOTICE([Library expat not found.])]
858 )
859 ])
860 AM_CONDITIONAL(ENABLE_LIBEXPAT,[test "x$LIBEXPAT_LIBS" != "x"])
861 AC_SUBST(LIBEXPAT_LIBS)
862
863 # ESI support libraries: xml2
864 AH_TEMPLATE(HAVE_LIBXML2,[Define to 1 if you have the xml2 library])
865 SQUID_AUTO_LIB(xml2,[ESI xml2 library],[LIBXML2])
866 AS_IF([test "x$squid_opt_use_esi" != "xno" -a "x$with_xml2" != "xno"],[
867 SQUID_STATE_SAVE([squid_libxml2_save])
868 PKG_CHECK_MODULES([LIBXML2],[libxml-2.0],[],[
869 AC_CHECK_LIB([xml2],[main],[LIBXML2_LIBS="$LIBXML2_PATH -lxml2"])
870 ])
871 CPPFLAGS="$LIBXML2_CFLAGS $CPPFLAGS"
872 AC_CHECK_HEADERS(libxml/parser.h libxml/HTMLparser.h libxml/HTMLtree.h)
873 SQUID_STATE_ROLLBACK([squid_libxml2_save])
874
875 AS_IF([test "x$LIBXML2_LIBS" != "x"],[
876 squid_opt_use_esi=yes
877 CPPFLAGS="$LIBXML2_CFLAGS $CPPFLAGS"
878 LIBXML2_LIBS="$LIBXML2_PATH $LIBXML2_LIBS"
879 AC_DEFINE(HAVE_LIBXML2,1,[Define to 1 if you have the xml2 library])
880 ],[test "x$with_xml2" = "xyes"],[
881 AC_MSG_ERROR([Required library xml2 not found])
882 ],[
883 AC_MSG_NOTICE([Library xml2 not found.])
884 ])
885 ])
886 AM_CONDITIONAL(ENABLE_LIBXML2,[test "x$LIBXML2_LIBS" != "x"])
887 AC_SUBST(LIBXML2_LIBS)
888
889 AS_IF([test "x$squid_opt_use_esi" = "xyes"],[
890 AS_IF([test "x$LIBXML2_LIBS" = "x" -a "x$LIBEXPAT_LIBS" = "x"],[
891 AC_MSG_ERROR([ESI processor requires libxml2 or libexpat])
892 ])
893 AC_MSG_NOTICE([Enabling ESI processor: $LIBEXPAT_LIBS $LIBXML2_LIBS])
894 AC_DEFINE(USE_SQUID_ESI,1,[Compile the ESI processor])
895 ],[
896 AS_IF(test "x$squid_opt_use_esi" = "xno",[
897 AC_MSG_NOTICE([Disabling ESI processor.])
898 ],[
899 AC_MSG_NOTICE([Disabling ESI processor. libxml2 and libexpat not found.])
900 ])
901 ])
902 AM_CONDITIONAL(ENABLE_ESI, test "x$squid_opt_use_esi" = "xyes")
903
904 AC_ARG_ENABLE(icap-client,
905 AS_HELP_STRING([--disable-icap-client],[Disable the ICAP client.]),[
906 SQUID_YESNO([$enableval],[--enable-icap-client])
907 ])
908 SQUID_DEFINE_BOOL(ICAP_CLIENT,${enable_icap_client:=yes}, [Enable ICAP client features in Squid])
909 AS_IF(test "x$enable_icap_client" != "xno", squid_opt_use_adaptation="yes")
910 AM_CONDITIONAL(ENABLE_ICAP_CLIENT, test "x$enable_icap_client" != "xno")
911
912 AC_ARG_ENABLE(ecap,
913 AS_HELP_STRING([--enable-ecap],[support loadable content adaptation modules]),[
914 SQUID_YESNO([$enableval],[--enable-ecap])],[
915 enable_ecap="no"
916 ])
917 dnl Perform configuration consistency checks for eCAP
918 AS_IF([test "x$enable_ecap" != "xno"],[
919 AS_IF([test "x$enable_shared" != "xyes"],[
920 AC_MSG_ERROR([eCAP support requires loadable modules. Please do not use --disable-shared with --enable-ecap.])
921 ])
922
923 AS_IF([test -n "$PKG_CONFIG"],[
924 dnl eCAP support requires libecap.
925 dnl This Squid supports libecap v1.0.x.
926 dnl Use EXT_ prefix to distinguish external libecap (that we check for
927 dnl here) from our own convenience ecap library in Makefiles.
928 PKG_CHECK_MODULES([EXT_LIBECAP],[libecap >= 1.0 libecap < 1.1])
929 ],[
930 AC_MSG_NOTICE([eCAP support requires pkg-config to verify the correct library version. Trouble may follow.])
931 ])
932
933 SQUID_STATE_SAVE(squid_ecap_state)
934 AC_MSG_CHECKING([whether -lecap will link])
935 CXXFLAGS="$CXXFLAGS $EXT_LIBECAP_CFLAGS"
936 LIBS="$LIBS $EXT_LIBECAP_LIBS"
937 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <libecap/common/names.h>]],[[
938 const libecap::Name test("test", libecap::Name::NextId());
939 ]])],[
940 AC_MSG_RESULT(yes)
941 squid_opt_use_adaptation=yes
942 ],[
943 AC_MSG_RESULT(no)
944 AS_IF([test "x$enable_ecap" = "xyes"],[
945 AC_MSG_ERROR([eCAP library will not link.
946 You may need to rebuild libecap using the same version of GCC as Squid.
947 There have been breaking ABI changes in the libstdc++ STL with GCC 5.])
948 ],[
949 AC_MSG_NOTICE([eCAP library will not link.
950 You may need to rebuild libecap using the same version of GCC as Squid.
951 There have been breaking ABI changes in the libstdc++ STL with GCC 5.])
952 enable_ecap="no"
953 ])
954 ])
955 SQUID_STATE_ROLLBACK(squid_ecap_state)
956 ])
957 SQUID_DEFINE_BOOL(USE_ECAP,${enable_ecap:=no},[Whether to use eCAP support])
958 AM_CONDITIONAL(ENABLE_ECAP, test "x$enable_ecap" = "xyes")
959
960 dnl enable adaptation if requested by specific adaptation mechanisms
961 ADAPTATION_LIBS=""
962 AS_IF([test "x$squid_opt_use_adaptation" = "xyes"],[ADAPTATION_LIBS="adaptation/libadaptation.la"])
963 SQUID_DEFINE_BOOL(USE_ADAPTATION,${squid_opt_use_adaptation:=no}, [common adaptation support])
964 AM_CONDITIONAL(ENABLE_ADAPTATION, test "x$squid_opt_use_adaptation" = "xyes")
965 AC_SUBST(ADAPTATION_LIBS)
966
967 AS_IF([test "x$squid_host_os" = "xmingw"],[enable_wccp=no])
968 AC_ARG_ENABLE(wccp,
969 AS_HELP_STRING([--disable-wccp],[Disable Web Cache Coordination Protocol]),[
970 SQUID_YESNO([$enableval],[--enable-wccp])
971 ])
972 SQUID_DEFINE_BOOL(USE_WCCP, ${enable_wccp:=yes}, [Define to enable WCCP])
973 AC_MSG_NOTICE([Web Cache Coordination Protocol enabled: $enable_wccp])
974
975 AS_IF([test "x$squid_host_os" = "xmingw"],[enable_wccpv2=no])
976 AC_ARG_ENABLE(wccpv2,
977 AS_HELP_STRING([--disable-wccpv2],
978 [Disable Web Cache Coordination V2 Protocol]), [
979 SQUID_YESNO([$enableval],[--enable-wccpv2])
980 ])
981 SQUID_DEFINE_BOOL(USE_WCCPv2,${enable_wccpv2:=yes},
982 [Define to enable WCCP V2])
983 AC_MSG_NOTICE([Web Cache Coordination V2 Protocol enabled: $enable_wccpv2])
984
985 AC_ARG_ENABLE(snmp,
986 AS_HELP_STRING([--disable-snmp],[Disable SNMP monitoring support]), [
987 SQUID_YESNO([$enableval],[--enable-snmp])
988 ])
989 SQUID_DEFINE_BOOL(SQUID_SNMP,${enable_snmp:=yes},
990 [Define to enable SNMP monitoring of Squid])
991 AM_CONDITIONAL(ENABLE_SNMP, [test "x$enable_snmp" = "xyes"])
992 AS_IF([test "x$enable_snmp" = "xyes"],[SNMPLIB="../lib/snmplib/libsnmplib.la"])
993 AC_MSG_NOTICE([SNMP support enabled: $enable_snmp])
994 AC_SUBST(SNMPLIB)
995
996 AC_ARG_ENABLE(eui,
997 AS_HELP_STRING([--disable-eui],
998 [Disable use of ARP / MAC/ EUI (ether address)]), [
999 SQUID_YESNO([$enableval],[--enable-eui])
1000 ])
1001 AS_IF([test "x${enable_eui:=yes}" = "xyes"],[
1002 SQUID_STATE_SAVE(LIBEUI)
1003 # GLIBC 2.30 deprecates sysctl.h. Test with the same flags that (may) break includes later.
1004 CFLAGS=$SQUID_CFLAGS
1005 CXXFLAGS=$SQUID_CXXFLAGS
1006 AS_CASE(["$squid_host_os"],
1007 [linux|solaris|freebsd|openbsd|netbsd|cygwin],[:],
1008 [mingw],[EUILIB="-liphlpapi"],
1009 [AC_MSG_WARN([EUI support probably will not work on host $host.])]
1010 )
1011 # iphlpapi.h check delayed after winsock2.h
1012 AC_CHECK_HEADERS( \
1013 windows.h \
1014 sys/sockio.h \
1015 sys/param.h,
1016 [], [], [[
1017 #if HAVE_WINDOWS_H
1018 include <windows.h>
1019 #endif
1020 ]]
1021 )
1022 AC_CHECK_HEADERS( \
1023 net/if_arp.h \
1024 net/route.h,
1025 [], [], [[
1026 #include <sys/types.h>
1027 #include <sys/socket.h>
1028 ]])
1029
1030 # OpenBSD, FreeBSD and NetBSD requires sys/param.h to be included before sysctl.h and net/if_dl.h
1031 AC_CHECK_HEADERS( \
1032 net/if_dl.h \
1033 sys/sysctl.h,
1034 [], [], [[
1035 #if HAVE_SYS_PARAM_H
1036 #include <sys/param.h>
1037 #endif
1038 ]])
1039 SQUID_STATE_ROLLBACK(LIBEUI)
1040 ])
1041 AC_SUBST(EUILIB)
1042 AC_MSG_NOTICE([EUI (MAC address) controls enabled: $enable_eui])
1043 SQUID_DEFINE_BOOL(USE_SQUID_EUI,$enable_eui,
1044 [Define this to include code which lets you use ethernet addresses. This code uses API initially defined in 4.4-BSD.])
1045 AM_CONDITIONAL(ENABLE_EUI, [test "x$enable_eui" = "xyes" ])
1046
1047
1048 AC_ARG_ENABLE(htcp,
1049 AS_HELP_STRING([--disable-htcp],[Disable HTCP protocol support]), [
1050 SQUID_YESNO([$enableval],[--enable-htcp])
1051 ])
1052 SQUID_DEFINE_BOOL(USE_HTCP,${enable_htcp:=yes},
1053 [Define this to include code for the Hypertext Cache Protocol (HTCP)])
1054 AM_CONDITIONAL(ENABLE_HTCP, [test "x$enable_htcp" = "xyes"])
1055 AC_MSG_NOTICE([HTCP support enabled: $enable_htcp])
1056
1057 # Cryptograhic libraries
1058 SQUID_AUTO_LIB(nettle,[Nettle crypto],[LIBNETTLE])
1059 SQUID_CHECK_LIB_WORKS(nettle,[
1060 SQUID_STATE_SAVE(squid_nettle_state)
1061 PKG_CHECK_MODULES([LIBNETTLE],[nettle >= 3.4],[
1062 CPPFLAGS="$LIBNETTLE_CFLAGS $CPPFLAGS"
1063 AC_CHECK_HEADERS(nettle/base64.h nettle/md5.h)
1064 ],[:])
1065 SQUID_STATE_ROLLBACK(squid_nettle_state)
1066 ])
1067
1068 dnl Check for libcrypt
1069 CRYPTLIB=
1070 dnl Some of our helpers use crypt(3) which may be in libc, or in
1071 dnl libcrypt (eg FreeBSD)
1072 AC_CHECK_LIB(crypt, crypt, [CRYPTLIB="-lcrypt"])
1073 dnl Solaris10 provides MD5 natively through libmd5
1074 AC_CHECK_LIB(md5, MD5Init, [CRYPTLIB="$CRYPTLIB -lmd5"])
1075 AC_SUBST(CRYPTLIB)
1076
1077 SQUID_AUTO_LIB(gnutls,[GnuTLS crypto],[LIBGNUTLS])
1078 SQUID_CHECK_LIB_WORKS(gnutls,[
1079 SQUID_STATE_SAVE(squid_gnutls_state)
1080 PKG_CHECK_MODULES([LIBGNUTLS],[gnutls >= 3.4.0],[
1081 CPPFLAGS="$LIBGNUTLS_CFLAGS $CPPFLAGS"
1082 AC_CHECK_HEADERS(gnutls/gnutls.h gnutls/x509.h gnutls/abstract.h)
1083 ],[:])
1084 SQUID_STATE_ROLLBACK(squid_gnutls_state)
1085 ])
1086
1087 SSLLIB=""
1088 dnl User may specify OpenSSL is needed from a non-standard location
1089 SQUID_OPTIONAL_LIB(openssl,[OpenSSL],[LIBOPENSSL])
1090 AH_TEMPLATE(USE_OPENSSL,[OpenSSL support is available])
1091 ## OpenSSL is default disable due to licensing issues on some OS
1092 AS_IF([test "x$with_openssl" = "xyes"],[
1093 CPPFLAGS="$LIBOPENSSL_CFLAGS $CPPFLAGS"
1094 AC_CHECK_HEADERS( \
1095 openssl/asn1.h \
1096 openssl/bio.h \
1097 openssl/bn.h \
1098 openssl/crypto.h \
1099 openssl/decoder.h \
1100 openssl/dh.h \
1101 openssl/err.h \
1102 openssl/evp.h \
1103 openssl/lhash.h \
1104 openssl/md5.h \
1105 openssl/opensslv.h \
1106 openssl/rsa.h \
1107 openssl/ssl.h \
1108 openssl/x509.h \
1109 openssl/x509v3.h \
1110 openssl/engine.h \
1111 openssl/txt_db.h \
1112 openssl/pem.h \
1113 )
1114
1115 # User may have provided a custom location for OpenSSL. Otherwise...
1116 SQUID_STATE_SAVE(squid_openssl_state)
1117 LIBS="$LIBS $LIBOPENSSL_PATH"
1118
1119 # auto-detect using pkg-config
1120 PKG_CHECK_MODULES([LIBOPENSSL],[openssl],,[
1121 ## For some OS pkg-config is broken or unavailable.
1122 ## Detect libraries the hard way.
1123
1124 # Windows MinGW has some special libraries ...
1125 AS_IF([test "x$squid_host_os" = "xmingw"],[
1126 LIBOPENSSL_LIBS='-lssleay32 -leay32 -lgdi32 $LIBOPENSSL_LIBS'
1127 AC_MSG_NOTICE([Windows OpenSSL library support: yes -lssleay32 -leay32 -lgdi32])
1128 ])
1129
1130 AC_CHECK_LIB(crypto,[CRYPTO_new_ex_data],[LIBOPENSSL_LIBS="-lcrypto $LIBOPENSSL_LIBS"],[
1131 AC_MSG_ERROR([library 'crypto' is required for OpenSSL])
1132 ],$LIBOPENSSL_LIBS)
1133 AC_CHECK_LIB(ssl,[SSL_CTX_new],[LIBOPENSSL_LIBS="-lssl $LIBOPENSSL_LIBS"],[
1134 AC_MSG_ERROR([library 'ssl' is required for OpenSSL])
1135 ],$LIBOPENSSL_LIBS)
1136 ])
1137
1138 SQUID_STATE_ROLLBACK(squid_openssl_state) #de-pollute LIBS
1139
1140 AS_IF([test "x$LIBOPENSSL_LIBS" != "x"],[
1141 CXXFLAGS="$LIBOPENSSL_CFLAGS $CXXFLAGS"
1142 SSLLIB="$LIBOPENSSL_PATH $LIBOPENSSL_LIBS $SSLLIB"
1143 AC_DEFINE(USE_OPENSSL,1,[OpenSSL support is available])
1144
1145 # check for API functions
1146 SQUID_CHECK_LIBCRYPTO_API
1147 SQUID_CHECK_LIBSSL_API
1148 SQUID_CHECK_OPENSSL_TLS_METHODS
1149 SQUID_STATE_SAVE(check_SSL_CTX_get0_certificate)
1150 LIBS="$LIBS $SSLLIB"
1151 AC_CHECK_LIB(ssl, SSL_CTX_get0_certificate, [
1152 AC_DEFINE(HAVE_SSL_CTX_GET0_CERTIFICATE, 1, [SSL_CTX_get0_certificate is available])
1153 ], [
1154 missing_SSL_CTX_get0_certificate=yes
1155 ])
1156 SQUID_STATE_ROLLBACK(check_SSL_CTX_get0_certificate)
1157
1158 # check for other specific broken implementations
1159 AS_IF([test "x$missing_SSL_CTX_get0_certificate" = "xyes"],SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS)
1160 SQUID_CHECK_OPENSSL_CONST_SSL_METHOD
1161 SQUID_CHECK_OPENSSL_CONST_CRYPTO_EX_DATA
1162 SQUID_CHECK_OPENSSL_CONST_SSL_SESSION_CB_ARG
1163 SQUID_CHECK_OPENSSL_CONST_X509_GET0_SIGNATURE_ARGS
1164 SQUID_CHECK_OPENSSL_TXTDB
1165 ])
1166 AS_IF([test "x$SSLLIB" = "x"],[AC_MSG_ERROR([Required OpenSSL library not found])])
1167 ])
1168 AC_MSG_NOTICE([OpenSSL library support: ${with_openssl:=no} ${LIBOPENSSL_PATH} ${LIBOPENSSL_LIBS}])
1169 AM_CONDITIONAL(ENABLE_SSL,[ test "x$with_openssl" = "xyes" ])
1170 AC_SUBST(SSLLIB)
1171
1172 dnl User may specify MIT Kerberos is needed from a non-standard location
1173 SQUID_AUTO_LIB(mit-krb5,[MIT Kerberos],[LIB_KRB5])
1174 AH_TEMPLATE(USE_APPLE_KRB5,[Apple Kerberos support is available])
1175 AH_TEMPLATE(USE_MIT_KRB5,[MIT Kerberos support is available])
1176 AH_TEMPLATE(USE_SOLARIS_KRB5,[Solaris Kerberos support is available])
1177
1178 ## find out if pkg-config or krb5-config will work
1179 AS_IF([test "x$with_mit_krb5" != "xno"],[
1180 CXXFLAGS="$LIB_KRB5_CFLAGS $CXXFLAGS"
1181 krb5confpath="$with_mit_krb5/bin"
1182 # find installed libs via pkg-config or krb5-config
1183 squid_pc_krb5_name=
1184 PKG_CHECK_EXISTS(mit-krb5-gssapi mit-krb5, [squid_pc_krb5_name="mit-krb5-gssapi mit-krb5"],[
1185 PKG_CHECK_EXISTS(gssapi-krb5 krb5, [squid_pc_krb5_name="gssapi-krb5 krb5"])
1186 ])
1187 AS_IF([test "x$squid_pc_krb5_name" = "x" -a "$cross_compiling" = "no"],[
1188 # Look for krb5-config (unless cross-compiling)
1189 AC_PATH_PROG(krb5_config,krb5-config,no,$krb5confpath)
1190 AS_IF([test "x$ac_cv_path_krb5_config" != "xno"],[
1191 krb5confpath="`dirname $ac_cv_path_krb5_config`"
1192 ac_heimdal="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i heimdal`"
1193 ac_solaris="`$ac_cv_path_krb5_config --version 2>/dev/null | grep -c -i solaris`"
1194 ac_apple="`$ac_cv_path_krb5_config --vendor 2>/dev/null | grep -c -i apple`"
1195 AS_IF([test $ac_solaris -gt 0],[with_solaris_krb5=yes],
1196 [test $ac_apple -gt 0],[with_apple_krb5=yes],
1197 [test $ac_heimdal -gt 0],[with_mit_krb5=no]
1198 )
1199 ],[
1200 AS_IF([test "x$with_mit_krb5" = "xyes"],[
1201 AC_MSG_ERROR([Could not find krb5-config in path])
1202 ],[
1203 with_mit_krb5=no
1204 ])
1205 ])
1206 ])
1207 ])
1208
1209 # detect MIT Kerberos dependencies (except on Solaris)
1210 AS_IF([test "x$with_mit_krb5" != "xno" -a "x$with_solaris_krb5" != "xyes"],[
1211 SQUID_STATE_SAVE([squid_krb5_save])
1212 LIBS="$LIBS $LIB_KRB5_PATH"
1213
1214 # auto-detect using pkg-config
1215 PKG_CHECK_MODULES([LIB_KRB5], $squid_pc_krb5_name,,[
1216 # look for krb5-config (unless cross-compiling)
1217 AS_IF([test "$cross_compiling" = "no"],[
1218 AS_IF([test "x$krb5confpath" = "x"],[
1219 AC_PATH_PROG(krb5_config,krb5-config,no)
1220 AS_IF([test "x$ac_cv_path_krb5_config" != "xno"],[ac_krb5_config="$ac_cv_path_krb5_config"])
1221 ],[
1222 ac_krb5_config="$krb5confpath/krb5-config"
1223 ])
1224 ])
1225 AS_IF([test "x$ac_krb5_config" != "x" -a -x "$ac_krb5_config"],[
1226 # Get libs, etc
1227 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1228 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1229 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1230 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1231 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1232 ],[
1233 ## For some OS pkg-config is broken or unavailable.
1234 ## Detect libraries the hard way.
1235
1236 SQUID_STATE_SAVE([squid_mit_save])
1237 missing_required=
1238 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1239 AC_CHECK_LIB(com_err, [main], [LIB_KRB5_LIBS="-lcom_err $LIB_KRB5_LIBS"],[
1240 AC_MSG_WARN([library 'com_err' is required for MIT Kerberos])
1241 missing_required=yes
1242 ])
1243 LIBS=$LIB_KRB5_LIBS
1244 AC_CHECK_LIB(k5crypto, [main], [LIB_KRB5_LIBS="-lk5crypto $LIB_KRB5_LIBS"],[
1245 AC_MSG_WARN([library 'k5crypto' is required for MIT Kerberos])
1246 missing_required=yes
1247 ])
1248 LIBS=$LIB_KRB5_LIBS
1249 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1250 AC_MSG_WARN([library 'krb5' is required for MIT Kerberos])
1251 missing_required=yes
1252 ])
1253 LIBS=$LIB_KRB5_LIBS
1254 AC_CHECK_LIB(gssapi_krb5, [main], [LIB_KRB5_LIBS="-lgssapi_krb5 $LIB_KRB5_LIBS"],[
1255 AC_MSG_WARN([library 'gssapi_krb5' is required for MIT Kerberos])
1256 missing_required=yes
1257 ])
1258 SQUID_STATE_ROLLBACK([squid_mit_save])
1259 AS_IF([test "x$missing_required" = "xyes"],[LIB_KRB5_LIBS=""])
1260 ])
1261 ])
1262
1263 AS_IF([test "x$LIB_KRB5_LIBS" != "x"],[
1264 AS_IF([test "x$with_apple_krb5" = "xyes"],[
1265 AC_DEFINE(USE_APPLE_KRB5,1,[Apple Kerberos support is available])
1266 KRB5_FLAVOUR="Apple"
1267 ],[
1268 AC_DEFINE(USE_MIT_KRB5,1,[MIT Kerberos support is available])
1269 KRB5_FLAVOUR="MIT"
1270 ])
1271 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1272 KRB5INCS="$LIB_KRB5_CFLAGS"
1273
1274 # check for other specific broken implementations
1275 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1276 LIBS="$LIBS $KRB5LIBS"
1277
1278 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1279 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1280 AC_CHECK_HEADERS(gssapi/gssapi_generic.h)
1281 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1282 AC_CHECK_HEADERS(profile.h)
1283
1284 SQUID_CHECK_KRB5_FUNCS
1285 ])
1286 AS_IF([test "x$with_mit_krb5" = "xyes" -a "x$KRB5LIBS" = "x"],[
1287 AC_MSG_ERROR([Required Kerberos library not found])
1288 ],[test "x$KRB5LIBS" = "x"],[
1289 with_mit_krb5=no
1290 with_apple_krb5=no
1291 ])
1292 SQUID_STATE_ROLLBACK([squid_krb5_save])
1293 ])
1294
1295 # detect Solaris Kerberos dependencies
1296 AS_IF([test "x$with_solaris_krb5" = "xyes" -a "x$KRB5LIBS" = "x"],[
1297 SQUID_STATE_SAVE([squid_krb5_save])
1298 LIBS="$LIBS $LIB_KRB5_PATH"
1299
1300 # no pkg-config for solaris native Kerberos
1301 # look for krb5-config (unless cross-compiling)
1302 AS_IF([test "$cross_compiling" = "no"],[
1303 AS_IF([test "x$krb5confpath" = "x"],[
1304 AC_PATH_PROG(krb5_config,krb5-config,no)
1305 AS_IF([test "x$ac_cv_path_krb5_config" != "xno"],[ac_krb5_config="$ac_cv_path_krb5_config"])
1306 ],[
1307 ac_krb5_config="$krb5confpath/krb5-config"
1308 ])
1309 ])
1310 AS_IF([test "x$ac_krb5_config" != "x" -a -x "$ac_krb5_config"],[
1311 # Get libs, etc
1312 AC_MSG_NOTICE([Use krb5-config to get CXXFLAGS and LIBS])
1313 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags krb5 2>/dev/null`"
1314 LIB_KRB5_LIBS="`$ac_krb5_config --libs krb5 2>/dev/null`"
1315 # Solaris 10 Update 11 patches the krb5-config tool to produce stderr messages on stdout.
1316 SOLARIS_BROKEN_KRB5CONFIG_GSSAPI="`$ac_krb5_config --libs gssapi 2>/dev/null | grep "krb5-config"`"
1317 AS_IF([test "x$SOLARIS_BROKEN_KRB5CONFIG_GSSAPI" = "x"],[
1318 LIB_KRB5_CFLAGS="`$ac_krb5_config --cflags gssapi 2>/dev/null` $LIB_KRB5_CFLAGS"
1319 LIB_KRB5_LIBS="`$ac_krb5_config --libs gssapi 2>/dev/null` $LIB_KRB5_LIBS"
1320 ])
1321 ],[
1322 ## For some OS pkg-config is broken or unavailable.
1323 ## Detect libraries the hard way.
1324
1325 CXXFLAGS="-I/usr/include/kerberosv5 $CXXFLAGS"
1326
1327 SQUID_STATE_SAVE([squid_solaris_save])
1328 missing_required=
1329 AC_MSG_NOTICE([Try to find Kerberos libraries in given path])
1330 AC_CHECK_LIB(krb5, [main], [LIB_KRB5_LIBS="-lkrb5 $LIB_KRB5_LIBS"],[
1331 AC_MSG_WARN([library 'krb5' is required for Solaris Kerberos])
1332 missing_required=yes
1333 ])
1334 LIBS=$LIB_KRB5_LIBS
1335 AC_CHECK_LIB(gss, [main], [LIB_KRB5_LIBS="-lgss $LIB_KRB5_LIBS"],[
1336 AC_MSG_WARN([library 'gss' is required for Solaris Kerberos])
1337 missing_required=yes
1338 ])
1339 SQUID_STATE_ROLLBACK([squid_solaris_save])
1340 AS_IF([test "x$missing_required" = "xyes"],[LIB_KRB5_LIBS=""])
1341 ])
1342
1343 AS_IF([test "x$LIB_KRB5_LIBS" != "x"],[
1344 KRB5LIBS="$LIB_KRB5_PATH $LIB_KRB5_LIBS $KRB5LIBS"
1345 KRB5INCS="$LIB_KRB5_CFLAGS"
1346 AC_DEFINE(USE_SOLARIS_KRB5,1,[Solaris Kerberos support is available])
1347 KRB5_FLAVOUR="Solaris"
1348
1349 # check for other specific broken implementations
1350 CXXFLAGS="$CXXFLAGS $KRB5INCS"
1351 LIBS="$LIBS $KRB5LIBS"
1352
1353 AC_MSG_NOTICE([Try to find Kerberos headers in given path])
1354 AC_CHECK_HEADERS(gssapi/gssapi.h gssapi/gssapi_ext.h)
1355 AC_CHECK_HEADERS(krb5.h com_err.h)
1356
1357 SQUID_CHECK_KRB5_SOLARIS_BROKEN_KRB5_H
1358 AS_IF([test "x$squid_cv_broken_krb5_h" = "xyes"],[
1359 AC_DEFINE(HAVE_BROKEN_SOLARIS_KRB5_H, 1, [Define to 1 if Solaris krb5.h is broken for C++])
1360 AC_MSG_WARN([You have a broken Solaris <krb5.h> system include.])
1361 AC_MSG_WARN([Please see http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6837512])
1362 AC_MSG_WARN([If you need Kerberos support you will have to patch])
1363 AC_MSG_WARN([your system. See contrib/solaris/solaris-krb5-include.patch])
1364 ])
1365 SQUID_CHECK_KRB5_FUNCS
1366 ])
1367 AS_IF([test "x$with_mit_krb5" = "xyes" -a "x$KRB5LIBS" = "x"],[
1368 # Error only if Solaris flavour was detected while looking for required MIT Kerberos
1369 AC_MSG_ERROR([Required Kerberos library not found])
1370 ],[test "x$KRB5LIBS" = "x"],[
1371 with_solaris_krb5=no
1372 with_mit_krb5=no
1373 ])
1374 SQUID_STATE_ROLLBACK([squid_krb5_save])
1375 ])
1376
1377 # Kerberos support libraries: Heimdal
1378 SQUID_AUTO_LIB(heimdal-krb5,[Heimdal Kerberos],[LIBHEIMDAL_KRB5])
1379 SQUID_CHECK_LIB_WORKS(heimdal-krb5,[
1380 AS_IF([test "x$KRB5LIBS" = "x"],[
1381 SQUID_STATE_SAVE(squid_heimdal_krb5_save)
1382 PKG_CHECK_MODULES([LIBHEIMDAL_KRB5],[heimdal-krb5 heimdal-gssapi],[
1383 CPPFLAGS="$LIBHEIMDAL_KRB5_CFLAGS $CPPFLAGS"
1384 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h gssapi/gssapi_krb5.h)
1385 AC_CHECK_HEADERS(krb5.h com_err.h et/com_err.h)
1386
1387 LIBS="$LIBHEIMDAL_KRB5_PATH $LIBHEIMDAL_KRB5_LIBS $LIBS"
1388 SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H
1389 SQUID_CHECK_KRB5_FUNCS
1390 ],[:])
1391 SQUID_STATE_ROLLBACK(squid_heimdal_krb5_save)
1392 ])
1393 ])
1394
1395 # Kerberos support libraries: GNU GSS
1396 SQUID_AUTO_LIB(gss,[GNU gss],[LIBGSS])
1397 SQUID_CHECK_LIB_WORKS(gss,[
1398 AS_IF([test "x$KRB5LIBS" = "x" -a "x$LIBHEIMDAL_KRB5_LIBS" = "x"],[
1399 SQUID_STATE_SAVE(squid_gss_save)
1400 PKG_CHECK_MODULES([LIBGSS],[gss],[
1401 CPPFLAGS="$LIBGSS_CFLAGS $CPPFLAGS"
1402 AC_CHECK_HEADERS(gss.h)
1403 LIBS="$LIBGSS_PATH $LIBS"
1404 SQUID_CHECK_WORKING_GSSAPI
1405 SQUID_DEFINE_BOOL(HAVE_GSSAPI,$squid_cv_working_gssapi,[GSSAPI support])
1406 SQUID_CHECK_SPNEGO_SUPPORT
1407 SQUID_DEFINE_BOOL(HAVE_SPNEGO,$squid_cv_have_spnego,[SPNEGO support])
1408 SQUID_CHECK_WORKING_KRB5
1409 SQUID_DEFINE_BOOL(HAVE_KRB5,$squid_cv_working_krb5,[KRB5 support])
1410 ],[:])
1411 SQUID_STATE_ROLLBACK(squid_gss_save)
1412 ])
1413 ])
1414
1415 AS_IF([test "x$KRB5LIBS" != "x"],[with_krb5=yes])
1416 AC_MSG_NOTICE([$KRB5_FLAVOUR Kerberos library support: ${with_krb5:=no} ${LIB_KRB5_PATH} ${LIB_KRB5_LIBS}])
1417 AC_SUBST(KRB5INCS)
1418 AC_SUBST(KRB5LIBS)
1419
1420 SQUID_AUTO_LIB(ldap,[LDAP],[LIBLDAP])
1421 SQUID_CHECK_LIB_WORKS(ldap,[
1422 dnl On MinGW OpenLDAP is not available, so LDAP helpers can be linked
1423 dnl only with Windows LDAP libraries using -lwldap32
1424 AS_IF([test "$squid_host_os" = "mingw"],[
1425 LIBLDAP_LIBS="-lwldap32"
1426 ],[
1427 SQUID_STATE_SAVE(squid_ldap_state)
1428 LIBS="$LIBLDAP_PATH $LIBPTHREADS $LIBS"
1429 PKG_CHECK_MODULES([LIBLDAP],[ldap],[],[
1430 AC_CHECK_LIB(lber, ber_init, [LIBLBER="-llber"])
1431 AC_CHECK_LIB(ldap, ldap_init, [LIBLDAP_LIBS="-lldap $LIBLBER"])
1432 dnl if no ldap lib found check for mozilla version
1433 AS_IF([test "x$ac_cv_lib_ldap_ldap_init" != "xyes"],[
1434 SQUID_STATE_SAVE(squid_ldap_mozilla)
1435 LIBS="$LIBLDAP_PATH $LIBPTHREADS"
1436 AC_CHECK_LIB(ldap60, ldap_init, [LIBLDAP_LIBS="-lldap60 $LIBLBER"])
1437 LIBS="$LIBLDAP_PATH $LIBLDAP_LIBS $LIBPTHREADS"
1438 AC_CHECK_LIB(prldap60, prldap_init, [LIBLDAP_LIBS="-lprldap60 $LIBLDAP_LIBS"])
1439 LIBS="$LIBLDAP_PATH $LIBLDAP_LIBS $LIBPTHREADS"
1440 AC_CHECK_LIB(ssldap60, ldapssl_init, [LIBLDAP_LIBS="-lssldap60 $LIBLDAP_LIBS"])
1441 SQUID_STATE_ROLLBACK(squid_ldap_mozilla)
1442 ])
1443 ])
1444 AC_CHECK_HEADERS(ldap.h lber.h)
1445 AC_CHECK_HEADERS(mozldap/ldap.h)
1446 SQUID_CHECK_LDAP_API
1447 ])
1448 ])
1449
1450 SQUID_AUTO_LIB(systemd,[systemd API for start-up notification],[LIBSYSTEMD])
1451 AH_TEMPLATE(USE_SYSTEMD,[systemd support is available])
1452 SQUID_CHECK_LIB_WORKS(systemd,[
1453 SQUID_STATE_SAVE(squid_systemd_state)
1454 LIBS="$LIBS $LIBSYSTEMD_PATH"
1455 PKG_CHECK_MODULES(LIBSYSTEMD,[libsystemd],,[
1456 # systemd < 209
1457 PKG_CHECK_MODULES(LIBSYSTEMD,[libsystemd-daemon],,[:])
1458 ])
1459 AC_CHECK_HEADERS(systemd/sd-daemon.h)
1460 SQUID_STATE_ROLLBACK(squid_systemd_state)
1461
1462 AS_IF([test "x$LIBSYSTEMD_LIBS" != "x"],[
1463 AC_DEFINE(USE_SYSTEMD,1,[systemd support is available])
1464 ])
1465 ])
1466
1467 AC_ARG_ENABLE(forw-via-db,
1468 AS_HELP_STRING([--enable-forw-via-db],[Enable Forw/Via database]), [
1469 SQUID_YESNO([$enableval],[--enable-forw-via-db])
1470 ])
1471 SQUID_DEFINE_BOOL(USE_FORW_VIA_DB,${enable_forw_via_db:=no},
1472 [Enable Forw/Via database])
1473 AC_MSG_NOTICE([Forw/Via database enabled: $enable_forw_via_db])
1474
1475 AC_ARG_ENABLE(cache-digests,
1476 AS_HELP_STRING([--enable-cache-digests],
1477 [Use Cache Digests. See https://wiki.squid-cache.org/SquidFaq/CacheDigests]),[
1478 SQUID_YESNO([$enableval],[--enable-cache-digests])
1479 ])
1480 SQUID_DEFINE_BOOL(USE_CACHE_DIGESTS,${enable_cache_digests:=no},
1481 [Use Cache Digests for locating objects in neighbor caches.])
1482 AC_MSG_NOTICE([Cache Digests enabled: $enable_cache_digests])
1483
1484
1485 ################################
1486 # check for netio plugin stuff #
1487 ################################
1488 dnl order of these options handling is relevant in case the user
1489 dnl supplies more than one --enable option. Options handled later
1490 dnl override those handled earlier for io loop method manual override
1491 AC_ARG_ENABLE(select,
1492 AS_HELP_STRING([--disable-select],[Disable select(2) support.]),[
1493 SQUID_YESNO([$enableval],[--enable-select])
1494 AS_IF([test "x$enableval" = "xyes"],[squid_opt_io_loop_engine="select"])
1495 ])
1496 AC_MSG_NOTICE([enabling select syscall for net I/O: ${enable_select:=auto}])
1497
1498 AC_ARG_ENABLE(poll,
1499 AS_HELP_STRING([--disable-poll],[Disable poll(2) support.]),[
1500 SQUID_YESNO([$enableval],[--enable-poll])
1501 AS_IF([test "x$enableval" = "xyes"],[squid_opt_io_loop_engine="poll"])
1502 ])
1503 AC_MSG_NOTICE([enabling poll syscall for net I/O: ${enable_poll:=auto}])
1504
1505 AC_ARG_ENABLE(kqueue,
1506 AS_HELP_STRING([--disable-kqueue],
1507 [Disable kqueue(2) support.]), [
1508 SQUID_YESNO([$enableval],[--enable-kqueue])
1509 ])
1510 AS_IF([test "x${enable_kqueue:=auto}" != "xno"],[
1511 AC_CHECK_HEADERS([sys/event.h],[],[
1512 AS_IF([test "x${enable_kqueue}" = "xyes"],[
1513 AC_MSG_ERROR([kqueue support requires sys/event.h header file.])
1514 ])
1515 ])
1516 AC_CHECK_FUNCS(kqueue,[],[
1517 AS_IF([test "x${enable_kqueue}" = "xyes"],[
1518 AC_MSG_ERROR([kqueue support missing in libc library.])
1519 ])
1520 ])
1521 AS_IF([test "x$ac_cv_func_kqueue" = "xyes" -a "x$ac_cv_header_sys_event_h" = "xyes"],[
1522 squid_opt_io_loop_engine="kqueue"
1523 ],[
1524 enable_kqueue="no"
1525 ])
1526 ])
1527 AC_MSG_NOTICE([enabling kqueue for net I/O: ${enable_kqueue:=auto}])
1528
1529 dnl Enable epoll()
1530 AC_ARG_ENABLE(epoll,
1531 AS_HELP_STRING([--disable-epoll],[Disable Linux epoll(2) support.]),
1532 [
1533 SQUID_YESNO([$enableval],[--enable-epoll])
1534 AS_IF([test "x$enableval" = "xyes"],[squid_opt_io_loop_engine="epoll"])
1535 ])
1536 AC_MSG_NOTICE([enabling epoll syscall for net I/O: ${enable_epoll:=auto}])
1537
1538 # auto-detect and verify epoll header and library present and working
1539 # logic mapping and loop method selection are performed later
1540 AS_IF([test "x$enable_epoll" != "xno"],[
1541 # check if libs are needed to support epoll
1542 SQUID_STATE_SAVE(squid_epoll_state)
1543 AC_SEARCH_LIBS(epoll_ctl,[epoll])
1544 AS_IF([test "x$ac_cv_search_epoll_ctl" = "xno"],[enable_epoll=no],
1545 [test "x$ac_cv_search_epoll_ctl" = "xnone required"],[EPOLL_LIBS=""],
1546 [EPOLL_LIBS=$ac_cv_search_epoll_ctl]
1547 )
1548 AC_SUBST(EPOLL_LIBS)
1549 SQUID_STATE_ROLLBACK(squid_epoll_state) #de-pollute LIBS
1550
1551 # epoll requires sys/epoll.h
1552 AC_CHECK_HEADERS([sys/epoll.h])
1553
1554 dnl Verify that epoll really works
1555 AS_IF([test "x$ac_cv_search_epoll_ctl" != "xno"], SQUID_CHECK_EPOLL)
1556
1557 AS_IF([test "x$enable_epoll" = "xyes" -a "x$squid_cv_epoll_works" = "xno"],[
1558 AC_MSG_ERROR([Epoll does not work. Force-enabling it is not going to help.])
1559 ])
1560 ])
1561
1562 dnl Enable /dev/poll
1563 AC_ARG_ENABLE(devpoll,
1564 AS_HELP_STRING([--disable-devpoll],[Disable Solaris /dev/poll support.]),[
1565 SQUID_YESNO([$enableval],[--enable-devpoll])
1566 AS_IF([test "x$enableval" = "xyes"],[squid_opt_io_loop_engine="devpoll"])
1567 ])
1568 AC_MSG_NOTICE([enabling /dev/poll for net I/O: ${enable_devpoll:=auto}])
1569
1570 ## auto-detect and verify devpoll header and library present and working
1571 AS_IF([test "x$enable_devpoll" != "xno"],[
1572 # /dev/poll requires ioctl() and write()
1573 AC_CHECK_FUNCS(ioctl)
1574 AC_CHECK_FUNCS(write)
1575
1576 # /dev/poll requires sys/devpoll.h
1577 AC_CHECK_HEADERS([sys/devpoll.h],,[
1578 AS_IF([test "x$enable_devpoll" = "xyes"],[
1579 AC_MSG_ERROR([--enable-devpoll specified but /dev/poll headers not found])
1580 ])
1581 enable_devpoll=no
1582 ])
1583
1584 # Verify that /dev/poll really works
1585 AS_IF([test "x$enable_devpoll" != "xno"], SQUID_CHECK_DEVPOLL)
1586
1587 AS_IF([test "x$enable_devpoll" = "xyes" -a "x$squid_cv_devpoll_works" = "xno"],[
1588 AC_MSG_ERROR([/dev/poll does not work. Force-enabling it is not going to help.])
1589 ])
1590 ])
1591
1592 AC_ARG_ENABLE(http-violations,
1593 AS_HELP_STRING([--disable-http-violations],
1594 [This allows you to remove code which is known to
1595 violate the HTTP protocol specification.]), [
1596 SQUID_YESNO([$enableval],[--enable-http-violations])
1597 ])
1598 SQUID_DEFINE_BOOL(USE_HTTP_VIOLATIONS, ${enable_http_violations:=yes},
1599 [Define to enable code which volates the HTTP standard specification])
1600 AC_MSG_NOTICE([HTTP violations support enabled: $enable_http_violations])
1601
1602 # IPFW Transparent Proxy
1603 AC_ARG_ENABLE(ipfw-transparent,
1604 AS_HELP_STRING([--enable-ipfw-transparent],
1605 [Enable Transparent Proxy support for systems
1606 using FreeBSD IPFW-style firewalling.]), [
1607 SQUID_YESNO([$enableval],[--enable-ipfw-transparent])
1608 ])
1609 SQUID_DEFINE_BOOL(IPFW_TRANSPARENT,${enable_ipfw_transparent:=no},
1610 [Enable support for Transparent Proxy on systems using FreeBSD IPFW-style firewalling.])
1611 AC_MSG_NOTICE([FreeBSD IPFW-based transparent proxying enabled: $enable_ipfw_transparent])
1612
1613 # IP-Filter Transparent Proxy
1614 AC_ARG_ENABLE(ipf-transparent,
1615 AS_HELP_STRING([--enable-ipf-transparent],
1616 [Enable Transparent Proxy support using IPFilter-style firewalling]), [
1617 SQUID_YESNO([$enableval],[--enable-ipf-transparent])
1618 ])
1619 #will be AC_DEFINEd later, after checking for appropriate infrastructure
1620 #IPF currently broken. Default-disabled for now.
1621 AC_MSG_NOTICE([IPF-based transparent proxying requested: ${enable_ipf_transparent:=no}])
1622
1623 dnl Enable PF Transparent Proxy
1624 AC_ARG_ENABLE(pf-transparent,
1625 AS_HELP_STRING([--enable-pf-transparent],
1626 [Enable Transparent Proxy support for systems using PF network address redirection.]), [
1627 SQUID_YESNO([$enableval],[--enable-pf-transparent])
1628 ])
1629 #will be AC_DEFINEd later, after checking for appropriate infrastructure
1630 AC_MSG_NOTICE([PF-based transparent proxying requested: ${enable_pf_transparent:=no}])
1631
1632 dnl Enable /dev/pf support for older PF Transparent Proxy systems (OpenBSD 4.x and older)
1633 AC_ARG_WITH(nat-devpf,
1634 AS_HELP_STRING([--with-nat-devpf],
1635 [Enable /dev/pf support for NAT on older OpenBSD and FreeBSD kernels.]), [
1636 SQUID_YESNO([$withval],[--with-nat-devpf])
1637 ])
1638 #will be AC_DEFINEd later, after checking for appropriate infrastructure
1639 AC_MSG_NOTICE([NAT lookups via /dev/pf: ${with_nat_devpf:=no}])
1640
1641 # Linux Netfilter Transparent Proxy
1642 AC_ARG_ENABLE(linux-netfilter,
1643 AS_HELP_STRING([--enable-linux-netfilter],
1644 [Enable Transparent Proxy support for Linux (Netfilter)]), [
1645 SQUID_YESNO([$enableval],[--enable-linux-netfilter])
1646 ])
1647 AC_MSG_NOTICE([Linux Netfilter support requested: ${enable_linux_netfilter:=auto}])
1648 #will be AC_DEFINEd later, after checking for appropriate infrastructure
1649
1650
1651 dnl Look for libnetfilter_conntrack options (needed for QOS netfilter marking)
1652 SQUID_AUTO_LIB(netfilter-conntrack,[Netfilter conntrack],[LIBNETFILTER_CONNTRACK])
1653 SQUID_CHECK_LIB_WORKS(netfilter-conntrack,[
1654 LDFLAGS="$LIBNETFILTER_CONNTRACK_PATH $LDFLAGS"
1655 CPPFLAGS="$LIBNETFILTER_CONNTRACK_CFLAGS $CPPFLAGS"
1656 AC_SEARCH_LIBS([nfct_query],[netfilter_conntrack],[LIBNETFILTER_CONNTRACK_LIBS="-lnetfilter_conntrack"])
1657 AC_CHECK_HEADERS([ \
1658 libnetfilter_conntrack/libnetfilter_conntrack.h \
1659 libnetfilter_conntrack/libnetfilter_conntrack_tcp.h
1660 ],,[LIBNETFILTER_CONNTRACK_LIBS=""])
1661 ])
1662
1663 dnl Enable Large file support
1664 buildmodel=""
1665
1666 AC_ARG_WITH(large-files,
1667 AS_HELP_STRING([--with-large-files],[Enable support for large files (logs etc).]), [
1668 SQUID_YESNO([$withval],[--with-large-files])
1669 squid_opt_enable_large_files=$withval
1670 ])
1671
1672 dnl UNIX Build environment
1673 dnl AS_HELP_STRING is not suited here because it cannot to specify newlines
1674 AC_ARG_WITH(build-environment,
1675 AS_HELP_STRING([--with-build-environment=model],
1676 [The build environment to use. Normally one of
1677 POSIX_V6_ILP32_OFF32 (32 bits),
1678 POSIX_V6_ILP32_OFFBIG (32 bits with large file support),
1679 POSIX_V6_LP64_OFF64 (64 bits),
1680 POSIX_V6_LPBIG_OFFBIG (large pointers and files),
1681 XBS5_ILP32_OFF32 i(legacy, 32 bits),
1682 XBS5_ILP32_OFFBIG (legacy, 32 bits with large file support),
1683 XBS5_LP64_OFF64 (legacy, 64 bits),
1684 XBS5_LPBIG_OFFBIG (legacy, large pointers and files)
1685 or default (The default for your OS)]), [
1686 AS_CASE(["$withval"],
1687 [yes|no],[AC_MSG_FAILURE([--with-build-environment expects a build environment string as used by getconf])],
1688 [buildmodel="$withval"]
1689 )
1690 ])
1691
1692 #hack. Let's early-detect sizeof(long)
1693 AC_CHECK_SIZEOF(long)
1694
1695 AS_IF([test "x$squid_opt_enable_large_files" = "xyes" -a "x$buildmodel" = "x"],[
1696 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
1697 AS_IF([test "`getconf _$model 2>/dev/null || true`" = 1 -o "`getconf $model 2>/dev/null || true`"],[
1698 buildmodel=$model
1699 break
1700 ])
1701 done
1702 AS_IF([test "x$buildmodel" = "x"],[
1703 AC_MSG_WARN([No suitable build environment found for large files. Trying to use _FILE_OFFSET_BITS=64])
1704 ])
1705 ])
1706 AS_IF([test "x$buildmodel" = "xdefault" -o "x$buildmodel" = "x"],[
1707 # define _FILE_OFFSET_BITS if requested and needed
1708 AS_IF([test "x$squid_opt_enable_large_files" = "xyes" -a $ac_cv_sizeof_long -le 4],[
1709 AC_MSG_NOTICE([Enabling -D_FILE_OFFSET_BITS=64])
1710 CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
1711 CXXFLAGS="-D_FILE_OFFSET_BITS=64 $CXXFLAGS"
1712 ])
1713 ],[
1714 AC_MSG_NOTICE([Using $buildmodel build environment])
1715 AS_IF([ ! test "`getconf _$buildmodel 2>/dev/null || true`" = 1 -o "`getconf $buildmodel 2>/dev/null || true`"],[
1716 AC_MSG_ERROR([Build environment $buildmodel not known to getconf.])
1717 ])
1718 CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
1719 CXXFLAGS="`getconf ${buildmodel}_CFLAGS` $CXXFLAGS"
1720 LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
1721 LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
1722
1723 AS_IF([test "x$squid_host_os" = "xsolaris"],[
1724 # On Solaris getconf returns for CFLAGS -xarch=generic64, -Xa and -Usun options, and
1725 # for LDFLAGS -xarch=generic64, but:
1726 # "-Xa" is supported only by Sun cc, so we need to remove it when using gcc
1727 # For gcc "-xarch=generic64" must be replaced with "-m64"
1728 # The 'sun' define is needed by ipfilter includes, so we must remove "-Usun"
1729 AS_IF([test "x$GCC" = "xyes"],[
1730 AC_MSG_NOTICE([Removing -Xa for gcc/g++ on $host])
1731 CFLAGS="`echo $CFLAGS | sed -e 's/-Xa//'`"
1732 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Xa//'`"
1733 AC_MSG_NOTICE([Replacing -xarch=generic64 with -m64 for gcc/g++ on $host])
1734 CFLAGS="`echo $CFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
1735 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
1736 LDFLAGS="`echo $LDFLAGS | sed -e 's/-xarch=generic64//'`"
1737 ])
1738 AC_MSG_NOTICE([Removing -Usun on $host])
1739 CFLAGS="`echo $CFLAGS | sed -e 's/-Usun//'`"
1740 CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Usun//'`"
1741 ])
1742 ])
1743
1744 AC_ARG_ENABLE(follow-x-forwarded-for,
1745 AS_HELP_STRING([--disable-follow-x-forwarded-for],
1746 [Do not follow the X-Forwarded-For
1747 HTTP header to try to find the IP address of the
1748 original or indirect client when a request has
1749 been forwarded through other proxies.]), [
1750 SQUID_YESNO([$enableval],[--enable-follow-x-forwarded-for])
1751 ])
1752 AC_MSG_NOTICE([Support for X-Forwarded-For enabled: ${enable_follow_x_forwarded_for:=yes}])
1753 SQUID_DEFINE_BOOL(FOLLOW_X_FORWARDED_FOR,$enable_follow_x_forwarded_for,
1754 [Enable following X-Forwarded-For headers])
1755
1756 AC_ARG_ENABLE(ident-lookups,
1757 AS_HELP_STRING([--disable-ident-lookups],
1758 [Remove code that supports performing Ident (RFC 931) lookups.]), [
1759 SQUID_YESNO([$enableval],[--enable-ident-lookups])
1760 ])
1761 AC_MSG_NOTICE([Support for Ident lookups enabled: ${enable_ident_lookups:=yes}])
1762 SQUID_DEFINE_BOOL(USE_IDENT,$enable_ident_lookups,[Support for Ident (RFC 931) lookups])
1763
1764 dnl Select Default hosts file location
1765 AC_ARG_ENABLE(default-hostsfile,
1766 AS_HELP_STRING([--enable-default-hostsfile=path],
1767 [Select default location for hosts file.
1768 See hosts_file directive in squid.conf for details]), [
1769 # TODO: handle the "yes" case cleanly
1770 AS_CASE(["$enableval"],
1771 [no|none],[squid_opt_default_hosts="none"],
1772 [
1773 squid_opt_default_hosts=$enableval
1774 AS_IF([ ! test -f "$enableval"],[
1775 AC_MSG_WARN([Unable to find file $enableval. I hope you know what you are doing.])
1776 ])
1777 ])
1778 ])
1779 AC_MSG_NOTICE([Default hosts file set to: ${squid_opt_default_hosts:=/etc/hosts}])
1780 DEFAULT_HOSTS=$squid_opt_default_hosts
1781 AC_SUBST(DEFAULT_HOSTS)
1782
1783 # Select auth schemes modules to build
1784 AC_ARG_ENABLE(auth,
1785 AS_HELP_STRING([--disable-auth],
1786 [Do not support authentication. When supported, the list of schemes
1787 and helpers to be enabled is defined elsewhere]), [
1788 SQUID_YESNO([$enableval],[--enable-auth])
1789 ])
1790 AC_MSG_NOTICE([Authentication support enabled: ${enable_auth:=yes}])
1791 SQUID_DEFINE_BOOL(USE_AUTH,$enable_auth,[Enable support for authentication])
1792 AM_CONDITIONAL(ENABLE_AUTH, test "x$enable_auth" != "xno")
1793 AUTH_MODULES=""
1794 require_smblib="no"
1795 require_sspi="no"
1796
1797 AC_ARG_ENABLE(auth-basic,
1798 AS_HELP_STRING([--enable-auth-basic="list of helpers"],
1799 [Enable the basic authentication scheme, and build the specified helpers.
1800 Not providing an explicit list of helpers will attempt build of
1801 all possible helpers. Default is to do so.
1802 To disable the basic authentication scheme, use --disable-auth-basic.
1803 To enable but build no helpers, specify "none".
1804 To see available helpers, see the src/auth/basic/ directory. ]),[
1805 #nothing to do really
1806 ])
1807 m4_include([src/auth/basic/helpers.m4])
1808
1809 AC_ARG_ENABLE(auth-digest,
1810 AS_HELP_STRING([--enable-auth-digest="list of helpers"],
1811 [Enable the Digest authentication scheme, and build the specified helpers.
1812 Not providing an explicit list of helpers will attempt build of
1813 all possible helpers. Default is to do so.
1814 To disable the Digest authentication scheme, use --disable-auth-digest.
1815 To enable but build no helpers, specify "none".
1816 To see available helpers, see the src/auth/digest/ directory. ]),[
1817 #nothing to do, really
1818 ])
1819 m4_include([src/auth/digest/helpers.m4])
1820
1821 AC_ARG_ENABLE(auth-negotiate,
1822 AS_HELP_STRING([--enable-auth-negotiate="list of helpers"],
1823 [Enable the Negotiate authentication scheme, and build the specified
1824 helpers.
1825 Not providing an explicit list of helpers will attempt build of
1826 all possible helpers. Default is to do so.
1827 To disable the Negotiate authentication scheme,
1828 use --disable-auth-negotiate.
1829 To enable but build no helpers, specify "none".
1830 To see available helpers, see the src/auth/negotiate/ directory. ]),[
1831 #nothing to do, really
1832 ])
1833 m4_include([src/auth/negotiate/helpers.m4])
1834
1835 AC_ARG_ENABLE(auth-ntlm,
1836 AS_HELP_STRING([--enable-auth-ntlm="list of helpers"],
1837 [Enable the NTLM authentication scheme, and build the specified helpers.
1838 Not providing an explicit list of helpers will attempt build of
1839 all possible helpers. Default is to do so.
1840 To disable the NTLM authentication scheme, use --disable-auth-ntlm.
1841 To enable but build no helpers, specify "none".
1842 To see available helpers, see the src/auth/ntlm/ directory. ]),[
1843 ])
1844 m4_include([src/auth/ntlm/helpers.m4])
1845
1846 dnl Authentication libraries to build
1847 dnl This list will not be needed when each auth library has its own Makefile
1848 dnl this is to be placed AFTER each auth module's handler
1849 AUTH_LIBS_TO_BUILD=
1850 for module in $AUTH_MODULES; do
1851 AUTH_LIBS_TO_BUILD="$AUTH_LIBS_TO_BUILD ${module}/lib${module}.la"
1852 done
1853 AC_SUBST(AUTH_MODULES)
1854 AC_SUBST(AUTH_LIBS_TO_BUILD)
1855 AM_CONDITIONAL(ENABLE_SMBLIB, test "x$require_smblib" = "xyes")
1856 AM_CONDITIONAL(ENABLE_SSPI, test "x$require_sspi" = "xyes")
1857
1858 dnl Select logging daemon helpers to build
1859 AC_ARG_ENABLE(log-daemon-helpers,
1860 AS_HELP_STRING([--enable-log-daemon-helpers="list of helpers"],
1861 [This option selects which logging daemon helpers to
1862 build and install as part of the normal build process
1863 For a list of available helpers see the src/log/
1864 directory.]),[
1865 #nothing to do, really
1866 ])
1867 m4_include([src/log/helpers.m4])
1868
1869 AC_ARG_ENABLE(external-acl-helpers,
1870 AS_HELP_STRING([--enable-external-acl-helpers="list of helpers"],
1871 [Enable external_acl helpers support and the helpers themselves.
1872 Default is to build all buildable helpers and enable support.
1873 To disable support, use --disable-external-acl-helpers.
1874 To build no helpers, specify "none".
1875 To see available helpers, see the src/acl/external/
1876 directory]), [
1877 #nothing to do, really
1878 ])
1879 m4_include([src/acl/external/helpers.m4])
1880
1881 dnl Select url_rewrite helpers to build
1882 AC_ARG_ENABLE(url-rewrite-helpers,
1883 AS_HELP_STRING([--enable-url-rewrite-helpers="list of helpers"],
1884 [This option selects which url_rewrite helpers to
1885 build and install as part of the normal build
1886 process. The default is to attempt the build of all possible
1887 helpers. Use --disable-url-rewrite-helpers to build none.
1888 For a list of available helpers see the
1889 src/http/url_rewriters/ directory.]),[
1890 ])
1891 m4_include([src/http/url_rewriters/helpers.m4])
1892
1893 dnl Select security helpers to build
1894 AC_ARG_ENABLE(security-cert-validators,
1895 AS_HELP_STRING([--enable-security-cert-validators="list of helpers"],
1896 [This option selects which security certificate validator
1897 helpers to build and install as part of the normal build
1898 process. The default is to attempt the build of all possible
1899 helpers. Use --disable-security-cert-validators to
1900 build none. For a list of available helpers see the
1901 src/security/cert_validators/ directory.]),[
1902 ])
1903 m4_include([src/security/cert_validators/helpers.m4])
1904
1905 AC_ARG_ENABLE(security-cert-generators,
1906 AS_HELP_STRING([--enable-security-cert-generators="list of helpers"],
1907 [This option selects which security certificate validator
1908 helpers to build and install as part of the normal build
1909 process. The default is to attempt the build of all possible
1910 helpers. Use --disable-security-cert-genrators to
1911 build none. For a list of available helpers see the
1912 src/security/cert_generators/ directory.]),[
1913 ])
1914 m4_include([src/security/cert_generators/helpers.m4])
1915
1916 dnl Select storeid_rewrite helpers to build
1917 AC_ARG_ENABLE(storeid-rewrite-helpers,
1918 AS_HELP_STRING([--enable-storeid-rewrite-helpers="list of helpers"],
1919 [This option selects which Store-ID rewrite helpers to
1920 build and install as part of the normal build
1921 process. The default is to attempt the build of all possible
1922 helpers. Use --disable-storeid-rewrite-helpers to build none.
1923 For a list of available helpers see the
1924 src/store/id_rewriters/ directory.]),[
1925 ])
1926 m4_include([src/store/id_rewriters/helpers.m4])
1927
1928 AC_ARG_WITH(valgrind-debug,
1929 AS_HELP_STRING([--with-valgrind-debug],
1930 [Include debug instrumentation for use with valgrind]),
1931 [
1932 SQUID_YESNO([$withval],[--with-valgrind-debug])
1933 AS_IF([test "x$withval" != "xno"],[
1934 AC_CHECK_HEADERS(valgrind/memcheck.h,[],[
1935 AC_MSG_ERROR([Valgrind support requested, needed headers not found.])
1936 ])
1937 ])
1938 ])
1939 SQUID_DEFINE_BOOL(WITH_VALGRIND,${with_valgrind_debug:=no},
1940 [Valgrind memory debugger support])
1941 AC_MSG_NOTICE([Valgrind debug support enabled: $with_valgrind_debug])
1942
1943 dnl Enable WIN32 Service compile mode
1944 AC_ARG_ENABLE(win32-service,
1945 AS_HELP_STRING([--enable-win32-service],
1946 [Compile Squid as a WIN32 Service.
1947 Works only on MS-Windows platforms]), [
1948 SQUID_YESNO([$enableval],[--enable-win32-service])
1949 ])
1950 SQUID_DEFINE_BOOL(USE_WIN32_SERVICE,${enable_win32_service:=no},
1951 [Enable code supporting MS Windows service mode])
1952 AC_MSG_NOTICE([MS Windows service mode enabled: $enable_win32_service])
1953
1954
1955 # Disable "unlinkd" code
1956 AC_ARG_ENABLE(unlinkd,
1957 AS_HELP_STRING([--disable-unlinkd],[Do not use unlinkd]), [
1958 SQUID_YESNO([$enableval],[--enable-unlinkd])
1959 ])
1960 SQUID_DEFINE_BOOL(USE_UNLINKD,${enable_unlinkd:=yes},
1961 [Enable useage of unlinkd])
1962 AM_CONDITIONAL(ENABLE_UNLINKD,test "x$enable_unlinkd" = "xyes")
1963 AC_MSG_NOTICE([unlinkd enabled: $enable_unlinkd])
1964
1965 # Enable backtraces on fatal errors
1966 AC_ARG_ENABLE(stacktraces,
1967 AS_HELP_STRING([--enable-stacktraces],
1968 [Enable automatic call backtrace on fatal errors]), [
1969 SQUID_YESNO([$enableval],[--enable-stacktraces])
1970 ])
1971 SQUID_DEFINE_BOOL(PRINT_STACK_TRACE,${enable_stacktraces:=no},
1972 [Print stack traces on fatal errors])
1973 AC_MSG_NOTICE([Automatically print stack trace on fatal errors: $enable_stacktraces])
1974
1975 # Enable X-Accelerator-Vary for Vary support within an accelerator setup
1976 AC_ARG_ENABLE(x-accelerator-vary,
1977 AS_HELP_STRING([--enable-x-accelerator-vary],
1978 [Enable support for the X-Accelerator-Vary
1979 HTTP header. Can be used to indicate
1980 variance within an accelerator setup.
1981 Typically used together with other code
1982 that adds custom HTTP headers to the requests.]), [
1983 SQUID_YESNO([$enableval],[--enable-x-accelerator-vary])
1984 ])
1985 SQUID_DEFINE_BOOL(X_ACCELERATOR_VARY,${enable_x_accelerator_vary:=no},
1986 [Enable support for the X-Accelerator-Vary HTTP header])
1987 AC_MSG_NOTICE([X-Accelerator-Vary support enabled: $enable_x_accelerator_vary])
1988
1989 SQUID_AUTO_LIB(cppunit,[cppunit test framework],[LIBCPPUNIT])
1990 SQUID_CHECK_LIB_WORKS(cppunit,[
1991 PKG_CHECK_MODULES([LIBCPPUNIT],[cppunit],[
1992 squid_cv_cppunit_version="`pkg-config --modversion cppunit`"
1993 AC_MSG_NOTICE([using system installed cppunit version $squid_cv_cppunit_version])
1994 AS_UNSET(squid_cv_cppunit_version)
1995
1996 SQUID_STATE_SAVE(squid_cppunit_state)
1997 CXXFLAGS="${CXXFLAGS} ${LIBCPPUNIT_CFLAGS}"
1998 LIBS="${LIBS} ${LIBCPPUNIT_LIBS}"
1999 AC_CHECK_HEADERS(cppunit/extensions/HelperMacros.h)
2000 SQUID_STATE_ROLLBACK(squid_cppunit_state)
2001 ],[
2002 AC_MSG_WARN([cppunit does not appear to be installed. Squid does not require this, but code testing with 'make check' will fail.])
2003 ])
2004 ])
2005
2006 dnl Check for headers
2007 AC_CHECK_HEADERS( \
2008 arpa/inet.h \
2009 arpa/nameser.h \
2010 assert.h \
2011 bstring.h \
2012 crypt.h \
2013 ctype.h \
2014 direct.h \
2015 dirent.h \
2016 errno.h \
2017 execinfo.h \
2018 fcntl.h \
2019 fnmatch.h \
2020 getopt.h \
2021 glob.h \
2022 gnumalloc.h \
2023 grp.h \
2024 ipl.h \
2025 libc.h \
2026 limits.h \
2027 linux/posix_types.h \
2028 linux/types.h \
2029 malloc.h \
2030 math.h \
2031 memory.h \
2032 mount.h \
2033 netdb.h \
2034 netinet/in.h \
2035 netinet/in_systm.h \
2036 netinet/tcp.h \
2037 paths.h \
2038 poll.h \
2039 priv.h \
2040 pwd.h \
2041 regex.h \
2042 sched.h \
2043 siginfo.h \
2044 signal.h \
2045 stdarg.h \
2046 stddef.h \
2047 stdio.h \
2048 stdlib.h \
2049 string.h \
2050 strings.h \
2051 sys/bitypes.h \
2052 sys/file.h \
2053 sys/ioctl.h \
2054 sys/ipc.cc \
2055 sys/param.h \
2056 sys/prctl.h \
2057 sys/procctl.h \
2058 sys/md5.h \
2059 sys/mman.h \
2060 sys/msg.h \
2061 sys/resource.h \
2062 sys/select.h \
2063 sys/shm.h \
2064 sys/socket.h \
2065 sys/stat.h \
2066 syscall.h \
2067 sys/syscall.h \
2068 sys/time.h \
2069 sys/types.h \
2070 sys/uio.h \
2071 sys/un.h \
2072 sys/vfs.h \
2073 sys/wait.h \
2074 syslog.h \
2075 time.h \
2076 unistd.h \
2077 utime.h \
2078 varargs.h \
2079 byteswap.h \
2080 glib.h \
2081 stdint.h \
2082 inttypes.h \
2083 wchar.h
2084 )
2085
2086 AC_CHECK_HEADERS( \
2087 linux/netfilter_ipv4.h \
2088 linux/netfilter_ipv6/ip6_tables.h \
2089 ,,,
2090 SQUID_DEFAULT_INCLUDES
2091 #if HAVE_LIMITS_H
2092 #include <limits.h>
2093 #endif
2094 /* Netfilter ip(6)tables v1.4.0 has broken headers */
2095 #if HAVE_NETINET_IN_H
2096 #include <netinet/in.h>
2097 #endif
2098 )
2099
2100 dnl *BSD do not include the dependencies for all their net/ and netinet/ files
2101 dnl We must include a few basic type headers for them to work.
2102 AC_CHECK_HEADERS( \
2103 net/if.h \
2104 netinet/if_ether.h\
2105 netinet/icmp6.h \
2106 netinet/in.h \
2107 netinet/ip.h \
2108 netinet/ip6.h \
2109 netinet/ip_icmp.h \
2110 netinet/ipl.h \
2111 net/pf/pfvar.h \
2112 net/pfvar.h \
2113 sys/mount.h\
2114 resolv.h \
2115 ,,,
2116 SQUID_BSDNET_INCLUDES)
2117
2118 AC_C_CONST
2119 AC_C_BIGENDIAN
2120
2121 AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
2122 #if HAVE_TIME_H
2123 #include <time.h>
2124 #endif
2125 ])
2126
2127 AC_CHECK_TYPE(struct rusage,AC_DEFINE(HAVE_STRUCT_RUSAGE,1,[The system provides struct rusage]),,[
2128 #if HAVE_SYS_TIME_H
2129 #include <sys/time.h>
2130 #endif
2131 #if HAVE_SYS_RESOURCE_H
2132 #include <sys/resource.h>
2133 #endif
2134 ])
2135
2136 AC_CHECK_MEMBERS([struct iphdr.ip_hl],,,[
2137 #if HAVE_SYS_TYPES_H
2138 #include <sys/types.h>
2139 #endif
2140 #include <netinet/in.h>
2141 #include <netinet/in_systm.h>
2142 #include <netinet/ip.h>
2143 #if defined (__linux__) || defined (__CYGWIN__)
2144 #define ip_hl ihl
2145 #endif
2146 #ifndef __linux__
2147 #ifndef __CYGWIN__
2148 #define iphdr ip
2149 #endif
2150 #endif])
2151
2152 dnl Check for typedefs
2153 AC_CHECK_SIZEOF(void *)
2154
2155 # check for a bunch of types
2156 AC_TYPE_INT8_T
2157 AC_TYPE_UINT8_T
2158 AC_TYPE_INT16_T
2159 AC_TYPE_UINT16_T
2160 AC_TYPE_INT32_T
2161 AC_TYPE_UINT32_T
2162 AC_TYPE_INT64_T
2163 AC_TYPE_UINT64_T
2164 AC_TYPE_PID_T
2165 AC_TYPE_SIZE_T
2166 AC_TYPE_SSIZE_T
2167 AC_TYPE_OFF_T
2168 AC_TYPE_UID_T
2169 AC_CHECK_TYPE([bool])
2170 #need the defines for PRId64
2171 AC_CHECK_SIZEOF(int64_t)
2172 AC_CHECK_SIZEOF(long)
2173 #need the define for overflow checks
2174 AC_CHECK_SIZEOF(off_t)
2175 AC_CHECK_SIZEOF(size_t)
2176
2177 dnl On Solaris 9 x86, gcc may includes a "fixed" set of old system include files
2178 dnl that is incompatible with the updated Solaris header files.
2179 dnl For this reason, we must check if pad128_t and upad128_t are defined.
2180 AC_CHECK_TYPE(pad128_t,
2181 AC_DEFINE(HAVE_PAD128_T,1,[pad128_t is defined in system headers]),
2182 ,SQUID_DEFAULT_INCLUDES)
2183
2184 AC_CHECK_TYPE(upad128_t,
2185 AC_DEFINE(HAVE_UPAD128_T,1,[upad128_t is defined in system headers]),
2186 ,SQUID_DEFAULT_INCLUDES)
2187
2188 AC_CHECK_TYPE(mode_t, AC_DEFINE(HAVE_MODE_T,1,[mode_t is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
2189 AC_CHECK_TYPE(fd_mask, AC_DEFINE(HAVE_FD_MASK,1,[fd_mask is defined by the system headers]),,SQUID_DEFAULT_INCLUDES)
2190
2191 AC_CHECK_TYPE(socklen_t,AC_DEFINE(HAVE_SOCKLEN_T,1,[socklen_t is defined by the system headers]),,[
2192 #include <sys/types.h>
2193 #include <sys/socket.h>
2194 #include <stdlib.h>
2195 #include <stddef.h>
2196 ])
2197
2198 AC_CHECK_TYPE(mtyp_t,AC_DEFINE(HAVE_MTYP_T,1,
2199 [mtyp_t is defined by the system headers]),,[#include <sys/types.h>
2200 #include <sys/ipc.h>
2201 #include <sys/msg.h>])
2202
2203 AC_CHECK_TYPE(cpu_set_t,
2204 AC_DEFINE(HAVE_CPU_SET_T,1,[cpu_set_t is defined by the system headers]),,[
2205 #if HAVE_SCHED_H
2206 #include <sched.h>
2207 #endif
2208 ])
2209
2210 dnl Check for special functions
2211 AC_FUNC_ALLOCA
2212
2213 SQUID_AUTO_LIB(cap,[Linux capabilities],[LIBCAP])
2214 SQUID_CHECK_LIB_WORKS(cap,[
2215 SQUID_STATE_SAVE(squid_libcap_state)
2216 CXXFLAGS="$LIBCAP_CFLAGS $CXXFLAGS"
2217 LDFLAGS="$LIBCAP_PATH $LDFLAGS"
2218 PKG_CHECK_MODULES([LIBCAP],[libcap >= 2.09],[],[
2219 # cap_clear_flag is the most recent libcap function we require
2220 AC_CHECK_LIB([cap],[cap_clear_flag],[LIBCAP_LIBS="$LIBCAP_LIBS -lcap"])
2221 ])
2222 SQUID_CHECK_FUNCTIONAL_LIBCAP2
2223 AC_MSG_NOTICE([libcap headers are ok: $squid_cv_sys_capability_works])
2224 AS_IF([test "x$squid_cv_sys_capability_works" = "xno"],[LIBCAP_LIBS=""])
2225 SQUID_STATE_ROLLBACK(squid_libcap_state)
2226
2227 AS_IF([test "x$LIBCAP_LIBS" != "x"],[
2228 AC_DEFINE(USE_LIBCAP,1,[Linux capabilities library support])
2229 ])
2230 ])
2231
2232 dnl Check for needed libraries
2233 AC_SEARCH_LIBS([gethostbyname],[nsl resolv bind])
2234 AC_SEARCH_LIBS([res_init],[resolv])
2235 AC_SEARCH_LIBS([__res_search],[resolv])
2236 AC_SEARCH_LIBS([bind],[socket])
2237 AC_SEARCH_LIBS([opcom_stack_trace],[opcom_stack])
2238 AC_SEARCH_LIBS([yp_match], [nsl nss_nis nss_nisplus])
2239
2240 # check that we have unix sockets
2241 SQUID_CHECK_UNIX_SOCKET
2242 SQUID_DEFINE_BOOL(HAVE_UNIXSOCKET,$squid_cv_unixsocket,[System supports unix sockets])
2243
2244 AC_CHECK_LIB(gnumalloc, malloc)
2245 AS_IF([test "x$ac_cv_lib_gnumalloc_malloc" = "xyes"],[
2246 AC_MSG_NOTICE([Disabling extended malloc functions when using bundled gnumalloc])
2247 ac_cv_func_mallocblksize=no
2248 ac_cv_func_mallopt=no
2249 ],[
2250 AS_CASE(["$squid_host_os"],
2251 [solaris],[AC_MSG_NOTICE([skipping libmalloc check for $host])],
2252 [freebsd],[AC_MSG_NOTICE([skipping libmalloc check for $host])],
2253 [AC_CHECK_LIB(malloc, main)]
2254 )
2255 ])
2256
2257 AS_IF([test "$squid_host_os" = "mingw"],[
2258 AC_MSG_NOTICE([Use MSVCRT for math functions.])
2259 ],[
2260 dnl log() are only used in old C code for now.
2261 AC_LANG_PUSH([C])
2262 AC_SEARCH_LIBS([log],[m])
2263 AC_LANG_POP([C])
2264 ])
2265
2266 dnl --with-maxfd present for compatibility with Squid-2.
2267 dnl undocumented in ./configure --help to encourage using the Squid-3 directive
2268 AC_ARG_WITH(maxfd,,[
2269 AS_CASE([$withval],
2270 [@<:@0-9@:>@*],[
2271 squid_filedescriptors_num=$withval
2272 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])
2273 ],
2274 [AC_MSG_ERROR(--with-maxfd expects a numeric argument)]
2275 )
2276 ])
2277
2278 AC_ARG_WITH(filedescriptors,
2279 AS_HELP_STRING([--with-filedescriptors=NUMBER],
2280 [Force squid to support NUMBER filedescriptors]),[
2281 AS_CASE([$withval],
2282 [@<:@0-9@:>@*],[
2283 squid_filedescriptors_num=$withval
2284 AC_MSG_NOTICE([forcing default of $squid_filedescriptors_num filedescriptors (user-forced)])],
2285 [AC_MSG_ERROR([--with-filedescriptors expects a numeric argument])]
2286 )
2287 ])
2288
2289 SQUID_CHECK_DEFAULT_FD_SETSIZE
2290 SQUID_CHECK_MAXFD
2291
2292
2293 dnl Enable IPv6 support
2294 AC_MSG_CHECKING([whether to enable IPv6])
2295 AC_ARG_ENABLE(ipv6,
2296 AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support. The default is to probe system capabilities on startup.]), [
2297 SQUID_YESNO([$enableval],[--enable-ipv6])
2298 ])
2299 AC_MSG_RESULT(${enable_ipv6:=yes})
2300 SQUID_DEFINE_BOOL(USE_IPV6,$enable_ipv6,[Enable support for IPv6 ])
2301
2302 AS_IF([test "x$enable_ipv6" = "xyes"],[SQUID_CHECK_SIN6_LEN_IN_SAI])
2303 SQUID_CHECK_SS_LEN_IN_SOCKADDR_STORAGE
2304 SQUID_CHECK_SIN_LEN_IN_SOCKADDR_IN
2305
2306 dnl System-specific library modifications
2307 AH_TEMPLATE(GETTIMEOFDAY_NO_TZP,[Whether gettimeofday takes only one argument])
2308 AS_CASE(["$host"],
2309 [*-pc-sco3.2*],[
2310 # -lintl is needed on SCO version 3.2v4.2 for strftime()
2311 # Robert Side <rside@aiinc.bc.ca>
2312 # Mon, 18 Jan 1999 17:48:00 GMT
2313 AC_CHECK_LIB(intl, strftime)
2314 ],
2315
2316 [i386-*-solaris2.*],[
2317 AS_IF([test "x$GCC" = "xyes"],[
2318 AC_MSG_NOTICE([Removing -O for gcc on $host])
2319 CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9g]]*//'`"
2320 ])
2321 ],
2322
2323 [*-sgi-irix*],[
2324 AC_MSG_NOTICE([Removing -lsocket for IRIX...])
2325 LIBS=`echo $LIBS | sed -e s/-lsocket//`
2326 AC_MSG_NOTICE([Removing -lnsl for IRIX...])
2327 LIBS=`echo $LIBS | sed -e s/-lnsl//`
2328 ac_cv_lib_nsl_main=no
2329 ],
2330
2331 [*-ibm-aix*],[
2332 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_rtti],[-rtti],[[
2333 #include <assert.h>
2334 #ifndef NULL
2335 #define NULL 0
2336 #endif
2337 class Foo{
2338 public:virtual ~Foo(){}
2339 };
2340 class Bar:public Foo{
2341 public:Bar():Foo(){}
2342 };
2343 ]],[[
2344 Foo * myFoo=new Bar();
2345 Bar * myBar=dynamic_cast<Bar *>(myFoo);
2346 assert(myBar != NULL);
2347 ]])
2348 AS_IF([test "$ac_cv_require_rtti" = "yes"],[
2349 SQUID_CFLAGS="-rtti $SQUID_CFLAGS"
2350 SQUID_CXXFLAGS="-rtti $SQUID_CXXFLAGS"
2351 ])
2352
2353 AC_LANG_PUSH([C])
2354 SQUID_CC_REQUIRE_ARGUMENT([ac_cv_require_qcpluscmt],[-qcpluscmt],[[]],[[//c++ cmt]])
2355 AC_LANG_POP([C])
2356 AS_IF([test "$ac_cv_require_qcpluscmt" = "yes"],[
2357 SQUID_CFLAGS="-qcpluscmt $SQUID_CFLAGS"
2358 ])
2359 ],
2360
2361 [*-*-solaris2.[[0-4]]],[AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)],
2362
2363 [*-sony-newsos[[56]]*],[AC_DEFINE(GETTIMEOFDAY_NO_TZP,1)]
2364 )
2365
2366 dnl This has to be before AC_CHECK_FUNCS
2367 # Disable poll() on certain platforms. Override by setting ac_cv_func_poll
2368 # when running configure.
2369 AS_IF([test "x$ac_cv_func_poll" = "x"],[
2370 AS_CASE(["$host"],
2371 [*-hp-hpux*.*],[
2372 # Duane Wessels
2373 AC_MSG_NOTICE([disabling poll for $host...])
2374 ac_cv_func_poll='no'
2375 ],
2376
2377 [*-linux-*],[
2378 # Henrik Nordstrom (hno@squid-cache.org) 19980817
2379 # poll is problematic on Linux. We disable it
2380 # by default until Linux gets it right.
2381 rev=`uname -r | awk -F. '{printf "%03d%03d",$1,$2}'`
2382 AS_IF([test $rev -lt 002002],[
2383 AC_MSG_NOTICE([disabling poll for $host < 2.2...])
2384 ac_cv_func_poll='no'
2385 ])
2386 ],
2387
2388 [powerpc-ibm-aix4.1.*],[
2389 # Mike Laster (mlaster@metavillage.com) 19981021
2390 AC_MSG_NOTICE([disabling poll for $host...])
2391 ac_cv_func_poll='no'
2392 ]
2393 )
2394 ])
2395
2396 dnl Check for library functions
2397 AC_CHECK_FUNCS(\
2398 backtrace_symbols_fd \
2399 bcopy \
2400 eui64_aton \
2401 fchmod \
2402 getdtablesize \
2403 getpagesize \
2404 getpass \
2405 getrusage \
2406 getspnam \
2407 gettimeofday \
2408 glob \
2409 mallocblksize \
2410 mallopt \
2411 memcpy \
2412 memmove \
2413 memrchr \
2414 memset \
2415 mkstemp \
2416 mktime \
2417 mstats \
2418 poll \
2419 prctl \
2420 procctl \
2421 pthread_attr_setschedparam \
2422 pthread_attr_setscope \
2423 pthread_setschedparam \
2424 pthread_sigmask \
2425 putenv \
2426 regcomp \
2427 regexec \
2428 regfree \
2429 res_init \
2430 __res_init \
2431 rint \
2432 sched_getaffinity \
2433 sched_setaffinity \
2434 select \
2435 seteuid \
2436 setgroups \
2437 setpflags \
2438 setpgrp \
2439 setsid \
2440 setresuid \
2441 sigaction \
2442 snprintf \
2443 socketpair \
2444 sysconf \
2445 syslog \
2446 timegm \
2447 vsnprintf \
2448 )
2449 dnl ... and some we provide local replacements for
2450 AC_REPLACE_FUNCS(\
2451 initgroups \
2452 psignal \
2453 strerror \
2454 strtoll \
2455 tempnam \
2456 )
2457
2458 # Magic which checks whether we are forcing a type of comm loop we
2459 # are actually going to (ab)use.
2460 # Mostly ripped from squid-commloops, thanks to adrian and benno
2461
2462 AS_IF([test "x$squid_opt_io_loop_engine" != "x"],
2463 AC_MSG_NOTICE([choosing user-specified net I/O API $squid_opt_io_loop_engine]),
2464 [test "x$enable_epoll" != "xno" -a "x$squid_cv_epoll_works" = "xyes"],
2465 squid_opt_io_loop_engine="epoll",
2466 [test "x$enable_kqueue" != "xno"],
2467 squid_opt_io_loop_engine="kqueue",
2468 [test "x$enable_devpoll" != "xno"],
2469 squid_opt_io_loop_engine="devpoll",
2470 [test "x$enable_poll" != "xno" -a "x$ac_cv_func_poll" = "xyes"],
2471 squid_opt_io_loop_engine="poll",
2472 [test "x$enable_select" != "xno" -a "x$ac_cv_func_select" = "xyes"],
2473 squid_opt_io_loop_engine="select",
2474 [
2475 AC_MSG_WARN([Eep! Cannot find epoll, kqueue, /dev/poll, poll or select!])
2476 AC_MSG_WARN([Will try select and hope for the best.])
2477 squid_opt_io_loop_engine="select"
2478 ]
2479 )
2480
2481 AC_MSG_NOTICE([Using ${squid_opt_io_loop_engine} for the IO loop.])
2482
2483 AM_CONDITIONAL(ENABLE_POLL, test "x$squid_opt_io_loop_engine" = "xpoll")
2484 AM_CONDITIONAL(ENABLE_EPOLL, test "x$squid_opt_io_loop_engine" = "xepoll")
2485 AM_CONDITIONAL(ENABLE_SELECT, test "x$squid_opt_io_loop_engine" = "xselect")
2486 AM_CONDITIONAL(ENABLE_KQUEUE, test "x$squid_opt_io_loop_engine" = "xkqueue")
2487 AM_CONDITIONAL(ENABLE_DEVPOLL, test "x$squid_opt_io_loop_engine" = "xdevpoll")
2488
2489 AS_CASE([$squid_opt_io_loop_engine],
2490 [epoll],[AC_DEFINE(USE_EPOLL,1,[Use epoll() for the IO loop])],
2491 [devpoll],[AC_DEFINE(USE_DEVPOLL,1,[Use /dev/poll for the IO loop])],
2492 [poll],[AC_DEFINE(USE_POLL,1,[Use poll() for the IO loop])],
2493 [kqueue],[AC_DEFINE(USE_KQUEUE,1,[Use kqueue() for the IO loop])],
2494 [select],[AC_DEFINE(USE_SELECT,1,[Use select() for the IO loop])],
2495 )
2496
2497 AS_IF([test "x$ac_cv_func_sched_getaffinity" = "xyes" -a "x$ac_cv_func_sched_setaffinity" = "xyes"],[
2498 AC_DEFINE(HAVE_CPU_AFFINITY,1,[Support setting CPU affinity for workers])
2499 ])
2500
2501 AC_CHECK_HEADERS(mswsock.h)
2502 AC_MSG_CHECKING([for constant CMSG_SPACE])
2503 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
2504 #if HAVE_SYS_SOCKET_H
2505 #include <sys/socket.h>
2506 #endif
2507 #if HAVE_MSWSOCK_H
2508 #include <mswsock.h>
2509 #endif
2510
2511 int a[CMSG_SPACE(int)];
2512 ]])], [
2513 AC_MSG_RESULT(yes)
2514 AC_DEFINE(HAVE_CONSTANT_CMSG_SPACE, 1, [Define to 1 if CMSG_SPACE is constant])
2515 ], [
2516 AC_MSG_RESULT(no)
2517 ])
2518
2519 AC_CHECK_TYPE(struct cmsghdr,AC_DEFINE(HAVE_CMSGHDR,1,[The system provides struct cmsghdr]),,[
2520 #if HAVE_SYS_SOCKET_H
2521 #include <sys/socket.h>
2522 #endif
2523 #if HAVE_MSWSOCK_H
2524 #include <mswsock.h>
2525 #endif
2526 #if HAVE_WINSOCK2_H
2527 #include <winsock2.h>
2528 #endif
2529 ])
2530
2531 AC_CHECK_TYPE(struct iovec,AC_DEFINE(HAVE_IOVEC,1,[The system provides struct iovec]),,[
2532 #if HAVE_SYS_SOCKET_H
2533 #include <sys/socket.h>
2534 #endif
2535 #if HAVE_WINSOCK2_H
2536 #include <winsock2.h>
2537 #endif
2538 #if HAVE_SYS_UIO_H
2539 #include <sys/uio.h>
2540 #endif
2541 ])
2542
2543 AC_CHECK_TYPE(struct msghdr,AC_DEFINE(HAVE_MSGHDR,1,[The system provides struct msghdr]),,[
2544 #if HAVE_SYS_SOCKET_H
2545 #include <sys/socket.h>
2546 #endif
2547 #if HAVE_MSWSOCK_H
2548 #include <mswsock.h>
2549 #endif
2550 #if HAVE_WINSOCK2_H
2551 #include <winsock2.h>
2552 #endif
2553 ])
2554
2555 AC_CHECK_TYPE(struct sockaddr_un,AC_DEFINE(HAVE_SOCKADDR_UN,1,[The system provides sockaddr_un]),,[
2556 #if HAVE_SYS_UN_H
2557 #include <sys/un.h>
2558 #endif
2559 #if HAVE_SYS_SOCKET_H
2560 #include <sys/socket.h>
2561 #endif
2562 #if HAVE_WINSOCK2_H
2563 #include <winsock2.h>
2564 #endif
2565 ])
2566
2567 SQUID_CHECK_FUNC_STRNSTR
2568
2569 dnl IP-Filter support requires ipf header files. These aren't
2570 dnl installed by default, so we need to check for them
2571 AS_IF([test "x$enable_ipf_transparent" != "xno"],[
2572 SQUID_CHECK_BROKEN_SOLARIS_IPFILTER
2573 AC_MSG_CHECKING(for availability of IP-Filter header files)
2574 # hold on to your hats...
2575 AS_IF(
2576 [test "x$ac_cv_header_ip_compat_h" = "xyes" -o \
2577 "x$ac_cv_header_ip_fil_compat_h" = "xyes" -o \
2578 "x$ac_cv_header_netinet_ip_compat_h" = "xyes" -o \
2579 "x$ac_cv_header_netinet_ip_fil_compat_h" = "xyes"],
2580 [have_ipfilter_compat_header="yes"])
2581
2582 AS_IF(
2583 [test "x$have_ipfilter_compat_header" = "xyes" -a \
2584 "x$ac_cv_header_ip_fil_h" = "xyes" -a \
2585 "x$ac_cv_header_ip_nat_h" = "xyes"],[enable_ipf_transparent="yes"],
2586
2587 [test "x$have_ipfilter_compat_header" = "xyes" -a \
2588 "x$ac_cv_header_netinet_ip_fil_h" = "xyes" -a \
2589 "x$ac_cv_header_netinet_ip_nat_h" = "xyes"],[enable_ipf_transparent="yes"],
2590 [enable_ipf_transparent="no"])
2591
2592 AC_MSG_RESULT($IPF_TRANSPARENT)
2593
2594 ## On Solaris Ipfilter includes expect that SOLARIS2 is defined with the
2595 ## Solaris minor version (8, 9, 10, ...)
2596 AS_IF([test "x$enable_ipf_transparent" = "xyes" -a "x$squid_host_os" = "xsolaris"],[
2597 solrev=`uname -r | sh -c 'IFS=. read j n x; echo $n'`
2598 CFLAGS="-DSOLARIS2=$solrev $CFLAGS"
2599 CXXFLAGS="-DSOLARIS2=$solrev $CXXFLAGS"
2600 ])
2601 ])
2602 AC_MSG_NOTICE([IPF-based transparent proxying enabled: $enable_ipf_transparent])
2603 SQUID_DEFINE_BOOL(IPF_TRANSPARENT,$enable_ipf_transparent,
2604 [Enable support for IPF-style transparent proxying])
2605
2606 dnl PF /dev/pf support requires a header file.
2607 AS_IF([test "x$with_nat_devpf" != "xno"],[
2608 AS_IF([test "x$ac_cv_header_net_pfvar_h" = "xyes" -o \
2609 "x$ac_cv_header_net_pf_pfvar_h" = "xyes"],[
2610 AS_IF([test "x$with_nat_devpf" = "xauto"],[with_nat_devpf="no"])
2611 ],[
2612 AS_IF([test "x$with_nat_devpf" = "xyes"],[
2613 AC_MSG_ERROR([PF /dev/pf based NAT requested but needed header not found])
2614 ])
2615 with_nat_devpf="no"
2616 ])
2617 ])
2618 SQUID_DEFINE_BOOL(PF_TRANSPARENT,${enable_pf_transparent:=no},
2619 [Enable support for PF-style transparent proxying])
2620 SQUID_DEFINE_BOOL(USE_NAT_DEVPF,${with_nat_devpf:=no},
2621 [Enable support for /dev/pf NAT lookups])
2622
2623 AS_IF([test "x$enable_linux_netfilter" != "xno"],[
2624 AS_IF([test "x$ac_cv_header_linux_netfilter_ipv4_h" = "xyes"],[
2625 AS_IF([test "x$enable_linux_netfilter" = "xauto"],[enable_linux_netfilter=yes])
2626 ],[
2627 AS_IF([test "x$enable_linux_netfilter" = "xauto"],[
2628 enable_linux_netfilter=no
2629 ],[
2630 AC_MSG_ERROR([Linux Netfilter support requested but needed headers not found])
2631 ])
2632 ])
2633 ])
2634 SQUID_DEFINE_BOOL(LINUX_NETFILTER,$enable_linux_netfilter,
2635 [Enable support for Transparent Proxy on Linux via Netfilter])
2636
2637 dnl Netfilter TPROXY depends on libcap but the NAT parts can still work.
2638 AC_MSG_NOTICE([Support for Netfilter-based interception proxy requested: $enable_linux_netfilter])
2639 AS_IF([test "x$enable_linux_netfilter" = "xyes" -a "x$with_cap" != "xyes"],[
2640 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for TPROXY])
2641 AC_MSG_WARN([Linux Transparent Proxy (version 4+) support WILL NOT be enabled])
2642 AC_MSG_WARN([Reduced support to NAT Interception Proxy])
2643 # AC_DEFINEd later
2644 ])
2645 AS_IF([test "x$with_netfilter_conntrack" = "xyes" -a "x$with_cap" != "xyes"],[
2646 AC_MSG_WARN([Missing needed capabilities (libcap 2.09+) for netfilter mark support])
2647 AC_MSG_WARN([Linux netfilter marking support WILL NOT be enabled])
2648 with_netfilter_conntrack=no
2649 ])
2650 AC_MSG_NOTICE([Linux Netfilter Conntrack support enabled: ${with_netfilter_conntrack}])
2651
2652
2653 AC_ARG_ENABLE(zph-qos,
2654 AS_HELP_STRING([--disable-zph-qos],[Disable ZPH QOS support]), [
2655 SQUID_YESNO([$enableval],[--enable-zph-qos])
2656 ])
2657 SQUID_DEFINE_BOOL(USE_QOS_TOS,${enable_zph_qos:=yes},
2658 [Enable Zero Penalty Hit QOS. When set, Squid will alter the
2659 TOS field of HIT responses to help policing network traffic])
2660 AC_MSG_NOTICE([ZPH QOS enabled: $enable_zph_qos])
2661 AS_IF([test "x$enable_zph_qos" = "xyes"],[
2662 AC_MSG_NOTICE([QOS netfilter mark preservation enabled: $with_netfilter_conntrack])
2663 SQUID_DEFINE_BOOL(USE_LIBNETFILTERCONNTRACK,${with_netfilter_conntrack:=no},
2664 [Enable support for QOS netfilter mark preservation])
2665 ])
2666
2667 AC_CHECK_LIB(regex, regexec, [REGEXLIB="-lregex"],[REGEXLIB=''])
2668 AC_SUBST(REGEXLIB)
2669
2670 SQUID_DETECT_UDP_SND_BUFSIZE
2671 SQUID_DETECT_UDP_RECV_BUFSIZE
2672 SQUID_DETECT_TCP_SND_BUFSIZE
2673 SQUID_DETECT_TCP_RECV_BUFSIZE
2674
2675 SQUID_CHECK_NEED_SYS_ERRLIST
2676 SQUID_CHECK_MAXPATHLEN
2677
2678 SQUID_CHECK_LIBRESOLV_DNS_TTL_HACK
2679 SQUID_CHECK_RESOLVER_FIELDS
2680
2681 AC_CHECK_HEADERS(sys/statvfs.h)
2682 AS_IF([test "x$ac_cv_header_sys_statvfs_h" = "xyes"],[SQUID_CHECK_WORKING_STATVFS])
2683 AS_IF([test "x$ac_cv_func_statvfs" != "xyes"],[
2684 AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/vfs.h sys/statfs.h)
2685 AC_CHECK_FUNCS(statfs)
2686 SQUID_CHECK_F_FRSIZE_IN_STATFS
2687 ])
2688
2689 dnl Squid will not usually attempt to translate templates when building
2690 AC_ARG_ENABLE(translation,
2691 AS_HELP_STRING([--enable-translation],[Generate the localized error page templates and manuals.
2692 Which can also be downloaded from http://www.squid-cache.org/Versions/langpack/.]), [
2693 SQUID_YESNO([$enableval],[--enable-translation])
2694 ])
2695 AS_IF([test "x${enable_translation:=no}" = "xyes"],[
2696 AX_WITH_PROG([PO2HTML],[po2html])
2697 AX_WITH_PROG([PO2TEXT],[po2txt])
2698 ],[
2699 PO2HTML="off"
2700 PO2TEXT="off"
2701 ])
2702 AC_SUBST(PO2HTML)
2703 AC_SUBST(PO2TEXT)
2704 AM_CONDITIONAL(ENABLE_TRANSLATION, test "x${enable_translation:=no}" = "xyes")
2705
2706 dnl Squid now has limited locale handling ...
2707 dnl on error pages
2708 AC_ARG_ENABLE(auto-locale,
2709 AS_HELP_STRING([--disable-auto-locale],[This prevents Squid providing localized error pages based on the
2710 clients request headers.
2711 When disabled Squid requires explicit language configuration.]), [
2712 SQUID_YESNO([$enableval],[--enable-auto-locale])
2713 ])
2714 AC_MSG_NOTICE([Multi-Language support enabled: ${enable_auto_locale:=yes}])
2715 SQUID_DEFINE_BOOL(USE_ERR_LOCALES,$enable_auto_locale,
2716 [Use multi-language support on error pages])
2717
2718
2719 dnl Need the debugging version of malloc if available
2720 XTRA_OBJS=''
2721 AS_IF([test "x$ac_cv_lib_malloc_main" = "xyes"],[
2722 AS_IF([test -r /usr/lib/debug/malloc.o],[XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/malloc.o"])
2723 AS_IF([test -r /usr/lib/debug/mallocmap.o],[XTRA_OBJS="$XTRA_OBJS /usr/lib/debug/mallocmap.o"]);
2724 ])
2725 AC_SUBST(XTRA_OBJS)
2726
2727 AS_IF([test "x$XTRA_LIBS" = "x"],[
2728 XTRA_LIBS="$LIBS"
2729 dnl minor cleanup
2730 XTRA_LIBS=`echo $XTRA_LIBS | sed -e "s/ */ /g"`
2731 LIBS=''
2732 ])
2733 AC_SUBST(XTRA_LIBS)
2734
2735 AC_SUBST(SQUID_CFLAGS)
2736 AC_SUBST(SQUID_CXXFLAGS)
2737
2738 # Prerequisite: CXXFLAGS have been finalized.
2739 AC_ARG_VAR([BUILDCXXFLAGS],[C++ compiler flags for building compile-time tools. e.g. cf_gen])
2740 AS_IF([test "x$BUILDCXXFLAGS" = "x"],[
2741 # if we are NOT cross-compiling, use the default build flags for cf_gen and friends
2742 # otherwise rely on the user-provided value
2743 AS_IF([test "x$squid_cv_check_marchnative" = "xyes"],[
2744 # always valid for the Build compiler.
2745 BUILDCXXFLAGS="-march=native"
2746 ])
2747 BUILDCXXFLAGS="$BUILDCXXFLAGS $CXXFLAGS"
2748 ])
2749 AC_SUBST(BUILDCXXFLAGS)
2750
2751 AC_MSG_NOTICE([BUILD LIBRARIES: $LIBS])
2752 AC_MSG_NOTICE([BUILD EXTRA LIBRARIES: $XTRA_LIBS])
2753 AC_MSG_NOTICE([BUILD OBJECTS: $OBJS])
2754 AC_MSG_NOTICE([BUILD EXTRA OBJECTS: $XTRA_OBJS])
2755 AC_MSG_NOTICE([BUILD C FLAGS: $CFLAGS])
2756 AC_MSG_NOTICE([BUILD EXTRA C FLAGS: $SQUID_CFLAGS])
2757 AC_MSG_NOTICE([BUILD C++ FLAGS: $CXXFLAGS])
2758 AC_MSG_NOTICE([BUILD EXTRA C++ FLAGS: $SQUID_CXXFLAGS])
2759 AC_MSG_NOTICE([BUILD Tools C++ FLAGS: $BUILDCXXFLAGS])
2760
2761 dnl Clean up after OSF/1 core dump bug
2762 rm -f core
2763
2764 AC_CONFIG_FILES([
2765 Makefile
2766 compat/Makefile
2767 contrib/Makefile
2768 doc/Makefile
2769 doc/manuals/Makefile
2770 doc/release-notes/Makefile
2771 errors/Makefile
2772 icons/Makefile
2773 lib/Makefile
2774 lib/libTrie/Makefile
2775 lib/libTrie/test/Makefile
2776 lib/ntlmauth/Makefile
2777 lib/rfcnb/Makefile
2778 lib/smblib/Makefile
2779 lib/snmplib/Makefile
2780 lib/sspi/Makefile
2781 scripts/Makefile
2782 src/Makefile
2783 src/acl/Makefile
2784 src/acl/external/Makefile
2785 src/acl/external/AD_group/Makefile
2786 src/acl/external/delayer/Makefile
2787 src/acl/external/eDirectory_userip/Makefile
2788 src/acl/external/file_userip/Makefile
2789 src/acl/external/kerberos_ldap_group/Makefile
2790 src/acl/external/kerberos_sid_group/Makefile
2791 src/acl/external/LDAP_group/Makefile
2792 src/acl/external/LM_group/Makefile
2793 src/acl/external/session/Makefile
2794 src/acl/external/SQL_session/Makefile
2795 src/acl/external/unix_group/Makefile
2796 src/acl/external/wbinfo_group/Makefile
2797 src/acl/external/time_quota/Makefile
2798 src/adaptation/Makefile
2799 src/adaptation/icap/Makefile
2800 src/adaptation/ecap/Makefile
2801 src/anyp/Makefile
2802 src/auth/Makefile
2803 src/auth/basic/Makefile
2804 src/auth/basic/DB/Makefile
2805 src/auth/basic/fake/Makefile
2806 src/auth/basic/getpwnam/Makefile
2807 src/auth/basic/LDAP/Makefile
2808 src/auth/basic/NCSA/Makefile
2809 src/auth/basic/NIS/Makefile
2810 src/auth/basic/PAM/Makefile
2811 src/auth/basic/POP3/Makefile
2812 src/auth/basic/RADIUS/Makefile
2813 src/auth/basic/SASL/Makefile
2814 src/auth/basic/SMB/Makefile
2815 src/auth/basic/SMB_LM/Makefile
2816 src/auth/basic/SSPI/Makefile
2817 src/auth/digest/Makefile
2818 src/auth/digest/eDirectory/Makefile
2819 src/auth/digest/file/Makefile
2820 src/auth/digest/LDAP/Makefile
2821 src/auth/negotiate/Makefile
2822 src/auth/negotiate/kerberos/Makefile
2823 src/auth/negotiate/SSPI/Makefile
2824 src/auth/negotiate/wrapper/Makefile
2825 src/auth/ntlm/Makefile
2826 src/auth/ntlm/fake/Makefile
2827 src/auth/ntlm/SMB_LM/Makefile
2828 src/auth/ntlm/SSPI/Makefile
2829 src/base/Makefile
2830 src/clients/Makefile
2831 src/comm/Makefile
2832 src/debug/Makefile
2833 src/dns/Makefile
2834 src/DiskIO/Makefile
2835 src/DiskIO/AIO/Makefile
2836 src/DiskIO/Blocking/Makefile
2837 src/DiskIO/DiskDaemon/Makefile
2838 src/DiskIO/DiskThreads/Makefile
2839 src/DiskIO/IpcIo/Makefile
2840 src/DiskIO/Mmapped/Makefile
2841 src/error/Makefile
2842 src/esi/Makefile
2843 src/eui/Makefile
2844 src/format/Makefile
2845 src/fs/Makefile
2846 src/ftp/Makefile
2847 src/helper/Makefile
2848 src/html/Makefile
2849 src/http/Makefile
2850 src/http/one/Makefile
2851 src/http/url_rewriters/Makefile
2852 src/http/url_rewriters/fake/Makefile
2853 src/http/url_rewriters/LFS/Makefile
2854 src/icmp/Makefile
2855 src/ident/Makefile
2856 src/ip/Makefile
2857 src/ipc/Makefile
2858 src/log/Makefile
2859 src/log/DB/Makefile
2860 src/log/file/Makefile
2861 src/mem/Makefile
2862 src/mgr/Makefile
2863 src/parser/Makefile
2864 src/proxyp/Makefile
2865 src/repl/Makefile
2866 src/sbuf/Makefile
2867 src/security/Makefile
2868 src/security/cert_generators/Makefile
2869 src/security/cert_generators/file/Makefile
2870 src/security/cert_validators/Makefile
2871 src/security/cert_validators/fake/Makefile
2872 src/servers/Makefile
2873 src/snmp/Makefile
2874 src/ssl/Makefile
2875 src/store/Makefile
2876 src/store/id_rewriters/Makefile
2877 src/store/id_rewriters/file/Makefile
2878 src/time/Makefile
2879 test-suite/Makefile
2880 tools/Makefile
2881 tools/apparmor/Makefile
2882 tools/helper-mux/Makefile
2883 tools/systemd/Makefile
2884 tools/sysvinit/Makefile
2885 ])
2886
2887 # must configure libltdl subdir unconditionally for "make distcheck" to work
2888 #AC_CONFIG_SUBDIRS(libltdl)
2889
2890 AC_OUTPUT