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