Remove id tag
[privoxy.git] / configure.in
index 691c5a6..b75d90a 100644 (file)
@@ -1,9 +1,9 @@
 dnl Process this file with autoconf to produce a configure script.
 dnl
-dnl $Id: configure.in,v 1.176 2013/01/06 11:06:23 fabiankeil Exp $
+dnl $Id: configure.in,v 1.213 2017/05/25 11:17:11 fabiankeil Exp $
 dnl
-dnl Written by and Copyright (C) 2001-2010 the
-dnl Privoxy team. http://www.privoxy.org/
+dnl Written by and Copyright (C) 2001-2017 the
+dnl Privoxy team. https://www.privoxy.org/
 dnl
 dnl Based on the Internet Junkbuster originally written
 dnl by and Copyright (C) 1997 Anonymous Coders and
@@ -32,7 +32,7 @@ dnl =================================================================
 dnl AutoConf Initialization
 dnl =================================================================
 
-AC_REVISION($Revision: 1.176 $)
+AC_REVISION($Revision: 1.213 $)
 AC_INIT(jcc.c)
 
 if test ! -f config.h.in; then
@@ -78,8 +78,12 @@ dnl =================================================================
 
 VERSION_MAJOR=3
 VERSION_MINOR=0
-VERSION_POINT=20
-CODE_STATUS="beta"
+VERSION_POINT=27
+CODE_STATUS="UNRELEASED"
+
+dnl Timestamp (date +%s) used by the mtree-spec target.
+dnl Should be updated before releases but forgetting it isn't critical.
+SOURCE_DATE_EPOCH=1494070262
 
 dnl CODE_STATUS can be "alpha", "beta", "stable" or "UNRELEASED",
 dnl and will be used for CGI output. Increment version number and
@@ -94,6 +98,7 @@ AC_SUBST(VERSION_MAJOR)
 AC_SUBST(VERSION_MINOR)
 AC_SUBST(VERSION_POINT)
 AC_SUBST(CODE_STATUS)
+AC_SUBST(SOURCE_DATE_EPOCH)
 
 dnl
 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
@@ -211,12 +216,14 @@ else
                     AC_MSG_RESULT($with_group)
                     $BGROUPS $USER >/dev/null
                     if test $? -eq 0 ; then
-                    # FIXME: this fails if valid group, but not first group
-                    # listed.
-                      if test "$with_group" != "`$BGROUPS $USER | sed 's/.*: //' 2>/dev/null |$AWK '{print $1}'`" ; then
+                      for i in `$BGROUPS $USER | sed 's/.*: //' 2>/dev/null`; do
+                        if test "x$i" = "x$with_group" ; then
+                          GROUP=$with_group
+                          break
+                        fi
+                      done
+                      if test "x$GROUP" != "x$with_group" ; then
                         AC_MSG_ERROR(The given value '$withval' does not match group entry)
-                      else
-                        GROUP=$with_group;
                       fi
                     else
                       AC_MSG_ERROR(There is no group entry for user '$USER')
@@ -280,7 +287,7 @@ if test $dodk = auto; then
        dodk=no
        if test $target_type = unix; then
                case "$host_os" in
-               linux* | gnu*)
+               linux* | gnu* | *bsd*)
                        dodk=yes
                ;;
                esac
@@ -300,8 +307,8 @@ fi])
 if test $target_type = mingw; then
   WIN_ONLY=
   CFLAGS="$CFLAGS -DWINVER=0x501"
-  SPECIAL_CFLAGS="-mwindows -mno-cygwin"
-  PTHREAD_LIB=-lpthreadGC
+  SPECIAL_CFLAGS="-mwindows"
+  PTHREAD_LIB=-lpthread
   echo "Using mingw32 (Win32 GUI)"
 else
   WIN_ONLY=#
@@ -381,6 +388,7 @@ dnl      echo -n "checking for $i/html/docbook.dsl..."
     for i in /usr/share/sgml/CATALOG.docbk30 \
              /usr/share/sgml/CATALOG.docbk31 \
              /usr/share/sgml/CATALOG.docbk31 \
+             /usr/local/share/sgml/docbook/2.4.1/docbook.cat \
              /usr/local/share/sgml/docbook/3.0/docbook.cat \
              /usr/local/share/sgml/docbook/3.1/docbook.cat \
              /usr/share/sgml/docbook/dtd/3.1/docbook.cat \
@@ -406,6 +414,10 @@ AC_ARG_ENABLE(large-file-support,
     CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1"
 fi])
 
+AC_ARG_ENABLE(static-linking,
+[  --enable-static-linking         Use static linking instead of dynamic linking (ie. LDFLAGS=-static)],
+[ if test $enableval = yes; then LDFLAGS="$LDFLAGS -static"; fi ])
+
 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
 old_CFLAGS_nospecial=$CFLAGS
 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
@@ -462,6 +474,27 @@ fi
 
 AC_SUBST(PTHREAD_ONLY)
 
+dnl =================================================================
+dnl On most platforms select() does not support fd numbers above
+dnl FD_SETSIZE, as a result Privoxy can't handle more than
+dnl approximately FD_SETSIZE/2 client connections.
+dnl On some platforms the value can be changed at compile time,
+dnl on others it's hardcoded and requires recompilation of the OS.
+dnl Only relevant if select() is actually being used.
+dnl =================================================================
+AC_ARG_WITH(fdsetsize,
+ [  --with-fdsetsize=n  Optimistically redefine FD_SETSIZE with the intend to change the number of connections Privoxy can handle. Dangerous if the platform doesn't support this. Pointless if Privoxy can use poll() instead of select().],
+ [
+   if test "x$withval" != "xyes"; then
+     AC_DEFINE_UNQUOTED(FD_SETSIZE,$with_fdsetsize,[Relevant for select(). Not honoured by all OS.])
+     echo "Redefining FD_SETSIZE to $with_fdsetsize."
+     AC_MSG_WARN(On platforms that don't support FD_SETSIZE redefinition it may cause memory corruption.)
+   else
+     AC_MSG_ERROR(--with-fdsetsize used without value)
+   fi
+   ]
+)
+
 dnl =================================================================
 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
 dnl gmtime and localtime
@@ -626,12 +659,16 @@ dnl =================================================================
 dnl Solaris problem, and others perhaps (socklen_t is undefined)
 dnl =================================================================
 
+if test $target_type != mingw; then
+# i686-w64-mingw32-gcc gets socklen_t define from ws2tcpip.h
+
 AC_MSG_CHECKING([for socklen_t])
 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
        AC_MSG_RESULT([no])
        AC_DEFINE(socklen_t,int,
                [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
 
+fi
 
 dnl =================================================================
 dnl OS/2 specific
@@ -713,6 +750,7 @@ AC_CHECK_SIZEOF(char *, 4)
 AC_CHECK_SIZEOF(long, 4)
 AC_CHECK_SIZEOF(long long, 8)
 AC_CHECK_SIZEOF(size_t, 4)
+AC_CHECK_SIZEOF(time_t, 8)
 
 dnl Checks for header files.
 AC_CHECK_HEADERS([ \
@@ -742,7 +780,9 @@ AC_PROG_GCC_TRADITIONAL
 AC_TYPE_SIGNAL
 AC_CHECK_FUNCS([ \
  access \
+ arc4random \
  atexit \
+ calloc \
  getcwd \
  gethostbyaddr \
  gethostbyaddr_r \
@@ -750,7 +790,6 @@ AC_CHECK_FUNCS([ \
  gethostbyname_r \
  gettimeofday \
  inet_ntoa \
- localtime_r \
  memchr \
  memmove \
  memset \
@@ -791,6 +830,7 @@ elif test $target_type = mingw; then
   AC_MSG_CHECKING(getaddrinfo in ws2_32)
   AC_TRY_LINK(
     [
+      #include<winsock2.h>
       #include<windows.h>
       #include<ws2tcpip.h>
     ],
@@ -802,6 +842,7 @@ elif test $target_type = mingw; then
   AC_MSG_CHECKING(getnameinfo in ws2_32)
   AC_TRY_LINK(
     [
+      #include<winsock2.h>
       #include<windows.h>
       #include<ws2tcpip.h>
     ],
@@ -898,13 +939,6 @@ AC_ARG_ENABLE(stats,
   AC_DEFINE(FEATURE_STATISTICS)
 fi],AC_DEFINE(FEATURE_STATISTICS))
 
-AC_ARG_ENABLE(ie-images,
-[  --enable-ie-images              Enable a quick but not always reliable auto-detect whether requests from
-                                  MS Internet Explorer are for an image or not.],
-[if test $enableval = yes; then
-  AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
-fi],)
-
 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.],
@@ -914,7 +948,7 @@ fi],
 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
 
 AC_ARG_ENABLE(acl-support,
-[  --disable-acl-support            Prevents the use of ACLs to control access to
+[  --disable-acl-support           Prevents the use of ACLs to control access to
                                   Privoxy by IP address.],
 [if test $enableval = yes; then
   AC_DEFINE(FEATURE_ACL)
@@ -961,6 +995,12 @@ AC_ARG_ENABLE(extended-host-patterns,
   AC_DEFINE(FEATURE_EXTENDED_HOST_PATTERNS)
 fi])
 
+AC_ARG_ENABLE(external-filters,
+[  --enable-external-filters       Allow to filter content with scripts and programs. Experimental.],
+[if test $enableval = yes; then
+  AC_DEFINE(FEATURE_EXTERNAL_FILTERS,1,[Define to 1 to allow to filter content with scripts and programs.])
+fi])
+
 AC_ARG_ENABLE(accept-filter,
 [  --enable-accept-filter          Try to use accf_http(9) if supported.],
 [if test $enableval = yes; then
@@ -975,6 +1015,28 @@ AC_ARG_ENABLE(strptime-sanity-checks,
   AC_DEFINE(FEATURE_STRPTIME_SANITY_CHECKS)
 fi])
 
+AC_ARG_ENABLE(client-tags,
+[  --disable-client-tags           Disable support for client-specific tags],
+[ if test $enableval = "no"; then have_client_tags=no; fi ])
+if test "${have_client_tags}" = "no"; then
+  echo "Disabling support for client-specific tags."
+  FEATURE_CLIENT_TAGS_ONLY="#"
+else
+  echo "Enabling support for client-specific tags."
+  AC_DEFINE(FEATURE_CLIENT_TAGS,1,[Define to enable support for client-specific tags.])
+  FEATURE_CLIENT_TAGS_ONLY=""
+fi
+AC_SUBST(FEATURE_CLIENT_TAGS_ONLY)
+
+FUZZ_ONLY="#"
+AC_ARG_ENABLE(fuzz,
+[  --enable-fuzz                Enable code that makes fuzzing more convenient],
+[if test $enableval = yes; then
+  FUZZ_ONLY=""
+  AC_DEFINE(FUZZ,1,[Define to make fuzzing more convenient.])
+fi])
+AC_SUBST(FUZZ_ONLY)
+
 dnl pcre/pcrs is needed for CGI anyway, so
 dnl the choice is only between static and
 dnl dynamic:
@@ -1033,13 +1095,16 @@ fi
 if test $have_pcre = "yes"; then
   echo "using libpcre"
   pcre_dyn=yes
+  AC_DEFINE(FEATURE_DYNAMIC_PCRE,1,[Define to dynamically link to pcre.])
   STATIC_PCRE_ONLY=#
   LIBS="$LIBS -lpcre -lpcreposix"
 else
   AC_MSG_WARN([You are using the static PCRE code which is out of date and scheduled for removal, for details see:
     http://sourceforge.net/mailarchive/forum.php?thread_name=20080511195555.2dc6cfdc%40fabiankeil.de&forum_name=ijbswa-developers])
   pcre_dyn=no
-  AC_DEFINE(STATIC_PCRE)
+  # STATIC_PCRE is a name pcre needs to statically link on Windows.
+  # Privoxy itself no longer uses it.
+  AC_DEFINE(STATIC_PCRE,1,[Define to statically link to internal outdated pcre on Windows.])
   STATIC_PCRE_ONLY=
 fi