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