+STEPMAKE_GUILE_DEVEL(REQUIRED, 1.8.2)
+
+# check for 3 typedefs added in Guile 1.9
+save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$GUILE_CFLAGS $CXXFLAGS"
+AC_CHECK_TYPES([scm_t_hash_fold_fn, scm_t_hash_handle_fn],
+ [AC_DEFINE(HAVE_GUILE_HASH_FUNC)], [],
+ [#include <libguile.h>])
+AC_CHECK_TYPES([scm_t_subr],
+ [AC_DEFINE(HAVE_GUILE_SUBR_TYPE)], [],
+ [#include <libguile.h>])
+CXXFLAGS="$save_CXXFLAGS"
+
+## Check for usable cxxabi
+save_LIBS="$LIBS"
+LIBS="$LIBS $CXXABI_LIBS"
+AC_MSG_CHECKING(for usable C++ demangler)
+AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <cxxabi.h>],
+ [abi::__cxa_demangle ("", 0, 0, 0)])],
+ [AC_DEFINE(HAVE_CXA_DEMANGLE)
+ AC_MSG_RESULT(yes)],[
+ LIBS="$LIBS -lsupc++"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <cxxabi.h>],
+ [abi::__cxa_demangle ("", 0, 0, 0)])],
+ [AC_DEFINE(HAVE_CXA_DEMANGLE)
+ AC_MSG_RESULT([yes, using -lsupc++])
+ CXXABI_LIBS="$CXXABI_LIBS -lsupc++"],
+ [AC_MSG_RESULT([no, use c++filt -t for manual demangling])])])
+LIBS="$save_LIBS"
+AC_SUBST(CXXABI_LIBS)