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