From 7d66c87e9dd1b4a2876c66e93748638a588da232 Mon Sep 17 00:00:00 2001 From: Vincent Torri Date: Wed, 11 Nov 2009 21:04:21 +0000 Subject: [PATCH] Check backtrace_symbols_fd() availability for e_signal.c Should help the BSD guys (though OpenBSD seems to need a flag passed in LDFLAGS to be happy. Strange...) SVN revision: 43623 --- configure.ac | 53 +++++++++++++++++++++++++++++++++++++++++++-- src/bin/e_signals.c | 4 ++++ 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 01c885eca..48e68aeb4 100644 --- a/configure.ac +++ b/configure.ac @@ -149,6 +149,56 @@ CPPFLAGS="${PCPPFLAGS}" AC_SUBST(cf_cflags) AC_SUBST(cf_libs) + +execinfo_libs="" +AC_CHECK_HEADERS([execinfo.h], [have_execinfo="yes"], [have_execinfo="no"]) +if test "x${have_execinfo}" = "xyes" ; then + AC_MSG_CHECKING([whether backtrace_symbols_fd() is in libc]) + + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[ +backtrace_symbols_fd(NULL, 0, 0); + ]])], + [link_execinfo="yes"], + [link_execinfo="no"]) + + AC_MSG_RESULT([${link_execinfo}]) +fi + +if test "x${link_execinfo}" = "xno" ; then + AC_MSG_CHECKING([whether backtrace_symbols_fd() is in libexecinfo]) + + LDFLAGS_save="${LDFLAGS}" + LDFLAGS="${LDFLAGS} -lexecinfo" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[ +backtrace_symbols_fd(NULL, 0, 0); + ]])], + [ + linkexec_info="yes" + execinfo_libs="-lexecinfo" + ], + [linkexec_info="no"]) + LDFLAGS="${LDFLAGS_save}" + + AC_MSG_RESULT([${link_execinfo}]) +fi + +if test "x${link_execinfo}" = "xno" ; then + AC_MSG_ERROR([Cannot use backtrace_symbols_fd()]) +fi + + #ALL_LINGUAS="bg de eo es fi fr ja pl pt ru zh_CN hu sl it cs da sk sv nb nl zh_TW ko" #ALL_LINGUAS="bg de eo es fi fr ja pt ru zh_CN hu sl it cs da sk sv nb nl zh_TW" # a lot of .po's are broken @@ -260,8 +310,7 @@ requirements_e="evas ecore ecore-x ecore-evas ecore-con ecore-ipc ecore-job ecor AC_E_CHECK_PKG(ECORE_IMF, [ecore-imf ecore-imf-evas], [], [:]) - -e_libs=$E_LIBS" "$LIBINTL" "$fnmatch_libs" "$ECORE_IMF_LIBS +e_libs=$E_LIBS" "$LIBINTL" "$fnmatch_libs" "$ECORE_IMF_LIBS" "$execinfo_libs e_cflags="-DUSE_E_CONFIG_H "$E_CFLAGS" "$ECORE_IMF_CFLAGS e_configflags="-DUSE_E_CONFIG_H" diff --git a/src/bin/e_signals.c b/src/bin/e_signals.c index d86325427..bb5c151c1 100644 --- a/src/bin/e_signals.c +++ b/src/bin/e_signals.c @@ -7,6 +7,10 @@ #include "e.h" #include +#ifdef HAVE_EXECINFO_H +# include +#endif + static volatile Eina_Bool _e_x_composite_shutdown_try = 0; static void _e_x_composite_shutdown(void)