dnl Process this file with autoconf to produce a configure script.
dnl
-dnl $Id: configure.in,v 1.2 2001/05/20 01:21:20 jongfoster Exp $
+dnl $Id: configure.in,v 1.9 2001/07/15 19:45:13 jongfoster Exp $
dnl
dnl Written by and Copyright (C) 2001 the SourceForge
dnl IJBSWA team. http://ijbswa.sourceforge.net
dnl Temple Place - Suite 330, Boston, MA 02111-1307, USA.
dnl
dnl $Log: configure.in,v $
+dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
+dnl Added support for linking with POSIX threads library
+dnl
+dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
+dnl Renaming #define STATIC to STATIC_PCRE
+dnl Adding new #define FEATURE_PTHREAD that will be used to enable
+dnl POSIX threads support.
+dnl
+dnl Revision 1.7 2001/07/13 13:58:05 oes
+dnl Completely reorganized the selection scheme for
+dnl pcre, pcreposix, pcrs and gnu_regex:
+dnl
+dnl The presence of shared pcre, pcreposix or pcrs
+dnl libraried is now autodetected. Additionally, the
+dnl user can enforce using the built-in static variants
+dnl by specifying --disable-dynamic-(pcre|pcrs).
+dnl Care is taken to avoid that pcre is dyn, while pcreposix
+dnl is static, if both are used and that pcrs is static if
+dnl pcrs is.
+dnl
+dnl The choice between pcre, gnu or no regex for actionsfile
+dnl URL matching is now via
+dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
+dnl default being pcre.
+dnl
+dnl Revision 1.6 2001/06/29 21:56:40 oes
+dnl Version -> 2.9.5
+dnl
+dnl Revision 1.5 2001/06/29 13:26:27 oes
+dnl Introduced #define CODE_STATUS
+dnl
+dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
+dnl Unified blocklist/imagelist/permissionslist.
+dnl File format is still under discussion, but the internal changes
+dnl are (mostly) done.
+dnl
+dnl Also modified interceptor behaviour:
+dnl - We now intercept all URLs beginning with one of the following
+dnl prefixes (and *only* these prefixes):
+dnl * http://i.j.b/
+dnl * http://ijbswa.sf.net/config/
+dnl * http://ijbswa.sourceforge.net/config/
+dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
+dnl - Internal changes so that intercepted and fast redirect pages
+dnl are not replaced with an image.
+dnl - Interceptors now have the option to send a binary page direct
+dnl to the client. (i.e. ijb-send-banner uses this)
+dnl - Implemented show-url-info interceptor. (Which is why I needed
+dnl the above interceptors changes - a typical URL is
+dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
+dnl The previous mechanism would not have intercepted that, and
+dnl if it had been intercepted then it then it would have replaced
+dnl it with an image.)
+dnl
+dnl Revision 1.3 2001/05/22 18:46:04 oes
+dnl
+dnl - Enabled filtering banners by size rather than URL
+dnl by adding patterns that replace all standard banner
+dnl sizes with the "Junkbuster" gif to the re_filterfile
+dnl
+dnl - Enabled filtering WebBugs by providing a pattern
+dnl which kills all 1x1 images
+dnl
+dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
+dnl which is selected by the (nonstandard and therefore
+dnl capital) letter 'U' in the option string.
+dnl It causes the quantifiers to be ungreedy by default.
+dnl Appending a ? turns back to greedy (!).
+dnl
+dnl - Added a new interceptor ijb-send-banner, which
+dnl sends back the "Junkbuster" gif. Without imagelist or
+dnl MSIE detection support, or if tinygif = 1, or the
+dnl URL isn't recognized as an imageurl, a lame HTML
+dnl explanation is sent instead.
+dnl
+dnl - Added new feature, which permits blocking remote
+dnl script redirects and firing back a local redirect
+dnl to the browser.
+dnl The feature is conditionally compiled, i.e. it
+dnl can be disabled with --disable-fast-redirects,
+dnl plus it must be activated by a "fast-redirects"
+dnl line in the config file, has its own log level
+dnl and of course wants to be displayed by show-proxy-args
+dnl Note: Boy, all the #ifdefs in 1001 locations and
+dnl all the fumbling with configure.in and acconfig.h
+dnl were *way* more work than the feature itself :-(
+dnl
+dnl - Because a generic redirect template was needed for
+dnl this, tinygif = 3 now uses the same.
+dnl
+dnl - Moved GIFs, and other static HTTP response templates
+dnl to project.h
+dnl
+dnl - Some minor fixes
+dnl
+dnl - Removed some >400 CRs again (Jon, you really worked
+dnl a lot! ;-)
+dnl
dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
dnl Version 2.9.4 checkin.
dnl - Merged popupfile and cookiefile, and added control over PCRS
VERSION_MAJOR=2
VERSION_MINOR=9
-VERSION_POINT=4
+VERSION_POINT=6
AC_SUBST(VERSION_MAJOR)
AC_SUBST(VERSION_MINOR)
AC_SUBST(VERSION_POINT)
+dnl This can be "alpha", "beta", or "stable"
+dnl and will be used for CGI output
+dnl
+AC_DEFINE(CODE_STATUS, "alpha")
+
AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
AC_OBJEXT
dnl Checks for libraries.
-dnl AC_CHECK_LIB(pcre, pcre_compile)
-dnl AC_CHECK_LIB(pcreposix, regcomp, pcre)
+dnl Note: Some systems have the library but not the system header file,
+dnl so we must check for both.
+AC_CHECK_LIB(pcre, pcre_compile, [AC_CHECK_HEADER(pcre.h, [have_pcre=yes], [have_pcre=no])], [have_pcre=no])
+AC_CHECK_LIB(pcreposix, regcomp, [AC_CHECK_HEADER(pcreposix.h, [have_pcreposix=yes], [have_pcreposix=no])], [have_pcreposix=no], -lpcre)
+AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no])
dnl Checks for header files.
AC_HEADER_STDC
dnl Build type
+dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
+
AC_ARG_ENABLE(mingw32,
[ --enable-mingw32 Use mingw32 for a Windows GUI],
[if test $enableval = yes; then
WIN_ONLY=
CYGWIN_FLAGS="-mwindows -mno-cygwin"
+ PTHREAD_LIB=-lpthreadGC
echo "Using mingw32 (Win32 GUI)"
else
WIN_ONLY=#
if test "$CYGWIN" = "yes"; then
CYGWIN_FLAGS="-mno-win32"
+ PTHREAD_LIB=
echo "Using Cygnus (Win32 command line)"
else
CYGWIN_FLAGS=
+ PTHREAD_LIB=-lpthread
fi
fi],
[if test "$MINGW32" = "yes"; then
WIN_ONLY=
CYGWIN_FLAGS="-mwindows -mno-cygwin"
+ PTHREAD_LIB=-lpthreadGC
echo "Using mingw32 (Win32 GUI)"
else
WIN_ONLY=#
if test "$CYGWIN" = "yes"; then
CYGWIN_FLAGS="-mno-win32"
+ PTHREAD_LIB=
echo "Using Cygnus (Win32 command line)"
else
CYGWIN_FLAGS=
+ PTHREAD_LIB=-lpthread
fi
fi])
AC_SUBST(WIN_ONLY)
AC_SUBST(CYGWIN_FLAGS)
+AC_SUBST(PTHREAD_LIB)
SOLARIS_ONLY=#
AC_SUBST(SOLARIS_ONLY)
dnl Features
-dnl Regex engine:
-
-GNU_REGEX_ONLY=
-PCRE_REGEX_ONLY=
-NO_REGEX_ONLY=#
-
-AC_ARG_ENABLE(regex,
-[ --disable-regex Don't allow regular expressions in the blockfile],
-[if test $enableval = yes; then
- AC_DEFINE(REGEX)
-else
- NO_REGEX_ONLY=
- GNU_REGEX_ONLY=#
- PCRE_REGEX_ONLY=#
-fi],AC_DEFINE(REGEX))
-
-AC_ARG_ENABLE(pcre-regex,
-[ --disable-pcre-regex Use old, slow GNU Regex instead of PCRE.],
-[if test $enableval = yes; then
- AC_DEFINE(PCRE)
- GNU_REGEX_ONLY=#
-else
- PCRE_REGEX_ONLY=#
-fi],[AC_DEFINE(PCRE)
- GNU_REGEX_ONLY=#
-])
-
-AC_SUBST(GNU_REGEX_ONLY)
-AC_SUBST(PCRE_REGEX_ONLY)
-AC_SUBST(NO_REGEX_ONLY)
-
-
-dnl Other features:
-
AC_ARG_ENABLE(toggle,
[ --disable-toggle Don't support temporary disable],
[if test $enableval = yes; then
AC_DEFINE(TOGGLE)
fi],AC_DEFINE(TOGGLE))
-PCRS_ONLY=
-AC_ARG_ENABLE(pcrs,
-[ --disable-pcrs Don't support arbitrary content modification],
+AC_ARG_ENABLE(pthread,
+[ --disable-pthread Don't use POSIX threads (pthreads)],
[if test $enableval = yes; then
- AC_DEFINE(PCRS)
- AC_DEFINE(DENY_GZIP)
+ PTHREAD_ONLY=
+ AC_DEFINE(FEATURE_PTHREAD)
else
- PCRS_ONLY=#
-fi],[AC_DEFINE(PCRS) AC_DEFINE(DENY_GZIP)])
-AC_SUBST(PCRS_ONLY)
+ PTHREAD_ONLY=#
+fi],[AC_DEFINE(FEATURE_PTHREAD)
+ PTHREAD_ONLY=
+])
+AC_SUBST(PTHREAD_ONLY)
+
+AC_ARG_ENABLE(gzip,
+[ --enable-gzip Allow gzip'ed transfer of documents. Note that this will make content modification impossible.],
+[if test $enableval = "no"; then
+ AC_DEFINE(DENY_GZIP)
+fi])
AC_ARG_ENABLE(force,
[ --disable-force Don't allow blockfle to be bypassed],
fi],
AC_DEFINE(DETECT_MSIE_IMAGES))
-AC_ARG_ENABLE(image-list,
-[ --disable-image-list Don't try to figure out whether a request is for an
- image or HTML using the imagelist - assume HTML.],
+AC_ARG_ENABLE(image-blocking,
+[ --disable-image-blocking Don't try to figure out whether a request is
+ for an image or HTML - assume HTML.],
[if test $enableval = yes; then
- AC_DEFINE(USE_IMAGE_LIST)
+ AC_DEFINE(IMAGE_BLOCKING)
fi],
-AC_DEFINE(USE_IMAGE_LIST))
+AC_DEFINE(IMAGE_BLOCKING))
AC_ARG_ENABLE(acl-files,
[ --disable-acl-files Prevents the use of ACL files to control access to
fi],
AC_DEFINE(JAR_FILES))
-LIBRARY_PCRE_ONLY=#
-STATIC_PCRE_ONLY=
-AC_ARG_ENABLE(static-pcre,
-[ --disable-static-pcre Link dynamically with the pcre and pcreposix
- libraries. You must build the libraries seperately.],
-[if test $enableval = no; then
- LIBRARY_PCRE_ONLY=
+dnl pcre/pcrs is needed for CGI anyway, so
+dnl the choice is only between static and
+dnl dynamic:
+
+AC_ARG_ENABLE(regex-matching,
+[ --enable-regex-matching=pcre Use perl-compatible regex for actionsfile pattern matching (default)
+ --enable-regex-matching=gnu Use gnu style regex for actionsfile pattern matching (-> bigger binary)
+ --disable-regex-matching Don't use regex matching, compare URL prefix instead (won't shrink birary)],
+[ regex_matching=$enableval ],
+[ regex_matching=pcre ])
+
+AC_ARG_ENABLE(dynamic-pcre,
+[ --disable-dynamic-pcre Use the built-in, static pcre, even if libpcre is available],
+[ if test $enableval = "no"; then have_pcre=no; fi ])
+
+AC_ARG_ENABLE(dynamic-pcrs,
+[ --disable-dynamic-pcrs Use the built-in, static pcrs, even if libpcrs is available],
+[ if test $enableval = "no"; then have_pcrs=no; fi ])
+
+
+# Is the regex URL matching based on libpcreposix, but we
+# don't have that library?
+#
+if test $have_pcreposix = "yes" -o $regex_matching != "pcre"; then
+ dont_miss_pcreposix=yes
+else
+ dont_miss_pcreposix=no
+fi
+
+# If we have libpcre and either we also have pcreposix or
+# we don't need pcreposix, then link pcre dynamically; else
+# build it and link statically
+#
+if test $have_pcre = "yes" -a $dont_miss_pcreposix = "yes"; then
+ echo "using libpcre"
+ pcre_dyn=yes
STATIC_PCRE_ONLY=#
-fi])
-AC_SUBST(LIBRARY_PCRE_ONLY)
+ LIBS="$LIBS -lpcre"
+else
+ echo "using built-in static pcre"
+ pcre_dyn=no
+ AC_DEFINE(STATIC_PCRE)
+ STATIC_PCRE_ONLY=
+fi
+
+# If we have libpcrs and pcre is linked dynamically
+# then also link pcrs dynamically, else build and link
+# pcrs statically
+#
+if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
+ echo "using libpcrs"
+ STATIC_PCRS_ONLY=#
+ LIBS="$LIBS -lpcrs"
+else
+ echo "using built-in static pcrs"
+ AC_DEFINE(STATIC_PCRS)
+ STATIC_PCRS_ONLY=
+fi
+
+# Which method should be used for URL matching?
+# pcre, gnu regex or prefix matching?
+#
+if test $regex_matching = "gnu"; then
+ echo "using gnu regex for URL matching"
+ AC_DEFINE(REGEX_GNU)
+ GNU_REGEX_ONLY=
+ PCRE_REGEX_ONLY=#
+elif test $regex_matching = "pcre"; then
+ echo "using pcre regex for URL matching"
+ AC_DEFINE(REGEX_PCRE)
+ GNU_REGEX_ONLY=#
+ PCRE_REGEX_ONLY=
+ if test $pcre_dyn = "yes"; then
+ LIBS="$LIBS -lpcreposix"
+ fi
+else
+ echo -e "using prefix matching for URLs\nHint: This does NOT make the executable any smaller!"
+ GNU_REGEX_ONLY=#
+ PCRE_REGEX_ONLY=#
+fi
+
+AC_SUBST(GNU_REGEX_ONLY)
+AC_SUBST(PCRE_REGEX_ONLY)
AC_SUBST(STATIC_PCRE_ONLY)
+AC_SUBST(STATIC_PCRS_ONLY)
AC_OUTPUT(Makefile)