Skip to content

Commit e08ca6e

Browse files
Stefan9283Stefan Toma
and
Stefan Toma
authored
Making libbacktrace optional (#189)
* Making libbacktrace optional --------- Co-authored-by: Stefan Toma <[email protected]>
1 parent f0ad062 commit e08ca6e

File tree

3 files changed

+34
-17
lines changed

3 files changed

+34
-17
lines changed

CMakeLists.txt

+23-16
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,29 @@ endif()
4747

4848
target_include_directories(${PROJECT_NAME} PRIVATE ${CURL_INCLUDE_DIRS})
4949

50-
find_package(Backtrace REQUIRED)
51-
target_link_libraries(${PROJECT_NAME} PRIVATE ${Backtrace_LIBRARIES})
50+
find_package(Backtrace QUIET)
51+
if (${Backtrace_FOUND})
52+
target_link_libraries(${PROJECT_NAME} PRIVATE ${Backtrace_LIBRARIES})
53+
54+
find_library(DW_LIB NAMES dw)
55+
if (NOT DW_LIB STREQUAL DW_LIB-NOTFOUND)
56+
message("-- Enhanced stack-traces are enabled via libdw: ${DW_LIB}")
57+
target_compile_definitions(${PROJECT_NAME} PRIVATE "BACKWARD_HAS_DW=1")
58+
target_link_libraries(${PROJECT_NAME} PUBLIC "${DW_LIB}")
59+
else()
60+
find_library(BFD_LIB NAMES bfd)
61+
if (NOT BFD_LIB STREQUAL BFD_LIB-NOTFOUND)
62+
message("-- Enhanced stack-traces are enabled via libbfd: ${BFD_LIB}")
63+
target_compile_definitions(${PROJECT_NAME} PRIVATE "BACKWARD_HAS_BFD=1")
64+
target_link_libraries(${PROJECT_NAME} PRIVATE "${BFD_LIB}")
65+
endif()
66+
endif()
67+
68+
else()
69+
message("-- libbacktrace was not installed. Stacktracing will be disabled")
70+
add_definitions(-Dno_backtrace)
71+
endif()
72+
5273

5374
target_compile_options(${PROJECT_NAME} PRIVATE
5475
"-fno-exceptions"
@@ -61,20 +82,6 @@ target_compile_options(${PROJECT_NAME} PRIVATE
6182
"-Wconversion"
6283
"-Wno-sign-conversion")
6384

64-
find_library(DW_LIB NAMES dw)
65-
if (NOT DW_LIB STREQUAL DW_LIB-NOTFOUND)
66-
message("-- Enhanced stack-traces are enabled via libdw: ${DW_LIB}")
67-
target_compile_definitions(${PROJECT_NAME} PRIVATE "BACKWARD_HAS_DW=1")
68-
target_link_libraries(${PROJECT_NAME} PUBLIC "${DW_LIB}")
69-
else()
70-
find_library(BFD_LIB NAMES bfd)
71-
if (NOT BFD_LIB STREQUAL BFD_LIB-NOTFOUND)
72-
message("-- Enhanced stack-traces are enabled via libbfd: ${BFD_LIB}")
73-
target_compile_definitions(${PROJECT_NAME} PRIVATE "BACKWARD_HAS_BFD=1")
74-
target_link_libraries(${PROJECT_NAME} PRIVATE "${BFD_LIB}")
75-
endif()
76-
endif()
77-
7885
if (LOG_VERBOSITY)
7986
target_compile_definitions(${PROJECT_NAME} PRIVATE "AWS_LAMBDA_LOG=${LOG_VERBOSITY}")
8087
elseif(CMAKE_BUILD_TYPE STREQUAL Debug)

src/backward.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,14 @@
2323
// - g++/clang++ -lbfd ...
2424
// #define BACKWARD_HAS_BFD 1
2525

26-
#include "backward.h"
26+
#ifndef no_backtrace
27+
28+
# include "backward.h"
2729

2830
namespace backward {
2931

3032
backward::SignalHandling sh;
3133

3234
} // namespace backward
35+
36+
#endif

src/backward.h

+6
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
# error "It's not going to compile without a C++ compiler..."
2929
#endif
3030

31+
#ifdef no_backtrace
32+
# pragma message "Disabling stacktracing"
33+
#else
34+
3135
#if defined(BACKWARD_CXX11)
3236
#elif defined(BACKWARD_CXX98)
3337
#else
@@ -4539,4 +4543,6 @@ class SignalHandling {
45394543

45404544
} // namespace backward
45414545

4546+
#endif /* no_backtrace */
4547+
45424548
#endif /* H_GUARD */

0 commit comments

Comments
 (0)