dnl Process this file with autoconf to produce a configure script.
AC_INIT(README)
AC_PREREQ(2.57)
AM_INIT_AUTOMAKE(parser, 3.1.1, 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)
case $host_os in
*cygwin* ) AC_DEFINE(CYGWIN,,using cygwin building environment);;
esac
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 //' -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
AC_C_INLINE
dnl Arguments
AC_ARG_WITH(assertions, [ --with-assertions to enable assertions],
AC_MSG_WARN(enabling assertions)
,
AC_DEFINE(NDEBUG,,assertions disabled)
)
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
]
)
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_RESULT(could not guess)
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_RESULT(could not guess)
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_RESULT(could not guess)
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(dynamic-stdcpp, [ --with-dynamic-stdcpp link libstdc++ dynamically
by default, libstdc++ is linked statically],[
AC_MSG_WARN(libstdc++ will be linked dynamically: this is probably incompatible with other platforms)
# this is for apache, it's linked with gcc and need to know
# and it would not harm linking with c++ toolchain
CPP_LIBS="-lstdc++"
],[
CPP_LIBS="-Wl,-Bstatic -lstdc++ -Wl,-Bdynamic"
])
AC_SUBST(CPP_LIBS)
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)
)
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="-L$withval -Wl,-Bstatic -l$GC_LIB_NAME -Wl,-Bdynamic"
])
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
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 detecting which libraries are needed to dynamic open
AC_LTDL_DLLIB
AC_SUBST(LIBADD_DL)
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 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 \
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(
flock \
_locking \
fcntl \
lockf \
ftruncate \
getrusage \
gettimeofday \
crypt \
siglongjmp
)
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) 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.h>],
[
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 <time.h>],
[
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 <time.h>],
[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 <time.h>],
[struct tm tm;
tm.tm_tzadj=0;
],
AC_DEFINE(HAVE_TM_TZADJ)
AC_MSG_RESULT(yes),
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 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 <sys/types.h> does not define.])
AH_TEMPLATE([ssize_t],
[Define to `int' if <sys/types.h> does not define.])
AH_TEMPLATE([HAVE_DAYLIGHT],
[Define if you have daylight external variable in <time.h>])
AH_TEMPLATE([HAVE_TIMEZONE],
[Define if you have timezone external variable in <time.h>])
AH_TEMPLATE([HAVE_TM_GMTOFF],
[Define if you have tm_gmtoff member of tm structure in <time.h>])
AH_TEMPLATE([HAVE_TM_TZADJ],
[Define if you have tm_tzadj member of tm structure in <time.h>])
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/patches/Makefile src/lib/gc/Makefile src/lib/gc/include/Makefile src/lib/cord/Makefile src/lib/cord/include/Makefile src/lib/cord/include/private/Makefile src/lib/ltdl/Makefile src/lib/pcre/Makefile src/lib/md5/Makefile src/targets/Makefile src/targets/cgi/Makefile src/targets/apache13core/Makefile src/targets/apache13/Makefile src/targets/apache13/p3runConfigure src/targets/isapi/Makefile etc/Makefile etc/parser3.charsets/Makefile bin/Makefile bin/auto.p.dist)
E-mail: