X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=configure.in;h=668fee25843c9f56d6befd53a93f4eaeb7e18e45;hp=67dee7d1b05767a594ad2741c760d85b6104fb1c;hb=90bb43a5644ae550a04c50d9ce7b88ac6427824e;hpb=44c2474b32fdfeee9e1ca536d4a5d6efb6b20611 diff --git a/configure.in b/configure.in index 67dee7d1..668fee25 100644 --- a/configure.in +++ b/configure.in @@ -1,9 +1,9 @@ dnl Process this file with autoconf to produce a configure script. dnl -dnl $Id: configure.in,v 1.9 2001/07/15 19:45:13 jongfoster Exp $ +dnl $Id: configure.in,v 1.44 2002/03/24 13:25:43 swa Exp $ dnl dnl Written by and Copyright (C) 2001 the SourceForge -dnl IJBSWA team. http://ijbswa.sourceforge.net +dnl Privoxy team. http://ijbswa.sourceforge.net dnl dnl Based on the Internet Junkbuster originally written dnl by and Copyright (C) 1997 Anonymous Coders and @@ -28,6 +28,143 @@ 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 Revision 1.44 2002/03/24 13:25:43 swa +dnl name change related issues +dnl +dnl Revision 1.43 2002/03/24 12:56:21 swa +dnl name change related issues. +dnl +dnl Revision 1.42 2002/03/22 18:11:37 jongfoster +dnl Bumping version number to 2.9.12 +dnl +dnl Revision 1.41 2002/03/19 19:30:04 morcego +dnl - Fixing stylesheet checking on configure. If it is found, no further checks +dnl should be done +dnl +dnl - configure will now check for db2html or docbook2html (should work now +dnl on SuSe without the docbktls package) +dnl +dnl Revision 1.40 2002/03/09 14:33:30 oes +dnl Fixing the (harmless) AC_CHECK_FILE warnings +dnl +dnl Revision 1.39 2002/03/08 16:46:13 oes +dnl Added --enable-no-gifs +dnl +dnl Revision 1.38 2002/03/08 14:13:50 morcego +dnl Fixing configure, to remove a command not found error. +dnl +dnl Revision 1.37 2002/03/08 12:58:21 oes +dnl Tiny bugfix in AC_ARG_WITH(debug) +dnl +dnl Revision 1.36 2002/03/06 23:50:36 morcego +dnl Will not test for a text browser if we are not using docbook. +dnl +dnl Revision 1.35 2002/03/06 21:55:52 morcego +dnl New configure option: --with-docbook=(yes|no|directory) +dnl Preliminary new platform detection code included. Will work with the +dnl old one for now. No use just trowing it away +dnl +dnl Revision 1.34 2002/03/06 20:57:00 morcego +dnl Fixing detection of stylesheets on SuSe. +dnl +dnl Revision 1.33 2002/03/05 17:31:11 morcego +dnl Search for docbook.dsl. Should solve portability problems for SuSe. +dnl +dnl Revision 1.32 2002/03/05 14:07:43 morcego +dnl configure now detects rpm topdir, and change GNUmakefile acordingly +dnl (based on sugestion by Sarantis Paskalis) +dnl +dnl Revision 1.31 2002/03/05 13:43:28 morcego +dnl Checking for text browser, so redhat-dok can work. +dnl +dnl Revision 1.30 2002/03/04 17:58:01 oes +dnl Deleted _DEBUG and PID_FILE_PATH +dnl +dnl Revision 1.29 2002/02/28 14:20:53 oes +dnl Fixed detection of gethost*_r functions on Solaris +dnl +dnl Revision 1.28 2002/02/27 15:02:38 oes +dnl Incremented version number +dnl +dnl Revision 1.27 2002/01/10 12:35:18 oes +dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros +dnl to silence autoconf warnings. Numbers are for Intel/Linux. +dnl Is there a better way? +dnl +dnl Revision 1.26 2002/01/09 14:29:49 oes +dnl - Added AC_CHECK_FUNC tests for the availability of +dnl gethostbyname_r, gethostbyaddr_r, gmtime_r and +dnl localtime_r, as well as AC_TRY_COMPILE tests to +dnl determine their signatures. +dnl +dnl - Fixed a bug with the init of CFLAGS that was +dnl reported by barsnick +dnl +dnl Revision 1.25 2002/01/04 15:27:18 oes +dnl Changed quoting of CODE_STATUS for use in make +dnl +dnl Revision 1.24 2001/12/30 14:07:31 steudten +dnl - Add signal handling (unix) +dnl - Add SIGHUP handler (unix) +dnl - Add creation of pidfile (unix) +dnl - Add action 'top' in rc file (RH) +dnl - Add entry 'SIGNALS' to manpage +dnl - Add exit message to logfile (unix) +dnl +dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt +dnl Change from "alpha" to "beta" in configure.in +dnl +dnl Revision 1.22 2001/12/01 11:24:01 jongfoster +dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of +dnl make break in a more obvious way. +dnl +dnl Revision 1.21 2001/11/30 21:35:54 jongfoster +dnl Bumping version number to 2.9.10 +dnl +dnl Revision 1.20 2001/10/23 21:24:09 jongfoster +dnl Support for FEATURE_CGI_EDIT_ACTIONS +dnl +dnl Revision 1.19 2001/10/07 15:33:14 oes +dnl Removed FEATURE_DENY_GZIP +dnl Bumped up version number +dnl +dnl Revision 1.18 2001/09/13 13:10:24 steudten +dnl +dnl PreWork for Debug Interface. +dnl Add new option "--with-debug" to enable debugging (flags aso.) +dnl +dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt +dnl Mac OSX (Darwin) support added. +dnl +dnl Revision 1.16 2001/09/12 22:55:45 joergs +dnl AmigaOS support added. +dnl +dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt +dnl +dnl OS/2 port: update autoconf'd support for the platform. +dnl +dnl Revision 1.14 2001/07/30 22:12:11 jongfoster +dnl Fixing Solaris build (I hope) and tidying up #defines: +dnl - All feature #defines are now of the form FEATURE_xxx +dnl - Permanently turned off WIN_GUI_EDIT +dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS +dnl +dnl Revision 1.13 2001/07/29 17:09:17 jongfoster +dnl Major changes to build system in order to fix these bugs: +dnl - pthreads under Linux was broken - changed -lpthread to -pthread +dnl - Compiling in MinGW32 mode under CygWin now correctly detects +dnl which shared libraries are available +dnl - Solaris support (?) (Not tested under Solaris yet) +dnl +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.10 2001/07/18 17:25:04 oes +dnl Fixed a typo +dnl dnl Revision 1.9 2001/07/15 19:45:13 jongfoster dnl Added support for linking with POSIX threads library dnl @@ -143,231 +280,618 @@ 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 ================================================================= +dnl AutoConf Initialization +dnl ================================================================= + +AC_REVISION($Revision: 1.44 $) AC_INIT(jcc.c) AC_CONFIG_HEADER(config.h) +AC_CANONICAL_HOST + +dodk=auto +DKPREFIX=none +AC_ARG_WITH(docbook, dnl + --with-docbook=[[yes|no|directory]] + Enable docbook documentation creation + (default = yes, for gnu and linux),[dnl +case "$with_docbook" in +yes) dodk=yes;; +no) dodk=no;; +*) + dodk=no + DKPREFIX=$withval + ;; +esac +]) +DB2HTML=false +AC_ARG_WITH(db2html, dnl + --with-db2html= + Set the location of the docbook to html converter + (default = search),[dnl +DB2HTML=$withval +]) + +dnl ================================================================= +dnl Application version number +dnl ================================================================= VERSION_MAJOR=2 VERSION_MINOR=9 -VERSION_POINT=6 +VERSION_POINT=13 +VERSION_RPM_PACKAGE=1 +CODE_STATUS="beta" + +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_RPM_PACKAGE) +AC_SUBST(CODE_STATUS) -dnl This can be "alpha", "beta", or "stable" -dnl and will be used for CGI output 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_RPM_PACKAGE,${VERSION_RPM_PACKAGE}) 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 +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 -AC_MINGW32 -AC_CYGWIN -AC_EXEEXT -AC_OBJEXT +AC_CHECK_PROG(GDB,gdb,yes,no) + +dnl ================================================================= +dnl debug, gcc and gdb support +dnl ================================================================= + +AC_ARG_WITH(debug, + [ --with-debug Enable debug mode], + [ + if test "x$withval" != "xno" ; then + if test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + if test "$GDB"; then + CFLAGS="-ggdb" + else + CFLAGS="-g" + fi + CFLAGS="$CFLAGS -Wshadow -Wconversion" + else + CFLAGS="-g" + fi + fi + fi + ], + [ + if test "X$CFLAGS" = "X"; then # if CFLAGS are unset + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi + fi + ] +) + +dnl ================================================================= +dnl additional gcc flags +dnl ================================================================= +dnl +if test "$GCC"; then + CFLAGS="-pipe $CFLAGS" +fi -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]) -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 limits.h is for PCRE: -dnl AC_CHECK_HEADERS(limits.h) +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 ================================================================= -dnl Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_TYPE_SIZE_T +AC_MINGW32 +AC_CYGWIN -dnl Checks for library functions. -dnl AC_TYPE_SIGNAL -dnl AC_CHECK_FUNC(strstr) -dnl bcopy and memmove are for PCRE -AC_CHECK_FUNCS(strerror bcopy memmove) +if test "$MINGW32" = "yes"; then + target_type=mingw +else + if test "$CYGWIN" = "yes"; then + target_type=cygwin + else + target_type=unix + fi +fi -dnl Build type +if test $dodk = auto; then + dodk=no + if test $target_type = unix; then + case "$host_os" in + linux* | gnu*) + dodk=yes + ;; + esac + 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 - 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]) + 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) -AC_SUBST(CYGWIN_FLAGS) -AC_SUBST(PTHREAD_LIB) -SOLARIS_ONLY=# -AC_SUBST(SOLARIS_ONLY) +dnl Checking which text html browser we have avaliable +if test $dodk != no; then + AC_CHECK_PROGS(WDUMP,w3m lynx links,false) + if test "$WDUMP" = false; then + AC_MSG_ERROR(You need some kind of text browser to continue \(w3m, lynx and links are supported\)) + fi + if test $DB2HTML = false; then + dnl We need to clean the variable, otherwise AC_CHECK_PROGS + dnl will fail + DB2HTML="" + AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false) + fi +fi +AC_SUBST(WDUMP) +AC_SUBST(DB2HTML) + +dnl If we use rpm, we need to check where %_topdir is +AC_CHECK_PROGS(RPMBIN,rpm,false) +if test $RPMBIN != false; then + RPM_BASE=`rpm --eval "%{_topdir}"` + if test "$RPM_BASE" = ""; then + RPM_BASE=/usr/src/redhat + fi +fi +AC_SUBST(RPM_BASE) + +dnl Check for jade, so we can build the documentation +AC_CHECK_PROGS(JADEBIN,jade openjade,false) +AC_SUBST(JADEBIN) + +dnl Checking for the docbook.dsl stylesheet file +dnl It is still not portable (directory slash) +if test $dodk = yes; then + if test $DKPREFIX = none; then + for i in /usr/share/sgml/docbook/dsssl-stylesheets /usr/share/sgml/docbkdsl; do + echo -n "checking for $i/html/docbook.dsl..." + if test -f $i/html/docbook.dsl; then + echo "yes" + DKPREFIX=$i + break + else + echo "no" + fi + done + fi +fi +AC_SUBST(DKPREFIX) + +dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS +old_CFLAGS_nospecial=$CFLAGS +CFLAGS="$CFLAGS $SPECIAL_CFLAGS" -dnl Features +# 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' -AC_ARG_ENABLE(toggle, -[ --disable-toggle Don't support temporary disable], -[if test $enableval = yes; then - AC_DEFINE(TOGGLE) -fi],AC_DEFINE(TOGGLE)) + +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 = yes; then +[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=# -fi],[AC_DEFINE(FEATURE_PTHREAD) - PTHREAD_ONLY= -]) + echo Using native threads +fi + 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]) +dnl ================================================================= +dnl Support for thread-safe versions of gethostbyaddr, gethostbyname, +dnl gmtime and localtime +dnl ================================================================= + +dnl Next line needed to find the gethost*_r functions on Solaris +AC_CHECK_LIB(nsl, gethostbyname) + +AC_CHECK_FUNC(gethostbyaddr_r, [ + AC_MSG_CHECKING([signature of gethostbyaddr_r]) + AC_TRY_COMPILE([ +# include + ], [ + struct hostent *h, *hp; + char *a, *b; + int l, bl, t, e; + (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e) + ], [ + AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS) + AC_MSG_RESULT([8 args]) + ], [ + AC_TRY_COMPILE([ +# include + ], [ + struct hostent *h; + char *a, *b; + int l, bl, t, e; + (void) gethostbyaddr_r(a, l, t, h, b, bl, &e) + ], [ + AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS) + AC_MSG_RESULT([7 args]) + ], [ + AC_TRY_COMPILE([ +# include + ], [ + struct hostent_data *d; + struct hostent *h; + char a, + int l, t; + (void) gethostbyaddr_r(a, l, t, h, d) + ], [ + AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS) + AC_MSG_RESULT([5 args]) + ], [ + AC_MSG_RESULT(unrecognised) + ]) + ]) + ]) +], [ + AC_MSG_RESULT(no) +]) + +AC_CHECK_FUNC(gethostbyname_r, [ + AC_MSG_CHECKING([signature of gethostbyname_r]) + AC_TRY_COMPILE([ +# include + ], [ + struct hostent *h, *r; + char *n, *b; + int bl, e; + (void) gethostbyname_r(n, h, b, bl, &r, &e) + ], [ + AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS) + AC_MSG_RESULT([6 args]) + ], [ + AC_TRY_COMPILE([ +# include + ], [ + struct hostent *h; + char *n, *b; + int bl, e; + (void) gethostbyname_r(n, h, b, bl, &e) + ], [ + AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS) + AC_MSG_RESULT([5 args]) + ], [ + AC_TRY_COMPILE([ +# include + ], [ + struct hostent_data *d; + struct hostent *h; + char *n, + (void) gethostbyname_r(n, h, d) + ], [ + AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS) + AC_MSG_RESULT([3 args]) + ], [ + AC_MSG_RESULT(unrecognised) + ]) + ]) + ]) +], [ + AC_MSG_RESULT(no) +]) + +AC_CHECK_FUNC(gmtime_r, [ + AC_MSG_CHECKING([signature of gmtime_r]) + AC_TRY_COMPILE([ +# include + ], [ + struct time *t; + struct tm *tm; + (void) gmtime_r(t, tm) + ], [ + AC_MSG_RESULT(ok) + AC_DEFINE(HAVE_GMTIME_R) + ], [ + AC_MSG_RESULT(unrecognised) + ]) +], [ + AC_MSG_RESULT(no) +]) + +AC_CHECK_FUNC(localtime_r, [ + AC_MSG_CHECKING([signature of localtime_r]) + AC_TRY_COMPILE([ +# include + ], [ + struct time *t; + struct tm *tm; + (void) localtime_r(t, tm) + ], [ + AC_MSG_RESULT(ok) + AC_DEFINE(HAVE_LOCALTIME_R) + ], [ + AC_MSG_RESULT(unrecognised) + ]) +], [ + AC_MSG_RESULT(no) +]) + +dnl ================================================================= +dnl Solaris specific +dnl FIXME: Not tested on Solaris yet... +dnl ================================================================= + + +SOCKET_LIB= + +case "$host" in +*-solaris*) SOCKET_LIB="-lsocket -lnsl" + AC_DEFINE(__EXTENSIONS__) + if test "$GCC" = "yes"; then + # Set a GCC specific switch: + # This compiler switch makes Solaris thread-safe + PTHREAD_LIB= + SPECIAL_CFLAGS="-pthreads" + else + # What do we do without GCC? Guess this: + SPECIAL_CFLAGS="-D_REENTRANT" + fi +;; +esac + +AC_SUBST(SOCKET_LIB) + +dnl ================================================================= +dnl OS/2 specific +dnl ================================================================= + +case "$host" in +*-os2-emx*) SOCKET_LIB=-lsocket +;; +esac + +AC_SUBST(SOCKET_LIB) + +dnl ================================================================= +dnl AmigaOS specific +dnl ================================================================= + +AMIGAOS_ONLY=# + +case "$host" in +*-amigaos) AMIGAOS_ONLY= +;; +esac + +AC_SUBST(AMIGAOS_ONLY) + +dnl ================================================================= +dnl Check for standard compiler stuff +dnl ================================================================= + +AC_EXEEXT +AC_OBJEXT +AC_HEADER_STDC +AC_C_CONST +AC_TYPE_SIZE_T +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. +dnl AC_HEADER_SYS_WAIT +dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h) + +dnl Checks for library functions. +dnl AC_TYPE_SIGNAL +dnl AC_CHECK_FUNC(strstr) +dnl bcopy and memmove are for PCRE +AC_CHECK_FUNCS(strerror bcopy memmove) + + +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]) + + +dnl ================================================================= +dnl Always defined +dnl ================================================================= + +AC_DEFINE(__MT__) + +dnl ================================================================= +dnl Features +dnl ================================================================= + +AC_ARG_ENABLE(toggle, +[ --disable-toggle Don't support temporary disable], +[if test $enableval = yes; then + AC_DEFINE(FEATURE_TOGGLE) +fi],AC_DEFINE(FEATURE_TOGGLE)) AC_ARG_ENABLE(force, -[ --disable-force Don't allow blockfle to be bypassed], +[ --disable-force Don't allow single-page disable], [if test $enableval = yes; then - AC_DEFINE(FORCE_LOAD) -fi],AC_DEFINE(FORCE_LOAD)) + AC_DEFINE(FEATURE_FORCE_LOAD) +fi],AC_DEFINE(FEATURE_FORCE_LOAD)) AC_ARG_ENABLE(fast-redirects, [ --disable-fast-redirects Don't support fast redirects], [if test $enableval = yes; then - AC_DEFINE(FAST_REDIRECTS) -fi], AC_DEFINE(FAST_REDIRECTS)) + AC_DEFINE(FEATURE_FAST_REDIRECTS) +fi], AC_DEFINE(FEATURE_FAST_REDIRECTS)) AC_ARG_ENABLE(killpopup, -[ --disable-killpopup Never block popups], +[ --disable-killpopup Never block popups], [if test $enableval = yes; then - AC_DEFINE(KILLPOPUPS) -fi],AC_DEFINE(KILLPOPUPS)) + AC_DEFINE(FEATURE_KILL_POPUPS) +fi],AC_DEFINE(FEATURE_KILL_POPUPS)) AC_ARG_ENABLE(stats, -[ --disable-stats Don't keep statistics], -[if test $enableval = yes; then - AC_DEFINE(STATISTICS) -fi],AC_DEFINE(STATISTICS)) - -AC_ARG_ENABLE(split-proxy-args, -[ --disable-split-proxy-args One big show-proxy-args page, not one per file.], -[if test $enableval = yes; then - AC_DEFINE(SPLIT_PROXY_ARGS) -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-stats Don't keep statistics], [if test $enableval = yes; then - AC_DEFINE(WEBDAV) -fi], -AC_DEFINE(WEBDAV)) + AC_DEFINE(FEATURE_STATISTICS) +fi],AC_DEFINE(FEATURE_STATISTICS)) AC_ARG_ENABLE(ie-images, -[ --disable-ie-images Don't auto-detect whether a request from MS Internet - Explorer is for an image or HTML.], +[ --disable-ie-images Don't auto-detect whether a request from MS Internet + Explorer is for an image or HTML.], [if test $enableval = yes; then - AC_DEFINE(DETECT_MSIE_IMAGES) + AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE) fi], -AC_DEFINE(DETECT_MSIE_IMAGES)) +AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)) AC_ARG_ENABLE(image-blocking, -[ --disable-image-blocking Don't try to figure out whether a request is - for an image or HTML - assume HTML.], +[ --disable-image-blocking Don't try to figure out whether a request is + for an image or HTML - assume HTML.], [if test $enableval = yes; then - AC_DEFINE(IMAGE_BLOCKING) + AC_DEFINE(FEATURE_IMAGE_BLOCKING) fi], -AC_DEFINE(IMAGE_BLOCKING)) +AC_DEFINE(FEATURE_IMAGE_BLOCKING)) AC_ARG_ENABLE(acl-files, -[ --disable-acl-files Prevents the use of ACL files to control access to - the proxy by IP address.], +[ --disable-acl-files Prevents the use of ACL files to control access to + the proxy by IP address.], [if test $enableval = yes; then - AC_DEFINE(ACL_FILES) + AC_DEFINE(FEATURE_ACL) fi], -AC_DEFINE(ACL_FILES)) +AC_DEFINE(FEATURE_ACL)) AC_ARG_ENABLE(trust-files, -[ --disable-trust-files Prevents the use of trust files.], +[ --disable-trust-files Prevents the use of trust files.], [if test $enableval = yes; then - AC_DEFINE(TRUST_FILES) + AC_DEFINE(FEATURE_TRUST) fi], -AC_DEFINE(TRUST_FILES)) +AC_DEFINE(FEATURE_TRUST)) AC_ARG_ENABLE(jar-files, -[ --disable-jar-files Prevents the use of jar files to capture cookies.], +[ --disable-jar-files Prevents the use of jar files to capture cookies.], +[if test $enableval = yes; then + AC_DEFINE(FEATURE_COOKIE_JAR) +fi], +AC_DEFINE(FEATURE_COOKIE_JAR)) + +AC_ARG_ENABLE(editor, +[ --disable-editor Prevents the use of the web-based actions file + editor and web-based temporary disable setting.], [if test $enableval = yes; then - AC_DEFINE(JAR_FILES) + AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS) fi], -AC_DEFINE(JAR_FILES)) +AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)) + +AC_ARG_ENABLE(no-gifs, +[ --enable-no-gifs Use politically correct PNG format instead of GIF + for built-in images. May not work with all browsers.], +[if test $enableval = yes; then + AC_DEFINE(FEATURE_NO_GIFS) +fi]) + 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)], +[ --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], +[ --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], +[ --disable-dynamic-pcrs Use the built-in, static pcrs, even if + libpcrs is available], [ if test $enableval = "no"; then have_pcrs=no; fi ]) @@ -437,5 +961,15 @@ AC_SUBST(PCRE_REGEX_ONLY) AC_SUBST(STATIC_PCRE_ONLY) AC_SUBST(STATIC_PCRS_ONLY) -AC_OUTPUT(Makefile) +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_SUBST(PTHREAD_LIB) +AC_OUTPUT(GNUmakefile)