dnl Autoconf initialisation AC_PREREQ(2.59) AC_INIT(parser, 3.4.2b) AC_CONFIG_SRCDIR(README) dnl Automake Initialisation AM_INIT_AUTOMAKE dnl Expand srcdir P3S=`cd $srcdir/src ; pwd` AC_SUBST(P3S) dnl Update pa_version.h AC_CANONICAL_HOST PARSER_VERSION="$VERSION (compiled on $host)" echo "/* automatically generated by configure */" > $srcdir/src/include/pa_version.h.new echo "/* edit configure.in to change version number */" >> $srcdir/src/include/pa_version.h.new echo "#define PARSER_VERSION \"$PARSER_VERSION\"" >> $srcdir/src/include/pa_version.h.new cmp $srcdir/src/include/pa_version.h.new $srcdir/src/include/pa_version.h >/dev/null 2>&1 if test $? -ne 0 ; then rm -f $srcdir/src/include/pa_version.h && mv $srcdir/src/include/pa_version.h.new $srcdir/src/include/pa_version.h && \ echo Updated $srcdir/src/include/pa_version.h else rm -f $srcdir/src/include/pa_version.h.new fi AC_SUBST(host_os) case $host_os in *cygwin* ) AC_DEFINE(CYGWIN,,using cygwin building environment);; esac dnl Checks for programs AC_PROG_INSTALL AC_PROG_AWK AC_PROG_YACC if test "$YACC" != "bison -y"; then AC_MSG_WARN(to regenerate Parser grammar YOU WOULD NEED BISON) else AC_MSG_CHECKING(bison version) oldIFS=$IFS; IFS=. set `bison -V | sed -e 's/^GNU Bison version //' -e 's/^bison (GNU Bison) //' -e 's/$/./'` IFS=$oldIFS if test "$1" = "1" -a "$2" -lt "25"; then AC_MSG_WARN(Bison 1.25 or newer needed to regenerate Parser compiler (found $1.$2).) fi AC_MSG_RESULT($1.$2 (ok)) fi AC_PROG_CXX AC_PROG_CC dnl most tests should be compiled with C compiler [especially qsort test] AC_LANG_C dnl Dll extension AC_MSG_CHECKING(for dynamic-link library extension) case "$host_os" in cygwin) dll_extension=dll ;; *) dll_extension=so esac AC_MSG_RESULT($dll_extension) AC_SUBST(dll_extension) dnl Misc arguments AC_ARG_WITH(build-warnings, [ --with-build-warnings to enable build-time compiler warnings if gcc is used], AC_MSG_WARN(enabling compiler warnings) CXXFLAGS="$CXXFLAGS -W -Wall -Wstrict-prototypes -Wmissing-prototypes" ) AC_ARG_WITH(assertions, [ --with-assertions to enable assertions], AC_MSG_WARN(enabling assertions) , AC_DEFINE(NDEBUG,,assertions disabled) ) AC_ARG_WITH(pathlink,[ --with-pathlink=LKEY put dynamic libraries paths to binary using linker key (-R, -rpath-link)], LD_PATHLINK=$withval ) AC_ARG_WITH(sjlj-exceptions,[ --with-sjlj-exceptions enable simple 'throw' from dynamic library], AC_DEFINE(PA_WITH_SJLJ_EXCEPTIONS,,one can throw from dynamic library) ) dnl Safe mode argument AC_ARG_ENABLE(safe-mode, [ --disable-safe-mode to enable reading and executing files belonging to group+user other then effective], [ SAFE_MODE=$enableval ] ) if test "$SAFE_MODE" = "no"; then AC_MSG_WARN(enabling reading of files belonging to group+user other then effective) else AC_DEFINE(PA_SAFE_MODE,,disabled reading of files belonging to group+user other then effective) fi dnl Disable execs argument AC_ARG_ENABLE(execs, [ --disable-execs to disable any execs (file::exec, file::cgi, unix mail:send)], [ if test "$enableval" = "no"; then AC_MSG_WARN(disabling file execs) AC_DEFINE(NO_PA_EXECS,,pa_exec disabled) fi ] ) dnl String stream argument AC_ARG_ENABLE(stringstream, [ --disable-stringstream to disable stringstream usage. when disabled table.save use more memory but it's safer on freebsd 4.x], [ if test "$enableval" = "no"; then AC_MSG_WARN(disabling stringstream usage) AC_DEFINE(NO_STRINGSTREAM,,stringstream disabled) fi ] ) dnl Dynamic libstdc++ argument AC_ARG_WITH(dynamic-stdcpp, [ --with-dynamic-stdcpp link libstdc++ dynamically by default, libstdc++ is linked statically],[ AC_MSG_WARN(libstdc++ will be linked dynamically) CPP_LIBS="-lstdc++" ],[ CPP_LIBS="-Wl,-Bstatic -lstdc++ -Wl,-Bdynamic" ]) AC_SUBST(CPP_LIBS) dnl GC argument GC_LIB_NAME=gc AC_ARG_WITH(shared-gc,[ --with-shared-gc[=D] D is the directory where Boehm garbage collecting library is installed (shared lib)],[ GC_LIBS="-L$withval -l$GC_LIB_NAME" ]) AC_ARG_WITH(static-gc,[ --with-static-gc[=D] D is the directory where Boehm garbage collecting library is installed (static lib)],[ GC_LIBS="$withval/lib$GC_LIB_NAME.a" ]) if test -z "$GC_LIBS"; then #undefined? use any found in system GC_LIBS="-l$GC_LIB_NAME" AC_MSG_WARN([neither --with-shared/static-gc were specified, hoping linker would find it]) fi AC_MSG_CHECKING(for libgc) SAVE_LIBS=$LIBS LIBS="$LIBS $GC_LIBS" AC_TRY_LINK([ extern int GC_dont_gc; ],[ GC_dont_gc=0; ], AC_MSG_RESULT(yes) , AC_MSG_RESULT(no) AC_MSG_ERROR(please specify path to libgc: --with-shared-gc OR --with-static-gc) ) AC_SUBST(GC_LIBS) LIBS=$SAVE_LIBS dnl PCRE argument AC_ARG_WITH(static-pcre,[ --with-static-pcre=D D is the directory where PCRE library is installed (static lib)],[ PCRE=$withval PCREINC="$PCRE/include" PCRELIB="$PCRE/lib" if test \! -d $PCREINC -o \! -d $PCRELIB; then AC_MSG_ERROR($PCRE does not seem to be valid PCRE installation directory) fi PCRE_INCLUDES="-I$PCREINC" PCRE_LIBS="$PCRELIB/libpcre.a" ]) AC_SUBST(PCRE_INCLUDES) AC_SUBST(PCRE_LIBS) dnl XML/XSLT argument AC_ARG_WITH(shared-xml,[ --with-shared-xml=D D is the directory where Gnome XML libraries are installed (shared libs)],[ GNOME_XML=$withval XMLBIN="$GNOME_XML/bin" XMLINC="$GNOME_XML/include" XMLLIB="$GNOME_XML/lib" if test \! -d $XMLBIN -o \! -d $XMLINC -o \! -d $XMLLIB; then AC_MSG_ERROR($GNOME_XML does not seem to be valid Gnome installation directory) fi AC_DEFINE(XML,,xml-abled parser (uses shared library)) LIBXML2_SO_NAME=`cd $XMLLIB ; ls libxml2.?? libxml2.??? 2>/dev/null | grep -v \.la$ | sed 's/lib//' | sed 's/\..*//'` LIBXSLT_SO_NAME=`cd $XMLLIB ; ls libxslt.?? libxslt.??? 2>/dev/null | grep -v \.la$ | sed 's/lib//' | sed 's/\..*//'` LIBEXSLT_SO_NAME=`cd $XMLLIB ; ls libexslt.?? libexslt.??? 2>/dev/null | grep -v \.la$ | sed 's/lib//' | sed 's/\..*//'` XML_INCLUDES="$GLIB_CFLAGS -I$XMLINC -I$XMLINC/libxml2" XML_LIBS="-L$XMLLIB -l$LIBXML2_SO_NAME -l$LIBXSLT_SO_NAME -l$LIBEXSLT_SO_NAME" if test \! -z "$LD_PATHLINK"; then XML_LIBS="$XML_LIBS -Wl,$LD_PATHLINK -Wl,$XMLLIB" fi ]) AC_ARG_WITH(static-xml,[ --with-static-xml=D D is the directory where Gnome XML libraries are installed (static libs)],[ GNOME_XML=$withval XMLBIN="$GNOME_XML/bin" XMLINC="$GNOME_XML/include" XMLLIB="$GNOME_XML/lib" if test \! -d $XMLBIN -o \! -d $XMLINC -o \! -d $XMLLIB; then AC_MSG_ERROR($GNOME_XML does not seem to be valid Gnome installation directory) fi AC_DEFINE(XML,,xml-abled parser (uses static library)) XML_INCLUDES="$GLIB_CFLAGS -I$XMLINC -I$XMLINC/libxml2" XML_LIBS="$XMLLIB/libxslt.a $XMLLIB/libexslt.a $XMLLIB/libxml2.a" ]) AC_SUBST(XML_INCLUDES) AC_SUBST(XML_LIBS) dnl Mail receive argument AC_ARG_WITH(glib-config,[ --with-glib-config=FILE FILE is glib library configuration file (search for glib*-config)], GLIB_CONFIG=$withval ) AC_ARG_WITH(shared-mailreceive,[ --with-shared-mailreceive=D is the directory where Gnome MIME library is installed (shared lib)],[ GNOME_MIME=$withval MIMEBIN="$GNOME_MIME/bin" MIMEINC="$GNOME_MIME/include" MIMELIB="$GNOME_MIME/lib" if test \! -d $MIMEBIN -o \! -d $MIMEINC -o \! -d $MIMELIB; then AC_MSG_ERROR($GNOME_MIME does not seem to be valid Gnome installation directory) fi AC_DEFINE(WITH_MAILRECEIVE,,has \$mail:received (uses shared library)) LIBMIME_SO_NAME=`cd $MIMELIB ; ls libgmime.?? libgmime.??? 2>/dev/null | grep -v \.la$ | sed 's/lib//' | sed 's/\..*//'` if test -z "$GLIB_CONFIG"; then GLIB_CONFIG=$XMLBIN/glib-config if test \! -x $GLIB_CONFIG; then GLIB_CONFIG=$XMLBIN/glib2-config if test \! -x $GLIB_CONFIG; then GLIB_CONFIG=glib-config fi fi fi GLIB_CFLAGS=`$GLIB_CONFIG --cflags` GLIB_LIBS=`$GLIB_CONFIG --libs` MIME_INCLUDES="$GLIB_CFLAGS -I$MIMEINC/gmime" MIME_LIBS="$GLIB_LIBS -L$MIMELIB -l$LIBMIME_SO_NAME" if test \! -z "$LD_PATHLINK"; then MIME_LIBS="$MIME_LIBS -Wl,$LD_PATHLINK -Wl,$MIMELIB" fi ]) AC_ARG_WITH(static-mailreceive,[ --with-static-mailreceive=D is the directory where Gnome MIME library is installed (static lib)],[ GNOME_MIME=$withval MIMEBIN="$GNOME_MIME/bin" MIMEINC="$GNOME_MIME/include" MIMELIB="$GNOME_MIME/lib" if test \! -d $MIMEBIN -o \! -d $MIMEINC -o \! -d $MIMELIB; then AC_MSG_ERROR($GNOME_MIME does not seem to be valid Gnome installation directory) fi AC_DEFINE(WITH_MAILRECEIVE,,has \$mail:received (uses static library)) if test -z "$GLIB_CONFIG"; then GLIB_CONFIG=$XMLBIN/glib-config if test \! -x $GLIB_CONFIG; then GLIB_CONFIG=$XMLBIN/glib2-config if test \! -x $GLIB_CONFIG; then GLIB_CONFIG=glib-config fi fi fi GLIB_CFLAGS=`$GLIB_CONFIG --cflags` dnl '-L/usr/local/lib -lglib' -> /usr/local/lib changequote(, )dnl GLIB_DIR=`$GLIB_CONFIG --libs | sed 's/.*-L\([^ ]*\).*/\1/'` GLIB_NAME=`$GLIB_CONFIG --libs | sed 's/.*-l\([^ ]*\).*/\1/'` changequote([, ])dnl MIME_INCLUDES="$GLIB_CFLAGS -I$MIMEINC/gmime" MIME_LIBS="$MIMELIB/libgmime.a $GLIB_DIR/lib$GLIB_NAME.a" ]) AC_SUBST(MIME_INCLUDES) AC_SUBST(MIME_LIBS) dnl Sendmail argument AC_ARG_WITH(sendmail,[ \"--with-sendmail=COMMAND\" forces this command to send mail. example: \"--with-sendmail=/usr/sbin/sendmail -t\" (makes parser ignore user-defined sendmail commands)], AC_DEFINE_UNQUOTED(PA_FORCED_SENDMAIL,"$withval",parser uses this command instead of user-defined sendmail commands) ) dnl Apache module argument AC_ARG_WITH(apache,[ --with-apache=FILE is the full path for APXS builds apache DSO module using apxs],[ APXS=$withval if test -z "$APXS" -o "$APXS" = "yes"; then APXS=`which apxs 2>/dev/null` fi; APACHE=`$APXS -q TARGET 2>/dev/null` if test -z "$APACHE"; then AC_MSG_ERROR($APXS does not seem to be valid apache apxs utility path) fi APACHE_MAIN_INC=`$APXS -q INCLUDEDIR` APACHE_EXTRA_INC=`$APXS -q EXTRA_INCLUDES 2>/dev/null` APACHE_INC="-I$APACHE_MAIN_INC $APACHE_EXTRA_INC" APACHE_CFLAGS=`$APXS -q CFLAGS` ]) AC_SUBST(APACHE) AC_SUBST(APACHE_INC) AC_SUBST(APACHE_CFLAGS) AM_CONDITIONAL(COMPILE_APACHE_MODULE, test -n "$APACHE") dnl Enable building of the convenience library LT_CONFIG_LTDL_DIR(src/lib/ltdl) LT_INIT(dlopen win32-dll) LTDL_INIT dnl Configure libtool AC_DISABLE_STATIC dnl Checks for typedefs, structures, and compiler characteristics. AC_C_BIGENDIAN( AC_DEFINE(PA_BIG_ENDIAN,,compile for sparc processor) , AC_DEFINE(PA_LITTLE_ENDIAN,,compile for intel processor or compatible) , AC_MSG_ERROR(word endianness not determined for some obscure reason) ) AC_TYPE_SIZE_T dnl gmime AC_CHECK_TYPE(off_t, long) AC_CHECK_TYPE(ssize_t, int) dnl Checks for C header files. AC_HEADER_TIME AC_CHECK_HEADERS( assert.h \ signal.h \ unistd.h \ process.h \ stddef.h \ stdarg.h \ fcntl.h \ sys/stat.h \ io.h \ stdio.h \ errno.h \ ctype.h \ math.h \ crypt.h \ time.h sys/time.h \ string.h \ direct.h \ setjmp.h \ memory.h \ limits.h \ sys/file.h \ sys/locking.h \ sys/types.h \ sys/select.h \ sys/resource.h \ winsock.h \ sys/socket.h \ netinet/in.h \ arpa/inet.h \ netdb.h ) dnl Checks for libraries dnl Some systems (Solaris 2.x) require libnsl (Network Services Library) case "$host" in *-freebsd4*) AC_DEFINE(FREEBSD4,,FreeBSD4X target platform) ;; *-sunos5.6* | *-solaris2.6*) AC_CHECK_LIB(xnet, main) ;; *-sunos5* | *-solaris2*) AC_CHECK_LIB(socket, main) AC_CHECK_LIB(nsl, main) ;; *-nec-sysv4*) AC_CHECK_LIB(nsl, gethostbyname) AC_CHECK_LIB(socket, socket) ;; *-cygwin*) AC_DEFINE(WIN32,,Windows32 target platform) AC_CHECK_LIB(wsock32, socket) ;; esac AC_CHECK_LIB(m, sin) AC_CHECK_LIB(crypt, crypt) dnl Checks for functions. AC_CHECK_FUNCS( flock \ _locking \ fcntl \ lockf \ ftruncate \ fchmod \ getrusage \ gettimeofday \ crypt \ sigsetjmp \ siglongjmp \ unsetenv ) dnl on some linux[seen on 2.4] it's a macro PA_CHECK_SIGSETJMP dnl see comment above AC_LANG_PUSH(C++) PA_CHECK_MATH_FUNCS_ONE_ARG( trunc \ round \ sign ) AC_LANG_POP dnl We require qsort(3) AC_CHECK_FUNCS(qsort, , AC_MSG_ERROR([No qsort library function.])) dnl For correct mail receiving we need to know local offset from GMT dnl it be timezone+(daylight?60*60*sign(timezone):0) dnl or it can be tm.tm_gmtoff dnl or it can be tm.tm_tzadj AC_MSG_CHECKING(for timezone variable) AC_TRY_COMPILE([#include ], [ time_t test=timezone; ], AC_DEFINE(HAVE_TIMEZONE) AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_MSG_CHECKING(for daylight variable) AC_TRY_COMPILE([#include ], [ int test=daylight; ], AC_DEFINE(HAVE_DAYLIGHT) AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_MSG_CHECKING(for tm_gmtoff in struct tm) AC_TRY_COMPILE([#include ], [struct tm tm; tm.tm_gmtoff=0; ], AC_DEFINE(HAVE_TM_GMTOFF) AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_MSG_CHECKING(for tm_tzadj in struct tm) AC_TRY_COMPILE([#include ], [struct tm tm; tm.tm_tzadj=0; ], AC_DEFINE(HAVE_TM_TZADJ) AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) dnl Output header and makefiles AH_TEMPLATE([HAVE_DLD],[Define if you have the GNU dld library]) AH_TEMPLATE([HAVE_LIBDL], [Define if you have the libdl library or equivalent.]) AH_TEMPLATE([HAVE_SHL_LOAD], [Define if you have the shl_load function. ]) AH_TEMPLATE([size_t], [Define to `unsigned int' if does not define.]) AH_TEMPLATE([ssize_t], [Define to `int' if does not define.]) AH_TEMPLATE([HAVE_DAYLIGHT], [Define if you have daylight external variable in ]) AH_TEMPLATE([HAVE_TIMEZONE], [Define if you have timezone external variable in ]) AH_TEMPLATE([HAVE_TM_GMTOFF], [Define if you have tm_gmtoff member of tm structure in ]) AH_TEMPLATE([HAVE_TM_TZADJ], [Define if you have tm_tzadj member of tm structure in ]) AM_CONFIG_HEADER(src/include/pa_config_auto.h) AC_OUTPUT( Makefile src/Makefile src/types/Makefile src/classes/Makefile src/include/Makefile src/main/Makefile src/sql/Makefile src/lib/Makefile src/lib/gd/Makefile src/lib/smtp/Makefile src/lib/gc/Makefile src/lib/gc/include/Makefile src/lib/pcre/Makefile src/lib/cord/Makefile src/lib/cord/include/Makefile src/lib/cord/include/private/Makefile src/lib/ltdl/Makefile src/lib/md5/Makefile src/lib/sdbm/Makefile src/lib/sdbm/pa-include/Makefile src/lib/json/Makefile src/lib/memcached/Makefile src/lib/curl/Makefile src/targets/Makefile src/targets/cgi/Makefile src/targets/apache/Makefile src/targets/isapi/Makefile etc/Makefile etc/parser3.charsets/Makefile bin/Makefile bin/auto.p.dist)