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