File:  [parser3project] / parser3 / Attic / configure.in
Revision 1.141: download - view: text, annotated - select for diffs - revision graph
Sat Jun 9 11:14:40 2012 UTC (14 years, 1 month ago) by moko
Branches: MAIN
CVS tags: HEAD
Some beauty added :)

dnl Process this file with autoconf to produce a configure script.
AC_INIT(README)
AC_PREREQ(2.57)

AM_INIT_AUTOMAKE(parser, 3.4.2b, nodefine)

dnl expand srcdir
P3S=`cd $srcdir/src ; pwd`
AC_SUBST(P3S)

dnl AC_CANONICAL_SYSTEM
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_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 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
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_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.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 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/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)

E-mail: