+dnl =================================================================
+dnl OpenBSD specific
+dnl =================================================================
+
+case "$host" in
+*-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
+;;
+esac
+
+dnl =================================================================
+dnl AmigaOS specific
+dnl =================================================================
+
+AMIGAOS_ONLY=#
+
+case "$host" in
+*-amigaos) AMIGAOS_ONLY=
+;;
+esac
+
+AC_SUBST(AMIGAOS_ONLY)
+
+dnl =================================================================
+dnl Haiku specific
+dnl =================================================================
+
+if test "$host_os" = haiku; then
+ # Omit the "-pthread" flag to gcc, even when building with gcc 2.95
+ SPECIAL_CFLAGS=
+
+ # Haiku's pthreads implementation exists in its system library,
+ # libroot, not in a separate pthreads library
+ PTHREAD_LIB=
+
+ # Networking code exists in libnetwork
+ SOCKET_LIB=-lnetwork
+
+ # Search Haiku's common-library folder to find its pcre and
+ # pcreposix libraries
+ LIBS="-L/boot/common/lib $LIBS"
+fi
+
+dnl =================================================================
+dnl Check for standard compiler stuff
+dnl =================================================================
+
+AC_EXEEXT
+AC_OBJEXT
+AC_HEADER_STDC
+AC_HEADER_DIRENT
+AC_C_CONST
+AC_TYPE_SIZE_T
+AC_TYPE_PID_T
+AC_HEADER_TIME
+AC_STRUCT_TM
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(char *, 4)
+AC_CHECK_SIZEOF(long, 4)
+AC_CHECK_SIZEOF(long long, 8)
+AC_CHECK_SIZEOF(size_t, 4)
+
+dnl Checks for header files.
+AC_CHECK_HEADERS([ \
+ OS.h \
+ arpa/inet.h \
+ errno.h \
+ fcntl.h \
+ limits.h \
+ locale.h \
+ netdb.h \
+ netinet/in.h \
+ stddef.h \
+ stdlib.h \
+ string.h \
+ sys/ioctl.h \
+ sys/socket.h \
+ sys/time.h \
+ sys/timeb.h \
+ sys/wait.h \
+ unistd.h \
+])
+
+dnl Checks for library functions.
+dnl bcopy is for PCRE
+AC_CHECK_FUNCS([bcopy])
+AC_PROG_GCC_TRADITIONAL
+AC_TYPE_SIGNAL
+AC_CHECK_FUNCS([ \
+ access \
+ atexit \
+ getcwd \
+ gethostbyaddr \
+ gethostbyaddr_r \
+ gethostbyname \
+ gethostbyname_r \
+ gettimeofday \
+ inet_ntoa \
+ localtime_r \
+ memchr \
+ memmove \
+ memset \
+ poll \
+ putenv \
+ random \
+ regcomp \
+ select \
+ setlocale \
+ shutdown \
+ snprintf \
+ socket \
+ strchr \
+ strdup \
+ strerror \
+ strftime \
+ strlcat \
+ strlcpy \
+ strptime \
+ strtoul \
+ timegm \
+ tzset \
+])
+
+dnl Checks for RFC 2553 resolver and socket functions
+AC_ARG_ENABLE(ipv6-support,
+[ --disable-ipv6-support Disable IPv6 support and other RFC-2554-related improvements],
+[if test $enableval = yes; then
+ enable_ipv6_support=yes
+fi], enable_ipv6_support=yes)
+
+if test $enable_ipv6_support != yes; then
+ AC_MSG_WARN([Skipping checks for IPv6 support and other RFC-2554-related improvements.
+ Due to lock contention, this may result in slower DNS resolution for IPv4 setups, too.])
+elif test $target_type = mingw; then
+ AC_CHECK_LIB(ws2_32, main)
+
+ AC_MSG_CHECKING(getaddrinfo in ws2_32)
+ AC_TRY_LINK(
+ [
+ #include<windows.h>
+ #include<ws2tcpip.h>
+ ],
+ [getaddrinfo(0,0,0,0)],
+ have_ws2_32_getaddrinfo=yes
+ )
+ AC_MSG_RESULT($have_ws2_32_getaddrinfo)
+
+ AC_MSG_CHECKING(getnameinfo in ws2_32)
+ AC_TRY_LINK(
+ [
+ #include<windows.h>
+ #include<ws2tcpip.h>
+ ],
+ [getnameinfo(0,0,0,0,0,0,0)],
+ have_ws2_32_getnameinfo=yes
+ )
+ AC_MSG_RESULT($have_ws2_32_getnameinfo)
+
+ if test $have_ws2_32_getaddrinfo ; then
+ if test $have_ws2_32_getnameinfo ; then
+ AC_DEFINE([HAVE_RFC2553], [1],
+ [Define if RFC 2553 resolver functions like getaddrinfo(3) and
+ getnameinfo(3) present])
+ fi
+ fi
+else
+ AC_CHECK_FUNC([getaddrinfo],
+ [AC_CHECK_FUNC([getnameinfo],
+ [AC_DEFINE([HAVE_RFC2553], [1],
+ [Define if RFC 2553 resolver functions like getaddrinfo(3) and
+ getnameinfo(3) present])
+ ])
+ ])
+fi
+
+dnl =================================================================
+dnl Checks for libraries.
+dnl =================================================================
+dnl Note: Some systems may have the library but not the system header
+dnl file, so we must check for both.
+dnl Also check for correct version
+AC_CHECK_LIB(pcre, pcre_compile, [
+ AC_CHECK_HEADER(pcre.h, [
+ AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
+ ], [
+ AC_CHECK_HEADER(pcre/pcre.h, [
+ AC_EGREP_HEADER(pcre_fullinfo, pcre/pcre.h, [have_pcre=yes]; [AC_DEFINE(PCRE_H_IN_SUBDIR)], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
+ ], [have_pcre=no])
+ ])
+], [have_pcre=no])
+
+AC_CHECK_LIB(pcreposix, regcomp, [
+ AC_CHECK_HEADER(pcreposix.h, [
+ AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
+ ], [
+ AC_CHECK_HEADER(pcre/pcreposix.h, [
+ AC_EGREP_HEADER(pcreposix_regerror, pcre/pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes]; [AC_DEFINE(PCREPOSIX_H_IN_SUBDIR)])
+ ], [have_pcreposix=no])
+ ])
+], [have_pcreposix=no], -lpcre)
+
+dnl ================================================================
+dnl libpcrs is temporarily disabled.
+dnl
+dnl Privoxy's own pcrs version fixes some problems that
+dnl are present in libpcrs 0.3, the last pcrs release we
+dnl know of, and as libpcrs seems to be currently unmaintained
+dnl we can't send these fixes upstream.
+dnl ================================================================
+dnl
+dnl AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)