Merge pull request #206 from tSed/fix-build-when-execinfo.b-is-not-available

Make backtrace support depend on execinfo.h's existence
This commit is contained in:
Adrian Knoth 2017-01-10 22:18:11 +01:00 committed by GitHub
commit a96111a7a3
2 changed files with 13 additions and 1 deletions

View File

@ -27,7 +27,9 @@
#include <stdio.h> #include <stdio.h>
#include <signal.h> #include <signal.h>
#include <dlfcn.h> #include <dlfcn.h>
#include <execinfo.h> #ifdef HAVE_EXECINFO_H
# include <execinfo.h>
#endif
#include <errno.h> #include <errno.h>
#ifndef NO_CPP_DEMANGLE #ifndef NO_CPP_DEMANGLE
char * __cxa_demangle(const char * __mangled_name, char * __output_buffer, size_t * __length, int * __status); char * __cxa_demangle(const char * __mangled_name, char * __output_buffer, size_t * __length, int * __status);
@ -161,12 +163,16 @@ static void signal_segv(int signum, siginfo_t* info, void*ptr) {
bp = (void**)bp[0]; bp = (void**)bp[0];
} }
#else #else
# ifdef HAVE_EXECINFO_H
jack_error("Stack trace (non-dedicated):"); jack_error("Stack trace (non-dedicated):");
sz = backtrace(bt, 20); sz = backtrace(bt, 20);
strings = backtrace_symbols(bt, sz); strings = backtrace_symbols(bt, sz);
for(i = 0; i < sz; ++i) for(i = 0; i < sz; ++i)
jack_error("%s", strings[i]); jack_error("%s", strings[i]);
# else
jack_error("Stack trace not available");
# endif
#endif #endif
jack_error("End of stack trace"); jack_error("End of stack trace");
exit (-1); exit (-1);

View File

@ -488,6 +488,12 @@ def configure(conf):
defines=['_GNU_SOURCE'], defines=['_GNU_SOURCE'],
mandatory=False) mandatory=False)
# Check for backtrace support
conf.check(
header_name='execinfo.h',
define_name='HAVE_EXECINFO_H',
mandatory=False)
conf.recurse('common') conf.recurse('common')
if Options.options.dbus: if Options.options.dbus:
conf.recurse('dbus') conf.recurse('dbus')