X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=m4%2Fax_cxx_gcc_abi_demangle.m4;h=41ea469e157e38747ff8de7e900a513d09cb7d6d;hb=15cfe124b0cf5f2a4a8ef66a6fad01918dab4416;hp=11e8728cb721077f0b7c922e865f427305f330a4;hpb=9169cee9ec0f231b3117a0d5a7840d2067f29610;p=awesomized%2Flibmemcached diff --git a/m4/ax_cxx_gcc_abi_demangle.m4 b/m4/ax_cxx_gcc_abi_demangle.m4 index 11e8728c..41ea469e 100644 --- a/m4/ax_cxx_gcc_abi_demangle.m4 +++ b/m4/ax_cxx_gcc_abi_demangle.m4 @@ -16,6 +16,7 @@ # # LICENSE # +# Copyright (c) 2012 Brian Aker # Copyright (c) 2008 Neil Ferguson # # Copying and distribution of this file, with or without modification, are @@ -26,33 +27,31 @@ #serial 9 AC_DEFUN([AX_CXX_GCC_ABI_DEMANGLE], -[AC_CACHE_CHECK(whether the compiler supports GCC C++ ABI name demangling, -ax_cv_cxx_gcc_abi_demangle, -[AC_LANG_SAVE - AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([#include + [AC_PREREQ([2.63])dnl + AC_CACHE_CHECK([whether the compiler supports GCC C++ ABI name demangling], + [ax_cv_cxx_gcc_abi_demangle], + [AC_LANG_PUSH([C++]) + AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include #include #include #include + template + class A {};]], + [[A instance; + int status = 0; + char* c_name = abi::__cxa_demangle(typeid(instance).name(), 0, 0, &status); -template -class A {}; -],[A instance; -int status = 0; -char* c_name = 0; + std::string name(c_name); + ::free(c_name); -c_name = abi::__cxa_demangle(typeid(instance).name(), 0, 0, &status); - -std::string name(c_name); -::free(c_name); - -return name == "A"; -], - ax_cv_cxx_gcc_abi_demangle=yes, ax_cv_cxx_gcc_abi_demangle=no) - AC_LANG_RESTORE -]) -if test "$ax_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 -]) + if (name.compare("A") != 0) + { + return EXIT_FAILURE; + }]])], + [ax_cv_cxx_gcc_abi_demangle=yes], + [ax_cv_cxx_gcc_abi_demangle=no], + [ax_cv_cxx_gcc_abi_demangle=no]) + AC_LANG_POP]) + AS_IF([test "x$ax_cv_cxx_gcc_abi_demangle" = xyes], + [AC_DEFINE([HAVE_GCC_ABI_DEMANGLE],[1],[define if the compiler supports GCC C++ ABI name demangling])]) + ])