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