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