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