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