added m4 macros for boost C++ headers and libs, hopefully making better autoconf...
authorMarc Cromme <marc@indexdata.dk>
Fri, 23 Feb 2007 18:55:55 +0000 (18:55 +0000)
committerMarc Cromme <marc@indexdata.dk>
Fri, 23 Feb 2007 18:55:55 +0000 (18:55 +0000)
12 files changed:
ax_boost.m4 [new file with mode: 0644]
ax_boost_base.m4 [new file with mode: 0644]
ax_boost_date_time.m4 [new file with mode: 0644]
ax_boost_filesystem.m4 [new file with mode: 0644]
ax_boost_iostreams.m4 [new file with mode: 0644]
ax_boost_program_options.m4 [new file with mode: 0644]
ax_boost_python.m4 [new file with mode: 0644]
ax_boost_regex.m4 [new file with mode: 0644]
ax_boost_serialization.m4 [new file with mode: 0644]
ax_boost_signals.m4 [new file with mode: 0644]
ax_boost_thread.m4 [new file with mode: 0644]
ax_boost_unit_test_framework.m4 [new file with mode: 0644]

diff --git a/ax_boost.m4 b/ax_boost.m4
new file mode 100644 (file)
index 0000000..9662af8
--- /dev/null
@@ -0,0 +1,517 @@
+##### http://autoconf-archive.cryp.to/ax_boost.html
+#
+# SYNOPSIS
+#
+#   AX_BOOST([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# 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, and /opt, 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)
+#     AC_SUBST(BOOST_FILESYSTEM_LIB)
+#     AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB)
+#     AC_SUBST(BOOST_THREAD_LIB)
+#     AC_SUBST(BOOST_IOSTREAMS_LIB)
+#     AC_SUBST(BOOST_SERIALIZATION_LIB)
+#     AC_SUBST(BOOST_WSERIALIZATION_LIB)
+#     AC_SUBST(BOOST_SIGNALS_LIB)
+#     AC_SUBST(BOOST_DATE_TIME_LIB)
+#     AC_SUBST(BOOST_REGEX_LIB)
+#     AC_SUBST(BOOST_UNIT_TEST_FRAMEWORK_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST
+#     HAVE_BOOST_FILESYSTEM
+#     HAVE_BOOST_PROGRAM_OPTIONS
+#     HAVE_BOOST_THREAD
+#     HAVE_BOOST_IOSTREAMS
+#     HAVE_BOOST_SERIALIZATION
+#     HAVE_BOOST_SIGNALS
+#     HAVE_BOOST_DATE_TIME
+#     HAVE_BOOST_REGEX
+#     HAVE_BOOST_UNIT_TEST_FRAMEWORK
+#
+# LAST MODIFICATION
+#
+#   2006-12-28
+#
+# COPYLEFT
+#
+#   Copyright (c) 2006 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],
+[
+    AC_ARG_WITH([boost],
+                AS_HELP_STRING([--with-boost=DIR],
+                [use boost (default is NO) specify the root directory for boost library (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"])
+
+    AC_CANONICAL_BUILD
+       if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+               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 ; 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"
+               export CPPFLAGS
+
+               LDFLAGS_SAVED="$LDFLAGS"
+               LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+               export 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
+         ifelse([$2], , :, [$2])
+       ],
+       [
+       ])
+       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 ; 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"
+                       export CPPFLAGS
+                       LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+                       export 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 ($_version))
+                succeeded=yes
+         ifelse([$2], , :, [$2])
+       ],
+       [
+         AC_MSG_RESULT(no ($_version))
+         ifelse([$3], , :, [$3])
+       ])
+       AC_LANG_POP([C++])
+               fi
+
+               if test "$succeeded" != "yes" ; then
+                       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_ERROR('Your boost libraries seems to old (version $_version).  We need at least $boost_lib_version_shorten')
+                       fi
+               else
+                       AC_SUBST(BOOST_CPPFLAGS)
+                       AC_SUBST(BOOST_LDFLAGS)
+                       AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
+
+                       AC_CACHE_CHECK([whether the Boost::Filesystem library is available],
+                                                  ax_cv_boost_filesystem,
+                                               [AC_LANG_PUSH([C++])
+                        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/filesystem/path.hpp>]],
+                                   [[using namespace boost::filesystem;
+                                   path my_path( "foo/bar/data.txt" );
+                                   return 0;]]),
+                                              ax_cv_boost_filesystem=yes, ax_cv_boost_filesystem=no)
+                                   AC_LANG_POP([C++])
+                       ])
+                       if test "$ax_cv_boost_filesystem" = "yes"; then
+                               AC_DEFINE(HAVE_BOOST_FILESYSTEM,,[define if the Boost::FILESYSTEM library is available])
+                               BN=boost_filesystem
+                               for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main,
+                                 [BOOST_FILESYSTEM_LIB="-l$ax_lib" AC_SUBST(BOOST_FILESYSTEM_LIB) link_filesystem="yes" break],
+                                 [link_filesystem="no"])
+                               done
+                               if test "x$link_filesystem" = "xno"; then
+                                       AC_MSG_NOTICE(Could not link against $ax_lib !)
+                               fi
+                       fi
+
+                       AC_CACHE_CHECK([whether the Boost::Program_Options library is available],
+                                                  ax_cv_boost_program_options,
+                                                  [AC_LANG_PUSH([C++])
+                                      AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/program_options.hpp>]],
+                                   [[boost::program_options::options_description generic("Generic options");
+                                   return 0;]]),
+                           ax_cv_boost_program_options=yes, ax_cv_boost_program_options=no)
+                           AC_LANG_POP([C++])
+                       ])
+                       if test "$ax_cv_boost_program_options" = yes; then
+                               AC_DEFINE(HAVE_BOOST_PROGRAM_OPTIONS,,[define if the Boost::PROGRAM_OPTIONS library is available])
+                               BN=boost_program_options
+                               for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main,
+                                 [BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib" AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB) link_program_options="yes" break],
+                                 [link_program_options="no"])
+                               done
+                               if test "x$link_program_options="no"" = "xno"; then
+                                       AC_MSG_NOTICE(Could not link against $ax_lib !)
+                               fi
+                       fi
+
+                       AC_CACHE_CHECK(whether the Boost::Thread library is available,
+                                                  ax_cv_boost_thread,
+                                               [AC_LANG_PUSH([C++])
+                        CXXFLAGS_SAVE=$CXXFLAGS
+
+                        if test "x$build_os" = "xsolaris" ; then
+                                CXXFLAGS="-pthreads $CXXFLAGS"
+                        elif test "x$build_os" = "xming32" ; then
+                                CXXFLAGS="-mthreads $CXXFLAGS"
+                        else
+                               CXXFLAGS="-pthread $CXXFLAGS"
+                        fi
+                        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/thread/thread.hpp>]],
+                                   [[boost::thread_group thrds;
+                                   return 0;]]),
+                   ax_cv_boost_thread=yes, ax_cv_boost_thread=no)
+                        CXXFLAGS=$CXXFLAGS_SAVE
+             AC_LANG_POP([C++])
+                       ])
+                       if test "x$ax_cv_boost_thread" = "xyes"; then
+               if test "x$build_os" = "xsolaris" ; then
+                                 BOOST_CPPFLAGS="-pthreads $BOOST_CPPFLAGS"
+                          elif test "x$build_os" = "xming32" ; then
+                                 BOOST_CPPFLAGS="-mthreads $BOOST_CPPFLAGS"
+                          else
+                                 BOOST_CPPFLAGS="-pthread $BOOST_CPPFLAGS"
+                          fi
+
+                               AC_SUBST(BOOST_CPPFLAGS)
+                               AC_DEFINE(HAVE_BOOST_THREAD,,[define if the Boost::THREAD library is available])
+                               BN=boost_thread
+                       LDFLAGS_SAVE=$LDFLAGS
+                        case "x$build_os" in
+                          *bsd* )
+                               LDFLAGS="-pthread $LDFLAGS"
+                          break;
+                          ;;
+                        esac
+
+                               for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main, [BOOST_THREAD_LIB="-l$ax_lib" AC_SUBST(BOOST_THREAD_LIB) link_thread="yes" break],
+                                 [link_thread="no"])
+                               done
+                               if test "x$link_thread" = "xno"; then
+                                       AC_MSG_NOTICE(Could not link against $ax_lib !)
+                else
+                    case "x$build_os" in
+                       *bsd* )
+                       BOOST_LDFLAGS="-pthread $BOOST_LDFLAGS"
+                       break;
+                       ;;
+                    esac
+                               fi
+                       fi
+
+                       AC_CACHE_CHECK(whether the Boost::IOStreams library is available,
+                                                  ax_cv_boost_iostreams,
+                                               [AC_LANG_PUSH([C++])
+                        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/iostreams/filtering_stream.hpp>
+                                                                                                @%:@include <boost/range/iterator_range.hpp>
+                                                                                               ]],
+                                   [[std::string  input = "Hello World!";
+                                                                        namespace io = boost::iostreams;
+                                                                        io::filtering_istream  in(boost::make_iterator_range(input));
+                                                                        return 0;
+                                   ]]),
+                   ax_cv_boost_iostreams=yes, ax_cv_boost_iostreams=no)
+                        AC_LANG_POP([C++])
+                       ])
+                       if test "x$ax_cv_boost_iostreams" = "xyes"; then
+                               AC_DEFINE(HAVE_BOOST_IOSTREAMS,,[define if the Boost::IOStreams library is available])
+                               BN=boost_iostreams
+                               for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main, [BOOST_IOSTREAMS_LIB="-l$ax_lib" AC_SUBST(BOOST_IOSTREAMS_LIB) link_thread="yes" break],
+                                 [link_thread="no"])
+                               done
+                               if test "x$link_thread" = "xno"; then
+                                       AC_MSG_NOTICE(Could not link against $ax_lib !)
+                               fi
+                       fi
+
+                       AC_CACHE_CHECK(whether the Boost::Serialization library is available,
+                                                  ax_cv_boost_serialization,
+                                               [AC_LANG_PUSH([C++])
+                        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <fstream>
+                                                                                                @%:@include <boost/archive/text_oarchive.hpp>
+                                                 @%:@include <boost/archive/text_iarchive.hpp>
+                                                                                               ]],
+                                   [[std::ofstream ofs("filename");
+                                                                       boost::archive::text_oarchive oa(ofs);
+                                                                        return 0;
+                                   ]]),
+                   ax_cv_boost_serialization=yes, ax_cv_boost_serialization=no)
+                        AC_LANG_POP([C++])
+                       ])
+                       if test "x$ax_cv_boost_serialization" = "xyes"; then
+                               AC_DEFINE(HAVE_BOOST_SERIALIZATION,,[define if the Boost::Serialization library is available])
+                               BN=boost_serialization
+                               for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main,
+                                 [BOOST_SERIALIZATION_LIB="-l$ax_lib" AC_SUBST(BOOST_SERIALIZATION_LIB) link_serialization="yes" break],
+                                 [link_serialization="no"])
+                               done
+                               if test "x$link_serialization" = "xno"; then
+                                       AC_MSG_NOTICE(Could not link against $ax_lib !)
+                               fi
+
+                               BN=boost_wserialization
+                               for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main,
+                                 [BOOST_WSERIALIZATION_LIB="-l$ax_lib" AC_SUBST(BOOST_WSERIALIZATION_LIB) link_wserialization="yes" break],
+                                 [link_wserialization="no"])
+                               done
+                               if test "x$link_wserialization" = "xno"; then
+                                       AC_MSG_NOTICE(Could not link against $ax_lib !)
+                               fi
+                       fi
+
+                       AC_CACHE_CHECK(whether the Boost::Signals library is available,
+                                                  ax_cv_boost_signals,
+                                               [AC_LANG_PUSH([C++])
+                        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/signal.hpp>
+                                                                                               ]],
+                                   [[boost::signal<void ()> sig;
+                                     return 0;
+                                   ]]),
+                   ax_cv_boost_signals=yes, ax_cv_boost_signals=no)
+                        AC_LANG_POP([C++])
+                       ])
+                       if test "x$ax_cv_boost_signals" = "xyes"; then
+                               AC_DEFINE(HAVE_BOOST_SIGNALS,,[define if the Boost::Signals library is available])
+                               BN=boost_signals
+                               for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main, [BOOST_SIGNALS_LIB="-l$ax_lib" AC_SUBST(BOOST_SIGNALS_LIB) link_signals="yes" break],
+                                 [link_signals="no"])
+                               done
+                               if test "x$link_signals" = "xno"; then
+                                       AC_MSG_NOTICE(Could not link against $ax_lib !)
+                               fi
+                       fi
+
+                       AC_CACHE_CHECK(whether the Boost::Date_Time library is available,
+                                                  ax_cv_boost_date_time,
+                                               [AC_LANG_PUSH([C++])
+                        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/date_time/gregorian/gregorian_types.hpp>
+                                                                                               ]],
+                                   [[using namespace boost::gregorian; date d(2002,Jan,10);
+                                     return 0;
+                                   ]]),
+                   ax_cv_boost_date_time=yes, ax_cv_boost_date_time=no)
+                        AC_LANG_POP([C++])
+                       ])
+                       if test "x$ax_cv_boost_date_time" = "xyes"; then
+                               AC_DEFINE(HAVE_BOOST_DATE_TIME,,[define if the Boost::Date_Time library is available])
+                               BN=boost_date_time
+                               for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main, [BOOST_DATE_TIME_LIB="-l$ax_lib" AC_SUBST(BOOST_DATE_TIME_LIB) link_thread="yes" break],
+                                 [link_thread="no"])
+                               done
+                               if test "x$link_thread"="no" = "xno"; then
+                                       AC_MSG_NOTICE(Could not link against $ax_lib !)
+                               fi
+                       fi
+
+                       AC_CACHE_CHECK(whether the Boost::Regex library is available,
+                                                  ax_cv_boost_regex,
+                                               [AC_LANG_PUSH([C++])
+                        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/regex.hpp>
+                                                                                               ]],
+                                   [[boost::regex r(); return 0;]]),
+                   ax_cv_boost_regex=yes, ax_cv_boost_regex=no)
+                        AC_LANG_POP([C++])
+                       ])
+                       if test "x$ax_cv_boost_regex" = "xyes"; then
+                               AC_DEFINE(HAVE_BOOST_REGEX,,[define if the Boost::Regex library is available])
+                               BN=boost_regex
+                               for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main, [BOOST_REGEX_LIB="-l$ax_lib" AC_SUBST(BOOST_REGEX_LIB) link_regex="yes" break],
+                                 [link_regex="no"])
+                               done
+                               if test "x$link_regex" = "xno"; then
+                                       AC_MSG_NOTICE(Could not link against $ax_lib !)
+                               fi
+                       fi
+
+                       AC_CACHE_CHECK(whether the Boost::UnitTestFramework library is available,
+                                                  ax_cv_boost_unit_test_framework,
+                                               [AC_LANG_PUSH([C++])
+                        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/test/unit_test.hpp>]],
+                                    [[using boost::unit_test::test_suite;
+                                                        test_suite* test= BOOST_TEST_SUITE( "Unit test example 1" ); return 0;]]),
+                   ax_cv_boost_unit_test_framework=yes, ax_cv_boost_unit_test_framework=no)
+                        AC_LANG_POP([C++])
+                       ])
+                       if test "x$ax_cv_boost_unit_test_framework" = "xyes"; then
+               AC_DEFINE(HAVE_BOOST_UNIT_TEST_FRAMEWORK,,[define if the Boost::Unit_test_framework library is available])
+                       BN=boost_unit_test_framework
+               saved_ldflags="${LDFLAGS}"
+                       for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                          lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                          $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                LDFLAGS="${LDFLAGS} -l$ax_lib"
+                       AC_CACHE_CHECK(the name of the Boost::UnitTestFramework library,
+                                                  ax_cv_boost_unit_test_framework_link,
+                                               [AC_LANG_PUSH([C++])
+                   AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/test/unit_test.hpp>
+                                                     using boost::unit_test::test_suite;
+                                                     test_suite* init_unit_test_suite( int argc, char * argv[] ) {
+                                                     test_suite* test= BOOST_TEST_SUITE( "Unit test example 1" );
+                                                     return test;
+                                                     }
+                                                   ]],
+                                 [[ return 0;]])],
+                                 link_unit_test_framework="yes",link_unit_test_framework="no")
+                        AC_LANG_POP([C++])
+               ])
+                LDFLAGS="${saved_ldflags}"
+                           if test "x$link_unit_test_framework" = "xyes"; then
+                    BOOST_UNIT_TEST_FRAMEWORK_LIB="-l$ax_lib"
+                    AC_SUBST(BOOST_UNIT_TEST_FRAMEWORK_LIB)
+                                       break
+                               fi
+              done
+                           if test "x$link_unit_test_framework" = "xno"; then
+                                  AC_MSG_NOTICE(Could not link against $ax_lib !)
+                               fi
+                       fi
+               fi
+        CPPFLAGS="$CPPFLAGS_SAVED"
+        LDFLAGS="$LDFLAGS_SAVED"
+       fi
+])
diff --git a/ax_boost_base.m4 b/ax_boost_base.m4
new file mode 100644 (file)
index 0000000..575a51e
--- /dev/null
@@ -0,0 +1,198 @@
+##### 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, and /opt, 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
+#
+#   2006-12-28
+#
+# COPYLEFT
+#
+#   Copyright (c) 2006 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 No) - 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 ; 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"
+       export CPPFLAGS
+
+       LDFLAGS_SAVED="$LDFLAGS"
+       LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+       export 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 ; 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"
+               export CPPFLAGS
+               LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+               export 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
+               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
+
+        CPPFLAGS="$CPPFLAGS_SAVED"
+               LDFLAGS="$LDFLAGS_SAVED"
+fi
+
+])
diff --git a/ax_boost_date_time.m4 b/ax_boost_date_time.m4
new file mode 100644 (file)
index 0000000..804ba0e
--- /dev/null
@@ -0,0 +1,100 @@
+##### http://autoconf-archive.cryp.to/ax_boost_date_time.html
+#
+# SYNOPSIS
+#
+#   AX_BOOST_DATE_TIME
+#
+# DESCRIPTION
+#
+#   Test for Date_Time library from the Boost C++ libraries. The macro
+#   requires a preceding call to AX_BOOST_BASE. Further documentation
+#   is available at <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_DATE_TIME_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_DATE_TIME
+#
+# LAST MODIFICATION
+#
+#   2006-12-28
+#
+# COPYLEFT
+#
+#   Copyright (c) 2006 Thomas Porschberg <thomas@randspringer.de>
+#   Copyright (c) 2006 Michael Tindal <mtindal@paradoxpoint.com>
+#
+#   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_DATE_TIME],
+[
+       AC_ARG_WITH([boost-date-time],
+       AS_HELP_STRING([--with-boost-date-time@<:@=special-lib@:>@],
+                   [use the Date_Time library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-date-time=boost_date_time-gcc-mt-d-1_33_1 ]),
+        [
+        if test "$withval" = "no"; then
+                       want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_date_time_lib=""
+        else
+                   want_boost="yes"
+               ax_boost_user_date_time_lib="$withval"
+               fi
+        ],
+        [want_boost="yes"]
+       )
+
+       if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+               CPPFLAGS_SAVED="$CPPFLAGS"
+               CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+               export CPPFLAGS
+
+               LDFLAGS_SAVED="$LDFLAGS"
+               LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+               export LDFLAGS
+
+        AC_CACHE_CHECK(whether the Boost::Date_Time library is available,
+                                          ax_cv_boost_date_time,
+        [AC_LANG_PUSH([C++])
+                AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/date_time/gregorian/gregorian_types.hpp>]],
+                                   [[using namespace boost::gregorian; date d(2002,Jan,10);
+                                     return 0;
+                                   ]]),
+         ax_cv_boost_date_time=yes, ax_cv_boost_date_time=no)
+         AC_LANG_POP([C++])
+               ])
+               if test "x$ax_cv_boost_date_time" = "xyes"; then
+                       AC_DEFINE(HAVE_BOOST_DATE_TIME,,[define if the Boost::Date_Time library is available])
+                       BN=boost_date_time
+            if test "x$ax_boost_user_date_time_lib" = "x"; then
+                          for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                               lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                               $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                             AC_CHECK_LIB($ax_lib, main, [BOOST_DATE_TIME_LIB="-l$ax_lib" AC_SUBST(BOOST_DATE_TIME_LIB) link_date_time="yes" break],
+                               [link_date_time="no"])
+                          done
+            else
+               for ax_lib in $ax_boost_user_date_time_lib $BN-$ax_boost_user_date_time_lib; do
+                                     AC_CHECK_LIB($ax_lib, main,
+                                   [BOOST_DATE_TIME_LIB="-l$ax_lib" AC_SUBST(BOOST_DATE_TIME_LIB) link_date_time="yes" break],
+                                   [link_date_time="no"])
+                  done
+
+            fi
+                       if test "x$link_date_time" = "xno"; then
+                               AC_MSG_ERROR(Could not link against $ax_lib !)
+                       fi
+               fi
+
+               CPPFLAGS="$CPPFLAGS_SAVED"
+       LDFLAGS="$LDFLAGS_SAVED"
+       fi
+])
diff --git a/ax_boost_filesystem.m4 b/ax_boost_filesystem.m4
new file mode 100644 (file)
index 0000000..d0e8005
--- /dev/null
@@ -0,0 +1,101 @@
+##### http://autoconf-archive.cryp.to/ax_boost_filesystem.html
+#
+# SYNOPSIS
+#
+#   AX_BOOST_FILESYSTEM
+#
+# DESCRIPTION
+#
+#   Test for Filesystem library from the Boost C++ libraries. The macro
+#   requires a preceding call to AX_BOOST_BASE. Further documentation
+#   is available at <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_FILESYSTEM_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_FILESYSTEM
+#
+# LAST MODIFICATION
+#
+#   2006-12-28
+#
+# COPYLEFT
+#
+#   Copyright (c) 2006 Thomas Porschberg <thomas@randspringer.de>
+#   Copyright (c) 2006 Michael Tindal <mtindal@paradoxpoint.com>
+#
+#   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_FILESYSTEM],
+[
+       AC_ARG_WITH([boost-filesystem],
+       AS_HELP_STRING([--with-boost-filesystem@<:@=special-lib@:>@],
+                   [use the Filesystem library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-filesystem=boost_filesystem-gcc-mt ]),
+        [
+        if test "$withval" = "no"; then
+                       want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_filesystem_lib=""
+        else
+                   want_boost="yes"
+               ax_boost_user_filesystem_lib="$withval"
+               fi
+        ],
+        [want_boost="yes"]
+       )
+
+       if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+               CPPFLAGS_SAVED="$CPPFLAGS"
+               CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+               export CPPFLAGS
+
+               LDFLAGS_SAVED="$LDFLAGS"
+               LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+               export LDFLAGS
+
+        AC_CACHE_CHECK(whether the Boost::Filesystem library is available,
+                                          ax_cv_boost_filesystem,
+        [AC_LANG_PUSH([C++])
+         AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/filesystem/path.hpp>]],
+                                   [[using namespace boost::filesystem;
+                                   path my_path( "foo/bar/data.txt" );
+                                   return 0;]]),
+                                              ax_cv_boost_filesystem=yes, ax_cv_boost_filesystem=no)
+         AC_LANG_POP([C++])
+               ])
+               if test "x$ax_cv_boost_filesystem" = "xyes"; then
+                       AC_DEFINE(HAVE_BOOST_FILESYSTEM,,[define if the Boost::Filesystem library is available])
+                       BN=boost_filesystem
+            if test "x$ax_boost_user_filesystem_lib" = "x"; then
+                       for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main,
+                                 [BOOST_FILESYSTEM_LIB="-l$ax_lib" AC_SUBST(BOOST_FILESYSTEM_LIB) link_filesystem="yes" break],
+                                 [link_filesystem="no"])
+                               done
+            else
+               for ax_lib in $ax_boost_user_filesystem_lib $BN-$ax_boost_user_filesystem_lib; do
+                                     AC_CHECK_LIB($ax_lib, main,
+                                   [BOOST_FILESYSTEM_LIB="-l$ax_lib" AC_SUBST(BOOST_FILESYSTEM_LIB) link_filesystem="yes" break],
+                                   [link_filesystem="no"])
+                  done
+
+            fi
+                       if test "x$link_filesystem" = "xno"; then
+                               AC_MSG_ERROR(Could not link against $ax_lib !)
+                       fi
+               fi
+
+               CPPFLAGS="$CPPFLAGS_SAVED"
+       LDFLAGS="$LDFLAGS_SAVED"
+       fi
+])
diff --git a/ax_boost_iostreams.m4 b/ax_boost_iostreams.m4
new file mode 100644 (file)
index 0000000..ffda2a3
--- /dev/null
@@ -0,0 +1,103 @@
+##### http://autoconf-archive.cryp.to/ax_boost_iostreams.html
+#
+# SYNOPSIS
+#
+#   AX_BOOST_IOSTREAMS
+#
+# DESCRIPTION
+#
+#   Test for IOStreams library from the Boost C++ libraries. The macro
+#   requires a preceding call to AX_BOOST_BASE. Further documentation
+#   is available at <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_IOSTREAMS_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_IOSTREAMS
+#
+# LAST MODIFICATION
+#
+#   2006-12-28
+#
+# COPYLEFT
+#
+#   Copyright (c) 2006 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_IOSTREAMS],
+[
+       AC_ARG_WITH([boost-iostreams],
+       AS_HELP_STRING([--with-boost-iostreams@<:@=special-lib@:>@],
+                   [use the IOStreams library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-iostreams=boost_iostreams-gcc-mt-d-1_33_1 ]),
+        [
+        if test "$withval" = "no"; then
+                       want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_iostreams_lib=""
+        else
+                   want_boost="yes"
+               ax_boost_user_iostreams_lib="$withval"
+               fi
+        ],
+        [want_boost="yes"]
+       )
+
+       if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+               CPPFLAGS_SAVED="$CPPFLAGS"
+               CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+               export CPPFLAGS
+
+               LDFLAGS_SAVED="$LDFLAGS"
+               LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+               export LDFLAGS
+
+        AC_CACHE_CHECK(whether the Boost::IOStreams library is available,
+                                          ax_cv_boost_iostreams,
+        [AC_LANG_PUSH([C++])
+                AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/iostreams/filtering_stream.hpp>
+                                                                                        @%:@include <boost/range/iterator_range.hpp>
+                                                                                       ]],
+                                  [[std::string  input = "Hello World!";
+                                                                        namespace io = boost::iostreams;
+                                                                        io::filtering_istream  in(boost::make_iterator_range(input));
+                                                                        return 0;
+                                   ]]),
+                             ax_cv_boost_iostreams=yes, ax_cv_boost_iostreams=no)
+         AC_LANG_POP([C++])
+               ])
+               if test "x$ax_cv_boost_iostreams" = "xyes"; then
+                       AC_DEFINE(HAVE_BOOST_IOSTREAMS,,[define if the Boost::IOStreams library is available])
+                       BN=boost_iostreams
+            if test "x$ax_boost_user_iostreams_lib" = "x"; then
+                               for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main, [BOOST_IOSTREAMS_LIB="-l$ax_lib" AC_SUBST(BOOST_IOSTREAMS_LIB) link_thread="yes" break],
+                                 [link_thread="no"])
+                               done
+            else
+               for ax_lib in $ax_boost_user_iostreams_lib $BN-$ax_boost_user_iostreams_lib; do
+                                     AC_CHECK_LIB($ax_lib, main,
+                                   [BOOST_IOSTREAMS_LIB="-l$ax_lib" AC_SUBST(BOOST_IOSTREAMS_LIB) link_iostreams="yes" break],
+                                   [link_iostreams="no"])
+                  done
+
+            fi
+                       if test "x$link_iostreams" = "xno"; then
+                               AC_MSG_ERROR(Could not link against $ax_lib !)
+                       fi
+               fi
+
+               CPPFLAGS="$CPPFLAGS_SAVED"
+       LDFLAGS="$LDFLAGS_SAVED"
+       fi
+])
diff --git a/ax_boost_program_options.m4 b/ax_boost_program_options.m4
new file mode 100644 (file)
index 0000000..fb16c5f
--- /dev/null
@@ -0,0 +1,98 @@
+##### http://autoconf-archive.cryp.to/ax_boost_program_options.html
+#
+# SYNOPSIS
+#
+#   AX_BOOST_PROGRAM_OPTIONS
+#
+# DESCRIPTION
+#
+#   Test for program options library from the Boost C++ libraries. The
+#   macro requires a preceding call to AX_BOOST_BASE. Further
+#   documentation is available at
+#   <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_PROGRAM_OPTIONS
+#
+# LAST MODIFICATION
+#
+#   2006-12-28
+#
+# COPYLEFT
+#
+#   Copyright (c) 2006 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_PROGRAM_OPTIONS],
+[
+       AC_ARG_WITH([boost-program-options],
+               AS_HELP_STRING([--with-boost-program-options@<:@=special-lib@:>@],
+                       [use the program options library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-program-options=boost_program_options-gcc-mt-1_33_1 ]),
+        [
+        if test "$withval" = "no"; then
+                       want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_program_options_lib=""
+        else
+                   want_boost="yes"
+               ax_boost_user_program_options_lib="$withval"
+               fi
+        ],
+        [want_boost="yes"]
+       )
+
+       if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+           export want_boost
+               CPPFLAGS_SAVED="$CPPFLAGS"
+               CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+               export CPPFLAGS
+               LDFLAGS_SAVED="$LDFLAGS"
+               LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+               export LDFLAGS
+               AC_CACHE_CHECK([whether the Boost::Program_Options library is available],
+                                          ax_cv_boost_program_options,
+                                          [AC_LANG_PUSH(C++)
+                               AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/program_options.hpp>
+                                                          ]],
+                                  [[boost::program_options::options_description generic("Generic options");
+                                   return 0;]]),
+                           ax_cv_boost_program_options=yes, ax_cv_boost_program_options=no)
+                                       AC_LANG_POP([C++])
+               ])
+               if test "$ax_cv_boost_program_options" = yes; then
+                               AC_DEFINE(HAVE_BOOST_PROGRAM_OPTIONS,,[define if the Boost::PROGRAM_OPTIONS library is available])
+                                 BN=boost_program_options
+                if test "x$ax_boost_user_program_options_lib" = "x"; then
+                                 for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                                lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                                $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                     AC_CHECK_LIB($ax_lib, main,
+                                   [BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib" AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB) link_program_options="yes" break],
+                                   [link_program_options="no"])
+                                 done
+                else
+                  for ax_lib in $ax_boost_user_program_options_lib $BN-$ax_boost_user_program_options_lib; do
+                                     AC_CHECK_LIB($ax_lib, main,
+                                   [BOOST_PROGRAM_OPTIONS_LIB="-l$ax_lib" AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB) link_program_options="yes" break],
+                                   [link_program_options="no"])
+                  done
+                fi
+                               if test "x$link_program_options" = "xno"; then
+                                       AC_MSG_ERROR([Could not link against [$ax_lib] !])
+                               fi
+               fi
+               CPPFLAGS="$CPPFLAGS_SAVED"
+       LDFLAGS="$LDFLAGS_SAVED"
+       fi
+])
diff --git a/ax_boost_python.m4 b/ax_boost_python.m4
new file mode 100644 (file)
index 0000000..fa581c8
--- /dev/null
@@ -0,0 +1,92 @@
+##### http://autoconf-archive.cryp.to/ax_boost_python.html
+#
+# SYNOPSIS
+#
+#   AX_BOOST_PYTHON
+#
+# DESCRIPTION
+#
+#   This macro checks to see if the Boost.Python library is installed.
+#   It also attempts to guess the currect library name using several
+#   attempts. It tries to build the library name using a user supplied
+#   name or suffix and then just the raw library.
+#
+#   If the library is found, HAVE_BOOST_PYTHON is defined and
+#   BOOST_PYTHON_LIB is set to the name of the library.
+#
+#   This macro calls AC_SUBST(BOOST_PYTHON_LIB).
+#
+#   In order to ensure that the Python headers are specified on the
+#   include path, this macro requires AX_PYTHON to be called.
+#
+# LAST MODIFICATION
+#
+#   2005-05-20
+#
+# COPYLEFT
+#
+#   Copyright (c) 2005 Michael Tindal <mtindal@paradoxpoint.com>
+#
+#   This program is free software; you can redistribute it and/or
+#   modify it under the terms of the GNU General Public License as
+#   published by the Free Software Foundation; either version 2 of the
+#   License, or (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+#   General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, write to the Free Software
+#   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+#   02111-1307, USA.
+#
+#   As a special exception, the respective Autoconf Macro's copyright
+#   owner gives unlimited permission to copy, distribute and modify the
+#   configure scripts that are the output of Autoconf when processing
+#   the Macro. You need not follow the terms of the GNU General Public
+#   License when using or distributing such scripts, even though
+#   portions of the text of the Macro appear in them. The GNU General
+#   Public License (GPL) does govern all other use of the material that
+#   constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the
+#   Autoconf Macro released by the Autoconf Macro Archive. When you
+#   make and distribute a modified version of the Autoconf Macro, you
+#   may extend this special exception to the GPL to apply to your
+#   modified version as well.
+
+AC_DEFUN([AX_BOOST_PYTHON],
+[AC_REQUIRE([AX_PYTHON])dnl
+AC_CACHE_CHECK(whether the Boost::Python library is available,
+ac_cv_boost_python,
+[AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ CPPFLAGS_SAVE=$CPPFLAGS
+ if test x$PYTHON_INCLUDE_DIR != x; then
+   CPPFLAGS=-I$PYTHON_INCLUDE_DIR $CPPFLAGS
+ fi
+ AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[
+ #include <boost/python/module.hpp>
+ using namespace boost::python;
+ BOOST_PYTHON_MODULE(test) { throw "Boost::Python test."; }]],
+                          [[return 0;]]),
+                          ac_cv_boost_python=yes, ac_cv_boost_python=no)
+ AC_LANG_RESTORE
+ CPPFLAGS=$CPPFLAGS_SAVE
+])
+if test "$ac_cv_boost_python" = "yes"; then
+  AC_DEFINE(HAVE_BOOST_PYTHON,,[define if the Boost::Python library is available])
+  ax_python_lib=boost_python
+  AC_ARG_WITH([boost-python],AS_HELP_STRING([--with-boost-python],[specify the boost python library or suffix to use]),
+  [if test "x$with_boost_python" != "xno"; then
+     ax_python_lib=$with_boost_python
+     ax_boost_python_lib=boost_python-$with_boost_python
+   fi])
+  for ax_lib in $ax_python_lib $ax_boost_python_lib boost_python; do
+    AC_CHECK_LIB($ax_lib, main, [BOOST_PYTHON_LIB=$ax_lib break])
+  done
+  AC_SUBST(BOOST_PYTHON_LIB)
+fi
+])dnl
diff --git a/ax_boost_regex.m4 b/ax_boost_regex.m4
new file mode 100644 (file)
index 0000000..622abd3
--- /dev/null
@@ -0,0 +1,98 @@
+##### http://autoconf-archive.cryp.to/ax_boost_regex.html
+#
+# SYNOPSIS
+#
+#   AX_BOOST_REGEX
+#
+# DESCRIPTION
+#
+#   Test for Regex library from the Boost C++ libraries. The macro
+#   requires a preceding call to AX_BOOST_BASE. Further documentation
+#   is available at <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_REGEX_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_REGEX
+#
+# LAST MODIFICATION
+#
+#   2006-12-28
+#
+# COPYLEFT
+#
+#   Copyright (c) 2006 Thomas Porschberg <thomas@randspringer.de>
+#   Copyright (c) 2006 Michael Tindal <mtindal@paradoxpoint.com>
+#
+#   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_REGEX],
+[
+       AC_ARG_WITH([boost-regex],
+       AS_HELP_STRING([--with-boost-regex@<:@=special-lib@:>@],
+                   [use the Regex library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-regex=boost_regex-gcc-mt-d-1_33_1 ]),
+        [
+        if test "$withval" = "no"; then
+                       want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_regex_lib=""
+        else
+                   want_boost="yes"
+               ax_boost_user_regex_lib="$withval"
+               fi
+        ],
+        [want_boost="yes"]
+       )
+
+       if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+               CPPFLAGS_SAVED="$CPPFLAGS"
+               CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+               export CPPFLAGS
+
+               LDFLAGS_SAVED="$LDFLAGS"
+               LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+               export LDFLAGS
+
+        AC_CACHE_CHECK(whether the Boost::Regex library is available,
+                                          ax_cv_boost_regex,
+        [AC_LANG_PUSH([C++])
+                        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/regex.hpp>
+                                                                                               ]],
+                                   [[boost::regex r(); return 0;]]),
+                   ax_cv_boost_regex=yes, ax_cv_boost_regex=no)
+         AC_LANG_POP([C++])
+               ])
+               if test "x$ax_cv_boost_regex" = "xyes"; then
+                       AC_DEFINE(HAVE_BOOST_REGEX,,[define if the Boost::Regex library is available])
+                       BN=boost_regex
+            if test "x$ax_boost_user_regex_lib" = "x"; then
+                               for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main, [BOOST_REGEX_LIB="-l$ax_lib" AC_SUBST(BOOST_REGEX_LIB) link_regex="yes" break],
+                                 [link_regex="no"])
+                               done
+            else
+               for ax_lib in $ax_boost_user_regex_lib $BN-$ax_boost_user_regex_lib; do
+                                     AC_CHECK_LIB($ax_lib, main,
+                                   [BOOST_REGEX_LIB="-l$ax_lib" AC_SUBST(BOOST_REGEX_LIB) link_regex="yes" break],
+                                   [link_regex="no"])
+               done
+            fi
+                       if test "x$link_regex" = "xno"; then
+                               AC_MSG_ERROR(Could not link against $ax_lib !)
+                       fi
+               fi
+
+               CPPFLAGS="$CPPFLAGS_SAVED"
+       LDFLAGS="$LDFLAGS_SAVED"
+       fi
+])
diff --git a/ax_boost_serialization.m4 b/ax_boost_serialization.m4
new file mode 100644 (file)
index 0000000..be411d2
--- /dev/null
@@ -0,0 +1,105 @@
+##### http://autoconf-archive.cryp.to/ax_boost_serialization.html
+#
+# SYNOPSIS
+#
+#   AX_BOOST_SERIALIZATION
+#
+# DESCRIPTION
+#
+#   Test for Serialization library from the Boost C++ libraries. The
+#   macro requires a preceding call to AX_BOOST_BASE. Further
+#   documentation is available at
+#   <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_SERIALIZATION_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_SERIALIZATION
+#
+# LAST MODIFICATION
+#
+#   2006-12-28
+#
+# COPYLEFT
+#
+#   Copyright (c) 2006 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_SERIALIZATION],
+[
+       AC_ARG_WITH([boost-serialization],
+       AS_HELP_STRING([--with-boost-serialization@<:@=special-lib@:>@],
+                   [use the Serialization library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-serialization=boost_serialization-gcc-mt-d-1_33_1 ]),
+        [
+        if test "$withval" = "no"; then
+                       want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_serialization_lib=""
+        else
+                   want_boost="yes"
+               ax_boost_user_serialization_lib="$withval"
+               fi
+        ],
+        [want_boost="yes"]
+       )
+
+       if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+               CPPFLAGS_SAVED="$CPPFLAGS"
+               CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+               export CPPFLAGS
+
+               LDFLAGS_SAVED="$LDFLAGS"
+               LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+               export LDFLAGS
+
+        AC_CACHE_CHECK(whether the Boost::Serialization library is available,
+                                          ax_cv_boost_serialization,
+        [AC_LANG_PUSH([C++])
+                        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <fstream>
+                                                                                                @%:@include <boost/archive/text_oarchive.hpp>
+                                                 @%:@include <boost/archive/text_iarchive.hpp>
+                                                                                               ]],
+                                   [[std::ofstream ofs("filename");
+                                                                       boost::archive::text_oarchive oa(ofs);
+                                                                        return 0;
+                                   ]]),
+                   ax_cv_boost_serialization=yes, ax_cv_boost_serialization=no)
+         AC_LANG_POP([C++])
+               ])
+               if test "x$ax_cv_boost_serialization" = "xyes"; then
+                       AC_DEFINE(HAVE_BOOST_SERIALIZATION,,[define if the Boost::Serialization library is available])
+                       BN=boost_serialization
+            if test "x$ax_boost_user_serialization_lib" = "x"; then
+                               for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main,
+                                 [BOOST_SERIALIZATION_LIB="-l$ax_lib" AC_SUBST(BOOST_SERIALIZATION_LIB) link_serialization="yes" break],
+                                 [link_serialization="no"])
+                               done
+            else
+               for ax_lib in $ax_boost_user_serialization_lib $BN-$ax_boost_user_serialization_lib; do
+                                     AC_CHECK_LIB($ax_lib, main,
+                                   [BOOST_SERIALIZATION_LIB="-l$ax_lib" AC_SUBST(BOOST_SERIALIZATION_LIB) link_serialization="yes" break],
+                                   [link_serialization="no"])
+                  done
+
+            fi
+                       if test "x$link_serialization" = "xno"; then
+                               AC_MSG_ERROR(Could not link against $ax_lib !)
+                       fi
+               fi
+
+               CPPFLAGS="$CPPFLAGS_SAVED"
+       LDFLAGS="$LDFLAGS_SAVED"
+       fi
+])
diff --git a/ax_boost_signals.m4 b/ax_boost_signals.m4
new file mode 100644 (file)
index 0000000..2a6d3c8
--- /dev/null
@@ -0,0 +1,101 @@
+##### http://autoconf-archive.cryp.to/ax_boost_signals.html
+#
+# SYNOPSIS
+#
+#   AX_BOOST_SIGNALS
+#
+# DESCRIPTION
+#
+#   Test for Signals library from the Boost C++ libraries. The macro
+#   requires a preceding call to AX_BOOST_BASE. Further documentation
+#   is available at <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_SIGNALS_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_SIGNALS
+#
+# LAST MODIFICATION
+#
+#   2006-12-28
+#
+# COPYLEFT
+#
+#   Copyright (c) 2006 Thomas Porschberg <thomas@randspringer.de>
+#   Copyright (c) 2006 Michael Tindal <mtindal@paradoxpoint.com>
+#
+#   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_SIGNALS],
+[
+       AC_ARG_WITH([boost-signals],
+       AS_HELP_STRING([--with-boost-signals@<:@=special-lib@:>@],
+                   [use the Signals library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-signals=boost_signals-gcc-mt-d ]),
+        [
+        if test "$withval" = "no"; then
+                       want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_signals_lib=""
+        else
+                   want_boost="yes"
+               ax_boost_user_signals_lib="$withval"
+               fi
+        ],
+        [want_boost="yes"]
+       )
+
+       if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+               CPPFLAGS_SAVED="$CPPFLAGS"
+               CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+               export CPPFLAGS
+
+               LDFLAGS_SAVED="$LDFLAGS"
+               LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+               export LDFLAGS
+
+        AC_CACHE_CHECK(whether the Boost::Signals library is available,
+                                          ax_cv_boost_signals,
+        [AC_LANG_PUSH([C++])
+                AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/signal.hpp>
+                                                                                       ]],
+                                  [[boost::signal<void ()> sig;
+                                    return 0;
+                                  ]]),
+                           ax_cv_boost_signals=yes, ax_cv_boost_signals=no)
+         AC_LANG_POP([C++])
+               ])
+               if test "x$ax_cv_boost_signals" = "xyes"; then
+                       AC_DEFINE(HAVE_BOOST_SIGNALS,,[define if the Boost::Signals library is available])
+                       BN=boost_signals
+            if test "x$ax_boost_user_signals_lib" = "x"; then
+                               for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main, [BOOST_SIGNALS_LIB="-l$ax_lib" AC_SUBST(BOOST_SIGNALS_LIB) link_signals="yes" break],
+                                 [link_signals="no"])
+                               done
+            else
+               for ax_lib in $ax_boost_user_signals_lib $BN-$ax_boost_user_signals_lib; do
+                                     AC_CHECK_LIB($ax_lib, main,
+                                   [BOOST_SIGNALS_LIB="-l$ax_lib" AC_SUBST(BOOST_SIGNALS_LIB) link_signals="yes" break],
+                                   [link_signals="no"])
+                  done
+
+            fi
+                       if test "x$link_signals" = "xno"; then
+                               AC_MSG_ERROR(Could not link against $ax_lib !)
+                       fi
+               fi
+
+               CPPFLAGS="$CPPFLAGS_SAVED"
+       LDFLAGS="$LDFLAGS_SAVED"
+       fi
+])
diff --git a/ax_boost_thread.m4 b/ax_boost_thread.m4
new file mode 100644 (file)
index 0000000..f3704f3
--- /dev/null
@@ -0,0 +1,136 @@
+##### http://autoconf-archive.cryp.to/ax_boost_thread.html
+#
+# SYNOPSIS
+#
+#   AX_BOOST_THREAD
+#
+# DESCRIPTION
+#
+#   Test for Thread library from the Boost C++ libraries. The macro
+#   requires a preceding call to AX_BOOST_BASE. Further documentation
+#   is available at <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_THREAD_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_THREAD
+#
+# LAST MODIFICATION
+#
+#   2006-12-28
+#
+# COPYLEFT
+#
+#   Copyright (c) 2006 Thomas Porschberg <thomas@randspringer.de>
+#   Copyright (c) 2006 Michael Tindal <mtindal@paradoxpoint.com>
+#
+#   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_THREAD],
+[
+       AC_ARG_WITH([boost-thread],
+       AS_HELP_STRING([--with-boost-thread@<:@=special-lib@:>@],
+                   [use the Thread library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-thread=boost_thread-gcc-mt ]),
+        [
+        if test "$withval" = "no"; then
+                       want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_thread_lib=""
+        else
+                   want_boost="yes"
+               ax_boost_user_thread_lib="$withval"
+               fi
+        ],
+        [want_boost="yes"]
+       )
+
+       if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+        AC_REQUIRE([AC_CANONICAL_BUILD])
+               CPPFLAGS_SAVED="$CPPFLAGS"
+               CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+               export CPPFLAGS
+
+               LDFLAGS_SAVED="$LDFLAGS"
+               LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+               export LDFLAGS
+
+        AC_CACHE_CHECK(whether the Boost::Thread library is available,
+                                          ax_cv_boost_thread,
+        [AC_LANG_PUSH([C++])
+                        CXXFLAGS_SAVE=$CXXFLAGS
+
+                        if test "x$build_os" = "xsolaris" ; then
+                                CXXFLAGS="-pthreads $CXXFLAGS"
+                        elif test "x$build_os" = "xming32" ; then
+                                CXXFLAGS="-mthreads $CXXFLAGS"
+                        else
+                               CXXFLAGS="-pthread $CXXFLAGS"
+                        fi
+                        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/thread/thread.hpp>]],
+                                   [[boost::thread_group thrds;
+                                   return 0;]]),
+                   ax_cv_boost_thread=yes, ax_cv_boost_thread=no)
+                        CXXFLAGS=$CXXFLAGS_SAVE
+             AC_LANG_POP([C++])
+               ])
+               if test "x$ax_cv_boost_thread" = "xyes"; then
+           if test "x$build_os" = "xsolaris" ; then
+                         BOOST_CPPFLAGS="-pthreads $BOOST_CPPFLAGS"
+                  elif test "x$build_os" = "xming32" ; then
+                         BOOST_CPPFLAGS="-mthreads $BOOST_CPPFLAGS"
+                  else
+                         BOOST_CPPFLAGS="-pthread $BOOST_CPPFLAGS"
+                  fi
+
+                       AC_SUBST(BOOST_CPPFLAGS)
+
+                       AC_DEFINE(HAVE_BOOST_THREAD,,[define if the Boost::Thread library is available])
+                       BN=boost_thread
+
+                       LDFLAGS_SAVE=$LDFLAGS
+                        case "x$build_os" in
+                          *bsd* )
+                               LDFLAGS="-pthread $LDFLAGS"
+                          break;
+                          ;;
+                        esac
+            if test "x$ax_boost_user_thread_lib" = "x"; then
+                               for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                              lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                              $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                                   AC_CHECK_LIB($ax_lib, main, [BOOST_THREAD_LIB="-l$ax_lib" AC_SUBST(BOOST_THREAD_LIB) link_thread="yes" break],
+                                 [link_thread="no"])
+                               done
+            else
+               for ax_lib in $ax_boost_user_thread_lib $BN-$ax_boost_user_thread_lib; do
+                                     AC_CHECK_LIB($ax_lib, main,
+                                   [BOOST_THREAD_LIB="-l$ax_lib" AC_SUBST(BOOST_THREAD_LIB) link_thread="yes" break],
+                                   [link_thread="no"])
+                  done
+
+            fi
+                       if test "x$link_thread" = "xno"; then
+                               AC_MSG_ERROR(Could not link against $ax_lib !)
+                        else
+                           case "x$build_os" in
+                              *bsd* )
+                               BOOST_LDFLAGS="-pthread $BOOST_LDFLAGS"
+                              break;
+                              ;;
+                           esac
+
+                       fi
+               fi
+
+               CPPFLAGS="$CPPFLAGS_SAVED"
+       LDFLAGS="$LDFLAGS_SAVED"
+       fi
+])
diff --git a/ax_boost_unit_test_framework.m4 b/ax_boost_unit_test_framework.m4
new file mode 100644 (file)
index 0000000..11e5d8d
--- /dev/null
@@ -0,0 +1,138 @@
+##### http://autoconf-archive.cryp.to/ax_boost_unit_test_framework.html
+#
+# SYNOPSIS
+#
+#   AX_BOOST_UNIT_TEST_FRAMEWORK
+#
+# DESCRIPTION
+#
+#   Test for Unit_Test_Framework library from the Boost C++ libraries.
+#   The macro requires a preceding call to AX_BOOST_BASE. Further
+#   documentation is available at
+#   <http://randspringer.de/boost/index.html>.
+#
+#   This macro calls:
+#
+#     AC_SUBST(BOOST_UNIT_TEST_FRAMEWORK_LIB)
+#
+#   And sets:
+#
+#     HAVE_BOOST_UNIT_TEST_FRAMEWORK
+#
+# LAST MODIFICATION
+#
+#   2006-12-28
+#
+# COPYLEFT
+#
+#   Copyright (c) 2006 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_UNIT_TEST_FRAMEWORK],
+[
+       AC_ARG_WITH([boost-unit-test-framework],
+       AS_HELP_STRING([--with-boost-unit-test-framework@<:@=special-lib@:>@],
+                   [use the Unit_Test_Framework library from boost - it is possible to specify a certain library for the linker
+                        e.g. --with-boost-unit-test-framework=boost_unit_test_framework-gcc ]),
+        [
+        if test "$withval" = "no"; then
+                       want_boost="no"
+        elif test "$withval" = "yes"; then
+            want_boost="yes"
+            ax_boost_user_unit_test_framework_lib=""
+        else
+                   want_boost="yes"
+               ax_boost_user_unit_test_framework_lib="$withval"
+               fi
+        ],
+        [want_boost="yes"]
+       )
+
+       if test "x$want_boost" = "xyes"; then
+        AC_REQUIRE([AC_PROG_CC])
+               CPPFLAGS_SAVED="$CPPFLAGS"
+               CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+               export CPPFLAGS
+
+               LDFLAGS_SAVED="$LDFLAGS"
+               LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+               export LDFLAGS
+
+        AC_CACHE_CHECK(whether the Boost::Unit_Test_Framework library is available,
+                                          ax_cv_boost_unit_test_framework,
+        [AC_LANG_PUSH([C++])
+                        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[@%:@include <boost/test/unit_test.hpp>]],
+                                    [[using boost::unit_test::test_suite;
+                                                        test_suite* test= BOOST_TEST_SUITE( "Unit test example 1" ); return 0;]]),
+                   ax_cv_boost_unit_test_framework=yes, ax_cv_boost_unit_test_framework=no)
+         AC_LANG_POP([C++])
+               ])
+               if test "x$ax_cv_boost_unit_test_framework" = "xyes"; then
+                       AC_DEFINE(HAVE_BOOST_UNIT_TEST_FRAMEWORK,,[define if the Boost::Unit_Test_Framework library is available])
+                       BN=boost_unit_test_framework
+            if test "x$ax_boost_user_unit_test_framework_lib" = "x"; then
+                       saved_ldflags="${LDFLAGS}"
+                       for ax_lib in $BN $BN-$CC $BN-$CC-mt $BN-$CC-mt-s $BN-$CC-s \
+                             lib$BN lib$BN-$CC lib$BN-$CC-mt lib$BN-$CC-mt-s lib$BN-$CC-s \
+                             $BN-mgw $BN-mgw $BN-mgw-mt $BN-mgw-mt-s $BN-mgw-s ; do
+                   LDFLAGS="${LDFLAGS} -l$ax_lib"
+                          AC_CACHE_CHECK(Boost::UnitTestFramework library linkage,
+                                                  ax_cv_boost_unit_test_framework_link,
+                                                 [AC_LANG_PUSH([C++])
+                   AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/test/unit_test.hpp>
+                                                     using boost::unit_test::test_suite;
+                                                     test_suite* init_unit_test_suite( int argc, char * argv[] ) {
+                                                     test_suite* test= BOOST_TEST_SUITE( "Unit test example 1" );
+                                                     return test;
+                                                     }
+                                                   ]],
+                                 [[ return 0;]])],
+                                 link_unit_test_framework="yes",link_unit_test_framework="no")
+                             AC_LANG_POP([C++])
+                  ])
+                  LDFLAGS="${saved_ldflags}"
+
+                             if test "x$link_unit_test_framework" = "xyes"; then
+                      BOOST_UNIT_TEST_FRAMEWORK_LIB="-l$ax_lib"
+                      AC_SUBST(BOOST_UNIT_TEST_FRAMEWORK_LIB)
+                                         break
+                                 fi
+                done
+            else
+                       saved_ldflags="${LDFLAGS}"
+               for ax_lib in $ax_boost_user_unit_test_framework_lib $BN-$ax_boost_user_unit_test_framework_lib; do
+                   LDFLAGS="${LDFLAGS} -l$ax_lib"
+                                  AC_CACHE_CHECK(Boost::UnitTestFramework library linkage,
+                                                  ax_cv_boost_unit_test_framework_link,
+                                                 [AC_LANG_PUSH([C++])
+                           AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/test/unit_test.hpp>
+                                                        using boost::unit_test::test_suite;
+                                                        test_suite* init_unit_test_suite( int argc, char * argv[] ) {
+                                                        test_suite* test= BOOST_TEST_SUITE( "Unit test example 1" );
+                                                        return test;
+                                                        }
+                                                   ]],
+                                 [[ return 0;]])],
+                                 link_unit_test_framework="yes",link_unit_test_framework="no")
+                             AC_LANG_POP([C++])
+                  ])
+                  LDFLAGS="${saved_ldflags}"
+                             if test "x$link_unit_test_framework" = "xyes"; then
+                      BOOST_UNIT_TEST_FRAMEWORK_LIB="-l$ax_lib"
+                      AC_SUBST(BOOST_UNIT_TEST_FRAMEWORK_LIB)
+                                         break
+                                 fi
+               done
+            fi
+                       if test "x$link_unit_test_framework" = "xno"; then
+                               AC_MSG_ERROR(Could not link against $ax_lib !)
+                       fi
+               fi
+
+               CPPFLAGS="$CPPFLAGS_SAVED"
+       LDFLAGS="$LDFLAGS_SAVED"
+       fi
+])