diff --git a/CMakeLists.txt b/CMakeLists.txt index d5ef24514..f9da7ca7f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -133,14 +133,25 @@ endif() link_directories(${LLVM_LIBRARY_DIR} ${YAML_CPP_LIBRARY_DIR}) # -# Setup libdw and libunwind +# Setup backward-cpp, libdw and libunwind # -if(LINUX AND (CMAKE_BUILD_TYPE MATCHES Debug)) +if(CMAKE_BUILD_TYPE MATCHES Debug) + set(CLANG_UML_ENABLE_BACKTRACE_DEFAULT ON) +else() + set(CLANG_UML_ENABLE_BACKTRACE_DEFAULT OFF) +endif() +option(CLANG_UML_ENABLE_BACKTRACE "Enable backtrace on segfault" + ${CLANG_UML_ENABLE_BACKTRACE_DEFAULT}) + +if(LINUX AND CLANG_UML_ENABLE_BACKTRACE) find_package(PkgConfig REQUIRED) pkg_check_modules(DW REQUIRED IMPORTED_TARGET libdw) pkg_check_modules(UNWIND REQUIRED IMPORTED_TARGET libunwind) set(BACKWARD_CPP_LIBRARIES PkgConfig::DW PkgConfig::UNWIND) set(ENABLE_BACKWARD_CPP -DENABLE_BACKWARD_CPP) + message(STATUS "Enabling backward-cpp") +else() + message(STATUS "Disabling backward-cpp") endif() # diff --git a/Makefile b/Makefile index 51a20559a..871630f0f 100644 --- a/Makefile +++ b/Makefile @@ -54,6 +54,7 @@ clean: rm -rf debug release debug_tidy coverage.info coverage-src.info debug/CMakeLists.txt: + $(eval CLANG_UML_ENABLE_BACKTRACE ?= ON) cmake -S . -B debug \ -G"$(CMAKE_GENERATOR)" \ -DGIT_VERSION=$(GIT_VERSION) \ @@ -67,9 +68,11 @@ debug/CMakeLists.txt: -DCMAKE_PREFIX=${CMAKE_PREFIX} \ -DENABLE_CUDA_TEST_CASES=$(ENABLE_CUDA_TEST_CASES) \ -DENABLE_CXX_MODULES_TEST_CASES=$(ENABLE_CXX_MODULES_TEST_CASES) \ - -DCODE_COVERAGE=$(CODE_COVERAGE) + -DCODE_COVERAGE=$(CODE_COVERAGE) \ + -DCLANG_UML_ENABLE_BACKTRACE=$(CLANG_UML_ENABLE_BACKTRACE) release/CMakeLists.txt: + $(eval CLANG_UML_ENABLE_BACKTRACE ?= OFF) cmake -S . -B release \ -G"$(CMAKE_GENERATOR)" \ -DGIT_VERSION=$(GIT_VERSION) \ @@ -82,7 +85,8 @@ release/CMakeLists.txt: -DLINK_LLVM_SHARED=${LLVM_SHARED} \ -DCMAKE_PREFIX=${CMAKE_PREFIX} \ -DENABLE_CUDA_TEST_CASES=$(ENABLE_CUDA_TEST_CASES) \ - -DENABLE_CXX_MODULES_TEST_CASES=$(ENABLE_CXX_MODULES_TEST_CASES) + -DENABLE_CXX_MODULES_TEST_CASES=$(ENABLE_CXX_MODULES_TEST_CASES) \ + -DCLANG_UML_ENABLE_BACKTRACE=$(CLANG_UML_ENABLE_BACKTRACE) debug_tidy/CMakeLists.txt: cmake -S . -B debug_tidy \