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