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