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