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