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>
This commit is contained in:
Giacomo Pozzoni
2021-02-21 22:16:13 +01:00
committed by GitHub
parent f96aab2186
commit dc78b5a6a7
2 changed files with 28 additions and 0 deletions

View File

@@ -171,6 +171,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!")

View File

@@ -83,3 +83,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()