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