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