Fixed a typo
[privoxy.git] / configure.in
index 593ef0d..67dee7d 100644 (file)
@@ -1,6 +1,6 @@
 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
@@ -28,6 +28,104 @@ dnl or write to the Free Software Foundation, Inc., 59
 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
@@ -50,12 +148,17 @@ AC_CONFIG_HEADER(config.h)
 
 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})
@@ -77,8 +180,11 @@ AC_EXEEXT
 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
@@ -99,93 +205,75 @@ AC_CHECK_FUNCS(strerror bcopy memmove)
 
 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],
@@ -233,13 +321,13 @@ AC_ARG_ENABLE(ie-images,
 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
@@ -263,17 +351,91 @@ AC_ARG_ENABLE(jar-files,
 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)