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