Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions cmake/BuildTypeHandling.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ endif ()
if (${CMAKE_BUILD_TYPE} STREQUAL "Release")
message (STATUS "Release build compilation options enabled")

if (MSVC AND NOT ("${CMAKE_VS_PLATFORM_TOOLSET}" STREQUAL "ClangCL"))
if (MSVC)
message (STATUS "MSVC Release build compilation options enabled")

include (MSVCRelease)
Expand All @@ -23,7 +23,7 @@ else ()

include (DebugCompileDefs)

if (MSVC AND NOT ("${CMAKE_VS_PLATFORM_TOOLSET}" STREQUAL "ClangCL"))
if (MSVC)
message (STATUS "MSVC Debug build compilation options enabled")

include (MSVCDebug)
Expand Down
38 changes: 32 additions & 6 deletions cmake/build/CompileDefs.cmake
Original file line number Diff line number Diff line change
@@ -1,16 +1,42 @@
if (${TESTCPP_STACKTRACE_ENABLED})
if (MSVC AND ("${CMAKE_VS_PLATFORM_TOOLSET}" STREQUAL "ClangCL"))
if (MSVC)
target_compile_definitions (
${PROJECT_NAME}
PUBLIC
TESTCPP_STACKTRACE_ENABLED
BOOST_STACKTRACE_USE_WINDBG
)
else ()
target_compile_definitions (
${PROJECT_NAME}
PUBLIC
TESTCPP_STACKTRACE_ENABLED
)
find_package (Backtrace)
if (Backtrace_FOUND)
set (TESTCPP_INTERNAL_PREFER_BACKTRACE true)
target_compile_definitions (
${PROJECT_NAME}
PUBLIC
TESTCPP_STACKTRACE_ENABLED
# We don't know yet if Boost.Stacktrace has
# Backtrace support, we will know during the
# Linking phase and will add this if it does.
#BOOST_STACKTRACE_USE_BACKTRACE
)
else ()
set (TESTCPP_INTERNAL_PREFER_BACKTRACE false)
# See https://github.com/Kitware/CMake/blob/v3.30.2/Modules/CMakeFindBinUtils.cmake
# Also see https://cmake.org/cmake/help/v3.30/command/find_program.html
if (DEFINED CMAKE_ADDR2LINE AND NOT (${CMAKE_ADDR2LINE} STREQUAL "CMAKE_ADDR2LINE-NOTFOUND"))
target_compile_definitions (
${PROJECT_NAME}
PUBLIC
TESTCPP_STACKTRACE_ENABLED
BOOST_STACKTRACE_USE_ADDR2LINE
)
else ()
target_compile_definitions (
${PROJECT_NAME}
PUBLIC
TESTCPP_STACKTRACE_ENABLED
)
endif ()
endif ()
endif ()
endif ()
9 changes: 8 additions & 1 deletion cmake/link/Boost.Stacktrace.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,20 @@ if (MSVC)
# First try Backtrace for Linux, then addr2line, and finally the default Boost.Stacktrace.
else ()
find_package (Backtrace)
if ((${BOOST_STACKTRACE_HAS_BACKTRACE}) AND (DEFINED Backtrace_FOUND))
if ((${BOOST_STACKTRACE_HAS_BACKTRACE}) AND (DEFINED Backtrace_FOUND) AND (${TESTCPP_INTERNAL_PREFER_BACKTRACE}))
list (
APPEND
BOOST_STACKTRACE_EXPORTS_LIST

boost_stacktrace_backtrace
)
target_compile_definitions (
${PROJECT_NAME}
PUBLIC
TESTCPP_STACKTRACE_ENABLED
# Now we know this is available and preferred, use it.
BOOST_STACKTRACE_USE_BACKTRACE
)
target_link_libraries(
${PROJECT_NAME}
dl
Expand Down