1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.112 2008/03/27 18:27:22 fabiankeil Exp $
5 dnl Written by and Copyright (C) 2001 - 2007 the SourceForge
6 dnl Privoxy team. http://www.privoxy.org/
8 dnl Based on the Internet Junkbuster originally written
9 dnl by and Copyright (C) 1997 Anonymous Coders and
10 dnl Junkbusters Corporation. http://www.junkbusters.com
12 dnl This program is free software; you can redistribute it
13 dnl and/or modify it under the terms of the GNU General
14 dnl Public License as published by the Free Software
15 dnl Foundation; either version 2 of the License, or (at
16 dnl your option) any later version.
18 dnl This program is distributed in the hope that it will
19 dnl be useful, but WITHOUT ANY WARRANTY; without even the
20 dnl implied warranty of MERCHANTABILITY or FITNESS FOR A
21 dnl PARTICULAR PURPOSE. See the GNU General Public
22 dnl License for more details.
24 dnl The GNU General Public License should be included with
25 dnl this file. If not, you can view it at
26 dnl http://www.gnu.org/copyleft/gpl.html
27 dnl or write to the Free Software Foundation, Inc., 59
28 dnl Temple Place - Suite 330, Boston, MA 02111-1307, USA.
30 dnl $Log: configure.in,v $
31 dnl Revision 1.112 2008/03/27 18:27:22 fabiankeil
32 dnl Remove kill-popups action.
34 dnl Revision 1.111 2008/02/03 14:40:47 fabiankeil
35 dnl Remove unused OSX_DARWIN macro. Reported by Mark Miller in #1852529.
37 dnl Revision 1.110 2008/01/26 10:52:13 fabiankeil
38 dnl Change version to 3.0.9 UNRELEASED.
40 dnl Revision 1.109 2008/01/20 14:07:09 fabiankeil
41 dnl Set CODE_STATUS to stable.
43 dnl Revision 1.108 2007/12/10 02:30:00 hal9
44 dnl Change versioning for > 3.0.7 && < 3.0.8
46 dnl Revision 1.107 2007/11/15 02:50:14 hal9
47 dnl Setting to "beta" (for doc builds, etc).
49 dnl Revision 1.106 2007/05/11 11:49:41 fabiankeil
50 dnl Check for strlcat().
52 dnl Revision 1.105 2007/04/09 17:34:58 fabiankeil
53 dnl Check for snprintf().
55 dnl Revision 1.104 2007/03/31 13:35:11 fabiankeil
56 dnl Add checks for gettimeofday() and strlcpy().
58 dnl Revision 1.103 2007/01/20 16:29:38 fabiankeil
59 dnl Suppress edit buttons for action files if Privoxy has
60 dnl no write access. Suggested by Roland in PR 1564026.
62 dnl Revision 1.102 2007/01/18 14:55:45 fabiankeil
63 dnl Check for tzset() and putenv() to make sure the
64 dnl replacement timegm() isn't included on systems
65 dnl where it fails to compile.
67 dnl Revision 1.101 2007/01/12 15:20:17 fabiankeil
68 dnl Temporarily ignore external libpcrs to prevent
69 dnl problems that are fixed in Privoxy's own version.
71 dnl Revision 1.100 2007/01/07 07:38:10 joergs
72 dnl Disabled -pipe for AmigaOS4.
74 dnl Revision 1.99 2007/01/01 19:36:37 fabiankeil
75 dnl Integrate a modified version of Wil Mahan's
76 dnl zlib patch (PR #895531).
78 dnl Revision 1.98 2006/12/17 19:15:26 fabiankeil
79 dnl Added ./configure switch for FEATURE_GRACEFUL_TERMINATION.
81 dnl Revision 1.97 2006/11/21 18:32:46 hal9
82 dnl Setting version to 3.0.7 UNRELEASED for lack of a better setting.
84 dnl Revision 1.96 2006/11/18 14:42:51 fabiankeil
87 dnl Revision 1.95 2006/11/14 02:08:59 hal9
88 dnl Setting version string to 3.0.6 UNRELEASED. This needs to be reset to 3.0.6
89 dnl stable just before CVS is tagged for release.
91 dnl Revision 1.94 2006/11/13 19:05:50 fabiankeil
92 dnl Make pthread mutex locking more generic. Instead of
93 dnl checking for OSX and OpenBSD, check for FEATURE_PTHREAD
94 dnl and use mutex locking unless there is an _r function
95 dnl available. Better safe than sorry.
97 dnl Fixes "./configure --disable-pthread" and should result
98 dnl in less threading-related problems on pthread-using platforms,
99 dnl but it still doesn't fix BR#1122404.
101 dnl Revision 1.93 2006/09/22 01:26:20 hal9
102 dnl Set version to 3.0.5 BETA for hopefully release this weekend.
104 dnl Revision 1.92 2006/08/17 17:09:49 fabiankeil
105 dnl Added check for timegm().
107 dnl Revision 1.91 2006/08/13 22:01:51 fabiankeil
108 dnl Added checks for strptime() and random()
110 dnl Revision 1.90 2006/07/18 14:48:45 david__schmidt
111 dnl Reorganizing the repository: swapping out what was HEAD (the old 3.1 branch)
112 dnl with what was really the latest development (the v_3_0_branch branch)
114 dnl Revision 1.68.2.20 2004/01/31 16:31:46 oes
115 dnl Resetting version info to 0.0.0 UNRELEASED
117 dnl Revision 1.68.2.19 2004/01/30 09:26:03 oes
118 dnl Added docbook paths for debian sarge; set status for release
120 dnl Revision 1.68.2.18 2003/12/08 15:10:29 oes
121 dnl Bugfix: --with-docbook now correctly accepts its path parameter. Thanks, Roland!
123 dnl Revision 1.68.2.17 2003/10/18 18:41:26 david__schmidt
124 dnl Update to remain buildable on OS/2 - remove the failures
125 dnl due to missing unixisms
127 dnl Revision 1.68.2.16 2003/03/26 16:05:14 oes
128 dnl Marked as 0.0.0 UNRELEASED
130 dnl Revision 1.68.2.15 2003/03/26 00:25:00 oes
131 dnl Bump version for 3.0.2
133 dnl Revision 1.68.2.14 2003/03/25 13:27:12 hal9
134 dnl Manually apply Docbook/FreeBSD patch #708081 from a.go at tiscali.nl.
136 dnl Revision 1.68.2.13 2003/03/18 19:38:57 oes
137 dnl Set version info for 3.0.1 release
139 dnl Revision 1.68.2.12 2003/03/07 03:41:04 david__schmidt
140 dnl Wrapping all *_r functions (the non-_r versions of them) with mutex semaphores for OSX. Hopefully this will take care of all of those pesky crash reports.
142 dnl Revision 1.68.2.11 2003/03/06 15:22:37 oes
143 dnl Fixed minor shell syntax bug
145 dnl Revision 1.68.2.10 2003/01/08 16:39:41 oes
146 dnl Changing default to exclude FEATURE_IMAGE_DETECT_MSIE because of problem reports with recent IEs
148 dnl Revision 1.68.2.9 2002/12/13 23:47:45 hal9
149 dnl Add openbsd $specialflags per gunner at styx2002.no-ip.org
151 dnl Revision 1.68.2.8 2002/11/27 12:55:26 oes
152 dnl Fixed broken handling of pre-set CFLAGS
154 dnl Revision 1.68.2.7 2002/10/25 02:44:22 hal9
155 dnl Port of make install, etc from main trunk. Needs testing! Add Slackware
156 dnl support, and other related changes. Update related docs.
158 dnl Revision 1.68.2.6 2002/09/25 15:35:15 oes
159 dnl Marking as non-release
161 dnl Revision 1.68.2.5 2002/08/25 23:37:00 hal9
162 dnl Getting ready for 3.0 release.
164 dnl Revision 1.68.2.4 2002/08/10 11:21:57 oes
165 dnl - Set Version to 2.9.20 (beta)
166 dnl - Add two AC_DEFINEs that indicate if the pcre*.h headers
167 dnl are located in a pcre/ subdir to the include path.
169 dnl Revision 1.68.2.3 2002/08/06 11:29:36 oes
170 dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
172 dnl Revision 1.68.2.2 2002/07/30 19:36:09 hal9
173 dnl Bump version to 2.9.17.
175 dnl Revision 1.68.2.1 2002/07/26 15:21:12 oes
176 dnl Bumped version number for 2.9.16 freeze
178 dnl Revision 1.68 2002/05/25 16:54:54 jongfoster
179 dnl Detect if the compiler supports -pthread.
180 dnl Hopefully this will fix bug 560442. (I don't have a HP PA-RISC
181 dnl machine to test this!)
183 dnl Revision 1.67 2002/05/03 14:33:59 oes
184 dnl Generate doc/soucre/ldp.dsl
186 dnl Revision 1.66 2002/05/03 00:41:56 oes
187 dnl Set version to 2.9.15 to comply with new versioning scheme
189 dnl Revision 1.65 2002/04/25 19:13:57 morcego
190 dnl Removed RPM release number declaration on configure.in
191 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
192 dnl targets (will produce an error, explaining who to do it, if no value
195 dnl Revision 1.64 2002/04/22 16:32:31 morcego
196 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
197 dnl -rh.spec: uid and gid are now macros
198 dnl -suse.spec: Changing the header Copyright to License (Copyright is
201 dnl Revision 1.63 2002/04/11 11:00:21 oes
202 dnl Applied Moritz' fix for socklen_t on Solaris
204 dnl Revision 1.62 2002/04/11 10:09:20 oes
207 dnl Revision 1.61 2002/04/10 18:14:45 morcego
208 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
209 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
211 dnl Revision 1.60 2002/04/09 16:38:49 oes
212 dnl Added detection of missing config.h.in
214 dnl Revision 1.59 2002/04/06 20:23:55 jongfoster
215 dnl Removing unnessacery tests (C++, ranlib)
217 dnl Revision 1.58 2002/04/04 20:49:20 swa
218 dnl attempt to consolidate the
219 dnl different dokbook versions.
221 dnl Revision 1.57 2002/04/04 00:36:36 gliptak
222 dnl always use pcre for matching
224 dnl Revision 1.56 2002/04/03 22:28:03 gliptak
225 dnl Removed references to gnu_regex
227 dnl Revision 1.55 2002/04/03 03:54:38 gliptak
228 dnl Checking pcre version
230 dnl Revision 1.54 2002/04/01 00:54:24 gliptak
231 dnl More changes needed around regex support.
233 dnl Revision 1.53 2002/03/29 20:09:01 swa
236 dnl Revision 1.52 2002/03/29 19:51:40 gliptak
237 dnl Correcting compile problem with Debian
239 dnl Revision 1.51 2002/03/28 20:43:00 swa
240 dnl set make correctly
242 dnl Revision 1.50 2002/03/27 03:03:45 hal9
243 dnl Add test for man2html
245 dnl Revision 1.49 2002/03/27 02:19:52 david__schmidt
246 dnl More Mac OSX support:
247 dnl - Get rid of extraneous, noisy -pthread warnings
248 dnl - Define unix so we get oes' unix-tagged changes
250 dnl Revision 1.48 2002/03/26 22:29:54 swa
251 dnl we have a new homepage!
253 dnl Revision 1.47 2002/03/26 16:41:00 hal9
254 dnl Upped RPM Release to 3 (need to build new RH packages)
256 dnl Revision 1.46 2002/03/24 18:55:06 jongfoster
257 dnl Making Docbook work under Windows
259 dnl Revision 1.45 2002/03/24 14:19:55 swa
260 dnl set rpm package release in configure.in. nowhere else.
262 dnl Revision 1.44 2002/03/24 13:25:43 swa
263 dnl name change related issues
265 dnl Revision 1.43 2002/03/24 12:56:21 swa
266 dnl name change related issues.
268 dnl Revision 1.42 2002/03/22 18:11:37 jongfoster
269 dnl Bumping version number to 2.9.12
271 dnl Revision 1.41 2002/03/19 19:30:04 morcego
272 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
275 dnl - configure will now check for db2html or docbook2html (should work now
276 dnl on SuSe without the docbktls package)
278 dnl Revision 1.40 2002/03/09 14:33:30 oes
279 dnl Fixing the (harmless) AC_CHECK_FILE warnings
281 dnl Revision 1.39 2002/03/08 16:46:13 oes
282 dnl Added --enable-no-gifs
284 dnl Revision 1.38 2002/03/08 14:13:50 morcego
285 dnl Fixing configure, to remove a command not found error.
287 dnl Revision 1.37 2002/03/08 12:58:21 oes
288 dnl Tiny bugfix in AC_ARG_WITH(debug)
290 dnl Revision 1.36 2002/03/06 23:50:36 morcego
291 dnl Will not test for a text browser if we are not using docbook.
293 dnl Revision 1.35 2002/03/06 21:55:52 morcego
294 dnl New configure option: --with-docbook=(yes|no|directory)
295 dnl Preliminary new platform detection code included. Will work with the
296 dnl old one for now. No use just trowing it away
298 dnl Revision 1.34 2002/03/06 20:57:00 morcego
299 dnl Fixing detection of stylesheets on SuSe.
301 dnl Revision 1.33 2002/03/05 17:31:11 morcego
302 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
304 dnl Revision 1.32 2002/03/05 14:07:43 morcego
305 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
306 dnl (based on sugestion by Sarantis Paskalis)
308 dnl Revision 1.31 2002/03/05 13:43:28 morcego
309 dnl Checking for text browser, so redhat-dok can work.
311 dnl Revision 1.30 2002/03/04 17:58:01 oes
312 dnl Deleted _DEBUG and PID_FILE_PATH
314 dnl Revision 1.29 2002/02/28 14:20:53 oes
315 dnl Fixed detection of gethost*_r functions on Solaris
317 dnl Revision 1.28 2002/02/27 15:02:38 oes
318 dnl Incremented version number
320 dnl Revision 1.27 2002/01/10 12:35:18 oes
321 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
322 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
323 dnl Is there a better way?
325 dnl Revision 1.26 2002/01/09 14:29:49 oes
326 dnl - Added AC_CHECK_FUNC tests for the availability of
327 dnl gethostbyname_r, gethostbyaddr_r, gmtime_r and
328 dnl localtime_r, as well as AC_TRY_COMPILE tests to
329 dnl determine their signatures.
331 dnl - Fixed a bug with the init of CFLAGS that was
332 dnl reported by barsnick
334 dnl Revision 1.25 2002/01/04 15:27:18 oes
335 dnl Changed quoting of CODE_STATUS for use in make
337 dnl Revision 1.24 2001/12/30 14:07:31 steudten
338 dnl - Add signal handling (unix)
339 dnl - Add SIGHUP handler (unix)
340 dnl - Add creation of pidfile (unix)
341 dnl - Add action 'top' in rc file (RH)
342 dnl - Add entry 'SIGNALS' to manpage
343 dnl - Add exit message to logfile (unix)
345 dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt
346 dnl Change from "alpha" to "beta" in configure.in
348 dnl Revision 1.22 2001/12/01 11:24:01 jongfoster
349 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
350 dnl make break in a more obvious way.
352 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
353 dnl Bumping version number to 2.9.10
355 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
356 dnl Support for FEATURE_CGI_EDIT_ACTIONS
358 dnl Revision 1.19 2001/10/07 15:33:14 oes
359 dnl Removed FEATURE_DENY_GZIP
360 dnl Bumped up version number
362 dnl Revision 1.18 2001/09/13 13:10:24 steudten
364 dnl PreWork for Debug Interface.
365 dnl Add new option "--with-debug" to enable debugging (flags aso.)
367 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
368 dnl Mac OSX (Darwin) support added.
370 dnl Revision 1.16 2001/09/12 22:55:45 joergs
371 dnl AmigaOS support added.
373 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
375 dnl OS/2 port: update autoconf'd support for the platform.
377 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
378 dnl Fixing Solaris build (I hope) and tidying up #defines:
379 dnl - All feature #defines are now of the form FEATURE_xxx
380 dnl - Permanently turned off WIN_GUI_EDIT
381 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
383 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
384 dnl Major changes to build system in order to fix these bugs:
385 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
386 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
387 dnl which shared libraries are available
388 dnl - Solaris support (?) (Not tested under Solaris yet)
390 dnl Revision 1.12 2001/07/25 19:16:27 oes
391 dnl Bumping version number to 2.9.8
393 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
394 dnl Bumping version number to 2.9.7
396 dnl Revision 1.10 2001/07/18 17:25:04 oes
399 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
400 dnl Added support for linking with POSIX threads library
402 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
403 dnl Renaming #define STATIC to STATIC_PCRE
404 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
405 dnl POSIX threads support.
407 dnl Revision 1.7 2001/07/13 13:58:05 oes
408 dnl Completely reorganized the selection scheme for
409 dnl pcre, pcreposix, pcrs and gnu_regex:
411 dnl The presence of shared pcre, pcreposix or pcrs
412 dnl libraried is now autodetected. Additionally, the
413 dnl user can enforce using the built-in static variants
414 dnl by specifying --disable-dynamic-(pcre|pcrs).
415 dnl Care is taken to avoid that pcre is dyn, while pcreposix
416 dnl is static, if both are used and that pcrs is static if
419 dnl The choice between pcre, gnu or no regex for actionsfile
420 dnl URL matching is now via
421 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
422 dnl default being pcre.
424 dnl Revision 1.6 2001/06/29 21:56:40 oes
427 dnl Revision 1.5 2001/06/29 13:26:27 oes
428 dnl Introduced #define CODE_STATUS
430 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
431 dnl Unified blocklist/imagelist/permissionslist.
432 dnl File format is still under discussion, but the internal changes
433 dnl are (mostly) done.
435 dnl Also modified interceptor behaviour:
436 dnl - We now intercept all URLs beginning with one of the following
437 dnl prefixes (and *only* these prefixes):
439 dnl * http://ijbswa.sf.net/config/
440 dnl * http://ijbswa.sourceforge.net/config/
441 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
442 dnl - Internal changes so that intercepted and fast redirect pages
443 dnl are not replaced with an image.
444 dnl - Interceptors now have the option to send a binary page direct
445 dnl to the client. (i.e. ijb-send-banner uses this)
446 dnl - Implemented show-url-info interceptor. (Which is why I needed
447 dnl the above interceptors changes - a typical URL is
448 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
449 dnl The previous mechanism would not have intercepted that, and
450 dnl if it had been intercepted then it then it would have replaced
451 dnl it with an image.)
453 dnl Revision 1.3 2001/05/22 18:46:04 oes
455 dnl - Enabled filtering banners by size rather than URL
456 dnl by adding patterns that replace all standard banner
457 dnl sizes with the "Junkbuster" gif to the re_filterfile
459 dnl - Enabled filtering WebBugs by providing a pattern
460 dnl which kills all 1x1 images
462 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
463 dnl which is selected by the (nonstandard and therefore
464 dnl capital) letter 'U' in the option string.
465 dnl It causes the quantifiers to be ungreedy by default.
466 dnl Appending a ? turns back to greedy (!).
468 dnl - Added a new interceptor ijb-send-banner, which
469 dnl sends back the "Junkbuster" gif. Without imagelist or
470 dnl MSIE detection support, or if tinygif = 1, or the
471 dnl URL isn't recognized as an imageurl, a lame HTML
472 dnl explanation is sent instead.
474 dnl - Added new feature, which permits blocking remote
475 dnl script redirects and firing back a local redirect
477 dnl The feature is conditionally compiled, i.e. it
478 dnl can be disabled with --disable-fast-redirects,
479 dnl plus it must be activated by a "fast-redirects"
480 dnl line in the config file, has its own log level
481 dnl and of course wants to be displayed by show-proxy-args
482 dnl Note: Boy, all the #ifdefs in 1001 locations and
483 dnl all the fumbling with configure.in and acconfig.h
484 dnl were *way* more work than the feature itself :-(
486 dnl - Because a generic redirect template was needed for
487 dnl this, tinygif = 3 now uses the same.
489 dnl - Moved GIFs, and other static HTTP response templates
492 dnl - Some minor fixes
494 dnl - Removed some >400 CRs again (Jon, you really worked
497 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
498 dnl Version 2.9.4 checkin.
499 dnl - Merged popupfile and cookiefile, and added control over PCRS
500 dnl filtering, in new "permissionsfile".
501 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
502 dnl file error you now get a message box (in the Win32 GUI) rather
503 dnl than the program exiting with no explanation.
504 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
506 dnl - Removed tabs from "config"
507 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
508 dnl - Bumped up version number.
510 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
511 dnl Initial import of version 2.9.3 source tree
516 dnl =================================================================
517 dnl AutoConf Initialization
518 dnl =================================================================
520 AC_REVISION($Revision: 1.112 $)
523 if test ! -f config.h.in; then
524 echo "You need to run autoheader first. "
525 echo -n "Shall I do this for you now? (y/n) "
527 if test "$answer" != "y"; then
534 AC_CONFIG_HEADER([config.h])
539 AC_ARG_WITH(docbook, dnl
540 --with-docbook=[[yes|no|directory]]
541 Enable docbook documentation creation
542 (default = yes, for gnu and linux),[dnl
543 case "$with_docbook" in
553 AC_ARG_WITH(db2html, dnl
554 --with-db2html=<path/executable>
555 Set the location of the docbook to html converter
556 (default = search),[dnl
560 dnl =================================================================
561 dnl Application version number
562 dnl =================================================================
567 CODE_STATUS="UNRELEASED"
569 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
570 dnl used for CGI output. Set version to 0.0.0 and status to "UNRELEASED"
571 dnl whenever CVS in a stable branch differs from the last release.
573 dnl =================================================================
574 dnl Substitute the version numbers
575 dnl =================================================================
577 AC_SUBST(VERSION_MAJOR)
578 AC_SUBST(VERSION_MINOR)
579 AC_SUBST(VERSION_POINT)
580 AC_SUBST(CODE_STATUS)
583 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
584 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
585 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
586 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
587 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
589 dnl =================================================================
590 dnl Checks for programs needed to build.
591 dnl =================================================================
593 dnl Keep AC_PROG_CC from setting its own defaults:
594 if test "X$CFLAGS" = "X"; then
605 AC_CHECK_PROG(GDB,gdb,yes,no)
606 AC_PATH_PROG(BGROUPS,groups,no,/bin:/usr/bin:/usr/local/bin)
607 AC_PATH_PROG(ID,id,no,/bin:/usr/bin:/usr/local/bin)
611 dnl =================================================================
612 dnl debug, gcc and gdb support
613 dnl =================================================================
616 [ --with-debug Enable debug mode],
618 if test "x$withval" != "xno" ; then
619 if test $ac_cv_prog_cc_g = yes; then
620 if test "$GCC" = yes; then
622 CFLAGS="$CFLAGS -ggdb"
626 CFLAGS="$CFLAGS -Wshadow -Wconversion"
634 if test "X$CFLAGS" = "X "; then # if CFLAGS were unset (see above)
635 if test "$GCC" = yes; then
642 dnl =================================================================
643 dnl Check for user and group validity
644 dnl =================================================================
647 if test "$EMXOS2" = yes; then
648 echo "Skipping user and group validity stuff.";
652 $ID privoxy >/dev/null 2>/dev/null
653 if test $? -ne 0 ; then
654 AC_MSG_WARN(There is no user 'privoxy' on this system)
656 AC_MSG_CHECKING([for user])
658 [ --with-user=privoxy Set user under which privoxy will run],
660 if test "x$withval" != "xyes"; then
661 if test $ID = no ; then
662 AC_MSG_ERROR(There is no 'id' program on this system)
664 AC_MSG_RESULT($with_user)
665 $ID $with_user 2>/dev/null >/dev/null
666 if test $? -eq 0 ; then
669 AC_MSG_ERROR(There is no user '$with_user' on this system)
673 AC_MSG_ERROR(We need a user if you give me this parameter)
677 if test $ID = no ; then
678 AC_MSG_ERROR(There is no 'id' programm on this system)
680 AC_MSG_RESULT(none specified)
687 AC_MSG_CHECKING([for group])
689 [ --with-group=privoxy Set group for privoxy],
691 if test "x$withval" != "xyes"; then
692 if test $BGROUPS = no ; then
693 AC_MSG_ERROR(There is no 'groups' program on this system)
695 AC_MSG_RESULT($with_group)
696 $BGROUPS $USER >/dev/null
697 if test $? -eq 0 ; then
698 # FIXME: this fails if valid group, but not first group
700 if test "$with_group" != "`$BGROUPS $USER | sed 's/.*: //' 2>/dev/null |$AWK '{print $1}'`" ; then
701 AC_MSG_ERROR(The given value '$withval' does not match group entry)
706 AC_MSG_ERROR(There is no group entry for user '$USER')
710 AC_MSG_ERROR(We need a group if you give me this parameter)
714 if test $BGROUPS = no ; then
715 AC_MSG_ERROR(There is no 'groups' programm on this system)
717 AC_MSG_RESULT(none specified)
726 dnl =================================================================
727 dnl additional gcc flags
728 dnl =================================================================
731 if test "$host" != "powerpc-unknown-amigaos"; then
732 CFLAGS="-pipe $CFLAGS"
737 dnl =================================================================
739 dnl =================================================================
741 dnl Must do this first.
743 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
744 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
745 dnl the compiler will use completely different sets of library
746 dnl and include files.
748 dnl =================================================================
753 if test "$MINGW32" = "yes"; then
756 if test "$CYGWIN" = "yes"; then
763 if test $dodk = auto; then
765 if test $target_type = unix; then
774 dnl Decide what to do based on target_type
775 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
776 dnl This is because we don't know yet whether pthread is enabled.
778 AC_ARG_ENABLE(mingw32,
779 [ --enable-mingw32 Use mingw32 for a Windows GUI],
780 [if test $enableval = yes; then
784 if test $target_type = mingw; then
786 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
787 PTHREAD_LIB=-lpthreadGC
788 echo "Using mingw32 (Win32 GUI)"
791 if test $target_type = cygwin; then
792 SPECIAL_CFLAGS="-mno-win32"
794 echo "Using Cygnus (Win32 command line)"
797 PTHREAD_LIB=-lpthread
802 dnl Checking which text html browser we have avaliable
803 if test $dodk != no; then
804 AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
805 if test "$WDUMP" = false; then
806 AC_MSG_WARN(You need some kind of text browser to build documentation \(w3m, lynx and links are supported\))
808 if test $DB2HTML = false; then
809 dnl We need to clean the variable, otherwise AC_CHECK_PROGS
812 AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
818 dnl If we use rpm, we need to check where %_topdir is
819 AC_CHECK_PROGS(RPMBIN,rpm,false)
820 if test $RPMBIN != false; then
821 RPM_BASE=`rpm --eval "%{_topdir}"`
822 if test "$RPM_BASE" = ""; then
823 RPM_BASE=/usr/src/redhat
828 dnl Check for jade, so we can build the documentation
829 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
832 dnl Check for man2html for docs.
833 AC_CHECK_PROGS(MAN2HTML,man2html,false)
836 dnl Set doc status flag for conditional content inclusions
837 DOC_STATUS=p-not-stable
838 if test $CODE_STATUS = stable; then
839 DOC_STATUS="p-stable"
843 dnl Checking for the docbook.dsl stylesheet file
844 dnl It is still not portable (directory slash)
846 if test $dodk = yes; then
847 if test $DKPREFIX = none; then
848 for i in /usr/share/sgml/docbook/dsssl-stylesheets \
849 /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl \
850 /usr/local/share/sgml/docbook/dsssl/modular \
851 /usr/share/sgml/docbook/stylesheet/dsssl/modular/ \
853 dnl echo -n does not fly with /bin/sh.
854 dnl echo -n "checking for $i/html/docbook.dsl..."
855 AC_MSG_CHECKING([for $i])
856 if test -f $i/html/docbook.dsl; then
864 # where are the catalogs?
865 for i in /usr/share/sgml/CATALOG.docbk30 \
866 /usr/share/sgml/CATALOG.docbk31 \
867 /usr/share/sgml/CATALOG.docbk31 \
868 /usr/local/share/sgml/docbook/3.0/docbook.cat \
869 /usr/local/share/sgml/docbook/3.1/docbook.cat \
870 /usr/share/sgml/docbook/dtd/3.1/docbook.cat \
872 dnl echo -n "checking for $i..."
873 AC_MSG_CHECKING([for $i])
876 JADECAT="$JADECAT -c $i"
886 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
887 old_CFLAGS_nospecial=$CFLAGS
888 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
890 # Hack to force AutoConf to use the CFLAGS we just set
891 dnl Warning: This may break with a future version of Autoconf
892 dnl Tested with autoconf 2.13
893 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
894 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
895 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
898 dnl =================================================================
900 dnl =================================================================
902 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
904 AC_ARG_ENABLE(pthread,
905 [ --disable-pthread Don't use POSIX threads (pthreads)],
906 [if test $enableval = no; then
911 if test $have_pthread = yes; then
913 AC_DEFINE(FEATURE_PTHREAD)
914 echo Using POSIX threads
915 if test "$GCC" = "yes"; then
916 # Set a GCC specific switch:
917 if test "$target_type" = "unix"; then
918 ac_jgf_save_CFLAGS=$CFLAGS
919 CFLAGS="$CFLAGS -pthread"
920 AC_TRY_LINK([#include <pthread.h>],
921 [void *p = pthread_create;],
923 # This compiler switch makes GCC on Linux thread-safe
924 # However, it's not supported on most other OS.
926 SPECIAL_CFLAGS="-pthread"
928 CFLAGS=$ac_jgf_save_CFLAGS
933 echo Using native threads
936 AC_SUBST(PTHREAD_ONLY)
938 dnl =================================================================
939 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
940 dnl gmtime and localtime
941 dnl =================================================================
943 dnl Next line needed to find the gethost*_r functions on Solaris
944 AC_CHECK_LIB(nsl, gethostbyname)
946 AC_CHECK_FUNC(gethostbyaddr_r, [
947 AC_MSG_CHECKING([signature of gethostbyaddr_r])
951 struct hostent *h, *hp;
954 (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
956 AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
957 AC_MSG_RESULT([8 args])
965 (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
967 AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
968 AC_MSG_RESULT([7 args])
973 struct hostent_data *d;
977 (void) gethostbyaddr_r(a, l, t, h, d)
979 AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
980 AC_MSG_RESULT([5 args])
982 AC_MSG_RESULT(unrecognised)
990 AC_CHECK_FUNC(gethostbyname_r, [
991 AC_MSG_CHECKING([signature of gethostbyname_r])
995 struct hostent *h, *r;
998 (void) gethostbyname_r(n, h, b, bl, &r, &e)
1000 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
1001 AC_MSG_RESULT([6 args])
1009 (void) gethostbyname_r(n, h, b, bl, &e)
1011 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
1012 AC_MSG_RESULT([5 args])
1017 struct hostent_data *d;
1020 (void) gethostbyname_r(n, h, d)
1022 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
1023 AC_MSG_RESULT([3 args])
1025 AC_MSG_RESULT(unrecognised)
1033 AC_CHECK_FUNC(gmtime_r, [
1034 AC_MSG_CHECKING([signature of gmtime_r])
1040 (void) gmtime_r(t, tm)
1043 AC_DEFINE(HAVE_GMTIME_R)
1045 AC_MSG_RESULT(unrecognised)
1051 AC_CHECK_FUNC(localtime_r, [
1052 AC_MSG_CHECKING([signature of localtime_r])
1058 (void) localtime_r(t, tm)
1061 AC_DEFINE(HAVE_LOCALTIME_R)
1063 AC_MSG_RESULT(unrecognised)
1069 dnl =================================================================
1070 dnl Solaris specific
1071 dnl FIXME: Not tested on Solaris yet...
1072 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
1073 dnl make these checks generic, e.g.:
1074 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
1075 dnl (Moritz Barsnick <moritz@barsnick.net>)
1076 dnl =================================================================
1082 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
1083 AC_DEFINE(__EXTENSIONS__)
1084 if test "$GCC" = "yes"; then
1085 # Set a GCC specific switch:
1086 # This compiler switch makes Solaris thread-safe
1088 SPECIAL_CFLAGS="-pthreads"
1090 # What do we do without GCC? Guess this:
1091 SPECIAL_CFLAGS="-D_REENTRANT"
1096 AC_SUBST(SOCKET_LIB)
1098 dnl =================================================================
1099 dnl Solaris problem, and others perhaps (socklen_t is undefined)
1100 dnl =================================================================
1102 AC_MSG_CHECKING([for socklen_t])
1103 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
1105 AC_DEFINE(socklen_t,int,
1106 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
1109 dnl =================================================================
1111 dnl =================================================================
1114 *-os2-emx*) SOCKET_LIB=-lsocket
1118 AC_SUBST(SOCKET_LIB)
1120 dnl =================================================================
1121 dnl Mac OSX specific
1122 dnl =================================================================
1125 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix"
1129 dnl =================================================================
1130 dnl OpenBSD specific
1131 dnl =================================================================
1134 *-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
1138 dnl =================================================================
1139 dnl AmigaOS specific
1140 dnl =================================================================
1145 *-amigaos) AMIGAOS_ONLY=
1149 AC_SUBST(AMIGAOS_ONLY)
1151 dnl =================================================================
1152 dnl Check for standard compiler stuff
1153 dnl =================================================================
1164 AC_CHECK_SIZEOF(int, 4)
1165 AC_CHECK_SIZEOF(char *, 4)
1166 AC_CHECK_SIZEOF(long, 4)
1167 AC_CHECK_SIZEOF(long long, 8)
1168 AC_CHECK_SIZEOF(size_t, 4)
1170 dnl Checks for header files.
1171 dnl AC_HEADER_SYS_WAIT
1172 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
1173 AC_CHECK_HEADERS([OS.h arpa/inet.h errno.h fcntl.h limits.h locale.h netdb.h netinet/in.h stddef.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h sys/timeb.h sys/wait.h unistd.h])
1175 dnl Checks for library functions.
1177 dnl AC_CHECK_FUNC(strstr)
1178 dnl bcopy and memmove are for PCRE
1179 AC_CHECK_FUNCS([strerror bcopy memmove])
1180 AC_PROG_GCC_TRADITIONAL
1181 dnl uncommenting does not work for swa. suse linux
1185 dnl uncommenting does not work for swa. suse linux
1187 AC_CHECK_FUNCS([access atexit getcwd gethostbyaddr gethostbyaddr_r gethostbyname gethostbyname_r gettimeofday inet_ntoa localtime_r memchr memmove memset putenv random regcomp select setlocale snprintf socket strchr strdup strerror strftime strlcat strlcpy strptime strstr strtoul timegm tzset])
1190 dnl =================================================================
1191 dnl Checks for libraries.
1192 dnl =================================================================
1193 dnl Note: Some systems may have the library but not the system header
1194 dnl file, so we must check for both.
1195 dnl Also check for correct version
1196 AC_CHECK_LIB(pcre, pcre_compile, [
1197 AC_CHECK_HEADER(pcre.h, [
1198 AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
1200 AC_CHECK_HEADER(pcre/pcre.h, [
1201 AC_EGREP_HEADER(pcre_fullinfo, pcre/pcre.h, [have_pcre=yes]; [AC_DEFINE(PCRE_H_IN_SUBDIR)], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
1206 AC_CHECK_LIB(pcreposix, regcomp, [
1207 AC_CHECK_HEADER(pcreposix.h, [
1208 AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
1210 AC_CHECK_HEADER(pcre/pcreposix.h, [
1211 AC_EGREP_HEADER(pcreposix_regerror, pcre/pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes]; [AC_DEFINE(PCREPOSIX_H_IN_SUBDIR)])
1212 ], [have_pcreposix=no])
1214 ], [have_pcreposix=no], -lpcre)
1216 dnl ================================================================
1217 dnl libpcrs is temporarily disabled.
1219 dnl Privoxy's own pcrs version fixes some problems that
1220 dnl are present in libpcrs 0.3, the last pcrs release we
1221 dnl know of, and as libpcrs seems to be currently unmaintained
1222 dnl we can't send these fixes upstream.
1223 dnl ================================================================
1225 dnl AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
1227 dnl =================================================================
1229 dnl =================================================================
1233 dnl =================================================================
1235 dnl =================================================================
1237 AC_ARG_ENABLE(toggle,
1238 [ --disable-toggle Don't support temporary disable],
1239 [if test $enableval = yes; then
1240 AC_DEFINE(FEATURE_TOGGLE)
1241 fi],AC_DEFINE(FEATURE_TOGGLE))
1243 AC_ARG_ENABLE(force,
1244 [ --disable-force Don't allow single-page disable],
1245 [if test $enableval = yes; then
1246 AC_DEFINE(FEATURE_FORCE_LOAD)
1247 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
1249 AC_ARG_ENABLE(fast-redirects,
1250 [ --disable-fast-redirects Don't support fast redirects],
1251 [if test $enableval = yes; then
1252 AC_DEFINE(FEATURE_FAST_REDIRECTS)
1253 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
1255 AC_ARG_ENABLE(stats,
1256 [ --disable-stats Don't keep statistics],
1257 [if test $enableval = yes; then
1258 AC_DEFINE(FEATURE_STATISTICS)
1259 fi],AC_DEFINE(FEATURE_STATISTICS))
1261 AC_ARG_ENABLE(ie-images,
1262 [ --enable-ie-images Enable a quick but not always reliable auto-detect whether requests from
1263 MS Internet Explorer are for an image or not.],
1264 [if test $enableval = yes; then
1265 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
1268 AC_ARG_ENABLE(image-blocking,
1269 [ --disable-image-blocking Don't try to figure out whether a request is
1270 for an image or HTML - assume HTML.],
1271 [if test $enableval = yes; then
1272 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
1274 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
1276 AC_ARG_ENABLE(acl-files,
1277 [ --disable-acl-files Prevents the use of ACL files to control access to
1278 Privoxy by IP address.],
1279 [if test $enableval = yes; then
1280 AC_DEFINE(FEATURE_ACL)
1282 AC_DEFINE(FEATURE_ACL))
1284 AC_ARG_ENABLE(trust-files,
1285 [ --disable-trust-files Prevents the use of trust files.],
1286 [if test $enableval = yes; then
1287 AC_DEFINE(FEATURE_TRUST)
1289 AC_DEFINE(FEATURE_TRUST))
1291 AC_ARG_ENABLE(jar-files,
1292 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
1293 [if test $enableval = yes; then
1294 AC_DEFINE(FEATURE_COOKIE_JAR)
1296 AC_DEFINE(FEATURE_COOKIE_JAR))
1298 AC_ARG_ENABLE(editor,
1299 [ --disable-editor Prevents the use of the web-based actions file
1300 editor and web-based temporary disable setting.],
1301 [if test $enableval = yes; then
1302 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
1304 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
1306 AC_ARG_ENABLE(no-gifs,
1307 [ --enable-no-gifs Use politically correct PNG format instead of GIF
1308 for built-in images. May not work with all browsers.],
1309 [if test $enableval = yes; then
1310 AC_DEFINE(FEATURE_NO_GIFS)
1313 AC_ARG_ENABLE(graceful-termination,
1314 [ --enable-graceful-termination Allow to shutdown Privoxy through the webinterface.],
1315 [if test $enableval = yes; then
1316 AC_DEFINE(FEATURE_GRACEFUL_TERMINATION)
1319 AC_ARG_ENABLE(pcre-host-patterns,
1320 [ --enable-pcre-host-patterns Allow PCRE syntax in host patterns.],
1321 [if test $enableval = yes; then
1322 AC_DEFINE(FEATURE_PCRE_HOST_PATTERNS)
1325 dnl pcre/pcrs is needed for CGI anyway, so
1326 dnl the choice is only between static and
1329 AC_ARG_ENABLE(dynamic-pcre,
1330 [ --disable-dynamic-pcre Use the built-in, static pcre, even if libpcre is available],
1331 [ if test $enableval = "no"; then have_pcre=no; fi ])
1333 dnl =================================================
1334 dnl libpcrs is temporarily disabled,
1335 dnl see comment above for the reason.
1336 dnl =================================================
1337 dnl AC_ARG_ENABLE(dynamic-pcrs,
1338 dnl [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if libpcrs is available],
1339 dnl [ if test $enableval = "no"; then have_pcrs=no; fi ])
1342 dnl ====================================================
1343 dnl This check is incomplete. For mingw32 zlib is found
1344 dnl by configure, but not necessarily by the compiler.
1345 dnl ====================================================
1347 [ --enable-zlib Use an external zlib library to allow decompressing
1349 [enableval2=$enableval],
1351 if test $enableval2 = yes; then
1352 AC_CHECK_LIB(z, zlibVersion, , [
1353 AC_MSG_ERROR([Unable to find a copy of zlib. The zlib library
1354 is necessary to enable compresion support. ])
1356 AC_DEFINE(FEATURE_ZLIB,1,
1357 [ Define to 1 to use compression through the zlib library. ])
1361 # If we have libpcre and either we also have pcreposix or
1362 # we don't need pcreposix, then link pcre dynamically; else
1363 # build it and link statically
1365 if test $have_pcre = "yes"; then
1366 echo "using libpcre"
1369 LIBS="$LIBS -lpcre -lpcreposix"
1371 echo "using built-in static pcre"
1373 AC_DEFINE(STATIC_PCRE)
1377 dnl =================================================
1378 dnl libpcrs is temporarily disabled,
1379 dnl see comment above for the reason.
1380 dnl =================================================
1381 dnl # If we have libpcrs and pcre is linked dynamically
1382 dnl # then also link pcrs dynamically, else build and link
1383 dnl # pcrs statically
1385 dnl if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1386 dnl echo "using libpcrs"
1387 dnl STATIC_PCRS_ONLY=#
1388 dnl LIBS="$LIBS -lpcrs"
1390 echo "using built-in static pcrs"
1391 AC_DEFINE(STATIC_PCRS)
1395 AC_SUBST(STATIC_PCRE_ONLY)
1396 AC_SUBST(STATIC_PCRS_ONLY)
1398 dnl =================================================================
1399 dnl Final cleanup and output
1400 dnl =================================================================
1402 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1404 CFLAGS=$old_CFLAGS_nospecial
1405 AC_SUBST(SPECIAL_CFLAGS)
1407 AC_SUBST(PTHREAD_LIB)
1409 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)