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