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