Terminate the body of the HTTP snipplets with a single new line instead of \r\n
[privoxy.git] / configure.in
index c627643..147fe1e 100644 (file)
@@ -1,6 +1,6 @@
 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
@@ -80,7 +80,7 @@ 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.
@@ -157,6 +157,11 @@ AC_ARG_WITH(debug,
         ]
 )
 
+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 =================================================================
@@ -422,7 +427,7 @@ 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 ])
+[ 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
@@ -480,6 +485,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
@@ -655,17 +681,6 @@ AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
 
 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 =================================================================
@@ -1069,10 +1084,24 @@ 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"
+  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:
     https://sourceforge.net/p/ijbswa/mailman/ijbswa-developers/thread/20080511195555.2dc6cfdc@fabiankeil.de/])
@@ -1113,7 +1142,7 @@ AC_SUBST(STATIC_PCRS_ONLY)
 
 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
@@ -1145,7 +1174,7 @@ fi
 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
@@ -1155,6 +1184,10 @@ AC_HELP_STRING([--without-openssl], [Disable OpenSSL/LibreSSL detection]),
   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"
@@ -1204,6 +1237,10 @@ AC_HELP_STRING([--without-brotli], [Disable Brotli detection]),
 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)