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