for ELTL. This is a new version of the work started in 2008 with LTL and ELTL formulae now sharing the same class hierarchy. * configure.ac: Adjust for src/eltlparse/ and src/eltltest/ directories, and call AX_BOOST_BASE. * m4/boost.m4: New file defining AX_BOOST_BASE([MINIMUM-VERSION]). * src/Makefile.am: Add eltlparse and eltltest. * src/eltlparse/: New directory. Contains the ELTL parser. * src/eltltest/: New directory. Contains tests related to ELTL (parser and AST). * src/ltlast/Makefile.am: Adjust for ELTL AST files. * src/ltlast/automatop.cc, src/ltlast/automatop.hh: New files. Represent automaton operators nodes used in ELTL ASTs. * src/ltlast/nfa.cc, src/ltlast/nfa.hh: New files. Represent simple NFAs used internally by automatop nodes. * src/ltlast/allnode.hh, src/ltlast/predecl.hh, src/ltlast/visitor.hh: Adjust for automatop. * src/ltlvisit/basicreduce.cc, src/ltlvisit/clone.cc, src/ltlvisit/clone.hh, src/ltlvisit/contain.cc, src/ltlvisit/dotty.cc, src/ltlvisit/nenoform.cc, src/ltlvisit/postfix.cc, src/ltlvisit/postfix.hh, src/ltlvisit/reduce.cc, src/ltlvisit/syntimpl.cc, src/ltlvisit/tostring.cc: Because LTL and ELTL formulae share the same class hierarchy, LTL visitors need to handle automatop nodes to compile. When it's meaningful the visitor applies on automatop nodes or simply assert(0) otherwise. * src/tgba/tgbabddconcretefactory.cc (create_anonymous_state), src/tgba/tgbabddconcretefactory.hh (create_anonymous_state): New function used by the LaCIM translation algorithm for ELTL. * src/tgbaalgos/Makefile.am: Adjust for eltl2tgba_lacim* files. * src/tgbaalgos/eltl2tgba_lacim.cc, src/tgbaalgos/eltl2tgba_lacim.hh: New files. Implementation of the LaCIM translation algorithm for ELTL. * src/tgbaalgos/ltl2tgba_fm.cc, src/tgbaalgos/ltl2tgba_lacim.cc: Handle automatop nodes in the translation by an assert(0). * src/tgbatest/Makefile.am: Adjust for eltl2tgba.* files. * src/src/tgbatest/eltl2tgba.cc, src/tgbatest/eltl2tgba.test: New files
194 lines
6.4 KiB
Text
194 lines
6.4 KiB
Text
##### http://autoconf-archive.cryp.to/ax_boost_base.html
|
|
#
|
|
# SYNOPSIS
|
|
#
|
|
# AX_BOOST_BASE([MINIMUM-VERSION])
|
|
#
|
|
# DESCRIPTION
|
|
#
|
|
# Test for the Boost C++ libraries of a particular version (or newer)
|
|
#
|
|
# If no path to the installed boost library is given the macro
|
|
# searchs under /usr, /usr/local, /opt and /opt/local and evaluates
|
|
# the $BOOST_ROOT environment variable. Further documentation is
|
|
# available at <http://randspringer.de/boost/index.html>.
|
|
#
|
|
# This macro calls:
|
|
#
|
|
# AC_SUBST(BOOST_CPPFLAGS) / AC_SUBST(BOOST_LDFLAGS)
|
|
#
|
|
# And sets:
|
|
#
|
|
# HAVE_BOOST
|
|
#
|
|
# LAST MODIFICATION
|
|
#
|
|
# 2007-07-28
|
|
#
|
|
# COPYLEFT
|
|
#
|
|
# Copyright (c) 2007 Thomas Porschberg <thomas@randspringer.de>
|
|
#
|
|
# Copying and distribution of this file, with or without
|
|
# modification, are permitted in any medium without royalty provided
|
|
# the copyright notice and this notice are preserved.
|
|
|
|
AC_DEFUN([AX_BOOST_BASE],
|
|
[
|
|
AC_ARG_WITH([boost],
|
|
AS_HELP_STRING([--with-boost@<:@=DIR@:>@], [use boost (default is yes) - it is possible to specify the root directory for boost (optional)]),
|
|
[
|
|
if test "$withval" = "no"; then
|
|
want_boost="no"
|
|
elif test "$withval" = "yes"; then
|
|
want_boost="yes"
|
|
ac_boost_path=""
|
|
else
|
|
want_boost="yes"
|
|
ac_boost_path="$withval"
|
|
fi
|
|
],
|
|
[want_boost="yes"])
|
|
|
|
if test "x$want_boost" = "xyes"; then
|
|
boost_lib_version_req=ifelse([$1], ,1.20.0,$1)
|
|
boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([[0-9]]*\.[[0-9]]*\)'`
|
|
boost_lib_version_req_major=`expr $boost_lib_version_req : '\([[0-9]]*\)'`
|
|
boost_lib_version_req_minor=`expr $boost_lib_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
|
|
boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
|
|
if test "x$boost_lib_version_req_sub_minor" = "x" ; then
|
|
boost_lib_version_req_sub_minor="0"
|
|
fi
|
|
WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+ $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor`
|
|
AC_MSG_CHECKING(for boostlib >= $boost_lib_version_req)
|
|
succeeded=no
|
|
|
|
dnl first we check the system location for boost libraries
|
|
dnl this location ist chosen if boost libraries are installed with the --layout=system option
|
|
dnl or if you install boost with RPM
|
|
if test "$ac_boost_path" != ""; then
|
|
BOOST_LDFLAGS="-L$ac_boost_path/lib"
|
|
BOOST_CPPFLAGS="-I$ac_boost_path/include"
|
|
else
|
|
for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
|
|
if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
|
|
BOOST_LDFLAGS="-L$ac_boost_path_tmp/lib"
|
|
BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
|
|
break;
|
|
fi
|
|
done
|
|
fi
|
|
|
|
CPPFLAGS_SAVED="$CPPFLAGS"
|
|
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
|
|
|
LDFLAGS_SAVED="$LDFLAGS"
|
|
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
|
|
|
AC_LANG_PUSH(C++)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
@%:@include <boost/version.hpp>
|
|
]], [[
|
|
#if BOOST_VERSION >= $WANT_BOOST_VERSION
|
|
// Everything is okay
|
|
#else
|
|
# error Boost version is too old
|
|
#endif
|
|
]])],[
|
|
AC_MSG_RESULT(yes)
|
|
succeeded=yes
|
|
found_system=yes
|
|
],[
|
|
])
|
|
AC_LANG_POP([C++])
|
|
|
|
|
|
|
|
dnl if we found no boost with system layout we search for boost libraries
|
|
dnl built and installed without the --layout=system option or for a staged(not installed) version
|
|
if test "x$succeeded" != "xyes"; then
|
|
_version=0
|
|
if test "$ac_boost_path" != ""; then
|
|
BOOST_LDFLAGS="-L$ac_boost_path/lib"
|
|
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
|
|
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
|
|
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
|
|
V_CHECK=`expr $_version_tmp \> $_version`
|
|
if test "$V_CHECK" = "1" ; then
|
|
_version=$_version_tmp
|
|
fi
|
|
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
|
|
BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
|
|
done
|
|
fi
|
|
else
|
|
for ac_boost_path in /usr /usr/local /opt /opt/local ; do
|
|
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
|
|
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
|
|
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
|
|
V_CHECK=`expr $_version_tmp \> $_version`
|
|
if test "$V_CHECK" = "1" ; then
|
|
_version=$_version_tmp
|
|
best_path=$ac_boost_path
|
|
fi
|
|
done
|
|
fi
|
|
done
|
|
|
|
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
|
|
BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
|
|
BOOST_LDFLAGS="-L$best_path/lib"
|
|
|
|
if test "x$BOOST_ROOT" != "x"; then
|
|
if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/lib" && test -r "$BOOST_ROOT/stage/lib"; then
|
|
version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
|
|
stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
|
|
stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
|
|
V_CHECK=`expr $stage_version_shorten \>\= $_version`
|
|
if test "$V_CHECK" = "1" ; then
|
|
AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
|
|
BOOST_CPPFLAGS="-I$BOOST_ROOT"
|
|
BOOST_LDFLAGS="-L$BOOST_ROOT/stage/lib"
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
|
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
|
|
|
AC_LANG_PUSH(C++)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
@%:@include <boost/version.hpp>
|
|
]], [[
|
|
#if BOOST_VERSION >= $WANT_BOOST_VERSION
|
|
// Everything is okay
|
|
#else
|
|
# error Boost version is too old
|
|
#endif
|
|
]])],[
|
|
AC_MSG_RESULT(yes)
|
|
succeeded=yes
|
|
found_system=yes
|
|
],[
|
|
])
|
|
AC_LANG_POP([C++])
|
|
fi
|
|
|
|
if test "$succeeded" != "yes" ; then
|
|
CPPFLAGS="$CPPFLAGS_SAVED"
|
|
LDFLAGS="$LDFLAGS_SAVED"
|
|
|
|
if test "$_version" = "0" ; then
|
|
AC_MSG_ERROR([[We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.]])
|
|
else
|
|
AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).])
|
|
fi
|
|
else
|
|
AC_SUBST(BOOST_CPPFLAGS)
|
|
AC_SUBST(BOOST_LDFLAGS)
|
|
AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
|
|
fi
|
|
fi
|
|
|
|
])
|