1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.12 2001/07/25 19:16:27 oes 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.12 2001/07/25 19:16:27 oes
32 dnl Bumping version number to 2.9.8
34 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
35 dnl Bumping version number to 2.9.7
37 dnl Revision 1.10 2001/07/18 17:25:04 oes
40 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
41 dnl Added support for linking with POSIX threads library
43 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
44 dnl Renaming #define STATIC to STATIC_PCRE
45 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
46 dnl POSIX threads support.
48 dnl Revision 1.7 2001/07/13 13:58:05 oes
49 dnl Completely reorganized the selection scheme for
50 dnl pcre, pcreposix, pcrs and gnu_regex:
52 dnl The presence of shared pcre, pcreposix or pcrs
53 dnl libraried is now autodetected. Additionally, the
54 dnl user can enforce using the built-in static variants
55 dnl by specifying --disable-dynamic-(pcre|pcrs).
56 dnl Care is taken to avoid that pcre is dyn, while pcreposix
57 dnl is static, if both are used and that pcrs is static if
60 dnl The choice between pcre, gnu or no regex for actionsfile
61 dnl URL matching is now via
62 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
63 dnl default being pcre.
65 dnl Revision 1.6 2001/06/29 21:56:40 oes
68 dnl Revision 1.5 2001/06/29 13:26:27 oes
69 dnl Introduced #define CODE_STATUS
71 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
72 dnl Unified blocklist/imagelist/permissionslist.
73 dnl File format is still under discussion, but the internal changes
74 dnl are (mostly) done.
76 dnl Also modified interceptor behaviour:
77 dnl - We now intercept all URLs beginning with one of the following
78 dnl prefixes (and *only* these prefixes):
80 dnl * http://ijbswa.sf.net/config/
81 dnl * http://ijbswa.sourceforge.net/config/
82 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
83 dnl - Internal changes so that intercepted and fast redirect pages
84 dnl are not replaced with an image.
85 dnl - Interceptors now have the option to send a binary page direct
86 dnl to the client. (i.e. ijb-send-banner uses this)
87 dnl - Implemented show-url-info interceptor. (Which is why I needed
88 dnl the above interceptors changes - a typical URL is
89 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
90 dnl The previous mechanism would not have intercepted that, and
91 dnl if it had been intercepted then it then it would have replaced
92 dnl it with an image.)
94 dnl Revision 1.3 2001/05/22 18:46:04 oes
96 dnl - Enabled filtering banners by size rather than URL
97 dnl by adding patterns that replace all standard banner
98 dnl sizes with the "Junkbuster" gif to the re_filterfile
100 dnl - Enabled filtering WebBugs by providing a pattern
101 dnl which kills all 1x1 images
103 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
104 dnl which is selected by the (nonstandard and therefore
105 dnl capital) letter 'U' in the option string.
106 dnl It causes the quantifiers to be ungreedy by default.
107 dnl Appending a ? turns back to greedy (!).
109 dnl - Added a new interceptor ijb-send-banner, which
110 dnl sends back the "Junkbuster" gif. Without imagelist or
111 dnl MSIE detection support, or if tinygif = 1, or the
112 dnl URL isn't recognized as an imageurl, a lame HTML
113 dnl explanation is sent instead.
115 dnl - Added new feature, which permits blocking remote
116 dnl script redirects and firing back a local redirect
118 dnl The feature is conditionally compiled, i.e. it
119 dnl can be disabled with --disable-fast-redirects,
120 dnl plus it must be activated by a "fast-redirects"
121 dnl line in the config file, has its own log level
122 dnl and of course wants to be displayed by show-proxy-args
123 dnl Note: Boy, all the #ifdefs in 1001 locations and
124 dnl all the fumbling with configure.in and acconfig.h
125 dnl were *way* more work than the feature itself :-(
127 dnl - Because a generic redirect template was needed for
128 dnl this, tinygif = 3 now uses the same.
130 dnl - Moved GIFs, and other static HTTP response templates
133 dnl - Some minor fixes
135 dnl - Removed some >400 CRs again (Jon, you really worked
138 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
139 dnl Version 2.9.4 checkin.
140 dnl - Merged popupfile and cookiefile, and added control over PCRS
141 dnl filtering, in new "permissionsfile".
142 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
143 dnl file error you now get a message box (in the Win32 GUI) rather
144 dnl than the program exiting with no explanation.
145 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
147 dnl - Removed tabs from "config"
148 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
149 dnl - Bumped up version number.
151 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
152 dnl Initial import of version 2.9.3 source tree
157 dnl =================================================================
158 dnl AutoConf Initialization
159 dnl =================================================================
161 AC_REVISION($Revision: 1.11 $)
163 AC_CONFIG_HEADER(config.h)
166 dnl =================================================================
167 dnl Application version number
168 dnl =================================================================
173 CODE_STATUS="\"alpha\""
175 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
176 dnl used for CGI output
178 dnl =================================================================
179 dnl Substitute the version numbers
180 dnl =================================================================
182 AC_SUBST(VERSION_MAJOR)
183 AC_SUBST(VERSION_MINOR)
184 AC_SUBST(VERSION_POINT)
187 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
188 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
189 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
190 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
191 AC_DEFINE_UNQUOTED(CODE_STATUS,${CODE_STATUS})
194 dnl =================================================================
195 dnl Checks for programs needed to build.
196 dnl =================================================================
203 dnl RANLIB is for PCRE:
207 dnl =================================================================
209 dnl =================================================================
211 dnl Must do this first.
213 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
214 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
215 dnl the compiler will use completely different sets of library
216 dnl and include files.
218 dnl =================================================================
223 if test "$MINGW32" = "yes"; then
226 if test "$CYGWIN" = "yes"; then
233 dnl Decide what to do based on target_type
234 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
235 dnl This is because we don't know yet whether pthread is enabled.
237 AC_ARG_ENABLE(mingw32,
238 [ --enable-mingw32 Use mingw32 for a Windows GUI],
239 [if test $enableval = yes; then
243 if test $target_type = mingw; then
245 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
246 PTHREAD_LIB=-lpthreadGC
247 echo "Using mingw32 (Win32 GUI)"
250 if test $target_type = cygwin; then
251 SPECIAL_CFLAGS="-mno-win32"
253 echo "Using Cygnus (Win32 command line)"
256 PTHREAD_LIB=-lpthread
261 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
262 old_CFLAGS_nospecial=$CFLAGS
263 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
265 # Hack to force AutoConf to use the CFLAGS we just set
266 dnl Warning: This may break with a future version of Autoconf
267 dnl Tested with autoconf 2.13
268 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
269 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
270 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
273 dnl =================================================================
275 dnl =================================================================
277 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
279 AC_ARG_ENABLE(pthread,
280 [ --disable-pthread Don't use POSIX threads (pthreads)],
281 [if test $enableval = no; then
286 if test $have_pthread = yes; then
288 AC_DEFINE(FEATURE_PTHREAD)
289 echo Using POSIX threads
290 if test "$GCC" = "yes"; then
291 # Set a GCC specific switch:
292 if test "$target_type" = "unix"; then
293 # This compiler switch makes Linux thread-safe
294 # Don't know about other OS's? Is this switch
297 SPECIAL_CFLAGS="-pthread"
302 echo Using native threads
305 AC_SUBST(PTHREAD_LIB)
306 AC_SUBST(PTHREAD_ONLY)
309 dnl =================================================================
310 dnl Check for standard compiler stuff
311 dnl =================================================================
319 dnl Checks for header files.
320 dnl AC_HEADER_SYS_WAIT
321 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
323 dnl Checks for library functions.
325 dnl AC_CHECK_FUNC(strstr)
326 dnl bcopy and memmove are for PCRE
327 AC_CHECK_FUNCS(strerror bcopy memmove)
330 dnl =================================================================
331 dnl Checks for libraries.
332 dnl =================================================================
333 dnl Note: Some systems may have the library but not the system header
334 dnl file, so we must check for both.
335 AC_CHECK_LIB(pcre, pcre_compile, [AC_CHECK_HEADER(pcre.h, [have_pcre=yes], [have_pcre=no])], [have_pcre=no])
336 AC_CHECK_LIB(pcreposix, regcomp, [AC_CHECK_HEADER(pcreposix.h, [have_pcreposix=yes], [have_pcreposix=no])], [have_pcreposix=no], -lpcre)
337 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no])
340 dnl =================================================================
342 dnl FIXME: Not tested on Solaris yet...
343 dnl =================================================================
350 *-solaris*) AC_DEFINE(_REENTRANT)
351 AC_DEFINE(__EXTENSIONS__)
356 AC_SUBST(SOLARIS_ONLY)
358 dnl =================================================================
360 dnl =================================================================
364 dnl =================================================================
366 dnl =================================================================
368 AC_ARG_ENABLE(toggle,
369 [ --disable-toggle Don't support temporary disable],
370 [if test $enableval = yes; then
372 fi],AC_DEFINE(TOGGLE))
375 [ --disable-gzip Block gzip'ed transfer of documents. Note that
376 this is required if you want content modification
377 even with gzip-supporting servers.],
378 [if test $enableval = "no"; then
383 [ --disable-force Don't allow blockfile to be bypassed],
384 [if test $enableval = yes; then
385 AC_DEFINE(FORCE_LOAD)
386 fi],AC_DEFINE(FORCE_LOAD))
388 AC_ARG_ENABLE(fast-redirects,
389 [ --disable-fast-redirects Don't support fast redirects],
390 [if test $enableval = yes; then
391 AC_DEFINE(FAST_REDIRECTS)
392 fi], AC_DEFINE(FAST_REDIRECTS))
394 AC_ARG_ENABLE(killpopup,
395 [ --disable-killpopup Never block popups],
396 [if test $enableval = yes; then
397 AC_DEFINE(KILLPOPUPS)
398 fi],AC_DEFINE(KILLPOPUPS))
401 [ --disable-stats Don't keep statistics],
402 [if test $enableval = yes; then
403 AC_DEFINE(STATISTICS)
404 fi],AC_DEFINE(STATISTICS))
406 AC_ARG_ENABLE(split-proxy-args,
407 [ --disable-split-proxy-args One big show-proxy-args page, not one per file.],
408 [if test $enableval = yes; then
409 AC_DEFINE(SPLIT_PROXY_ARGS)
410 fi],AC_DEFINE(SPLIT_PROXY_ARGS))
412 AC_ARG_ENABLE(webdav,
413 [ --disable-webdav Don't support WebDAV. This option breaks MS
414 Outlook Express when accessing HotMail e-mail.],
415 [if test $enableval = yes; then
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(DETECT_MSIE_IMAGES)
426 AC_DEFINE(DETECT_MSIE_IMAGES))
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(IMAGE_BLOCKING)
434 AC_DEFINE(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
442 AC_DEFINE(ACL_FILES))
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(TRUST_FILES)
449 AC_DEFINE(TRUST_FILES))
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
456 AC_DEFINE(JAR_FILES))
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)