dnl Process this file with autoconf to produce a configure script.
dnl
-dnl $Id: configure.in,v 1.4 2001/05/29 09:50:24 jongfoster Exp $
+dnl $Id: configure.in,v 1.9 2001/07/15 19:45:13 jongfoster Exp $
dnl
dnl Written by and Copyright (C) 2001 the SourceForge
dnl IJBSWA team. http://ijbswa.sourceforge.net
dnl Temple Place - Suite 330, Boston, MA 02111-1307, USA.
dnl
dnl $Log: configure.in,v $
+dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
+dnl Added support for linking with POSIX threads library
+dnl
+dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
+dnl Renaming #define STATIC to STATIC_PCRE
+dnl Adding new #define FEATURE_PTHREAD that will be used to enable
+dnl POSIX threads support.
+dnl
+dnl Revision 1.7 2001/07/13 13:58:05 oes
+dnl Completely reorganized the selection scheme for
+dnl pcre, pcreposix, pcrs and gnu_regex:
+dnl
+dnl The presence of shared pcre, pcreposix or pcrs
+dnl libraried is now autodetected. Additionally, the
+dnl user can enforce using the built-in static variants
+dnl by specifying --disable-dynamic-(pcre|pcrs).
+dnl Care is taken to avoid that pcre is dyn, while pcreposix
+dnl is static, if both are used and that pcrs is static if
+dnl pcrs is.
+dnl
+dnl The choice between pcre, gnu or no regex for actionsfile
+dnl URL matching is now via
+dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
+dnl default being pcre.
+dnl
+dnl Revision 1.6 2001/06/29 21:56:40 oes
+dnl Version -> 2.9.5
+dnl
+dnl Revision 1.5 2001/06/29 13:26:27 oes
+dnl Introduced #define CODE_STATUS
+dnl
dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
dnl Unified blocklist/imagelist/permissionslist.
dnl File format is still under discussion, but the internal changes
VERSION_MAJOR=2
VERSION_MINOR=9
-VERSION_POINT=4
+VERSION_POINT=6
AC_SUBST(VERSION_MAJOR)
AC_SUBST(VERSION_MINOR)
AC_OBJEXT
dnl Checks for libraries.
-dnl AC_CHECK_LIB(pcre, pcre_compile)
-dnl AC_CHECK_LIB(pcreposix, regcomp, pcre)
+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])
dnl Checks for header files.
AC_HEADER_STDC
dnl Build type
+dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
+
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)
SOLARIS_ONLY=#
AC_SUBST(SOLARIS_ONLY)
dnl Features
-dnl Regex engine:
-
-GNU_REGEX_ONLY=
-PCRE_REGEX_ONLY=
-NO_REGEX_ONLY=#
-
-AC_ARG_ENABLE(regex,
-[ --disable-regex Don't allow regular expressions in the blockfile],
-[if test $enableval = yes; then
- AC_DEFINE(REGEX)
-else
- NO_REGEX_ONLY=
- GNU_REGEX_ONLY=#
- PCRE_REGEX_ONLY=#
-fi],AC_DEFINE(REGEX))
-
-AC_ARG_ENABLE(pcre-regex,
-[ --disable-pcre-regex Use old, slow GNU Regex instead of PCRE.],
-[if test $enableval = yes; then
- AC_DEFINE(PCRE)
- GNU_REGEX_ONLY=#
-else
- PCRE_REGEX_ONLY=#
-fi],[AC_DEFINE(PCRE)
- GNU_REGEX_ONLY=#
-])
-
-AC_SUBST(GNU_REGEX_ONLY)
-AC_SUBST(PCRE_REGEX_ONLY)
-AC_SUBST(NO_REGEX_ONLY)
-
-
-dnl Other features:
-
AC_ARG_ENABLE(toggle,
[ --disable-toggle Don't support temporary disable],
[if test $enableval = yes; then
AC_DEFINE(TOGGLE)
fi],AC_DEFINE(TOGGLE))
-PCRS_ONLY=
-AC_ARG_ENABLE(pcrs,
-[ --disable-pcrs Don't support arbitrary content modification],
+AC_ARG_ENABLE(pthread,
+[ --disable-pthread Don't use POSIX threads (pthreads)],
[if test $enableval = yes; then
- AC_DEFINE(PCRS)
- AC_DEFINE(DENY_GZIP)
+ PTHREAD_ONLY=
+ AC_DEFINE(FEATURE_PTHREAD)
else
- PCRS_ONLY=#
-fi],[AC_DEFINE(PCRS) AC_DEFINE(DENY_GZIP)])
-AC_SUBST(PCRS_ONLY)
+ PTHREAD_ONLY=#
+fi],[AC_DEFINE(FEATURE_PTHREAD)
+ PTHREAD_ONLY=
+])
+AC_SUBST(PTHREAD_ONLY)
+
+AC_ARG_ENABLE(gzip,
+[ --enable-gzip Allow gzip'ed transfer of documents. Note that this will make content modification impossible.],
+[if test $enableval = "no"; then
+ AC_DEFINE(DENY_GZIP)
+fi])
AC_ARG_ENABLE(force,
[ --disable-force Don't allow blockfle to be bypassed],
fi],
AC_DEFINE(JAR_FILES))
-LIBRARY_PCRE_ONLY=#
-STATIC_PCRE_ONLY=
-AC_ARG_ENABLE(static-pcre,
-[ --disable-static-pcre Link dynamically with the pcre and pcreposix
- libraries. You must build the libraries seperately.],
-[if test $enableval = no; then
- LIBRARY_PCRE_ONLY=
+dnl pcre/pcrs is needed for CGI anyway, so
+dnl the choice is only between static and
+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)],
+[ 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],
+[ 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],
+[ if test $enableval = "no"; then have_pcrs=no; fi ])
+
+
+# Is the regex URL matching based on libpcreposix, but we
+# don't have that library?
+#
+if test $have_pcreposix = "yes" -o $regex_matching != "pcre"; then
+ dont_miss_pcreposix=yes
+else
+ dont_miss_pcreposix=no
+fi
+
+# If we have libpcre and either we also have pcreposix or
+# we don't need pcreposix, then link pcre dynamically; else
+# build it and link statically
+#
+if test $have_pcre = "yes" -a $dont_miss_pcreposix = "yes"; then
+ echo "using libpcre"
+ pcre_dyn=yes
STATIC_PCRE_ONLY=#
-fi])
-AC_SUBST(LIBRARY_PCRE_ONLY)
+ LIBS="$LIBS -lpcre"
+else
+ echo "using built-in static pcre"
+ pcre_dyn=no
+ AC_DEFINE(STATIC_PCRE)
+ STATIC_PCRE_ONLY=
+fi
+
+# If we have libpcrs and pcre is linked dynamically
+# then also link pcrs dynamically, else build and link
+# pcrs statically
+#
+if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
+ echo "using libpcrs"
+ STATIC_PCRS_ONLY=#
+ LIBS="$LIBS -lpcrs"
+else
+ echo "using built-in static pcrs"
+ AC_DEFINE(STATIC_PCRS)
+ STATIC_PCRS_ONLY=
+fi
+
+# Which method should be used for URL matching?
+# pcre, gnu regex or prefix matching?
+#
+if test $regex_matching = "gnu"; then
+ echo "using gnu regex for URL matching"
+ AC_DEFINE(REGEX_GNU)
+ GNU_REGEX_ONLY=
+ PCRE_REGEX_ONLY=#
+elif test $regex_matching = "pcre"; then
+ echo "using pcre regex for URL matching"
+ AC_DEFINE(REGEX_PCRE)
+ GNU_REGEX_ONLY=#
+ PCRE_REGEX_ONLY=
+ if test $pcre_dyn = "yes"; then
+ LIBS="$LIBS -lpcreposix"
+ fi
+else
+ echo -e "using prefix matching for URLs\nHint: This does NOT make the executable any smaller!"
+ GNU_REGEX_ONLY=#
+ PCRE_REGEX_ONLY=#
+fi
+
+AC_SUBST(GNU_REGEX_ONLY)
+AC_SUBST(PCRE_REGEX_ONLY)
AC_SUBST(STATIC_PCRE_ONLY)
+AC_SUBST(STATIC_PCRS_ONLY)
AC_OUTPUT(Makefile)