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