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