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