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