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