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