dnl Process this file with autoconf to produce a configure script. AC_INIT(README) AM_INIT_AUTOMAKE(parser, 3.0.HEAD, nodefine) dnl expand srcdir P3S=`cd $srcdir/src ; pwd` AC_SUBST(P3S) PARSER_VERSION=$VERSION 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 dnl AC_CANONICAL_SYSTEM AC_CANONICAL_HOST AC_SUBST(host_os) dnl Checks for programs. AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_RANLIB 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 //'` 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 dnl the order of C, C++ is important AC_PROG_CC AC_LANG_C AC_C_INLINE AC_PROG_CXX AC_LANG_CPLUSPLUS dnl Arguments 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 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 ] ) AC_ARG_ENABLE(string-origins, [ --disable-string-origins to switch off string origin tracking], [ if test "$enableval" = "no"; then AC_MSG_WARN(disabling string origin tracking) AC_DEFINE(NO_STRING_ORIGIN,,no string origin tracking) fi ] ) srccharsetsdir=$srcdir/etc/parser3.charsets CHARSETS_REQUESTED="windows-1251" AC_ARG_WITH(charsets, [ --with-charsets=CHARSET[,CHARSET,...] Enables charsets in root config (windows-1251, windows-1250 windows-1257 koi8-r; Default is windows-1251)], [CHARSETS_REQUESTED=`echo $withval | sed -e 's/,/ /g'`]) # Checking whether all requested charsets have corresponding .cfg files for c in $CHARSETS_REQUESTED; do if test \! -f $srccharsetsdir/$c.cfg; then AC_MSG_ERROR(bad charset requested "$c" - file $srccharsetsdir/$c.cfg not found) fi done # Switching on commentcharset_XXX='#' AC_DEFUN(PA_SUBSTCHARSET, [ commentcharset_$2='#' for c in $CHARSETS_REQUESTED; do if test "$1" = "$c"; then AC_MSG_WARN(enabling charset $1) commentcharset_$2= fi done AC_SUBST(commentcharset_$2) ]) PA_SUBSTCHARSET(windows-1251,windows1251) PA_SUBSTCHARSET(windows-1250,windows1250) PA_SUBSTCHARSET(windows-1257,windows1257) PA_SUBSTCHARSET(koi8-r,koi8r) AC_MSG_CHECKING(for dynamic-link library extension) case "$host_os" in hpux9* | hpux10* | hpux11*) dll_extension=sl ;; cygwin) dll_extension=dll ;; *) dll_extension=so esac AC_MSG_RESULT($dll_extension) AC_SUBST(dll_extension) AC_ARG_WITH(mysql-client,[ --with-mysql-client=mysqlclientlib?withparams MySQL client dynamic library to root config], mysql_client=$withval , AC_MSG_CHECKING(for mysql client) for lib in \ /usr/local/lib/mysql/libmysqlclient.$dll_extension \ /usr/local/lib/libmysqlclient.$dll_extension \ /usr/lib/libmysqlclient.$dll_extension; do if test -f $lib; then mysql_client=$lib; fi done if test -z "$mysql_client"; then mysql_client="-configure could not guess-" AC_MSG_WARN(could not guess mysql client) else AC_MSG_RESULT($mysql_client) fi ) AC_SUBST(mysql_client) AC_ARG_WITH(pgsql-client,[ --with-pgsql-client=pgsqlclientlib?withparams PgSQL client dynamic library to root config], mysql_client=$withval , AC_MSG_CHECKING(for pgsql client) for lib in \ /usr/local/pgsql/lib/libpq.$dll_extension \ /usr/local/lib/libpq.$dll_extension \ /usr/lib/libpq.$dll_extension; do if test -f $lib; then pgsql_client=$lib; fi done if test -z "$pgsql_client"; then pgsql_client="-configure could not guess-" AC_MSG_WARN(could not guess pgsql client) else AC_MSG_RESULT($pgsql_client) fi ) AC_SUBST(pgsql_client) AC_ARG_WITH(oracle-client,[ --with-oracle-client=oracleclientlib?withparams Oracle client dynamic library], oracle_client=$withval , AC_MSG_CHECKING(for oracle client) lib=$ORACLE_HOME/lib/libclntsh.$dll_extension if test -f $lib; then oracle_client=$lib; fi if test -z "$oracle_client"; then oracle_client="-configure could not guess-" AC_MSG_WARN(could not guess oracle client) else oracle_client="$oracle_client?ORACLE_HOME=$ORACLE_HOME&ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data" AC_MSG_RESULT($oracle_client) fi ) AC_SUBST(oracle_client) 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(link-stdcpp, [ --with-link-stdcpp=PATH to directory with libstdc++ --without-link-stdcpp to disable libstdc++ linkage, if you belive you do not need one], [ LIBSTDCPP_PATH=$withval if test "$LIBSTDCPP_PATH" = "no"; then AC_MSG_WARN(disabling libstdc++ linkage) else if test -z "$LD_PATHLINK"; then AC_MSG_ERROR(when using --with-link-stdcpp one must specify --with-pathlink) fi LIBS="$LIBS -Wl,$LD_PATHLINK -Wl,$LIBSTDCPP_PATH" fi ], #pseudo path, meaning still link libstdcpp. value needed to trick next _CONDITIONAL LIBSTDCPP_PATH=" " ) AM_CONDITIONAL(DO_NOT_LINK_LIBSTDCPP, test "$LIBSTDCPP_PATH" = "no") 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) ) 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-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/\..*//'` LIBGDOME_SO_NAME=`cd $XMLLIB ; ls libgdome.?? libgdome.??? 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/\..*//'` if test -z "$GLIB_CONFIG"; then GLIB_CONFIG=$XMLBIN/glib-config if test \! -x $GLIB_CONFIG; then GLIB_CONFIG=glib-config fi fi GLIB_CFLAGS=`$GLIB_CONFIG --cflags` GLIB_LIBS=`$GLIB_CONFIG --libs` XML_INCLUDES="$GLIB_CFLAGS -I$XMLINC -I$XMLINC/libgdome -I$XMLINC/libxml2" XML_LIBS="$GLIB_LIBS -L$XMLLIB -l$LIBXML2_SO_NAME -l$LIBGDOME_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)) if test -z "$GLIB_CONFIG"; then GLIB_CONFIG=$XMLBIN/glib-config if test \! -x $GLIB_CONFIG; then GLIB_CONFIG=glib-config 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 XML_INCLUDES="$GLIB_CFLAGS -I$XMLINC -I$XMLINC/libgdome -I$XMLINC/libxml2" XML_LIBS="$XMLLIB/libgdome.a $XMLLIB/libxslt.a $XMLLIB/libexslt.a $XMLLIB/libxml2.a $GLIB_DIR/lib$GLIB_NAME.a" ]) AC_SUBST(XML_INCLUDES) AC_SUBST(XML_LIBS) 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=$MIMEBIN/glib-config if test \! -x $GLIB_CONFIG; then GLIB_CONFIG=glib-config 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=$MIMEBIN/glib-config if test \! -x $GLIB_CONFIG; then GLIB_CONFIG=glib-config 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) 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) ) AC_ARG_WITH(apache13,[ --with-apache13=D D is the Apache13 source distribution directory builds library for apache_module using that dir (do not add /src)], APACHE13=$withval if test \! -f "$APACHE13/src/include/httpd.h"; then AC_MSG_ERROR($APACHE13 does not seem to be valid Apache13 source distribution directory) fi ) AC_SUBST(APACHE13) AM_CONDITIONAL(COMPILE_APACHE13_MODULE, test -n "$APACHE13") dnl Enable building of the convenience library dnl and set LIBLTDL accordingly AC_LIBLTDL_CONVENIENCE(src/lib/ltdl) dnl Substitute INCLTDL and LIBLTDL in the Makefiles AC_SUBST(INCLTDL) AC_SUBST(LIBLTDL) dnl Configure libltdl AC_CONFIG_SUBDIRS(src/lib/ltdl) dnl copied from lib/libltdl/configure.in [can not move, they need this info to detect other vitals, ex. NEED_USCORE] LIBADD_DL= AC_CHECK_LIB(dl, dlopen, [AC_DEFINE(HAVE_LIBDL, 1) LIBADD_DL="-ldl"], [AC_CHECK_FUNC(dlopen, [AC_DEFINE(HAVE_LIBDL, 1)])]) AC_CHECK_FUNC(shl_load, [AC_DEFINE(HAVE_SHL_LOAD, 1)], [AC_CHECK_LIB(dld, shl_load, [AC_DEFINE(HAVE_SHL_LOAD, 1) LIBADD_DL="$LIBADD_DL -ldld"])]) AC_CHECK_LIB(dld, dld_link, [AC_DEFINE(HAVE_DLD, 1)dnl test "x$ac_cv_lib_dld_shl_load" = yes || LIBADD_DL="$LIBADD_DL -ldld"]) AC_SUBST(LIBADD_DL) if test "x$ac_cv_func_dlopen" = xyes || test "x$ac_cv_lib_dl_dlopen" = xyes; then LIBS_SAVE="$LIBS" LIBS="$LIBS $LIBADD_DL" AC_CHECK_FUNCS(dlerror) LIBS="$LIBS_SAVE" fi dnl Checks for typedefs, structures, and compiler characteristics. AC_TYPE_SIZE_T dnl gmime AC_CHECK_TYPE(off_t, long) AC_CHECK_TYPE(ssize_t, int) dnl Checks for header files. AC_HEADER_TIME AC_CHECK_HEADERS( 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 \ stdlib.h \ string.h \ direct.h \ setjmp.h \ memory.h \ new \ 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 *-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) ;; # never tested this, only theoretically by letter from demos about parser2 build *-hpux*) AC_CHECK_LIB(nsl, main) ;; esac AC_CHECK_LIB(m, sin) AC_CHECK_LIB(crypt, crypt) dnl Checks for functions. AC_CHECK_FUNCS( trunc \ round \ sign \ flock \ _locking \ fcntl \ lockf \ ftruncate \ getrusage \ gettimeofday \ crypt \ sigsetjmp siglongjmp ) dnl We require qsort(3) and select(2). AC_CHECK_FUNCS(qsort, , AC_MSG_ERROR([No qsort library function.])) AC_CHECK_FUNCS(select, , AC_MSG_ERROR([No select 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)) AC_MSG_CHECKING(whether compiler supports pragma pack) AC_TRY_COMPILE( #pragma pack(1) struct _1_byte { char c; }; #pragma pack() ,,[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PRAGMA_PACK,,compiler supports pragma pack) ], AC_MSG_RESULT(no) ) AC_MSG_CHECKING(for set_new_handler) AC_TRY_COMPILE( #ifdef HAVE_NEW #include #endif void failed_new() {} , std::set_new_handler(failed_new); ,[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SET_NEW_HANDLER,,library has set_new_handler func) ], AC_MSG_RESULT(no) ) dnl AC_ARG_ENABLE(db, [ --enable-db to enable 'hashfile' parser class], dnl [ dnl if test "$enableval" != "no"; then dnl AC_CHECK_HEADERS(db.h) dnl AC_CHECK_LIB(db, __db_open) dnl fi dnl ] dnl ) dnl Apache libs APACHE_LIBS="$LIBS $LIBADD_DL" dnl append stdc++ to libs list commented dnl 1. because binary seem to work without it dnl purpose of this: remove strange name dependance dnl for linker creates reference not for libstc++.xx but dnl for something specific to local system, dnl thus reducing binary compatibility dnl 2. for same reason linker of targets/cgi/parser3 changed to dnl "C" compiler from "C++" compiler dnl AC_CHECK_LIB(stdc++, __builtin_new, dnl APACHE_LIBS="$APACHE_LIBS -lstdc++" dnl ) AC_SUBST(APACHE_LIBS) dnl install directories # expand apostrophed e_prefix=$prefix test "x$e_prefix" = xNONE && e_prefix=$ac_default_prefix e_sysconfdir=$sysconfdir test "$e_sysconfdir" = "\${prefix}/etc" && e_sysconfdir="${e_prefix}/etc" dnl these are used to fill in etc/parser3.conf charsetsdir=$e_sysconfdir/parser3.charsets AC_SUBST(charsetsdir) # expand apostrophed e_libdir=$libdir if test "$e_libdir" = "\${exec_prefix}/lib"; then # Let make expand exec_prefix. e_exec_prefix=$exec_prefix test "x$e_exec_prefix" = xNONE && e_exec_prefix=$e_prefix # expand apostrophed test "$e_libdir" = "\${exec_prefix}/lib" && e_libdir="${e_exec_prefix}/lib" fi sqldriversdir=$e_libdir AC_SUBST(sqldriversdir) 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/classes/gd/Makefile src/classes/smtp/Makefile src/include/Makefile src/main/Makefile src/sql/Makefile src/lib/Makefile src/lib/ltdl/Makefile src/lib/pcre/Makefile src/lib/md5/Makefile src/lib/patches/Makefile src/targets/Makefile src/targets/cgi/Makefile src/targets/apache13/Makefile src/targets/apache13/hook/Makefile src/targets/apache13/p3runConfigure src/targets/isapi/Makefile etc/Makefile etc/parser3.charsets/Makefile bin/Makefile bin/auto.p.dist)