summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xacprep6
-rw-r--r--src/scope.h2
-rw-r--r--src/system.hh.in13
-rw-r--r--src/xact.h15
-rw-r--r--tools/configure.ac168
5 files changed, 169 insertions, 35 deletions
diff --git a/acprep b/acprep
index e79fae5b..ddf7639d 100755
--- a/acprep
+++ b/acprep
@@ -508,6 +508,12 @@ class PrepareBuild(CommandLineApp):
op.add_option('', '--no-python', action='store_true', dest='no_python',
default=False,
help='Do not enable Python support by default')
+ op.add_option('', '--cache', action='store_true',
+ dest='enable_cache', default=False,
+ help='Enable use of Boost.Serialization (--cache)')
+ op.add_option('', '--doxygen', action='store_true',
+ dest='enable_doxygen', default=False,
+ help='Enable use of Doxygen to build ref manual ("make docs")')
op.add_option('', '--enable-cache', action='store_true',
dest='enable_cache', default=False,
help='Enable use of Boost.Serialization (--cache)')
diff --git a/src/scope.h b/src/scope.h
index acaf7194..c43d73d6 100644
--- a/src/scope.h
+++ b/src/scope.h
@@ -483,7 +483,7 @@ public:
#if defined(HAVE_BOOST_SERIALIZATION)
protected:
- explicit call_scope_t() {
+ explicit call_scope_t() : depth(0) {
TRACE_CTOR(call_scope_t, "");
}
diff --git a/src/system.hh.in b/src/system.hh.in
index a38deb1f..552a591a 100644
--- a/src/system.hh.in
+++ b/src/system.hh.in
@@ -246,12 +246,19 @@ void serialize(Archive& ar, boost::intrusive_ptr<T>& ptr, const unsigned int)
}
}
-template <class Archive, class T>
-void serialize(Archive&, boost::function<T>&, const unsigned int)
-{
+template <class Archive>
+void serialize(Archive&, boost::any&, const unsigned int) {
+ // jww (2012-03-29): Should we really ignore any fields entirely?
+ // These occur inside value_t::storage_t::data's variant.
}
template <class Archive>
+void serialize(Archive&, boost::blank&, const unsigned int) {}
+
+template <class Archive, class T>
+void serialize(Archive&, boost::function<T>&, const unsigned int) {}
+
+template <class Archive>
void serialize(Archive& ar, istream_pos_type& pos, const unsigned int)
{
ar & make_binary_object(&pos, sizeof(istream_pos_type));
diff --git a/src/xact.h b/src/xact.h
index df82258d..ce00242e 100644
--- a/src/xact.h
+++ b/src/xact.h
@@ -168,6 +168,21 @@ public:
bool _overwrite_existing)
: tag_data(_tag_data), overwrite_existing(_overwrite_existing),
apply_to_post(NULL) {}
+
+#if defined(HAVE_BOOST_SERIALIZATION)
+private:
+ /** Serialization. */
+ deferred_tag_data_t() : apply_to_post(NULL) {}
+
+ friend class boost::serialization::access;
+
+ template<class Archive>
+ void serialize(Archive& ar, const unsigned int /* version */) {
+ ar & tag_data;
+ ar & overwrite_existing;
+ ar & apply_to_post;
+ }
+#endif // HAVE_BOOST_SERIALIZATION
};
typedef std::list<deferred_tag_data_t> deferred_notes_list;
diff --git a/tools/configure.ac b/tools/configure.ac
index e078ebc4..f7623f62 100644
--- a/tools/configure.ac
+++ b/tools/configure.ac
@@ -332,37 +332,143 @@ else
fi
# check for boost_serialization
-#AC_CACHE_CHECK(
-# [if boost_serialization is available],
-# [boost_serialization_cpplib_avail_cv_],
-# [boost_serialization_save_libs=$LIBS
-# LIBS="-lboost_serialization$BOOST_SUFFIX -lboost_system$BOOST_SUFFIX $LIBS"
-# AC_LANG_PUSH(C++)
-# AC_LINK_IFELSE(
-# [AC_LANG_PROGRAM(
-# [[#include <boost/archive/binary_oarchive.hpp>
-# #include <iostream>
-# struct foo {
-# int a;
-# template<class Archive>
-# void serialize(Archive & ar, const unsigned int) {
-# ar & a;
-# }
-# };]],
-# [[boost::archive::binary_oarchive oa(std::cout);
-# foo x;
-# oa << x;]])],
-# [boost_serialization_cpplib_avail_cv_=true],
-# [boost_serialization_cpplib_avail_cv_=false])
-# AC_LANG_POP
-# LIBS=$boost_serialization_save_libs])
-#
-#if [test x$boost_serialization_cpplib_avail_cv_ = xtrue -a x$cache = xtrue]; then
-# AC_DEFINE([HAVE_BOOST_SERIALIZATION], [1], [Whether Boost.Serialization is available])
-# LIBS="-lboost_serialization$BOOST_SUFFIX $LIBS"
-#fi
-#AM_CONDITIONAL(HAVE_BOOST_SERIALIZATION, test x$boost_serialization_cpplib_avail_cv_ = xtrue -a x$cache = xtrue)
-AM_CONDITIONAL(HAVE_BOOST_SERIALIZATION, false)
+AC_CACHE_CHECK(
+ [if boost_serialization is available],
+ [boost_serialization_cpplib_avail_cv_],
+ [boost_serialization_save_libs=$LIBS
+ LIBS="-lboost_serialization$BOOST_SUFFIX -lboost_system$BOOST_SUFFIX $LIBS"
+ AC_LANG_PUSH(C++)
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <boost/archive/binary_oarchive.hpp>
+ #include <iostream>
+ struct foo {
+ int a;
+ template<class Archive>
+ void serialize(Archive & ar, const unsigned int) {
+ ar & a;
+ }
+ };]],
+ [[boost::archive::binary_oarchive oa(std::cout);
+ foo x;
+ oa << x;]])],
+ [boost_serialization_cpplib_avail_cv_=true],
+ [boost_serialization_cpplib_avail_cv_=false])
+ AC_LANG_POP
+ LIBS=$boost_serialization_save_libs])
+
+if [test x$boost_serialization_cpplib_avail_cv_ = xtrue -a x$cache = xtrue]; then
+ AC_DEFINE([HAVE_BOOST_SERIALIZATION], [1], [Whether Boost.Serialization is available])
+ LIBS="-lboost_serialization$BOOST_SUFFIX $LIBS"
+fi
+AM_CONDITIONAL(HAVE_BOOST_SERIALIZATION, test x$boost_serialization_cpplib_avail_cv_ = xtrue -a x$cache = xtrue)
+
+# check for expat or xmlparse
+AC_ARG_ENABLE(xml,
+ [ --enable-xml Turn on support for XML parsing],
+ [case "${enableval}" in
+ yes) xml=true ;;
+ no) xml=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-xml) ;;
+ esac],[xml=true])
+AM_CONDITIONAL(USE_XML, test x$xml = xtrue)
+
+if [test x$xml = xtrue ]; then
+ AC_CACHE_CHECK(
+ [if libexpat is available],
+ [libexpat_avail_cv_],
+ [libexpat_save_libs=$LIBS
+ LIBS="-lexpat $LIBS"
+ AC_LANG_PUSH(C++)
+ AC_TRY_LINK(
+ [#include <stdio.h>
+ extern "C" {
+ #include <expat.h> // expat XML parser
+ }],
+ [XML_Parser parser = XML_ParserCreate(NULL);
+ return parser != NULL;],
+ [libexpat_avail_cv_=true],
+ [libexpat_avail_cv_=false])
+ AC_LANG_POP
+ LIBS=$libexpat_save_libs])
+
+ if [test x$libexpat_avail_cv_ = xtrue ]; then
+ AM_CONDITIONAL(HAVE_EXPAT, true)
+ LIBS="-lexpat $LIBS"
+ else
+ AM_CONDITIONAL(HAVE_EXPAT, false)
+ fi
+else
+ AM_CONDITIONAL(HAVE_EXPAT, false)
+fi
+
+if [test x$xml = xtrue ]; then
+ if [test x$libexpat_avail_cv_ = xfalse ]; then
+ AC_CACHE_CHECK(
+ [if libxmlparse is available],
+ [libxmlparse_avail_cv_],
+ [libxmlparse_save_libs=$LIBS
+ LIBS="-lxmlparse -lxmltok $LIBS"
+ AC_LANG_PUSH(C++)
+ AC_TRY_LINK(
+ [#include <stdio.h>
+ extern "C" {
+ #include <xmlparse.h> // expat XML parser
+ }],
+ [XML_Parser parser = XML_ParserCreate(NULL);
+ return parser != NULL;],
+ [libxmlparse_avail_cv_=true],
+ [libxmlparse_avail_cv_=false])
+ AC_LANG_POP
+ LIBS=$libxmlparse_save_libs])
+
+ if [test x$libxmlparse_avail_cv_ = xtrue ]; then
+ AM_CONDITIONAL(HAVE_XMLPARSE, true)
+ LIBS="-lxmlparse -lxmltok $LIBS"
+ else
+ AM_CONDITIONAL(HAVE_XMLPARSE, false)
+ fi
+ else
+ AM_CONDITIONAL(HAVE_XMLPARSE, false)
+ fi
+else
+ AM_CONDITIONAL(HAVE_XMLPARSE, false)
+fi
+
+# check for libofx
+AC_ARG_ENABLE(ofx,
+ [ --enable-ofx Turn on support for OFX/OCF parsing],
+ [case "${enableval}" in
+ yes) ofx=true ;;
+ no) ofx=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-ofx) ;;
+ esac],[ofx=true])
+AM_CONDITIONAL(USE_OFX, test x$ofx = xtrue)
+
+if [test x$ofx = xtrue ]; then
+ AC_CACHE_CHECK(
+ [if libofx is available],
+ [libofx_avail_cv_],
+ [libofx_save_libs=$LIBS
+ LIBS="-lofx $LIBS"
+ AC_LANG_PUSH(C++)
+ AC_TRY_LINK(
+ [#include <libofx.h>],
+ [ LibofxContextPtr libofx_context = libofx_get_new_context();],
+ [libofx_avail_cv_=true],
+ [libofx_avail_cv_=false])
+ AC_LANG_POP
+ LIBS=$libofx_save_libs])
+
+ if [test x$libofx_avail_cv_ = xtrue ]; then
+ AM_CONDITIONAL(HAVE_LIBOFX, true)
+ LIBS="-lofx $LIBS"
+ else
+ AM_CONDITIONAL(HAVE_LIBOFX, false)
+ fi
+else
+ AM_CONDITIONAL(HAVE_LIBOFX, false)
+fi
# check for Python
if [ test x$python = xtrue ]; then