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