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