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