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