@@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.5...3.16)
6
6
7
7
project (boost_stacktrace VERSION "${BOOST_SUPERPROJECT_VERSION} " LANGUAGES CXX)
8
8
9
- function (stacktrace_add_library suffix opt)
9
+ function (stacktrace_add_library suffix opt libs defs )
10
10
11
11
if (NOT opt)
12
12
return ()
@@ -30,11 +30,13 @@ function(stacktrace_add_library suffix opt)
30
30
Boost::static_assert
31
31
Boost::type_traits
32
32
Boost::winapi
33
+ PRIVATE
34
+ ${libs}
33
35
)
34
36
35
37
target_compile_definitions (boost_stacktrace_${suffix}
36
38
PUBLIC BOOST_STACKTRACE_NO_LIB
37
- PRIVATE BOOST_STACKTRACE_SOURCE
39
+ PRIVATE BOOST_STACKTRACE_SOURCE ${defs}
38
40
)
39
41
40
42
if (BUILD_SHARED_LIBS )
@@ -54,22 +56,23 @@ include(CheckCXXSourceCompiles)
54
56
function (stacktrace_check var source incs libs defs)
55
57
56
58
set (CMAKE_REQUIRED_INCLUDES "${incs} " )
59
+ list (APPEND CMAKE_REQUIRED_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR} /build" )
57
60
set (CMAKE_REQUIRED_LIBRARIES "${libs} " )
58
61
set (CMAKE_REQUIRED_DEFINITIONS "${defs} " )
59
- check_cxx_source_compiles("#include < ${CMAKE_CURRENT_SOURCE_DIR} / ${ source}> " ${var} )
62
+ check_cxx_source_compiles("#include \" ${ source}\" " ${var} )
60
63
set (${var} ${${var} } PARENT_SCOPE)
61
64
62
65
endfunction ()
63
66
64
- stacktrace_check(BOOST_STACKTRACE_HAS_BACKTRACE build / has_backtrace.cpp "" "backtrace" "" )
67
+ stacktrace_check(BOOST_STACKTRACE_HAS_BACKTRACE has_backtrace.cpp "" "backtrace" "" )
65
68
66
69
set (_default_addr2line ON )
67
70
if (WIN32 AND NOT CMAKE_CXX_PLATFORM_ID MATCHES "Cygwin" )
68
71
set (_default_addr2line OFF )
69
72
endif ()
70
73
71
- stacktrace_check(BOOST_STACKTRACE_HAS_WINDBG build / has_windbg.cpp "" "" "" )
72
- stacktrace_check(BOOST_STACKTRACE_HAS_WINDBG_CACHED build / has_windbg_cached.cpp "${CMAKE_CURRENT_SOURCE_DIR} /../config/include" "" "" )
74
+ stacktrace_check(BOOST_STACKTRACE_HAS_WINDBG has_windbg.cpp "" "dbgeng;ole32 " "" )
75
+ stacktrace_check(BOOST_STACKTRACE_HAS_WINDBG_CACHED has_windbg_cached.cpp "${CMAKE_CURRENT_SOURCE_DIR} /../config/include" "dbgeng;ole32 " "" )
73
76
74
77
option (BOOST_STACKTRACE_ENABLE_NOOP "Boost.Stacktrace: build boost_stacktrace_noop" ON )
75
78
option (BOOST_STACKTRACE_ENABLE_BACKTRACE "Boost.Stacktrace: build boost_stacktrace_backtrace" ${BOOST_STACKTRACE_HAS_BACKTRACE} )
@@ -89,16 +92,12 @@ message(STATUS "Boost.Stacktrace: "
89
92
"windbg_cached ${BOOST_STACKTRACE_ENABLE_WINDBG_CACHED} "
90
93
)
91
94
92
- stacktrace_add_library(noop ${BOOST_STACKTRACE_ENABLE_NOOP} )
93
- stacktrace_add_library(backtrace ${BOOST_STACKTRACE_ENABLE_BACKTRACE} )
94
- stacktrace_add_library(addr2line ${BOOST_STACKTRACE_ENABLE_ADDR2LINE} )
95
- stacktrace_add_library(basic ${BOOST_STACKTRACE_ENABLE_BASIC} )
96
- stacktrace_add_library(windbg ${BOOST_STACKTRACE_ENABLE_WINDBG} )
97
- stacktrace_add_library(windbg_cached ${BOOST_STACKTRACE_ENABLE_WINDBG_CACHED} )
98
-
99
- if (BOOST_STACKTRACE_ENABLE_BACKTRACE)
100
- target_link_libraries (boost_stacktrace_backtrace PRIVATE backtrace)
101
- endif ()
95
+ stacktrace_add_library(noop ${BOOST_STACKTRACE_ENABLE_NOOP} "" "" )
96
+ stacktrace_add_library(backtrace ${BOOST_STACKTRACE_ENABLE_BACKTRACE} "backtrace" "" )
97
+ stacktrace_add_library(addr2line ${BOOST_STACKTRACE_ENABLE_ADDR2LINE} "" "" )
98
+ stacktrace_add_library(basic ${BOOST_STACKTRACE_ENABLE_BASIC} "" "" )
99
+ stacktrace_add_library(windbg ${BOOST_STACKTRACE_ENABLE_WINDBG} "dbgeng;ole32" "_GNU_SOURCE=1" )
100
+ stacktrace_add_library(windbg_cached ${BOOST_STACKTRACE_ENABLE_WINDBG_CACHED} "dbgeng;ole32" "_GNU_SOURCE=1" )
102
101
103
102
if (BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR} /test/CMakeLists.txt" )
104
103
0 commit comments