dnl Process this file with autoconf to produce a configure script.
AC_INIT(README)
AM_INIT_AUTOMAKE(parser, 3.0b, 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
AC_PROG_INSTALL
AC_PROG_CC
AC_LANG_C AC_C_INLINE
AC_PROG_CXX
AC_LANG_CPLUSPLUS
dnl Arguments
AC_ARG_ENABLE(link-libstdcpp, [ --disable-link-libstdcpp to disable libstdc++ linkage,
if you belive you do not need one],
[
LINK_LIBSTDCPP_FLAG=$enableval
if test "$enableval" = "no"; then
AC_MSG_WARN(disabling libstdc++ linkage)
fi
]
)
AM_CONDITIONAL(DO_NOT_LINK_LIBSTDCPP, test "$LINK_LIBSTDCPP_FLAG" = "no")
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
]
)
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(foreign-group-files, [ --disable-foreign-group-files to disable reads
of files belonging to group other then effective],
[
if test "$enableval" = "no"; then
AC_MSG_WARN(disabling reading of files belonging to group other then effective)
AC_DEFINE(NO_FOREIGN_GROUP_FILES,,disabled reading of files of non-process-effective-group)
fi
]
)
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(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)
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)
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(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 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 Enable building of the convenience library
dnl and set LIBLTDL accordingly
AC_LIBLTDL_CONVENIENCE(src/libltdl)
dnl Substitute INCLTDL and LIBLTDL in the Makefiles
AC_SUBST(INCLTDL)
AC_SUBST(LIBLTDL)
dnl Configure libltdl
AC_CONFIG_SUBDIRS(src/libltdl)
dnl moved from src/libltdl/configure.in
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 Checks for header files.
AC_HEADER_TIME
AC_CHECK_HEADERS(
unistd.h \
process.h \
stddef.h \
stdarg.h \
fcntl.h \
sys/stat.h \
io.h \
stdio.h \
errno.h \
ctype.h \
math.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
)
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)
;;
esac
AC_CHECK_LIB(m, sin)
dnl Checks for functions.
AC_CHECK_FUNCS(
trunc \
round \
sign \
flock \
_locking \
fcntl \
lockf \
getrusage
)
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.]))
AC_MSG_CHECKING(whether compiler supports pragma pack)
AC_TRY_COMPILE(
,
#pragma pack(1)
struct must_be_1_byte {
char c;
};
#pragma pack()
if(sizeof(must_be_1_byte)!=1)
return 1;
,[
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 <new>
#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 this is used in targets/cgi/parser3.C to load root config
rootconfigdir=$e_sysconfdir
AC_SUBST(rootconfigdir)
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 makefiles
AM_CONFIG_HEADER(src/include/pa_config_auto.h)
AC_OUTPUT(Makefile src/Makefile src/libltdl/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/patches/Makefile src/pcre/Makefile src/targets/Makefile src/targets/cgi/pa_config_paths.h src/targets/cgi/Makefile src/targets/apache13/Makefile src/targets/apache13/p3runConfigure src/targets/isapi/Makefile etc/parser3.charsets/Makefile etc/parser3.conf etc/Makefile)
E-mail: