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