use CMake's FindBacktrace for backtrace feature detection

This commit is contained in:
robotanarchy 2015-12-21 19:01:17 +01:00
parent 3dd2393797
commit 94cac7a014
3 changed files with 13 additions and 1 deletions

View file

@ -58,6 +58,14 @@ find_package(Pango)
find_package(GdkPixbuf) find_package(GdkPixbuf)
find_package(PAM) find_package(PAM)
find_package(Backtrace)
if(Backtrace_FOUND)
include_directories(${Backtrace_INCLUDE_DIRS})
target_link_libraries(${Backtrace_LIBRARIES})
add_definitions(-DSWAY_Backtrace_FOUND=1)
set(SWAY_Backtrace_HEADER "${Backtrace_HEADER}")
endif()
include(FeatureSummary) include(FeatureSummary)
include(Manpage) include(Manpage)

View file

@ -1,4 +1,5 @@
add_library(sway-common add_library(sway-common
${SWAY_Backtrace_HEADER}
ipc-client.c ipc-client.c
list.c list.c
log.c log.c

View file

@ -10,7 +10,6 @@
#include <errno.h> #include <errno.h>
#include <string.h> #include <string.h>
#include <stringop.h> #include <stringop.h>
#include <execinfo.h>
int colored = 1; int colored = 1;
log_importance_t loglevel_default = L_ERROR; log_importance_t loglevel_default = L_ERROR;
@ -137,6 +136,7 @@ bool _sway_assert(bool condition, const char* format, ...) {
} }
void error_handler(int sig) { void error_handler(int sig) {
#if SWAY_Backtrace_FOUND
int i; int i;
int max_lines = 20; int max_lines = 20;
void *array[max_lines]; void *array[max_lines];
@ -155,5 +155,8 @@ void error_handler(int sig) {
for (i = 0; (size_t)i < bt_len; i++) { for (i = 0; (size_t)i < bt_len; i++) {
sway_log(L_ERROR, "Backtrace: %s", bt[i]); sway_log(L_ERROR, "Backtrace: %s", bt[i]);
} }
#else
sway_log(L_ERROR, "Error: Signal %d.", sig);
#endif
exit(1); exit(1);
} }