Major changes to build system in order to fix these bugs:
authorjongfoster <jongfoster@users.sourceforge.net>
Sun, 29 Jul 2001 17:09:17 +0000 (17:09 +0000)
committerjongfoster <jongfoster@users.sourceforge.net>
Sun, 29 Jul 2001 17:09:17 +0000 (17:09 +0000)
- pthreads under Linux was broken - changed -lpthread to -pthread
- Compiling in MinGW32 mode under CygWin now correctly detects
  which shared libraries are available
- Solaris support (?) (Not tested under Solaris yet)

Makefile.in
acconfig.h
configure.in

index ab86090..4cca76a 100644 (file)
@@ -1,6 +1,6 @@
 # Note:  Makefile is built automatically from Makefile.in
 #
 # Note:  Makefile is built automatically from Makefile.in
 #
-# $Id: Makefile.in,v 1.16 2001/07/15 19:45:33 jongfoster Exp $
+# $Id: Makefile.in,v 1.17 2001/07/28 16:44:54 oes Exp $
 #
 # Written by and Copyright (C) 2001 the SourceForge
 # IJBSWA team.  http://ijbswa.sourceforge.net
 #
 # Written by and Copyright (C) 2001 the SourceForge
 # IJBSWA team.  http://ijbswa.sourceforge.net
@@ -28,6 +28,9 @@
 # Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 # $Log: Makefile.in,v $
 # Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 # $Log: Makefile.in,v $
+# Revision 1.17  2001/07/28 16:44:54  oes
+# Fixed sed LF->CRLF conversion and removed deprecated files
+#
 # Revision 1.16  2001/07/15 19:45:33  jongfoster
 # Added support for linking with POSIX threads library
 #
 # Revision 1.16  2001/07/15 19:45:33  jongfoster
 # Added support for linking with POSIX threads library
 #
 #
 #
 
 #
 #
 
-# define version (will be wired into the rpm.)
+
+#############################################################################
+# Version number (for RPM)
+#############################################################################
+
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MINOR = @VERSION_MINOR@
 VERSION_POINT = @VERSION_POINT@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MINOR = @VERSION_MINOR@
 VERSION_POINT = @VERSION_POINT@
@@ -100,46 +107,34 @@ VERSION       = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_POINT)
 RPM_VERSION   = $(VERSION)
 RPM_PACKAGEV  = 1
 
 RPM_VERSION   = $(VERSION)
 RPM_PACKAGEV  = 1
 
-# The version is currently specified in config.h, which is
-# written by "configure".
-#
-#VERSION_CFLAGS = -DVERSION_MAJOR=$(VERSION_MAJOR) \
-#                 -DVERSION_MINOR=$(VERSION_MINOR) \
-#                 -DVERSION_POINT=$(VERSION_POINT) \
-#                 -DVERSION="$(VERSION)"
 
 
+#############################################################################
 # Directories for "make install"
 # Directories for "make install"
+#############################################################################
+
 DEST        = /etc/junkbuster
 SBIN_DEST   = @sbindir@
 MAN_DEST    = @mandir@
 
 DEST        = /etc/junkbuster
 SBIN_DEST   = @sbindir@
 MAN_DEST    = @mandir@
 
-# The flag "-mno-win32" can be used by Cygwin to emulate a un?x type install.
-# The flag "-mwindows -mno-cygwin" will cause Cygwin to use MingW32 for Win32 install.
-CYGWIN_FLAGS = @CYGWIN_FLAGS@
 
 
-# Either/Or of these next two lines
-#DEBUG_CFLAGS = -g
-DEBUG_CFLAGS  = -O3
-
-# Solaris needs a special define:
-# FIXME: This is always commented out
-SOLARIS_FLAGS = @SOLARIS_ONLY@-D__EXTENSIONS__=1
-
-#  -DSTDC_HEADERS Now in config.h
-# Do we need  -DHAVE_STRING  ???
-CFLAGS = @CFLAGS@ @CPPFLAGS@ \
-         -D__MT__=1 -D__STDC__=1 $(SOLARIS_FLAGS) -DHAVE_STRING $(DEBUG_CFLAGS) \
-         $(CYGWIN_FLAGS) $(PCRE_WIN_FLAGS) @STATIC_PCRE_ONLY@ -Ipcre
-
-PROGRAM = junkbuster@EXEEXT@
-CC      = gcc
-ECHO    = echo
-GZIP_PROG    = gzip
-INSTALL = cp -f
-LD      = gcc
-OBJEXT  = @OBJEXT@
-RM      = rm -f
-STRIP_PROG   = strip
+#############################################################################
+# Build tools
+#############################################################################
+
+PROGRAM    = junkbuster@EXEEXT@
+CC         = @CC@
+ECHO       = echo
+GZIP_PROG  = gzip
+INSTALL    = cp -f
+LD         = gcc
+OBJEXT     = @OBJEXT@
+RM         = rm -f
+STRIP_PROG = strip
+
+
+#############################################################################
+# Filenames and libraries
+#############################################################################
 
 C_SRC  = actions.c encode.c errlog.c filters.c gateway.c jbsockets.c \
          jcc.c killpopup.c list.c loadcfg.c loaders.c miscutil.c \
 
 C_SRC  = actions.c encode.c errlog.c filters.c gateway.c jbsockets.c \
          jcc.c killpopup.c list.c loadcfg.c loaders.c miscutil.c \
@@ -178,42 +173,68 @@ REGEX_HDRS   = $(REGEX_SRC:.c=.h)
 PROJECT_H_DEPS = project.h $(REGEX_HDRS) $(PCRS_HDRS) @STATIC_PCRE_ONLY@pcre/pcre.h
 
 # Only need this on Solaris
 PROJECT_H_DEPS = project.h $(REGEX_HDRS) $(PCRS_HDRS) @STATIC_PCRE_ONLY@pcre/pcre.h
 
 # Only need this on Solaris
-# FIXME: This is always commented out
 SOCKET_LIB   = @SOLARIS_ONLY@-lsocket -lnsl
 
 # PThreads library, if needed.
 PTHREAD_LIB  = @PTHREAD_ONLY@@PTHREAD_LIB@
 
 SOCKET_LIB   = @SOLARIS_ONLY@-lsocket -lnsl
 
 # PThreads library, if needed.
 PTHREAD_LIB  = @PTHREAD_ONLY@@PTHREAD_LIB@
 
-LIBS         = @LIBS@ $(W32_LIB) $(SOCKET_LIB) $(PTHREAD_LIB)
-
 SRCS         = $(C_SRC)  $(W32_SRC)  $(PCRS_SRC)  $(PCRE_SRC)  $(REGEX_SRC)
 OBJS         = $(C_OBJS) $(W32_OBJS) $(PCRS_OBJS) $(PCRE_OBJS) $(REGEX_OBJS)
 HDRS         = $(C_HDRS) $(W32_HDRS) $(PCRS_HDRS) $(PCRE_OBJS) $(REGEX_HDRS)
 SRCS         = $(C_SRC)  $(W32_SRC)  $(PCRS_SRC)  $(PCRE_SRC)  $(REGEX_SRC)
 OBJS         = $(C_OBJS) $(W32_OBJS) $(PCRS_OBJS) $(PCRE_OBJS) $(REGEX_OBJS)
 HDRS         = $(C_HDRS) $(W32_HDRS) $(PCRS_HDRS) $(PCRE_OBJS) $(REGEX_HDRS)
+LIBS         = @LIBS@ $(W32_LIB) $(SOCKET_LIB) $(PTHREAD_LIB)
+
+
+#############################################################################
+# Compiler switches
+#############################################################################
+
+# The flag "-mno-win32" can be used by Cygwin to emulate a un?x type build.
+# The flag "-mwindows -mno-cygwin" will cause Cygwin to use MingW32 for a
+# Win32 GUI build.
+# The flag "-pthread" is required if using Pthreads under Linux (and
+# possibly other OSs).
+SPECIAL_CFLAGS = @SPECIAL_CFLAGS@
+
+# Either/Or of these next two lines
+#DEBUG_CFLAGS = -g  # Debug build
+DEBUG_CFLAGS  = -O3 # Full optimization
 
 
+CFLAGS = @CFLAGS@ @CPPFLAGS@ $(DEBUG_CFLAGS) $(SPECIAL_CFLAGS) \
+         @STATIC_PCRE_ONLY@ -Ipcre
 
 
-# -------------------------------------------------------------------------
-# Do not change anything below this line
-# And there should NOT be any targets above this line.
-# -------------------------------------------------------------------------
-LDFLAGS = $(DEBUG_CFLAGS) $(CYGWIN_FLAGS)
+LDFLAGS = $(DEBUG_CFLAGS) $(SPECIAL_CFLAGS)
 
 
+
+#############################################################################
+# Build section.
+#
+# There should NOT be any targets above this line.
+#############################################################################
 all: $(PROGRAM)
 
 all: $(PROGRAM)
 
-SUFFIX     = .txt:o
-.SUFFIXES  : .txt
+
+#############################################################################
+# Define this explicitly because Solaris is broken!
+#############################################################################
+%.o: %.c
+       $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
+
+
+#############################################################################
+# Win32 config files
+#############################################################################
 
 %.txt:
        sed -e $$'s,$$,\r,' < $< > $@ 
 
 
 %.txt:
        sed -e $$'s,$$,\r,' < $< > $@ 
 
-
 inifiles: $(W32_INIS)
 
 junkbstr.txt: config
 inifiles: $(W32_INIS)
 
 junkbstr.txt: config
-       sed     -e 's!\(/etc/junkbuster\|.\)/actionsfile!sactions.txt!' \
-                       -e 's!\(/etc/junkbuster\|.\)/trust!strust.txt!' \
-                       -e 's!\(/var/log/junkbuster\|.\)/jarfile!jar.log!' \
-                       -e 's!\(/var/log/junkbuster\|.\)/logfile!junkbstr.log!' \
-                       -e 's!\(/etc/junkbuster\|.\)/re_filterfile!sregexp.txt!' \
+       sed     -e 's!\actionsfile!sactions.txt!' \
+                       -e 's!\trust!strust.txt!' \
+                       -e 's!\jarfile!jar.log!' \
+                       -e 's!\logfile!junkbstr.log!' \
+                       -e 's!\re_filterfile!sregexp.txt!' \
                        -e $$'s,$$,\r,' \
                        -e 's!#Win32-only: !!' \
        < $< > $@
                        -e $$'s,$$,\r,' \
                        -e 's!#Win32-only: !!' \
        < $< > $@
@@ -223,9 +244,10 @@ strust.txt: trust
 sregexp.txt: re_filterfile
 
 
 sregexp.txt: re_filterfile
 
 
-# -------------------------------------------------------------------------
+#############################################################################
 # redhat distribution
 # redhat distribution
-# -------------------------------------------------------------------------
+#############################################################################
+
 redhat-dist:
        @make clobber
 # verify that i'm root needs to be done
 redhat-dist:
        @make clobber
 # verify that i'm root needs to be done
@@ -236,9 +258,11 @@ redhat-dist:
 # verify all files in their correct location needs to be done
        cd .. && rpm -ta ijbswa.tar.gz
 
 # verify all files in their correct location needs to be done
        cd .. && rpm -ta ijbswa.tar.gz
 
-# -------------------------------------------------------------------------
+
+#############################################################################
 # suse distribution
 # suse distribution
-# -------------------------------------------------------------------------
+#############################################################################
+
 suse-dist:
        @make clobber
 # verify that i'm root needs to be done
 suse-dist:
        @make clobber
 # verify that i'm root needs to be done
@@ -249,15 +273,17 @@ suse-dist:
 # verify all files in their correct location needs to be done
        cd .. && rpm -ta ijbswa.tar.gz
 
 # verify all files in their correct location needs to be done
        cd .. && rpm -ta ijbswa.tar.gz
 
-# -------------------------------------------------------------------------
-#
-# -------------------------------------------------------------------------
+
+#############################################################################
+# Windows distribution
+#############################################################################
 win-dist:
        $(ECHO) Not implemented.
 
 win-dist:
        $(ECHO) Not implemented.
 
-# -------------------------------------------------------------------------
-#
-# -------------------------------------------------------------------------
+
+#############################################################################
+# Tarball distribution
+#############################################################################
 tarball-dist:
        @make clean
        make $(PROGRAM) 
 tarball-dist:
        @make clean
        make $(PROGRAM) 
@@ -266,9 +292,10 @@ tarball-dist:
        chmod a+r ../../ijb-distribution-$(VERSION).tar.gz
        @$(ECHO) Tarball with binary created.
 
        chmod a+r ../../ijb-distribution-$(VERSION).tar.gz
        @$(ECHO) Tarball with binary created.
 
-# -------------------------------------------------------------------------
-#
-# -------------------------------------------------------------------------
+
+#############################################################################
+# Source file dependencies
+#############################################################################
 
 actions.@OBJEXT@:   actions.c   actions.h   config.h $(PROJECT_H_DEPS) errlog.h jcc.h list.h loaders.h miscutil.h actionlist.h
 encode.@OBJEXT@:    encode.c    encode.h    config.h
 
 actions.@OBJEXT@:   actions.c   actions.h   config.h $(PROJECT_H_DEPS) errlog.h jcc.h list.h loaders.h miscutil.h actionlist.h
 encode.@OBJEXT@:    encode.c    encode.h    config.h
@@ -352,6 +379,8 @@ install: all
        $(INSTALL) junkbuster.init /sbin/init.d/junkbuster
 
 
        $(INSTALL) junkbuster.init /sbin/init.d/junkbuster
 
 
+#############################################################################
+
 ## Local Variables:
 ## tab-width: 3
 ## end:
 ## Local Variables:
 ## tab-width: 3
 ## end:
index 1822461..8942b1d 100644 (file)
@@ -37,6 +37,9 @@
  *
  * Revisions   :
  *    $Log: acconfig.h,v $
  *
  * Revisions   :
  *    $Log: acconfig.h,v $
+ *    Revision 1.7  2001/07/25 22:53:59  jongfoster
+ *    Will #error if pthreads is enabled under BeOs
+ *
  *    Revision 1.6  2001/07/15 17:54:29  jongfoster
  *    Renaming #define STATIC to STATIC_PCRE
  *    Adding new #define FEATURE_PTHREAD that will be used to enable
  *    Revision 1.6  2001/07/15 17:54:29  jongfoster
  *    Renaming #define STATIC to STATIC_PCRE
  *    Adding new #define FEATURE_PTHREAD that will be used to enable
  */
 #undef FEATURE_PTHREAD
 
  */
 #undef FEATURE_PTHREAD
 
+/*
+ * Defined on Solaris only.  Makes the system libraries thread safe.
+ */
+#undef _REENTRANT
+
+/*
+ * Defined on Solaris only.  Without this, many important functions are not
+ * defined in the system headers.
+ */
+#undef __EXTENSIONS__
+
+/*
+ * Defined always.
+ * FIXME: Don't know what it does or why we need it.
+ * (presumably something to do with MultiThreading?)
+ */
+#undef __MT__
+
 @BOTTOM@
 
 @BOTTOM@
 
+/*
+ * Defined always.
+ * FIXME: Don't know what it does or why we need it.
+ * (presumably something to do with ANSI Standard C?)
+ */
+#ifndef __STDC__
+#define __STDC__ 1
+#endif /* ndef __STDC__ */
+
 /*
  * Need to set up this define only for the Pthreads library for
  * Win32, available from http://sources.redhat.com/pthreads-win32/
 /*
  * Need to set up this define only for the Pthreads library for
  * Win32, available from http://sources.redhat.com/pthreads-win32/
index 6b8ce0c..89f1c1a 100644 (file)
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
 dnl 
 dnl Process this file with autoconf to produce a configure script.
 dnl 
-dnl $Id: configure.in,v 1.11 2001/07/21 18:00:07 jongfoster Exp $
+dnl $Id: configure.in,v 1.12 2001/07/25 19:16:27 oes Exp $
 dnl 
 dnl Written by and Copyright (C) 2001 the SourceForge
 dnl IJBSWA team.  http://ijbswa.sourceforge.net
 dnl 
 dnl Written by and Copyright (C) 2001 the SourceForge
 dnl IJBSWA team.  http://ijbswa.sourceforge.net
@@ -28,6 +28,9 @@ 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 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 dnl 
 dnl $Log: configure.in,v $
+dnl Revision 1.12  2001/07/25 19:16:27  oes
+dnl Bumping version number to 2.9.8
+dnl
 dnl Revision 1.11  2001/07/21 18:00:07  jongfoster
 dnl Bumping version number to 2.9.7
 dnl
 dnl Revision 1.11  2001/07/21 18:00:07  jongfoster
 dnl Bumping version number to 2.9.7
 dnl
@@ -149,59 +152,173 @@ dnl Revision 1.1.1.1  2001/05/15 13:58:50  oes
 dnl Initial import of version 2.9.3 source tree
 dnl
 dnl 
 dnl Initial import of version 2.9.3 source tree
 dnl
 dnl 
+
+
+dnl =================================================================
+dnl AutoConf Initialization
+dnl =================================================================
+
+AC_REVISION($Revision: 1.11 $)
 AC_INIT(jcc.c)
 AC_CONFIG_HEADER(config.h)
 
 AC_INIT(jcc.c)
 AC_CONFIG_HEADER(config.h)
 
+
+dnl =================================================================
+dnl Application version number
+dnl =================================================================
+
 VERSION_MAJOR=2
 VERSION_MINOR=9
 VERSION_POINT=8
 VERSION_MAJOR=2
 VERSION_MINOR=9
 VERSION_POINT=8
+CODE_STATUS="\"alpha\""
+
+dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
+dnl used for CGI output
+
+dnl =================================================================
+dnl Substitute the version numbers
+dnl =================================================================
 
 AC_SUBST(VERSION_MAJOR)
 AC_SUBST(VERSION_MINOR)
 AC_SUBST(VERSION_POINT)
 
 
 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
 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})
 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
+AC_DEFINE_UNQUOTED(CODE_STATUS,${CODE_STATUS})
 
 
-dnl Checks for programs.
-dnl AC_PROG_CXX
+
+dnl =================================================================
+dnl Checks for programs needed to build.
+dnl =================================================================
 AC_PROG_CC
 AC_PROG_CPP
 AC_PROG_CC
 AC_PROG_CPP
+dnl AC_PROG_CXX
 dnl AC_PROG_INSTALL
 dnl AC_PROG_LN_S
 dnl AC_PROG_MAKE_SET
 dnl RANLIB is for PCRE:
 dnl AC_PROG_RANLIB
 
 dnl AC_PROG_INSTALL
 dnl AC_PROG_LN_S
 dnl AC_PROG_MAKE_SET
 dnl RANLIB is for PCRE:
 dnl AC_PROG_RANLIB
 
+
+dnl =================================================================
+dnl Build type
+dnl =================================================================
+dnl
+dnl Must do this first.
+dnl
+dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
+dnl into Cygwin or MinGW32 modes.  Depending on the mode selected,
+dnl the compiler will use completely different sets of library
+dnl and include files.
+dnl 
+dnl =================================================================
+
 AC_MINGW32
 AC_CYGWIN
 AC_MINGW32
 AC_CYGWIN
+
+if test "$MINGW32" = "yes"; then
+  target_type=mingw
+else
+  if test "$CYGWIN" = "yes"; then
+    target_type=cygwin
+  else
+    target_type=unix
+  fi
+fi
+
+dnl Decide what to do based on target_type
+dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
+dnl This is because we don't know yet whether pthread is enabled.
+
+AC_ARG_ENABLE(mingw32,
+[  --enable-mingw32        Use mingw32 for a Windows GUI],
+[if test $enableval = yes; then
+  target_type=mingw
+fi])
+
+if test $target_type = mingw; then
+  WIN_ONLY=
+  SPECIAL_CFLAGS="-mwindows -mno-cygwin"
+  PTHREAD_LIB=-lpthreadGC
+  echo "Using mingw32 (Win32 GUI)"
+else
+  WIN_ONLY=#
+  if test $target_type = cygwin; then
+    SPECIAL_CFLAGS="-mno-win32"
+    PTHREAD_LIB=
+    echo "Using Cygnus (Win32 command line)"
+  else
+    SPECIAL_CFLAGS=
+    PTHREAD_LIB=-lpthread
+  fi
+fi
+AC_SUBST(WIN_ONLY)
+
+dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
+old_CFLAGS_nospecial=$CFLAGS
+CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
+
+# Hack to force AutoConf to use the CFLAGS we just set
+dnl Warning: This may break with a future version of Autoconf
+dnl          Tested with autoconf 2.13
+ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+
+
+dnl =================================================================
+dnl Thread support
+dnl =================================================================
+
+AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
+
+AC_ARG_ENABLE(pthread,
+[  --disable-pthread       Don't use POSIX threads (pthreads)],
+[if test $enableval = no; then
+  # Disable pthreads
+  have_pthread=no
+fi])
+
+if test $have_pthread = yes; then
+  PTHREAD_ONLY=
+  AC_DEFINE(FEATURE_PTHREAD)
+  echo Using POSIX threads
+  if test "$GCC" = "yes"; then
+    # Set a GCC specific switch:
+    if test "$target_type" = "unix"; then
+      # This compiler switch makes Linux thread-safe
+      # Don't know about other OS's?  Is this switch
+      # supported?
+      PTHREAD_LIB=
+      SPECIAL_CFLAGS="-pthread"
+    fi
+  fi
+else
+  PTHREAD_ONLY=#
+  echo Using native threads
+fi
+
+AC_SUBST(PTHREAD_LIB)
+AC_SUBST(PTHREAD_ONLY)
+
+
+dnl =================================================================
+dnl Check for standard compiler stuff
+dnl =================================================================
+
 AC_EXEEXT
 AC_OBJEXT
 AC_EXEEXT
 AC_OBJEXT
-
-dnl Checks for libraries.
-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])
+AC_HEADER_STDC
+AC_C_CONST
+AC_TYPE_SIZE_T
 
 dnl Checks for header files.
 
 dnl Checks for header files.
-AC_HEADER_STDC
 dnl AC_HEADER_SYS_WAIT
 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
 dnl AC_HEADER_SYS_WAIT
 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
-dnl limits.h is for PCRE:
-dnl AC_CHECK_HEADERS(limits.h)
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_TYPE_SIZE_T
 
 dnl Checks for library functions.
 dnl AC_TYPE_SIGNAL
 
 dnl Checks for library functions.
 dnl AC_TYPE_SIGNAL
@@ -209,53 +326,44 @@ dnl AC_CHECK_FUNC(strstr)
 dnl bcopy and memmove are for PCRE
 AC_CHECK_FUNCS(strerror bcopy memmove)
 
 dnl bcopy and memmove are for PCRE
 AC_CHECK_FUNCS(strerror bcopy memmove)
 
-dnl Build type
 
 
-dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
+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.
+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])
 
 
-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)
+dnl =================================================================
+dnl Solaris specific
+dnl FIXME: Not tested on Solaris yet...
+dnl =================================================================
+
+AC_CANONICAL_HOST
 
 SOLARIS_ONLY=#
 
 SOLARIS_ONLY=#
+
+case "$target" in
+*-solaris*) AC_DEFINE(_REENTRANT)
+            AC_DEFINE(__EXTENSIONS__)
+            SOLARIS_ONLY=
+;;
+esac
+
 AC_SUBST(SOLARIS_ONLY)
 
 AC_SUBST(SOLARIS_ONLY)
 
+dnl =================================================================
+dnl Always defined
+dnl =================================================================
+
+AC_DEFINE(__MT__)
+
+dnl =================================================================
 dnl Features
 dnl Features
+dnl =================================================================
 
 AC_ARG_ENABLE(toggle,
 [  --disable-toggle        Don't support temporary disable],
 
 AC_ARG_ENABLE(toggle,
 [  --disable-toggle        Don't support temporary disable],
@@ -263,26 +371,16 @@ AC_ARG_ENABLE(toggle,
   AC_DEFINE(TOGGLE)
 fi],AC_DEFINE(TOGGLE))
 
   AC_DEFINE(TOGGLE)
 fi],AC_DEFINE(TOGGLE))
 
-AC_ARG_ENABLE(pthread,
-[  --disable-pthread       Don't use POSIX threads (pthreads)],
-[if test $enableval = yes; then
-  PTHREAD_ONLY=
-  AC_DEFINE(FEATURE_PTHREAD)
-else
-  PTHREAD_ONLY=#
-fi],[AC_DEFINE(FEATURE_PTHREAD)
-  PTHREAD_ONLY=
-])
-AC_SUBST(PTHREAD_ONLY)
-
 AC_ARG_ENABLE(gzip,
 AC_ARG_ENABLE(gzip,
-[  --enable-gzip           Allow gzip'ed transfer of documents. Note that this will make content modification impossible.],
+[  --disable-gzip          Block gzip'ed transfer of documents.  Note that
+                          this is required if you want content modification
+                          even with gzip-supporting servers.],
 [if test $enableval = "no"; then
   AC_DEFINE(DENY_GZIP)
 fi])
 
 AC_ARG_ENABLE(force,
 [if test $enableval = "no"; then
   AC_DEFINE(DENY_GZIP)
 fi])
 
 AC_ARG_ENABLE(force,
-[  --disable-force         Don't allow blockfle to be bypassed],
+[  --disable-force         Don't allow blockfile to be bypassed],
 [if test $enableval = yes; then
   AC_DEFINE(FORCE_LOAD)
 fi],AC_DEFINE(FORCE_LOAD))
 [if test $enableval = yes; then
   AC_DEFINE(FORCE_LOAD)
 fi],AC_DEFINE(FORCE_LOAD))
@@ -312,8 +410,8 @@ AC_ARG_ENABLE(split-proxy-args,
 fi],AC_DEFINE(SPLIT_PROXY_ARGS))
 
 AC_ARG_ENABLE(webdav,
 fi],AC_DEFINE(SPLIT_PROXY_ARGS))
 
 AC_ARG_ENABLE(webdav,
-[  --disable-webdav        Don't support WebDAV.  This option stops MS Outlook
-                          Express from accessing HotMail e-mail.],
+[  --disable-webdav        Don't support WebDAV.  This option breaks MS
+                          Outlook Express when accessing HotMail e-mail.],
 [if test $enableval = yes; then
   AC_DEFINE(WEBDAV)
 fi],
 [if test $enableval = yes; then
   AC_DEFINE(WEBDAV)
 fi],
@@ -362,18 +460,23 @@ dnl the choice is only between static and
 dnl dynamic:
 
 AC_ARG_ENABLE(regex-matching,
 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)],
+[  --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,
 [ 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],
+[  --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,
 [ 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],
+[  --disable-dynamic-pcrs           Use the built-in, static pcrs, even if
+                                   libpcrs is available],
 [ if test $enableval = "no"; then have_pcrs=no; fi ])
 
 
 [ if test $enableval = "no"; then have_pcrs=no; fi ])
 
 
@@ -443,5 +546,14 @@ AC_SUBST(PCRE_REGEX_ONLY)
 AC_SUBST(STATIC_PCRE_ONLY)
 AC_SUBST(STATIC_PCRS_ONLY)
 
 AC_SUBST(STATIC_PCRE_ONLY)
 AC_SUBST(STATIC_PCRS_ONLY)
 
+dnl =================================================================
+dnl Final cleanup and output
+dnl =================================================================
+
+dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
+dnl in the Makefile
+CFLAGS=$old_CFLAGS_nospecial
+AC_SUBST(SPECIAL_CFLAGS)
+
 AC_OUTPUT(Makefile)
 
 AC_OUTPUT(Makefile)