1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.13 2001/07/29 17:09:17 jongfoster Exp $
5 dnl Written by and Copyright (C) 2001 the SourceForge
6 dnl IJBSWA team. http://ijbswa.sourceforge.net
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
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.
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.
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.
30 dnl $Log: configure.in,v $
31 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
32 dnl Major changes to build system in order to fix these bugs:
33 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
34 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
35 dnl which shared libraries are available
36 dnl - Solaris support (?) (Not tested under Solaris yet)
38 dnl Revision 1.12 2001/07/25 19:16:27 oes
39 dnl Bumping version number to 2.9.8
41 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
42 dnl Bumping version number to 2.9.7
44 dnl Revision 1.10 2001/07/18 17:25:04 oes
47 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
48 dnl Added support for linking with POSIX threads library
50 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
51 dnl Renaming #define STATIC to STATIC_PCRE
52 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
53 dnl POSIX threads support.
55 dnl Revision 1.7 2001/07/13 13:58:05 oes
56 dnl Completely reorganized the selection scheme for
57 dnl pcre, pcreposix, pcrs and gnu_regex:
59 dnl The presence of shared pcre, pcreposix or pcrs
60 dnl libraried is now autodetected. Additionally, the
61 dnl user can enforce using the built-in static variants
62 dnl by specifying --disable-dynamic-(pcre|pcrs).
63 dnl Care is taken to avoid that pcre is dyn, while pcreposix
64 dnl is static, if both are used and that pcrs is static if
67 dnl The choice between pcre, gnu or no regex for actionsfile
68 dnl URL matching is now via
69 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
70 dnl default being pcre.
72 dnl Revision 1.6 2001/06/29 21:56:40 oes
75 dnl Revision 1.5 2001/06/29 13:26:27 oes
76 dnl Introduced #define CODE_STATUS
78 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
79 dnl Unified blocklist/imagelist/permissionslist.
80 dnl File format is still under discussion, but the internal changes
81 dnl are (mostly) done.
83 dnl Also modified interceptor behaviour:
84 dnl - We now intercept all URLs beginning with one of the following
85 dnl prefixes (and *only* these prefixes):
87 dnl * http://ijbswa.sf.net/config/
88 dnl * http://ijbswa.sourceforge.net/config/
89 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
90 dnl - Internal changes so that intercepted and fast redirect pages
91 dnl are not replaced with an image.
92 dnl - Interceptors now have the option to send a binary page direct
93 dnl to the client. (i.e. ijb-send-banner uses this)
94 dnl - Implemented show-url-info interceptor. (Which is why I needed
95 dnl the above interceptors changes - a typical URL is
96 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
97 dnl The previous mechanism would not have intercepted that, and
98 dnl if it had been intercepted then it then it would have replaced
99 dnl it with an image.)
101 dnl Revision 1.3 2001/05/22 18:46:04 oes
103 dnl - Enabled filtering banners by size rather than URL
104 dnl by adding patterns that replace all standard banner
105 dnl sizes with the "Junkbuster" gif to the re_filterfile
107 dnl - Enabled filtering WebBugs by providing a pattern
108 dnl which kills all 1x1 images
110 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
111 dnl which is selected by the (nonstandard and therefore
112 dnl capital) letter 'U' in the option string.
113 dnl It causes the quantifiers to be ungreedy by default.
114 dnl Appending a ? turns back to greedy (!).
116 dnl - Added a new interceptor ijb-send-banner, which
117 dnl sends back the "Junkbuster" gif. Without imagelist or
118 dnl MSIE detection support, or if tinygif = 1, or the
119 dnl URL isn't recognized as an imageurl, a lame HTML
120 dnl explanation is sent instead.
122 dnl - Added new feature, which permits blocking remote
123 dnl script redirects and firing back a local redirect
125 dnl The feature is conditionally compiled, i.e. it
126 dnl can be disabled with --disable-fast-redirects,
127 dnl plus it must be activated by a "fast-redirects"
128 dnl line in the config file, has its own log level
129 dnl and of course wants to be displayed by show-proxy-args
130 dnl Note: Boy, all the #ifdefs in 1001 locations and
131 dnl all the fumbling with configure.in and acconfig.h
132 dnl were *way* more work than the feature itself :-(
134 dnl - Because a generic redirect template was needed for
135 dnl this, tinygif = 3 now uses the same.
137 dnl - Moved GIFs, and other static HTTP response templates
140 dnl - Some minor fixes
142 dnl - Removed some >400 CRs again (Jon, you really worked
145 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
146 dnl Version 2.9.4 checkin.
147 dnl - Merged popupfile and cookiefile, and added control over PCRS
148 dnl filtering, in new "permissionsfile".
149 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
150 dnl file error you now get a message box (in the Win32 GUI) rather
151 dnl than the program exiting with no explanation.
152 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
154 dnl - Removed tabs from "config"
155 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
156 dnl - Bumped up version number.
158 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
159 dnl Initial import of version 2.9.3 source tree
164 dnl =================================================================
165 dnl AutoConf Initialization
166 dnl =================================================================
168 AC_REVISION($Revision: 1.13 $)
170 AC_CONFIG_HEADER(config.h)
173 dnl =================================================================
174 dnl Application version number
175 dnl =================================================================
180 CODE_STATUS="\"alpha\""
182 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
183 dnl used for CGI output
185 dnl =================================================================
186 dnl Substitute the version numbers
187 dnl =================================================================
189 AC_SUBST(VERSION_MAJOR)
190 AC_SUBST(VERSION_MINOR)
191 AC_SUBST(VERSION_POINT)
194 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
195 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
196 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
197 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
198 AC_DEFINE_UNQUOTED(CODE_STATUS,${CODE_STATUS})
201 dnl =================================================================
202 dnl Checks for programs needed to build.
203 dnl =================================================================
210 dnl RANLIB is for PCRE:
214 dnl =================================================================
216 dnl =================================================================
218 dnl Must do this first.
220 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
221 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
222 dnl the compiler will use completely different sets of library
223 dnl and include files.
225 dnl =================================================================
230 if test "$MINGW32" = "yes"; then
233 if test "$CYGWIN" = "yes"; then
240 dnl Decide what to do based on target_type
241 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
242 dnl This is because we don't know yet whether pthread is enabled.
244 AC_ARG_ENABLE(mingw32,
245 [ --enable-mingw32 Use mingw32 for a Windows GUI],
246 [if test $enableval = yes; then
250 if test $target_type = mingw; then
252 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
253 PTHREAD_LIB=-lpthreadGC
254 echo "Using mingw32 (Win32 GUI)"
257 if test $target_type = cygwin; then
258 SPECIAL_CFLAGS="-mno-win32"
260 echo "Using Cygnus (Win32 command line)"
263 PTHREAD_LIB=-lpthread
268 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
269 old_CFLAGS_nospecial=$CFLAGS
270 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
272 # Hack to force AutoConf to use the CFLAGS we just set
273 dnl Warning: This may break with a future version of Autoconf
274 dnl Tested with autoconf 2.13
275 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
276 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
277 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
280 dnl =================================================================
282 dnl =================================================================
284 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
286 AC_ARG_ENABLE(pthread,
287 [ --disable-pthread Don't use POSIX threads (pthreads)],
288 [if test $enableval = no; then
293 if test $have_pthread = yes; then
295 AC_DEFINE(FEATURE_PTHREAD)
296 echo Using POSIX threads
297 if test "$GCC" = "yes"; then
298 # Set a GCC specific switch:
299 if test "$target_type" = "unix"; then
300 # This compiler switch makes Linux thread-safe
301 # Don't know about other OS's? Is this switch
304 SPECIAL_CFLAGS="-pthread"
309 echo Using native threads
312 AC_SUBST(PTHREAD_ONLY)
315 dnl =================================================================
317 dnl FIXME: Not tested on Solaris yet...
318 dnl =================================================================
325 *-solaris*) SOLARIS_ONLY=
326 AC_DEFINE(__EXTENSIONS__)
327 if test "$GCC" = "yes"; then
328 # Set a GCC specific switch:
329 # This compiler switch makes Solaris thread-safe
331 SPECIAL_CFLAGS="-pthreads"
333 # What do we do without GCC? Guess this:
334 SPECIAL_CFLAGS="-D_REENTRANT"
339 AC_SUBST(SOLARIS_ONLY)
341 dnl =================================================================
342 dnl Check for standard compiler stuff
343 dnl =================================================================
351 dnl Checks for header files.
352 dnl AC_HEADER_SYS_WAIT
353 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
355 dnl Checks for library functions.
357 dnl AC_CHECK_FUNC(strstr)
358 dnl bcopy and memmove are for PCRE
359 AC_CHECK_FUNCS(strerror bcopy memmove)
362 dnl =================================================================
363 dnl Checks for libraries.
364 dnl =================================================================
365 dnl Note: Some systems may have the library but not the system header
366 dnl file, so we must check for both.
367 AC_CHECK_LIB(pcre, pcre_compile, [AC_CHECK_HEADER(pcre.h, [have_pcre=yes], [have_pcre=no])], [have_pcre=no])
368 AC_CHECK_LIB(pcreposix, regcomp, [AC_CHECK_HEADER(pcreposix.h, [have_pcreposix=yes], [have_pcreposix=no])], [have_pcreposix=no], -lpcre)
369 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no])
372 dnl =================================================================
374 dnl =================================================================
378 dnl =================================================================
380 dnl =================================================================
382 AC_ARG_ENABLE(toggle,
383 [ --disable-toggle Don't support temporary disable],
384 [if test $enableval = yes; then
385 AC_DEFINE(FEATURE_TOGGLE)
386 fi],AC_DEFINE(FEATURE_TOGGLE))
389 [ --disable-gzip Block gzip'ed transfer of documents. Note that
390 this is required if you want content modification
391 even with gzip-supporting servers.],
392 [if test $enableval = "no"; then
393 AC_DEFINE(FEATURE_DENY_GZIP)
397 [ --disable-force Don't allow blockfile to be bypassed],
398 [if test $enableval = yes; then
399 AC_DEFINE(FEATURE_FORCE_LOAD)
400 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
402 AC_ARG_ENABLE(fast-redirects,
403 [ --disable-fast-redirects Don't support fast redirects],
404 [if test $enableval = yes; then
405 AC_DEFINE(FEATURE_FAST_REDIRECTS)
406 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
408 AC_ARG_ENABLE(killpopup,
409 [ --disable-killpopup Never block popups],
410 [if test $enableval = yes; then
411 AC_DEFINE(FEATURE_KILL_POPUPS)
412 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
415 [ --disable-stats Don't keep statistics],
416 [if test $enableval = yes; then
417 AC_DEFINE(FEATURE_STATISTICS)
418 fi],AC_DEFINE(FEATURE_STATISTICS))
420 AC_ARG_ENABLE(ie-images,
421 [ --disable-ie-images Don't auto-detect whether a request from MS Internet
422 Explorer is for an image or HTML.],
423 [if test $enableval = yes; then
424 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
426 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE))
428 AC_ARG_ENABLE(image-blocking,
429 [ --disable-image-blocking Don't try to figure out whether a request is
430 for an image or HTML - assume HTML.],
431 [if test $enableval = yes; then
432 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
434 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
436 AC_ARG_ENABLE(acl-files,
437 [ --disable-acl-files Prevents the use of ACL files to control access to
438 the proxy by IP address.],
439 [if test $enableval = yes; then
440 AC_DEFINE(FEATURE_ACL)
442 AC_DEFINE(FEATURE_ACL))
444 AC_ARG_ENABLE(trust-files,
445 [ --disable-trust-files Prevents the use of trust files.],
446 [if test $enableval = yes; then
447 AC_DEFINE(FEATURE_TRUST)
449 AC_DEFINE(FEATURE_TRUST))
451 AC_ARG_ENABLE(jar-files,
452 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
453 [if test $enableval = yes; then
454 AC_DEFINE(FEATURE_COOKIE_JAR)
456 AC_DEFINE(FEATURE_COOKIE_JAR))
458 dnl pcre/pcrs is needed for CGI anyway, so
459 dnl the choice is only between static and
462 AC_ARG_ENABLE(regex-matching,
463 [ --enable-regex-matching=pcre Use perl-compatible regex for actionsfile
464 pattern matching (default)
465 --enable-regex-matching=gnu Use gnu style regex for actionsfile pattern
466 matching (-> bigger binary)
467 --disable-regex-matching Don't use regex matching, compare URL
468 prefix instead (won't shrink birary)],
469 [ regex_matching=$enableval ],
470 [ regex_matching=pcre ])
472 AC_ARG_ENABLE(dynamic-pcre,
473 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
474 libpcre is available],
475 [ if test $enableval = "no"; then have_pcre=no; fi ])
477 AC_ARG_ENABLE(dynamic-pcrs,
478 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
479 libpcrs is available],
480 [ if test $enableval = "no"; then have_pcrs=no; fi ])
483 # Is the regex URL matching based on libpcreposix, but we
484 # don't have that library?
486 if test $have_pcreposix = "yes" -o $regex_matching != "pcre"; then
487 dont_miss_pcreposix=yes
489 dont_miss_pcreposix=no
492 # If we have libpcre and either we also have pcreposix or
493 # we don't need pcreposix, then link pcre dynamically; else
494 # build it and link statically
496 if test $have_pcre = "yes" -a $dont_miss_pcreposix = "yes"; then
502 echo "using built-in static pcre"
504 AC_DEFINE(STATIC_PCRE)
508 # If we have libpcrs and pcre is linked dynamically
509 # then also link pcrs dynamically, else build and link
512 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
517 echo "using built-in static pcrs"
518 AC_DEFINE(STATIC_PCRS)
522 # Which method should be used for URL matching?
523 # pcre, gnu regex or prefix matching?
525 if test $regex_matching = "gnu"; then
526 echo "using gnu regex for URL matching"
530 elif test $regex_matching = "pcre"; then
531 echo "using pcre regex for URL matching"
532 AC_DEFINE(REGEX_PCRE)
535 if test $pcre_dyn = "yes"; then
536 LIBS="$LIBS -lpcreposix"
539 echo -e "using prefix matching for URLs\nHint: This does NOT make the executable any smaller!"
544 AC_SUBST(GNU_REGEX_ONLY)
545 AC_SUBST(PCRE_REGEX_ONLY)
546 AC_SUBST(STATIC_PCRE_ONLY)
547 AC_SUBST(STATIC_PCRS_ONLY)
549 dnl =================================================================
550 dnl Final cleanup and output
551 dnl =================================================================
553 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
555 CFLAGS=$old_CFLAGS_nospecial
556 AC_SUBST(SPECIAL_CFLAGS)
558 AC_SUBST(PTHREAD_LIB)