Skip to content

Commit 6504ed9

Browse files
authored
Add CMake target boost_stacktrace_from_exception (#189)
Fixes #188
1 parent a778e3d commit 6504ed9

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

CMakeLists.txt

+14-1
Original file line numberDiff line numberDiff line change
@@ -71,22 +71,30 @@ endif()
7171
stacktrace_check(BOOST_STACKTRACE_HAS_WINDBG has_windbg.cpp "" "dbgeng;ole32" "")
7272
stacktrace_check(BOOST_STACKTRACE_HAS_WINDBG_CACHED has_windbg_cached.cpp "${CMAKE_CURRENT_SOURCE_DIR}/../config/include" "dbgeng;ole32" "")
7373

74+
set(_default_from_exception ON)
75+
if (NOT CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64|amd64|i386|i686|x86")
76+
set(_default_from_exception OFF)
77+
endif()
78+
7479
option(BOOST_STACKTRACE_ENABLE_NOOP "Boost.Stacktrace: build boost_stacktrace_noop" ON)
7580
option(BOOST_STACKTRACE_ENABLE_BACKTRACE "Boost.Stacktrace: build boost_stacktrace_backtrace" ${BOOST_STACKTRACE_HAS_BACKTRACE})
7681
option(BOOST_STACKTRACE_ENABLE_ADDR2LINE "Boost.Stacktrace: build boost_stacktrace_addr2line" ${_default_addr2line})
7782
option(BOOST_STACKTRACE_ENABLE_BASIC "Boost.Stacktrace: build boost_stacktrace_basic" ON)
7883
option(BOOST_STACKTRACE_ENABLE_WINDBG "Boost.Stacktrace: build boost_stacktrace_windbg" ${BOOST_STACKTRACE_HAS_WINDBG})
7984
option(BOOST_STACKTRACE_ENABLE_WINDBG_CACHED "Boost.Stacktrace: build boost_stacktrace_windbg_cached" ${BOOST_STACKTRACE_HAS_WINDBG_CACHED})
85+
option(BOOST_STACKTRACE_ENABLE_FROM_EXCEPTION "Boost.Stacktrace: build boost_stacktrace_from_exception" ${_default_from_exception})
8086

8187
unset(_default_addr2line)
88+
unset(_default_from_exception)
8289

8390
message(STATUS "Boost.Stacktrace: "
8491
"noop ${BOOST_STACKTRACE_ENABLE_NOOP}, "
8592
"backtrace ${BOOST_STACKTRACE_ENABLE_BACKTRACE}, "
8693
"addr2line ${BOOST_STACKTRACE_ENABLE_ADDR2LINE}, "
8794
"basic ${BOOST_STACKTRACE_ENABLE_BASIC}, "
8895
"windbg ${BOOST_STACKTRACE_ENABLE_WINDBG}, "
89-
"windbg_cached ${BOOST_STACKTRACE_ENABLE_WINDBG_CACHED}"
96+
"windbg_cached ${BOOST_STACKTRACE_ENABLE_WINDBG_CACHED}, "
97+
"from_exception ${BOOST_STACKTRACE_ENABLE_FROM_EXCEPTION}"
9098
)
9199

92100
stacktrace_add_library(noop ${BOOST_STACKTRACE_ENABLE_NOOP} "" "")
@@ -95,6 +103,7 @@ stacktrace_add_library(addr2line ${BOOST_STACKTRACE_ENABLE_ADDR2LINE} "${CMAKE_D
95103
stacktrace_add_library(basic ${BOOST_STACKTRACE_ENABLE_BASIC} "${CMAKE_DL_LIBS}" "")
96104
stacktrace_add_library(windbg ${BOOST_STACKTRACE_ENABLE_WINDBG} "dbgeng;ole32" "_GNU_SOURCE=1")
97105
stacktrace_add_library(windbg_cached ${BOOST_STACKTRACE_ENABLE_WINDBG_CACHED} "dbgeng;ole32" "_GNU_SOURCE=1")
106+
stacktrace_add_library(from_exception ${BOOST_STACKTRACE_ENABLE_FROM_EXCEPTION} "${CMAKE_DL_LIBS}" "")
98107

99108
# boost_stacktrace, default library
100109

@@ -123,6 +132,10 @@ elseif(BOOST_STACKTRACE_ENABLE_NOOP)
123132

124133
target_link_libraries(boost_stacktrace INTERFACE Boost::stacktrace_noop)
125134

135+
elseif(BOOST_STACKTRACE_ENABLE_FROM_EXCEPTION)
136+
137+
target_link_libraries(boost_stacktrace INTERFACE Boost::stacktrace_from_exception)
138+
126139
endif()
127140

128141
#

src/from_exception.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
// accompanying file LICENSE_1_0.txt or copy at
55
// http://www.boost.org/LICENSE_1_0.txt)
66

7+
#define BOOST_STACKTRACE_INTERNAL_BUILD_LIBS
8+
79
#if defined(_MSC_VER)
810

911
#include <boost/stacktrace/safe_dump_to.hpp>

0 commit comments

Comments
 (0)