summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorBaptiste Lepilleur <gaiacrtn@free.fr>2004-02-18 19:45:44 +0000
committerBaptiste Lepilleur <gaiacrtn@free.fr>2004-02-18 19:45:44 +0000
commitb11bd9019deef39ed969fab8b85771946b83d17b (patch)
tree2f1a67e989f7e7c4329a1efc2c8887a4fc916caf /config
parent90869fe73c518e3135906cd5648834366ada4299 (diff)
downloadcppunit-b11bd9019deef39ed969fab8b85771946b83d17b.tar.gz
Configure.
configure.in: * config/ax_cxx_gcc_abi_demangle.m4: * src/cppunit/TypeInfoHelper.cpp: added patch from Neil Ferguson <nferguso@eso.org> to use gcc c++ abi to demangle typeinfo name when available.
Diffstat (limited to 'config')
-rw-r--r--config/ax_cxx_gcc_abi_demangle.m440
1 files changed, 40 insertions, 0 deletions
diff --git a/config/ax_cxx_gcc_abi_demangle.m4 b/config/ax_cxx_gcc_abi_demangle.m4
new file mode 100644
index 0000000..e9ffc75
--- /dev/null
+++ b/config/ax_cxx_gcc_abi_demangle.m4
@@ -0,0 +1,40 @@
+dnl @synopsis AX_CXX_GCC_ABI_DEMANGLE
+dnl
+dnl If the compiler supports GCC C++ ABI name demangling (has header cxxabi.h
+dnl and abi::__cxa_demangle() function), define HAVE_GCC_ABI_DEMANGLE
+dnl
+dnl Adapted from AC_CXX_RTTI by Luc Maisonobe
+dnl
+dnl @version $Id: ax_cxx_gcc_abi_demangle.m4,v 1.1 2004-02-18 20:45:36 blep Exp $
+dnl @author Neil Ferguson <nferguso@eso.org>
+dnl
+AC_DEFUN([AX_CXX_GCC_ABI_DEMANGLE],
+[AC_CACHE_CHECK(whether the compiler supports GCC C++ ABI name demangling,
+ac_cv_cxx_gcc_abi_demangle,
+[AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <typeinfo>
+#include <cxxabi.h>
+#include <string>
+
+template<typename TYPE>
+class A {};
+],[A<int> instance;
+int status = 0;
+char* c_name = 0;
+
+c_name = abi::__cxa_demangle(typeid(instance).name(), 0, 0, &status);
+
+std::string name(c_name);
+free(c_name);
+
+return name == "A<int>";
+],
+ ac_cv_cxx_gcc_abi_demangle=yes, ac_cv_cxx_gcc_abi_demangle=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_gcc_abi_demangle" = yes; then
+ AC_DEFINE(HAVE_GCC_ABI_DEMANGLE,1,
+ [define if the compiler supports GCC C++ ABI name demangling])
+fi
+])