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