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