diff options
author | Giacomo Pozzoni <giacomopoz@gmail.com> | 2021-02-21 22:16:13 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-03-06 22:24:18 +0100 |
commit | e0ad19dc96ddcd0a4ce64f8018b4931b78c023e0 (patch) | |
tree | e1e070b9b5511e99e6bf09a3d94c91f1c43dbf59 | |
parent | 9bcff210f90d57689557b7b8cc20cd336b8ab035 (diff) |
CMake: Add WITH_BOOST_STACKTRACE option to use libbacktrace (#26119)
* CMake: Add WITH_BOOST_STACKTRACE option to use libbacktrace
* Allow to specify where backtrace.h header is with cmake option -DBOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE="/usr/lib/gcc/x86_64-linux-gnu/10/include/backtrace.h"
Co-authored-by: Trond B. Krokli <38162891+illfated@users.noreply.github.com>
(cherry picked from commit dc78b5a6a7410092df7ac426fbb2f2551072c889)
-rw-r--r-- | cmake/showoptions.cmake | 6 | ||||
-rw-r--r-- | dep/boost/CMakeLists.txt | 22 |
2 files changed, 28 insertions, 0 deletions
diff --git a/cmake/showoptions.cmake b/cmake/showoptions.cmake index 5a80136312d..ae303259bda 100644 --- a/cmake/showoptions.cmake +++ b/cmake/showoptions.cmake @@ -170,6 +170,12 @@ if(WITH_STRICT_DATABASE_TYPE_CHECKS) add_definitions(-DTRINITY_STRICT_DATABASE_TYPE_CHECKS) endif() +if(WITH_BOOST_STACKTRACE) + if (BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE) + add_definitions(-DBOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE="${BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE}") + endif() +endif() + if(BUILD_SHARED_LIBS) message("") message(" *** WITH_DYNAMIC_LINKING - INFO!") diff --git a/dep/boost/CMakeLists.txt b/dep/boost/CMakeLists.txt index 81ff5c04761..e8c0d687e8c 100644 --- a/dep/boost/CMakeLists.txt +++ b/dep/boost/CMakeLists.txt @@ -80,3 +80,25 @@ endif() target_compile_definitions(boost INTERFACE -DTC_HAS_BROKEN_WSTRING_REGEX) + +if (WITH_BOOST_STACKTRACE AND NOT WIN32) + message("*** libbacktrace will be linked") + + if (BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE) + CHECK_INCLUDE_FILE(${BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE} HAS_BACKTRACE) + else() + CHECK_INCLUDE_FILE("backtrace.h" HAS_BACKTRACE) + endif() + + if (NOT HAS_BACKTRACE) + message(FATAL_ERROR "Required header 'backtrace.h' not found. If building with a compiler other than GCC, please specify the full path in the CMake option BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE.") + endif() + + target_compile_definitions(boost + INTERFACE + -DBOOST_STACKTRACE_USE_BACKTRACE) + + target_link_libraries(boost + INTERFACE + backtrace) +endif() |