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