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