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