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