dnl Process this file with autoconf to produce a configure script.
dnl
-dnl Written by and Copyright (C) 2001-2020 the
+dnl Written by and Copyright (C) 2001-2021 the
dnl Privoxy team. https://www.privoxy.org/
dnl
dnl Based on the Internet Junkbuster originally written
dnl =================================================================
dnl Application version number
dnl =================================================================
+dnl CODE_STATUS can be "alpha", "beta", "stable" or "UNRELEASED",
+dnl and will be used for CGI output. Increment version number and
+dnl set status to "UNRELEASED" whenever git differs from the last
+dnl release and no new release is near.
VERSION_MAJOR=3
VERSION_MINOR=0
-VERSION_POINT=30
+VERSION_POINT=32
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=1605695571
-dnl CODE_STATUS can be "alpha", "beta", "stable" or "UNRELEASED",
-dnl and will be used for CGI output. Increment version number and
-dnl set status to "UNRELEASED" whenever git differs from the last
-dnl release and no new release is near.
-
dnl =================================================================
dnl Substitute the version numbers
dnl =================================================================
]
)
+AC_ARG_WITH(assertions, [ --with-assertions Enable assertions])
+if test "x$with_assertions" != "xyes"; then
+ CFLAGS="$CFLAGS -DNDEBUG"
+fi
+
dnl =================================================================
dnl Check for user and group validity
dnl =================================================================
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 ])
+[ if test $enableval = yes; then LDFLAGS="$LDFLAGS -static"; use_static_pcre="yes"; fi ])
dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
old_CFLAGS_nospecial=$CFLAGS
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
fi
-dnl =================================================================
-dnl OS/2 specific
-dnl =================================================================
-
-case "$host" in
-*-os2-emx*) SOCKET_LIB=-lsocket
-;;
-esac
-
-AC_SUBST(SOCKET_LIB)
-
dnl =================================================================
dnl Mac OSX specific
dnl =================================================================
#
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"
+ if test "$use_static_pcre" = "yes"; then
+ pcre_dyn=no
+ AC_DEFINE(PCRE_STATIC,1,[Define to statically link to pcre library on Windows.])
+# see /usr/i686-w64-mingw32/sys-root/mingw/include/pcre.h line 54
+# #if defined(_WIN32) && !defined(PCRE_STATIC)
+# # ifndef PCRE_EXP_DECL
+# # define PCRE_EXP_DECL extern __declspec(dllimport)
+# # endif
+# If you want to statically link a program against a PCRE library in the form of
+# a non-dll .a file, you must define PCRE_STATIC before including pcre.h or
+# pcrecpp.h, otherwise the pcre_malloc() and pcre_free() exported functions will
+# be declared __declspec(dllimport), with unwanted results.
+ else
+ pcre_dyn=yes
+ AC_DEFINE(FEATURE_DYNAMIC_PCRE,1,[Define to dynamically link to pcre.])
+ fi
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])
+ https://sourceforge.net/p/ijbswa/mailman/ijbswa-developers/thread/20080511195555.2dc6cfdc@fabiankeil.de/])
pcre_dyn=no
# STATIC_PCRE is a name pcre needs to statically link on Windows.
# Privoxy itself no longer uses it.
FEATURE_HTTPS_INSPECTION_ONLY=#
dnl ========================================================
-dnl check for mbedTLS which is required for https inspection
+dnl check for mbedTLS which can be used for https inspection
dnl ========================================================
FEATURE_HTTPS_INSPECTION_ONLY_MBEDTLS=#
OPT_MBEDTLS=no
AC_SUBST(FEATURE_HTTPS_INSPECTION_ONLY_MBEDTLS)
dnl =================================================================
-dnl check for OpenSSL/LibreSSL which is required for https inspection
+dnl check for OpenSSL/LibreSSL which can be used for https inspection
dnl =================================================================
FEATURE_HTTPS_INSPECTION_ONLY_OPENSSL=#
OPT_OPENSSL=no
OPT_OPENSSL=$withval)
if test X"$OPT_OPENSSL" != Xno; then
+ if test X"$OPT_MBEDTLS" != Xno; then
+ AC_MSG_ERROR([OpenSSL and mbedTLS support can't be enabled at the same time])
+ fi
+
if test "$PORTNAME" != "win32"; then
AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
FOUND_SSL_LIB="no"
if test X"$WITH_BROTLI" != Xno; then
LIBS="$LIBS -lbrotlidec"
+ if test $target_type = mingw; then
+ # XXX: why does just the mingw build need this???
+ LIBS="$LIBS -lbrotlicommon -lbrotlienc"
+ fi
AC_CHECK_LIB(brotlidec, BrotliDecoderDecompress)