Add a filter to make updating the "What's New in this Release"
[privoxy.git] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 dnl 
3 dnl $Id: configure.in,v 1.115 2008/05/25 15:50:14 fabiankeil Exp $
4 dnl 
5 dnl Written by and Copyright (C) 2001-2008 the SourceForge
6 dnl Privoxy team. http://www.privoxy.org/
7 dnl
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
11 dnl
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.
17 dnl 
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.
23 dnl 
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.
29 dnl 
30 dnl $Log: configure.in,v $
31 dnl Revision 1.115  2008/05/25 15:50:14  fabiankeil
32 dnl Try to use zlib by default, but just show a warning if it's
33 dnl unavailable. Remove --enable-zlib, add  --disable-zlib.
34 dnl
35 dnl Revision 1.114  2008/04/06 15:18:33  fabiankeil
36 dnl Oh well, rename the --enable-pcre-host-patterns option to
37 dnl --enable-extended-host-patterns as it's not really PCRE syntax.
38 dnl
39 dnl Revision 1.113  2008/04/06 14:54:26  fabiankeil
40 dnl Use PCRE syntax in host patterns when configured
41 dnl with --enable-pcre-host-patterns.
42 dnl
43 dnl Revision 1.112  2008/03/27 18:27:22  fabiankeil
44 dnl Remove kill-popups action.
45 dnl
46 dnl Revision 1.111  2008/02/03 14:40:47  fabiankeil
47 dnl Remove unused OSX_DARWIN macro. Reported by Mark Miller in #1852529.
48 dnl
49 dnl Revision 1.110  2008/01/26 10:52:13  fabiankeil
50 dnl Change version to 3.0.9 UNRELEASED.
51 dnl
52 dnl Revision 1.109  2008/01/20 14:07:09  fabiankeil
53 dnl Set CODE_STATUS to stable.
54 dnl
55 dnl Revision 1.108  2007/12/10 02:30:00  hal9
56 dnl Change versioning for > 3.0.7 && < 3.0.8
57 dnl
58 dnl Revision 1.107  2007/11/15 02:50:14  hal9
59 dnl Setting to "beta" (for doc builds, etc).
60 dnl
61 dnl Revision 1.106  2007/05/11 11:49:41  fabiankeil
62 dnl Check for strlcat().
63 dnl
64 dnl Revision 1.105  2007/04/09 17:34:58  fabiankeil
65 dnl Check for snprintf().
66 dnl
67 dnl Revision 1.104  2007/03/31 13:35:11  fabiankeil
68 dnl Add checks for gettimeofday() and strlcpy().
69 dnl
70 dnl Revision 1.103  2007/01/20 16:29:38  fabiankeil
71 dnl Suppress edit buttons for action files if Privoxy has
72 dnl no write access. Suggested by Roland in PR 1564026.
73 dnl
74 dnl Revision 1.102  2007/01/18 14:55:45  fabiankeil
75 dnl Check for tzset() and putenv() to make sure the
76 dnl replacement timegm() isn't included on systems
77 dnl where it fails to compile.
78 dnl
79 dnl Revision 1.101  2007/01/12 15:20:17  fabiankeil
80 dnl Temporarily ignore external libpcrs to prevent
81 dnl problems that are fixed in Privoxy's own version.
82 dnl
83 dnl Revision 1.100  2007/01/07 07:38:10  joergs
84 dnl Disabled -pipe for AmigaOS4.
85 dnl
86 dnl Revision 1.99  2007/01/01 19:36:37  fabiankeil
87 dnl Integrate a modified version of Wil Mahan's
88 dnl zlib patch (PR #895531).
89 dnl
90 dnl Revision 1.98  2006/12/17 19:15:26  fabiankeil
91 dnl Added ./configure switch for FEATURE_GRACEFUL_TERMINATION.
92 dnl
93 dnl Revision 1.97  2006/11/21 18:32:46  hal9
94 dnl Setting version to 3.0.7 UNRELEASED for lack of a better setting.
95 dnl
96 dnl Revision 1.96  2006/11/18 14:42:51  fabiankeil
97 dnl Mark as stable.
98 dnl
99 dnl Revision 1.95  2006/11/14 02:08:59  hal9
100 dnl Setting version string to 3.0.6 UNRELEASED. This needs to be reset to 3.0.6
101 dnl stable just before CVS is tagged for release.
102 dnl
103 dnl Revision 1.94  2006/11/13 19:05:50  fabiankeil
104 dnl Make pthread mutex locking more generic. Instead of
105 dnl checking for OSX and OpenBSD, check for FEATURE_PTHREAD
106 dnl and use mutex locking unless there is an _r function
107 dnl available. Better safe than sorry.
108 dnl
109 dnl Fixes "./configure --disable-pthread" and should result
110 dnl in less threading-related problems on pthread-using platforms,
111 dnl but it still doesn't fix BR#1122404.
112 dnl
113 dnl Revision 1.93  2006/09/22 01:26:20  hal9
114 dnl Set version to 3.0.5 BETA for hopefully release this weekend.
115 dnl
116 dnl Revision 1.92  2006/08/17 17:09:49  fabiankeil
117 dnl Added check for timegm().
118 dnl
119 dnl Revision 1.91  2006/08/13 22:01:51  fabiankeil
120 dnl Added checks for strptime() and random()
121 dnl
122 dnl Revision 1.90  2006/07/18 14:48:45  david__schmidt
123 dnl Reorganizing the repository: swapping out what was HEAD (the old 3.1 branch)
124 dnl with what was really the latest development (the v_3_0_branch branch)
125 dnl
126 dnl Revision 1.68.2.20  2004/01/31 16:31:46  oes
127 dnl Resetting version info to 0.0.0 UNRELEASED
128 dnl
129 dnl Revision 1.68.2.19  2004/01/30 09:26:03  oes
130 dnl Added docbook paths for debian sarge; set status for release
131 dnl
132 dnl Revision 1.68.2.18  2003/12/08 15:10:29  oes
133 dnl Bugfix: --with-docbook now correctly accepts its path parameter. Thanks, Roland!
134 dnl
135 dnl Revision 1.68.2.17  2003/10/18 18:41:26  david__schmidt
136 dnl Update to remain buildable on OS/2 - remove the failures
137 dnl due to missing unixisms
138 dnl
139 dnl Revision 1.68.2.16  2003/03/26 16:05:14  oes
140 dnl Marked as 0.0.0 UNRELEASED
141 dnl
142 dnl Revision 1.68.2.15  2003/03/26 00:25:00  oes
143 dnl Bump version for 3.0.2
144 dnl
145 dnl Revision 1.68.2.14  2003/03/25 13:27:12  hal9
146 dnl Manually apply Docbook/FreeBSD patch #708081 from a.go at tiscali.nl.
147 dnl
148 dnl Revision 1.68.2.13  2003/03/18 19:38:57  oes
149 dnl Set version info for 3.0.1 release
150 dnl
151 dnl Revision 1.68.2.12  2003/03/07 03:41:04  david__schmidt
152 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.
153 dnl
154 dnl Revision 1.68.2.11  2003/03/06 15:22:37  oes
155 dnl Fixed minor shell syntax bug
156 dnl
157 dnl Revision 1.68.2.10  2003/01/08 16:39:41  oes
158 dnl Changing default to exclude FEATURE_IMAGE_DETECT_MSIE because of problem reports with recent IEs
159 dnl
160 dnl Revision 1.68.2.9  2002/12/13 23:47:45  hal9
161 dnl Add openbsd $specialflags per gunner at styx2002.no-ip.org
162 dnl
163 dnl Revision 1.68.2.8  2002/11/27 12:55:26  oes
164 dnl Fixed broken handling of pre-set CFLAGS
165 dnl
166 dnl Revision 1.68.2.7  2002/10/25 02:44:22  hal9
167 dnl Port of make install, etc from main trunk. Needs testing! Add Slackware
168 dnl support, and other related changes. Update related docs.
169 dnl
170 dnl Revision 1.68.2.6  2002/09/25 15:35:15  oes
171 dnl Marking as non-release
172 dnl
173 dnl Revision 1.68.2.5  2002/08/25 23:37:00  hal9
174 dnl Getting ready for 3.0 release.
175 dnl
176 dnl Revision 1.68.2.4  2002/08/10 11:21:57  oes
177 dnl - Set Version to 2.9.20 (beta)
178 dnl - Add two AC_DEFINEs that indicate if the pcre*.h headers
179 dnl   are located in a pcre/ subdir to the include path.
180 dnl
181 dnl Revision 1.68.2.3  2002/08/06 11:29:36  oes
182 dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
183 dnl
184 dnl Revision 1.68.2.2  2002/07/30 19:36:09  hal9
185 dnl Bump version to 2.9.17.
186 dnl
187 dnl Revision 1.68.2.1  2002/07/26 15:21:12  oes
188 dnl  Bumped version number for 2.9.16 freeze
189 dnl
190 dnl Revision 1.68  2002/05/25 16:54:54  jongfoster
191 dnl Detect if the compiler supports -pthread.
192 dnl Hopefully this will fix bug 560442.  (I don't have a HP PA-RISC
193 dnl machine to test this!)
194 dnl
195 dnl Revision 1.67  2002/05/03 14:33:59  oes
196 dnl Generate doc/soucre/ldp.dsl
197 dnl
198 dnl Revision 1.66  2002/05/03 00:41:56  oes
199 dnl Set version to 2.9.15 to comply with new versioning scheme
200 dnl
201 dnl Revision 1.65  2002/04/25 19:13:57  morcego
202 dnl Removed RPM release number declaration on configure.in
203 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
204 dnl targets (will produce an error, explaining who to do it, if no value
205 dnl if provided).
206 dnl
207 dnl Revision 1.64  2002/04/22 16:32:31  morcego
208 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
209 dnl -rh.spec: uid and gid are now macros
210 dnl -suse.spec: Changing the header Copyright to License (Copyright is
211 dnl             deprecable)
212 dnl
213 dnl Revision 1.63  2002/04/11 11:00:21  oes
214 dnl Applied Moritz' fix for socklen_t on Solaris
215 dnl
216 dnl Revision 1.62  2002/04/11 10:09:20  oes
217 dnl Version 2.9.14
218 dnl
219 dnl Revision 1.61  2002/04/10 18:14:45  morcego
220 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
221 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
222 dnl
223 dnl Revision 1.60  2002/04/09 16:38:49  oes
224 dnl Added detection of missing config.h.in
225 dnl
226 dnl Revision 1.59  2002/04/06 20:23:55  jongfoster
227 dnl Removing unnessacery tests (C++, ranlib)
228 dnl
229 dnl Revision 1.58  2002/04/04 20:49:20  swa
230 dnl attempt to consolidate the
231 dnl different dokbook versions.
232 dnl
233 dnl Revision 1.57  2002/04/04 00:36:36  gliptak
234 dnl always use pcre for matching
235 dnl
236 dnl Revision 1.56  2002/04/03 22:28:03  gliptak
237 dnl Removed references to gnu_regex
238 dnl
239 dnl Revision 1.55  2002/04/03 03:54:38  gliptak
240 dnl Checking pcre version
241 dnl
242 dnl Revision 1.54  2002/04/01 00:54:24  gliptak
243 dnl More changes needed around regex support.
244 dnl
245 dnl Revision 1.53  2002/03/29 20:09:01  swa
246 dnl al's patch
247 dnl
248 dnl Revision 1.52  2002/03/29 19:51:40  gliptak
249 dnl Correcting compile problem with Debian
250 dnl
251 dnl Revision 1.51  2002/03/28 20:43:00  swa
252 dnl set make correctly
253 dnl
254 dnl Revision 1.50  2002/03/27 03:03:45  hal9
255 dnl Add test for man2html
256 dnl
257 dnl Revision 1.49  2002/03/27 02:19:52  david__schmidt
258 dnl More Mac OSX support:
259 dnl - Get rid of extraneous, noisy -pthread warnings
260 dnl - Define unix so we get oes' unix-tagged changes
261 dnl
262 dnl Revision 1.48  2002/03/26 22:29:54  swa
263 dnl we have a new homepage!
264 dnl
265 dnl Revision 1.47  2002/03/26 16:41:00  hal9
266 dnl Upped RPM Release to 3 (need to build new RH packages)
267 dnl
268 dnl Revision 1.46  2002/03/24 18:55:06  jongfoster
269 dnl Making Docbook work under Windows
270 dnl
271 dnl Revision 1.45  2002/03/24 14:19:55  swa
272 dnl set rpm package release in configure.in. nowhere else.
273 dnl
274 dnl Revision 1.44  2002/03/24 13:25:43  swa
275 dnl name change related issues
276 dnl
277 dnl Revision 1.43  2002/03/24 12:56:21  swa
278 dnl name change related issues.
279 dnl
280 dnl Revision 1.42  2002/03/22 18:11:37  jongfoster
281 dnl Bumping version number to 2.9.12
282 dnl
283 dnl Revision 1.41  2002/03/19 19:30:04  morcego
284 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
285 dnl   should be done
286 dnl
287 dnl - configure will now check for db2html or docbook2html (should work now
288 dnl   on SuSe without the docbktls package)
289 dnl
290 dnl Revision 1.40  2002/03/09 14:33:30  oes
291 dnl Fixing the (harmless) AC_CHECK_FILE warnings
292 dnl
293 dnl Revision 1.39  2002/03/08 16:46:13  oes
294 dnl Added --enable-no-gifs
295 dnl
296 dnl Revision 1.38  2002/03/08 14:13:50  morcego
297 dnl Fixing configure, to remove a command not found error.
298 dnl
299 dnl Revision 1.37  2002/03/08 12:58:21  oes
300 dnl Tiny bugfix in AC_ARG_WITH(debug)
301 dnl
302 dnl Revision 1.36  2002/03/06 23:50:36  morcego
303 dnl Will not test for a text browser if we are not using docbook.
304 dnl
305 dnl Revision 1.35  2002/03/06 21:55:52  morcego
306 dnl New configure option: --with-docbook=(yes|no|directory)
307 dnl Preliminary new platform detection code included. Will work with the
308 dnl old one for now. No use just trowing it away
309 dnl
310 dnl Revision 1.34  2002/03/06 20:57:00  morcego
311 dnl Fixing detection of stylesheets on SuSe.
312 dnl
313 dnl Revision 1.33  2002/03/05 17:31:11  morcego
314 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
315 dnl
316 dnl Revision 1.32  2002/03/05 14:07:43  morcego
317 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
318 dnl    (based on sugestion by Sarantis Paskalis)
319 dnl
320 dnl Revision 1.31  2002/03/05 13:43:28  morcego
321 dnl Checking for text browser, so redhat-dok can work.
322 dnl
323 dnl Revision 1.30  2002/03/04 17:58:01  oes
324 dnl Deleted _DEBUG and PID_FILE_PATH
325 dnl
326 dnl Revision 1.29  2002/02/28 14:20:53  oes
327 dnl Fixed detection of gethost*_r functions on Solaris
328 dnl
329 dnl Revision 1.28  2002/02/27 15:02:38  oes
330 dnl Incremented version number
331 dnl
332 dnl Revision 1.27  2002/01/10 12:35:18  oes
333 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
334 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
335 dnl Is there a better way?
336 dnl
337 dnl Revision 1.26  2002/01/09 14:29:49  oes
338 dnl - Added AC_CHECK_FUNC tests for the availability of
339 dnl   gethostbyname_r, gethostbyaddr_r, gmtime_r and
340 dnl   localtime_r, as well as AC_TRY_COMPILE tests to
341 dnl   determine their signatures.
342 dnl
343 dnl - Fixed a bug with the init of CFLAGS that was
344 dnl   reported by barsnick
345 dnl
346 dnl Revision 1.25  2002/01/04 15:27:18  oes
347 dnl Changed quoting of CODE_STATUS for use in make
348 dnl
349 dnl Revision 1.24  2001/12/30 14:07:31  steudten
350 dnl - Add signal handling (unix)
351 dnl - Add SIGHUP handler (unix)
352 dnl - Add creation of pidfile (unix)
353 dnl - Add action 'top' in rc file (RH)
354 dnl - Add entry 'SIGNALS' to manpage
355 dnl - Add exit message to logfile (unix)
356 dnl
357 dnl Revision 1.23  2001/12/09 20:24:42  david__schmidt
358 dnl Change from "alpha" to "beta" in configure.in
359 dnl
360 dnl Revision 1.22  2001/12/01 11:24:01  jongfoster
361 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
362 dnl make break in a more obvious way.
363 dnl
364 dnl Revision 1.21  2001/11/30 21:35:54  jongfoster
365 dnl Bumping version number to 2.9.10
366 dnl
367 dnl Revision 1.20  2001/10/23 21:24:09  jongfoster
368 dnl Support for FEATURE_CGI_EDIT_ACTIONS
369 dnl
370 dnl Revision 1.19  2001/10/07 15:33:14  oes
371 dnl Removed FEATURE_DENY_GZIP
372 dnl Bumped up version number
373 dnl
374 dnl Revision 1.18  2001/09/13 13:10:24  steudten
375 dnl
376 dnl PreWork for Debug Interface.
377 dnl Add new option "--with-debug" to enable debugging (flags aso.)
378 dnl
379 dnl Revision 1.17  2001/09/12 23:44:55  david__schmidt
380 dnl Mac OSX (Darwin) support added.
381 dnl
382 dnl Revision 1.16  2001/09/12 22:55:45  joergs
383 dnl AmigaOS support added.
384 dnl
385 dnl Revision 1.15  2001/09/12 17:28:59  david__schmidt
386 dnl
387 dnl OS/2 port: update autoconf'd support for the platform.
388 dnl
389 dnl Revision 1.14  2001/07/30 22:12:11  jongfoster
390 dnl Fixing Solaris build (I hope) and tidying up #defines:
391 dnl - All feature #defines are now of the form FEATURE_xxx
392 dnl - Permanently turned off WIN_GUI_EDIT
393 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
394 dnl
395 dnl Revision 1.13  2001/07/29 17:09:17  jongfoster
396 dnl Major changes to build system in order to fix these bugs:
397 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
398 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
399 dnl   which shared libraries are available
400 dnl - Solaris support (?) (Not tested under Solaris yet)
401 dnl
402 dnl Revision 1.12  2001/07/25 19:16:27  oes
403 dnl Bumping version number to 2.9.8
404 dnl
405 dnl Revision 1.11  2001/07/21 18:00:07  jongfoster
406 dnl Bumping version number to 2.9.7
407 dnl
408 dnl Revision 1.10  2001/07/18 17:25:04  oes
409 dnl Fixed a typo
410 dnl
411 dnl Revision 1.9  2001/07/15 19:45:13  jongfoster
412 dnl Added support for linking with POSIX threads library
413 dnl
414 dnl Revision 1.8  2001/07/15 17:54:29  jongfoster
415 dnl Renaming #define STATIC to STATIC_PCRE
416 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
417 dnl POSIX threads support.
418 dnl
419 dnl Revision 1.7  2001/07/13 13:58:05  oes
420 dnl    Completely reorganized the selection scheme for
421 dnl    pcre, pcreposix, pcrs and gnu_regex:
422 dnl
423 dnl    The presence of shared pcre, pcreposix or pcrs
424 dnl    libraried is now autodetected. Additionally, the
425 dnl    user can enforce using the built-in static variants
426 dnl    by specifying --disable-dynamic-(pcre|pcrs).
427 dnl    Care is taken to avoid that pcre is dyn, while pcreposix
428 dnl    is static, if both are used and that pcrs is static if
429 dnl    pcrs is.
430 dnl
431 dnl    The choice between pcre, gnu or no regex for actionsfile
432 dnl    URL matching is now via
433 dnl    --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
434 dnl    default being pcre.
435 dnl
436 dnl Revision 1.6  2001/06/29 21:56:40  oes
437 dnl Version -> 2.9.5
438 dnl
439 dnl Revision 1.5  2001/06/29 13:26:27  oes
440 dnl Introduced #define CODE_STATUS
441 dnl
442 dnl Revision 1.4  2001/05/29 09:50:24  jongfoster
443 dnl Unified blocklist/imagelist/permissionslist.
444 dnl File format is still under discussion, but the internal changes
445 dnl are (mostly) done.
446 dnl
447 dnl Also modified interceptor behaviour:
448 dnl - We now intercept all URLs beginning with one of the following
449 dnl   prefixes (and *only* these prefixes):
450 dnl     * http://i.j.b/
451 dnl     * http://ijbswa.sf.net/config/
452 dnl     * http://ijbswa.sourceforge.net/config/
453 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
454 dnl - Internal changes so that intercepted and fast redirect pages
455 dnl   are not replaced with an image.
456 dnl - Interceptors now have the option to send a binary page direct
457 dnl   to the client. (i.e. ijb-send-banner uses this)
458 dnl - Implemented show-url-info interceptor.  (Which is why I needed
459 dnl   the above interceptors changes - a typical URL is
460 dnl   "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
461 dnl   The previous mechanism would not have intercepted that, and
462 dnl   if it had been intercepted then it then it would have replaced
463 dnl   it with an image.)
464 dnl
465 dnl Revision 1.3  2001/05/22 18:46:04  oes
466 dnl
467 dnl - Enabled filtering banners by size rather than URL
468 dnl   by adding patterns that replace all standard banner
469 dnl   sizes with the "Junkbuster" gif to the re_filterfile
470 dnl
471 dnl - Enabled filtering WebBugs by providing a pattern
472 dnl   which kills all 1x1 images
473 dnl
474 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
475 dnl   which is selected by the (nonstandard and therefore
476 dnl   capital) letter 'U' in the option string.
477 dnl   It causes the quantifiers to be ungreedy by default.
478 dnl   Appending a ? turns back to greedy (!).
479 dnl
480 dnl - Added a new interceptor ijb-send-banner, which
481 dnl   sends back the "Junkbuster" gif. Without imagelist or
482 dnl   MSIE detection support, or if tinygif = 1, or the
483 dnl   URL isn't recognized as an imageurl, a lame HTML
484 dnl   explanation is sent instead.
485 dnl
486 dnl - Added new feature, which permits blocking remote
487 dnl   script redirects and firing back a local redirect
488 dnl   to the browser.
489 dnl   The feature is conditionally compiled, i.e. it
490 dnl   can be disabled with --disable-fast-redirects,
491 dnl   plus it must be activated by a "fast-redirects"
492 dnl   line in the config file, has its own log level
493 dnl   and of course wants to be displayed by show-proxy-args
494 dnl   Note: Boy, all the #ifdefs in 1001 locations and
495 dnl   all the fumbling with configure.in and acconfig.h
496 dnl   were *way* more work than the feature itself :-(
497 dnl
498 dnl - Because a generic redirect template was needed for
499 dnl   this, tinygif = 3 now uses the same.
500 dnl
501 dnl - Moved GIFs, and other static HTTP response templates
502 dnl   to project.h
503 dnl
504 dnl - Some minor fixes
505 dnl
506 dnl - Removed some >400 CRs again (Jon, you really worked
507 dnl   a lot! ;-)
508 dnl
509 dnl Revision 1.2  2001/05/20 01:21:20  jongfoster
510 dnl Version 2.9.4 checkin.
511 dnl - Merged popupfile and cookiefile, and added control over PCRS
512 dnl   filtering, in new "permissionsfile".
513 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
514 dnl   file error you now get a message box (in the Win32 GUI) rather
515 dnl   than the program exiting with no explanation.
516 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
517 dnl   skipping.
518 dnl - Removed tabs from "config"
519 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
520 dnl - Bumped up version number.
521 dnl
522 dnl Revision 1.1.1.1  2001/05/15 13:58:50  oes
523 dnl Initial import of version 2.9.3 source tree
524 dnl
525 dnl 
526
527
528 dnl =================================================================
529 dnl AutoConf Initialization
530 dnl =================================================================
531
532 AC_REVISION($Revision: 1.115 $)
533 AC_INIT(jcc.c)
534
535 if test ! -f config.h.in; then
536    echo "You need to run autoheader first. "
537    echo -n "Shall I do this for you now? (y/n) "
538    read answer
539    if test "$answer" != "y"; then
540       exit 1
541    else
542       autoheader
543   fi
544 fi  
545
546 AC_CONFIG_HEADER([config.h])
547 AC_CANONICAL_HOST
548
549 dodk=auto
550 DKPREFIX=none
551 AC_ARG_WITH(docbook, dnl
552   --with-docbook=[[yes|no|directory]]   
553                            Enable docbook documentation creation 
554                            (default = yes, for gnu and linux),[dnl
555 case "$with_docbook" in
556 yes) dodk=yes;;
557 no) dodk=no;;
558 *) 
559         dodk=yes
560         DKPREFIX=$withval
561         ;;
562 esac
563 ])
564 DB2HTML=false
565 AC_ARG_WITH(db2html, dnl
566   --with-db2html=<path/executable>
567                           Set the location of the docbook to html converter
568                           (default = search),[dnl
569 DB2HTML=$withval
570 ])
571
572 dnl =================================================================
573 dnl Application version number
574 dnl =================================================================
575
576 VERSION_MAJOR=3
577 VERSION_MINOR=0
578 VERSION_POINT=9
579 CODE_STATUS="UNRELEASED"
580
581 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
582 dnl used for CGI output. Set version to 0.0.0 and status to "UNRELEASED"
583 dnl whenever CVS in a stable branch differs from the last release.
584
585 dnl =================================================================
586 dnl Substitute the version numbers
587 dnl =================================================================
588
589 AC_SUBST(VERSION_MAJOR)
590 AC_SUBST(VERSION_MINOR)
591 AC_SUBST(VERSION_POINT)
592 AC_SUBST(CODE_STATUS)
593
594 dnl
595 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
596 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
597 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
598 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
599 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
600
601 dnl =================================================================
602 dnl Checks for programs needed to build.
603 dnl =================================================================
604
605 dnl Keep AC_PROG_CC from setting its own defaults:
606 if test "X$CFLAGS" = "X"; then
607    CFLAGS=" "
608 fi
609
610 AC_PROG_CC
611 AC_PROG_CPP
612 AC_PROG_INSTALL
613 AC_PROG_LN_S
614 AC_PROG_MAKE_SET
615 AC_PROG_AWK
616
617 AC_CHECK_PROG(GDB,gdb,yes,no)
618 AC_PATH_PROG(BGROUPS,groups,no,/bin:/usr/bin:/usr/local/bin)
619 AC_PATH_PROG(ID,id,no,/bin:/usr/bin:/usr/local/bin)
620 AC_SUBST(ID)
621 AC_SUBST(BGROUPS)
622
623 dnl =================================================================
624 dnl debug, gcc and gdb support 
625 dnl =================================================================
626
627 AC_ARG_WITH(debug,
628         [  --with-debug            Enable debug mode],
629         [
630                 if test "x$withval" != "xno" ; then
631                     if test $ac_cv_prog_cc_g = yes; then
632                       if test "$GCC" = yes; then
633                         if test "$GDB"; then
634                           CFLAGS="$CFLAGS -ggdb"
635                         else
636                           CFLAGS="$CFLAGS -g"
637                         fi
638                         CFLAGS="$CFLAGS -Wshadow  -Wconversion"
639                       else
640                         CFLAGS="$CFLAGS -g"
641                       fi
642                    fi
643                 fi
644         ],
645         [
646             if test "X$CFLAGS" = "X "; then # if CFLAGS were unset (see above)
647               if test "$GCC" = yes; then
648                 CFLAGS="-O2"
649               fi
650             fi
651         ]
652 )
653
654 dnl =================================================================
655 dnl Check for user and group validity
656 dnl =================================================================
657
658
659 if test "$EMXOS2" = yes; then
660   echo "Skipping user and group validity stuff.";
661
662 else
663
664   $ID privoxy >/dev/null 2>/dev/null
665   if test $? -ne 0 ; then
666    AC_MSG_WARN(There is no user 'privoxy' on this system)
667   fi
668   AC_MSG_CHECKING([for user])
669   AC_ARG_WITH(user,
670         [  --with-user=privoxy          Set user under which privoxy will run],
671         [
672                 if test "x$withval" != "xyes"; then
673                   if test $ID = no ; then
674                     AC_MSG_ERROR(There is no 'id' program on this system)
675                   else
676                     AC_MSG_RESULT($with_user)
677                     $ID $with_user 2>/dev/null >/dev/null
678                     if test $? -eq 0 ; then
679                       USER=$with_user;
680                     else
681                       AC_MSG_ERROR(There is no user '$with_user' on this system)
682                     fi
683                   fi
684                   else
685                    AC_MSG_ERROR(We need a user if you give me this parameter)
686                 fi
687         ],
688         [
689           if test $ID = no ; then
690             AC_MSG_ERROR(There is no 'id' programm on this system)
691           else
692             AC_MSG_RESULT(none specified)
693             USER=$with_user
694           fi
695         ]
696   )
697   AC_SUBST(USER)
698
699   AC_MSG_CHECKING([for group])
700   AC_ARG_WITH(group,
701         [  --with-group=privoxy         Set group for privoxy],
702         [ 
703                 if test "x$withval" != "xyes"; then
704                   if test $BGROUPS = no ; then
705                     AC_MSG_ERROR(There is no 'groups' program on this system)
706                   else
707                     AC_MSG_RESULT($with_group)
708                     $BGROUPS $USER >/dev/null
709                     if test $? -eq 0 ; then
710                     # FIXME: this fails if valid group, but not first group
711                     # listed.
712                       if test "$with_group" != "`$BGROUPS $USER | sed 's/.*: //' 2>/dev/null |$AWK '{print $1}'`" ; then
713                         AC_MSG_ERROR(The given value '$withval' does not match group entry)
714                       else
715                         GROUP=$with_group;
716                       fi
717                     else
718                       AC_MSG_ERROR(There is no group entry for user '$USER')
719                     fi
720                   fi
721                 else
722                    AC_MSG_ERROR(We need a group if you give me this parameter)
723                 fi
724         ],
725         [
726           if test $BGROUPS = no ; then
727             AC_MSG_ERROR(There is no 'groups' programm on this system)
728           else
729             AC_MSG_RESULT(none specified)
730             GROUP=$with_group;
731           fi
732         ]
733   )
734   AC_SUBST(GROUP)
735
736 fi
737
738 dnl =================================================================
739 dnl additional gcc flags
740 dnl =================================================================
741 dnl 
742 if test "$GCC"; then
743   if test "$host" != "powerpc-unknown-amigaos"; then
744     CFLAGS="-pipe $CFLAGS"
745   fi
746 fi
747
748
749 dnl =================================================================
750 dnl Build type
751 dnl =================================================================
752 dnl
753 dnl Must do this first.
754 dnl
755 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
756 dnl into Cygwin or MinGW32 modes.  Depending on the mode selected,
757 dnl the compiler will use completely different sets of library
758 dnl and include files.
759 dnl 
760 dnl =================================================================
761
762 AC_MINGW32
763 AC_CYGWIN
764
765 if test "$MINGW32" = "yes"; then
766   target_type=mingw
767 else
768   if test "$CYGWIN" = "yes"; then
769     target_type=cygwin
770   else
771     target_type=unix
772   fi
773 fi
774
775 if test $dodk = auto; then
776         dodk=no
777         if test $target_type = unix; then
778                 case "$host_os" in
779                 linux* | gnu*)
780                         dodk=yes
781                 ;;
782                 esac
783         fi
784 fi
785
786 dnl Decide what to do based on target_type
787 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
788 dnl This is because we don't know yet whether pthread is enabled.
789
790 AC_ARG_ENABLE(mingw32,
791 [  --enable-mingw32                Use mingw32 for a Windows GUI],
792 [if test $enableval = yes; then
793   target_type=mingw
794 fi])
795
796 if test $target_type = mingw; then
797   WIN_ONLY=
798   SPECIAL_CFLAGS="-mwindows -mno-cygwin"
799   PTHREAD_LIB=-lpthreadGC
800   echo "Using mingw32 (Win32 GUI)"
801 else
802   WIN_ONLY=#
803   if test $target_type = cygwin; then
804     SPECIAL_CFLAGS="-mno-win32"
805     PTHREAD_LIB=
806     echo "Using Cygnus (Win32 command line)"
807   else
808     SPECIAL_CFLAGS=
809     PTHREAD_LIB=-lpthread
810   fi
811 fi
812 AC_SUBST(WIN_ONLY)
813
814 dnl Checking which text html browser we have avaliable
815 if test $dodk != no; then
816         AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
817         if test "$WDUMP" = false; then
818                 AC_MSG_WARN(You need some kind of text browser to build documentation \(w3m, lynx and links are supported\))
819         fi
820         if test $DB2HTML = false; then
821                 dnl We need to clean the variable, otherwise AC_CHECK_PROGS
822                 dnl will fail   
823                 DB2HTML=""
824                 AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
825         fi
826 fi
827 AC_SUBST(WDUMP)
828 AC_SUBST(DB2HTML)
829
830 dnl If we use rpm, we need to check where %_topdir is
831 AC_CHECK_PROGS(RPMBIN,rpm,false)
832 if test $RPMBIN != false; then
833                 RPM_BASE=`rpm --eval "%{_topdir}"`
834                 if test "$RPM_BASE" = ""; then
835                         RPM_BASE=/usr/src/redhat
836                 fi
837 fi
838 AC_SUBST(RPM_BASE)
839
840 dnl Check for jade, so we can build the documentation
841 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
842 AC_SUBST(JADEBIN)
843
844 dnl Check for man2html for docs.
845 AC_CHECK_PROGS(MAN2HTML,man2html,false)
846 AC_SUBST(MAN2HTML)
847
848 dnl Set doc status flag for conditional content inclusions
849 DOC_STATUS=p-not-stable
850 if  test $CODE_STATUS = stable; then
851      DOC_STATUS="p-stable"
852 fi
853 AC_SUBST(DOC_STATUS)
854
855 dnl Checking for the docbook.dsl stylesheet file
856 dnl It is still not portable (directory slash)
857 JADECAT=""
858 if test $dodk = yes; then
859   if test $DKPREFIX = none; then
860     for i in /usr/share/sgml/docbook/dsssl-stylesheets \
861              /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl \
862              /usr/local/share/sgml/docbook/dsssl/modular \
863              /usr/share/sgml/docbook/stylesheet/dsssl/modular/ \
864              ; do
865 dnl  echo -n does not fly with /bin/sh.
866 dnl      echo -n "checking for $i/html/docbook.dsl..."
867       AC_MSG_CHECKING([for $i])
868       if test -f $i/html/docbook.dsl; then
869         echo "yes"
870         DKPREFIX=$i
871         break
872       else
873         echo "no"
874       fi
875     done
876 # where are the catalogs?
877     for i in /usr/share/sgml/CATALOG.docbk30 \
878              /usr/share/sgml/CATALOG.docbk31 \
879              /usr/share/sgml/CATALOG.docbk31 \
880              /usr/local/share/sgml/docbook/3.0/docbook.cat \
881              /usr/local/share/sgml/docbook/3.1/docbook.cat \
882              /usr/share/sgml/docbook/dtd/3.1/docbook.cat \
883              ; do
884 dnl     echo -n "checking for $i..."
885       AC_MSG_CHECKING([for $i])
886       if test -f $i; then
887         echo "yes"
888         JADECAT="$JADECAT -c $i"
889       else
890         echo "no"
891       fi
892     done
893   fi
894 fi
895 AC_SUBST(JADECAT)
896 AC_SUBST(DKPREFIX)
897
898 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
899 old_CFLAGS_nospecial=$CFLAGS
900 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
901
902 # Hack to force AutoConf to use the CFLAGS we just set
903 dnl Warning: This may break with a future version of Autoconf
904 dnl          Tested with autoconf 2.13
905 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
906 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
907 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
908
909
910 dnl =================================================================
911 dnl Thread support
912 dnl =================================================================
913
914 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
915
916 AC_ARG_ENABLE(pthread,
917 [  --disable-pthread               Don't use POSIX threads (pthreads)],
918 [if test $enableval = no; then
919   # Disable pthreads
920   have_pthread=no
921 fi])
922
923 if test $have_pthread = yes; then
924   PTHREAD_ONLY=
925   AC_DEFINE(FEATURE_PTHREAD)
926   echo Using POSIX threads
927   if test "$GCC" = "yes"; then
928     # Set a GCC specific switch:
929     if test "$target_type" = "unix"; then
930       ac_jgf_save_CFLAGS=$CFLAGS
931       CFLAGS="$CFLAGS -pthread"
932       AC_TRY_LINK([#include <pthread.h>],
933         [void *p = pthread_create;],
934         [
935           # This compiler switch makes GCC on Linux thread-safe
936           # However, it's not supported on most other OS.
937           PTHREAD_LIB=
938           SPECIAL_CFLAGS="-pthread"
939         ])
940       CFLAGS=$ac_jgf_save_CFLAGS
941     fi
942   fi
943 else
944   PTHREAD_ONLY=#
945   echo Using native threads
946 fi
947
948 AC_SUBST(PTHREAD_ONLY)
949
950 dnl =================================================================
951 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
952 dnl gmtime and localtime
953 dnl =================================================================
954
955 dnl Next line needed to find the gethost*_r functions on Solaris
956 AC_CHECK_LIB(nsl, gethostbyname)
957
958 AC_CHECK_FUNC(gethostbyaddr_r, [
959   AC_MSG_CHECKING([signature of gethostbyaddr_r])
960   AC_TRY_COMPILE([
961 #   include <netdb.h>
962   ], [
963     struct hostent *h, *hp;
964     char *a, *b;
965     int l, bl, t, e;
966     (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
967   ], [
968     AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
969     AC_MSG_RESULT([8 args])
970   ], [
971     AC_TRY_COMPILE([
972 #     include <netdb.h>
973     ], [
974       struct hostent *h;
975       char *a, *b;
976       int l, bl, t, e;
977       (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
978     ], [
979       AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
980       AC_MSG_RESULT([7 args])
981     ], [
982       AC_TRY_COMPILE([
983 #       include <netdb.h>
984       ], [
985         struct hostent_data *d;
986         struct hostent *h;
987         char a,
988         int l, t;
989         (void) gethostbyaddr_r(a, l, t, h, d)
990       ], [
991         AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
992         AC_MSG_RESULT([5 args])
993       ], [
994         AC_MSG_RESULT(unrecognised)
995       ])
996     ])
997   ])
998 ], [
999   AC_MSG_RESULT(no)
1000 ])
1001
1002 AC_CHECK_FUNC(gethostbyname_r, [
1003   AC_MSG_CHECKING([signature of gethostbyname_r])
1004   AC_TRY_COMPILE([
1005 #   include <netdb.h>
1006   ], [
1007     struct hostent *h, *r;
1008     char *n, *b;
1009     int bl, e;
1010     (void) gethostbyname_r(n, h, b, bl, &r, &e)
1011   ], [
1012     AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
1013     AC_MSG_RESULT([6 args])
1014   ], [
1015     AC_TRY_COMPILE([
1016 #     include <netdb.h>
1017     ], [
1018       struct hostent *h;
1019       char *n, *b;
1020       int bl, e;
1021       (void) gethostbyname_r(n, h, b, bl, &e)
1022     ], [
1023       AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
1024       AC_MSG_RESULT([5 args])
1025     ], [
1026       AC_TRY_COMPILE([
1027 #       include <netdb.h>
1028       ], [
1029         struct hostent_data *d;
1030         struct hostent *h;
1031         char *n,
1032         (void) gethostbyname_r(n, h, d)
1033       ], [
1034         AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
1035         AC_MSG_RESULT([3 args])
1036       ], [
1037         AC_MSG_RESULT(unrecognised)
1038       ])
1039     ])
1040   ])
1041 ], [
1042   AC_MSG_RESULT(no)
1043 ])
1044
1045 AC_CHECK_FUNC(gmtime_r, [
1046   AC_MSG_CHECKING([signature of gmtime_r])
1047   AC_TRY_COMPILE([
1048 #   include <time.h>
1049   ], [
1050     struct time *t;
1051     struct tm *tm;
1052     (void) gmtime_r(t, tm)
1053   ], [
1054     AC_MSG_RESULT(ok)
1055     AC_DEFINE(HAVE_GMTIME_R)
1056   ], [
1057     AC_MSG_RESULT(unrecognised)
1058   ])
1059 ], [
1060   AC_MSG_RESULT(no)
1061 ])
1062
1063 AC_CHECK_FUNC(localtime_r, [
1064   AC_MSG_CHECKING([signature of localtime_r])
1065   AC_TRY_COMPILE([
1066 #   include <time.h>
1067   ], [
1068     struct time *t;
1069     struct tm *tm;
1070     (void) localtime_r(t, tm)
1071   ], [
1072     AC_MSG_RESULT(ok)
1073     AC_DEFINE(HAVE_LOCALTIME_R)
1074   ], [
1075     AC_MSG_RESULT(unrecognised)
1076   ])
1077 ], [
1078   AC_MSG_RESULT(no)
1079 ])
1080
1081 dnl =================================================================
1082 dnl Solaris specific
1083 dnl FIXME: Not tested on Solaris yet...
1084 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
1085 dnl     make these checks generic, e.g.:
1086 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
1087 dnl     (Moritz Barsnick <moritz@barsnick.net>)
1088 dnl =================================================================
1089
1090
1091 SOCKET_LIB=
1092
1093 case "$host" in
1094 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
1095             AC_DEFINE(__EXTENSIONS__)
1096             if test "$GCC" = "yes"; then
1097               # Set a GCC specific switch:
1098               # This compiler switch makes Solaris thread-safe
1099               PTHREAD_LIB=
1100               SPECIAL_CFLAGS="-pthreads"
1101             else
1102               # What do we do without GCC? Guess this:
1103               SPECIAL_CFLAGS="-D_REENTRANT"
1104             fi
1105 ;;
1106 esac
1107
1108 AC_SUBST(SOCKET_LIB)
1109
1110 dnl =================================================================
1111 dnl Solaris problem, and others perhaps (socklen_t is undefined)
1112 dnl =================================================================
1113
1114 AC_MSG_CHECKING([for socklen_t])
1115 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
1116         AC_MSG_RESULT([no])
1117         AC_DEFINE(socklen_t,int,
1118                 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
1119
1120
1121 dnl =================================================================
1122 dnl OS/2 specific
1123 dnl =================================================================
1124
1125 case "$host" in
1126 *-os2-emx*) SOCKET_LIB=-lsocket
1127 ;;
1128 esac
1129
1130 AC_SUBST(SOCKET_LIB)
1131
1132 dnl =================================================================
1133 dnl Mac OSX specific
1134 dnl =================================================================
1135     
1136 case "$host" in
1137 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix"
1138 ;;  
1139 esac
1140
1141 dnl =================================================================
1142 dnl OpenBSD specific
1143 dnl =================================================================
1144
1145 case "$host" in
1146 *-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
1147 ;;
1148 esac
1149
1150 dnl =================================================================
1151 dnl AmigaOS specific
1152 dnl =================================================================
1153
1154 AMIGAOS_ONLY=#
1155
1156 case "$host" in
1157 *-amigaos) AMIGAOS_ONLY=
1158 ;;
1159 esac
1160
1161 AC_SUBST(AMIGAOS_ONLY)
1162
1163 dnl =================================================================
1164 dnl Check for standard compiler stuff
1165 dnl =================================================================
1166
1167 AC_EXEEXT
1168 AC_OBJEXT
1169 AC_HEADER_STDC
1170 AC_HEADER_DIRENT
1171 AC_C_CONST
1172 AC_TYPE_SIZE_T
1173 AC_TYPE_PID_T
1174 AC_HEADER_TIME
1175 AC_STRUCT_TM
1176 AC_CHECK_SIZEOF(int, 4)
1177 AC_CHECK_SIZEOF(char *, 4)
1178 AC_CHECK_SIZEOF(long, 4)
1179 AC_CHECK_SIZEOF(long long, 8)
1180 AC_CHECK_SIZEOF(size_t, 4)
1181
1182 dnl Checks for header files.
1183 dnl AC_HEADER_SYS_WAIT
1184 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
1185 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])
1186
1187 dnl Checks for library functions.
1188 dnl AC_TYPE_SIGNAL
1189 dnl AC_CHECK_FUNC(strstr)
1190 dnl bcopy and memmove are for PCRE
1191 AC_CHECK_FUNCS([strerror bcopy memmove])
1192 AC_PROG_GCC_TRADITIONAL
1193 dnl uncommenting does not work for swa. suse linux
1194 dnl AC_FUNC_MALLOC
1195 AC_FUNC_SETPGRP
1196 AC_TYPE_SIGNAL
1197 dnl uncommenting does not work for swa. suse linux
1198 dnl AC_FUNC_STAT
1199 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])
1200
1201
1202 dnl =================================================================
1203 dnl Checks for libraries.
1204 dnl =================================================================
1205 dnl Note: Some systems may have the library but not the system header
1206 dnl       file, so we must check for both.
1207 dnl       Also check for correct version
1208 AC_CHECK_LIB(pcre, pcre_compile, [
1209    AC_CHECK_HEADER(pcre.h, [
1210       AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
1211    ], [
1212       AC_CHECK_HEADER(pcre/pcre.h, [
1213          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])
1214       ], [have_pcre=no])
1215    ])
1216 ], [have_pcre=no])
1217  
1218 AC_CHECK_LIB(pcreposix, regcomp, [
1219    AC_CHECK_HEADER(pcreposix.h, [
1220       AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
1221    ], [
1222       AC_CHECK_HEADER(pcre/pcreposix.h, [
1223          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)])
1224       ], [have_pcreposix=no])
1225    ])
1226 ], [have_pcreposix=no], -lpcre) 
1227
1228 dnl ================================================================
1229 dnl libpcrs is temporarily disabled.
1230 dnl
1231 dnl Privoxy's own pcrs version fixes some problems that
1232 dnl are present in libpcrs 0.3, the last pcrs release we
1233 dnl know of, and as libpcrs seems to be currently unmaintained
1234 dnl we can't send these fixes upstream.
1235 dnl ================================================================
1236 dnl
1237 dnl AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
1238
1239 dnl =================================================================
1240 dnl Always defined
1241 dnl =================================================================
1242
1243 AC_DEFINE(__MT__)
1244
1245 dnl =================================================================
1246 dnl Features
1247 dnl =================================================================
1248
1249 AC_ARG_ENABLE(toggle,
1250 [  --disable-toggle                Don't support temporary disable],
1251 [if test $enableval = yes; then
1252   AC_DEFINE(FEATURE_TOGGLE)
1253 fi],AC_DEFINE(FEATURE_TOGGLE))
1254
1255 AC_ARG_ENABLE(force,
1256 [  --disable-force                 Don't allow single-page disable],
1257 [if test $enableval = yes; then
1258   AC_DEFINE(FEATURE_FORCE_LOAD)
1259 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
1260
1261 AC_ARG_ENABLE(fast-redirects,
1262 [  --disable-fast-redirects        Don't support fast redirects],
1263 [if test $enableval = yes; then
1264   AC_DEFINE(FEATURE_FAST_REDIRECTS)
1265 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
1266
1267 AC_ARG_ENABLE(stats,
1268 [  --disable-stats                 Don't keep statistics],
1269 [if test $enableval = yes; then
1270   AC_DEFINE(FEATURE_STATISTICS)
1271 fi],AC_DEFINE(FEATURE_STATISTICS))
1272
1273 AC_ARG_ENABLE(ie-images,
1274 [  --enable-ie-images              Enable a quick but not always reliable auto-detect whether requests from
1275                                   MS Internet Explorer are for an image or not.],
1276 [if test $enableval = yes; then
1277   AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
1278 fi],)
1279
1280 AC_ARG_ENABLE(image-blocking,
1281 [  --disable-image-blocking        Don't try to figure out whether a request is 
1282                                   for an image or HTML - assume HTML.],
1283 [if test $enableval = yes; then
1284   AC_DEFINE(FEATURE_IMAGE_BLOCKING)
1285 fi],
1286 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
1287
1288 AC_ARG_ENABLE(acl-files,
1289 [  --disable-acl-files             Prevents the use of ACL files to control access to
1290                                   Privoxy by IP address.],
1291 [if test $enableval = yes; then
1292   AC_DEFINE(FEATURE_ACL)
1293 fi],
1294 AC_DEFINE(FEATURE_ACL))
1295
1296 AC_ARG_ENABLE(trust-files,
1297 [  --disable-trust-files           Prevents the use of trust files.],
1298 [if test $enableval = yes; then
1299   AC_DEFINE(FEATURE_TRUST)
1300 fi],
1301 AC_DEFINE(FEATURE_TRUST))
1302
1303 AC_ARG_ENABLE(jar-files,
1304 [  --disable-jar-files             Prevents the use of jar files to capture cookies.],
1305 [if test $enableval = yes; then
1306   AC_DEFINE(FEATURE_COOKIE_JAR)
1307 fi],
1308 AC_DEFINE(FEATURE_COOKIE_JAR))
1309
1310 AC_ARG_ENABLE(editor,
1311 [  --disable-editor                Prevents the use of the web-based actions file
1312                                   editor and web-based temporary disable setting.],
1313 [if test $enableval = yes; then
1314   AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
1315 fi],
1316 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
1317
1318 AC_ARG_ENABLE(no-gifs,
1319 [  --enable-no-gifs                Use politically correct PNG format instead of GIF
1320                                   for built-in images. May not work with all browsers.],
1321 [if test $enableval = yes; then
1322   AC_DEFINE(FEATURE_NO_GIFS)
1323 fi])
1324
1325 AC_ARG_ENABLE(graceful-termination,
1326 [  --enable-graceful-termination   Allow to shutdown Privoxy through the webinterface.],
1327 [if test $enableval = yes; then
1328   AC_DEFINE(FEATURE_GRACEFUL_TERMINATION)
1329 fi])
1330
1331 AC_ARG_ENABLE(extended-host-patterns,
1332 [  --enable-extended-host-patterns Allow extended regular expressions in host patterns.],
1333 [if test $enableval = yes; then
1334   AC_DEFINE(FEATURE_EXTENDED_HOST_PATTERNS)
1335 fi])
1336
1337 dnl pcre/pcrs is needed for CGI anyway, so
1338 dnl the choice is only between static and
1339 dnl dynamic:
1340
1341 AC_ARG_ENABLE(dynamic-pcre,
1342 [  --disable-dynamic-pcre          Use the built-in, static pcre, even if libpcre is available],
1343 [ if test $enableval = "no"; then have_pcre=no; fi ])
1344
1345 dnl =================================================
1346 dnl libpcrs is temporarily disabled,
1347 dnl see comment above for the reason.
1348 dnl =================================================
1349 dnl AC_ARG_ENABLE(dynamic-pcrs,
1350 dnl [  --disable-dynamic-pcrs          Use the built-in, static pcrs, even if libpcrs is available],
1351 dnl [ if test $enableval = "no"; then have_pcrs=no; fi ])
1352
1353
1354 dnl ====================================================
1355 dnl This check is incomplete. For mingw32 zlib is found
1356 dnl by configure, but not necessarily by the compiler.
1357 dnl ====================================================
1358 AC_ARG_ENABLE(zlib,
1359 [  --disable-zlib                  Don't use zlib to decompress data before filtering.],
1360 [enableval2=$enableval],
1361 [enableval2=yes])
1362 if test $enableval2 = yes; then
1363   AC_CHECK_LIB(z, zlibVersion, [have_zlib="yes"], [have_zlib="no"])
1364   if test $have_zlib = "yes"; then
1365     LIBS="$LIBS -lz"
1366     AC_DEFINE(FEATURE_ZLIB,1,[Define to 1 to use compression through the zlib library.])
1367   else
1368    AC_MSG_WARN([No zlib found.
1369    Privoxy will not be able to filter compressed content.
1370    This may become a fatal error in the future.])
1371   fi  
1372 fi
1373
1374
1375 # If we have libpcre and either we also have pcreposix or
1376 # we don't need pcreposix, then link pcre dynamically; else
1377 # build it and link statically
1378 #
1379 if test $have_pcre = "yes"; then
1380   echo "using libpcre"
1381   pcre_dyn=yes
1382   STATIC_PCRE_ONLY=#
1383   LIBS="$LIBS -lpcre -lpcreposix"
1384 else
1385   AC_MSG_WARN([You are using the static PCRE code which is scheduled for removal, for details see: 
1386     https://sourceforge.net/mailarchive/message.php?msg_id=20080511195555.2dc6cfdc%40fabiankeil.de])
1387   pcre_dyn=no
1388   AC_DEFINE(STATIC_PCRE)
1389   STATIC_PCRE_ONLY=
1390 fi
1391
1392 dnl =================================================
1393 dnl libpcrs is temporarily disabled,
1394 dnl see comment above for the reason.
1395 dnl =================================================
1396 dnl # If we have libpcrs and pcre is linked dynamically
1397 dnl # then also link pcrs dynamically, else build and link
1398 dnl # pcrs statically
1399 dnl
1400 dnl if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1401 dnl  echo "using libpcrs"
1402 dnl  STATIC_PCRS_ONLY=#
1403 dnl  LIBS="$LIBS -lpcrs"
1404 dnl else
1405 dnl  echo "using built-in static pcrs"
1406   AC_DEFINE(STATIC_PCRS)
1407   STATIC_PCRS_ONLY=
1408 dnl fi
1409
1410 AC_SUBST(STATIC_PCRE_ONLY)
1411 AC_SUBST(STATIC_PCRS_ONLY)
1412
1413 dnl =================================================================
1414 dnl Final cleanup and output
1415 dnl =================================================================
1416
1417 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1418 dnl in the Makefile
1419 CFLAGS=$old_CFLAGS_nospecial
1420 AC_SUBST(SPECIAL_CFLAGS)
1421
1422 AC_SUBST(PTHREAD_LIB)
1423
1424 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)