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