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