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