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 <[email protected]>
(cherry picked from commit dc78b5a6a7410092df7ac426fbb2f2551072c889)
This commit is contained in:
Giacomo Pozzoni
2022-03-06 22:24:18 +01:00
committed by Shauren
parent 9bcff210f9
commit e0ad19dc96
2 changed files with 28 additions and 0 deletions
+6
View File
@@ -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!")
+22
View File
@@ -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()