Use StackWalk64 for mingw and cleanup checks performed in cmake

This commit is contained in:
Jeremy 2023-09-29 13:10:21 -04:00
parent d84a3167d9
commit 556d7fe33d
No known key found for this signature in database
GPG Key ID: 3E11861CB34E158C

View File

@ -93,19 +93,18 @@ function(check_support var source includes libraries definitions)
set(${var} ${${var}} PARENT_SCOPE) set(${var} ${${var}} PARENT_SCOPE)
endfunction() endfunction()
if(MINGW OR NOT WIN32) # No need to bother checking in msvc, but do check in minngw if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
check_support(HAS_UNWIND has_unwind.cpp "" "" "") check_support(HAS_CXXABI has_cxxabi.cpp "" "" "")
check_support(HAS_EXECINFO has_execinfo.cpp "" "" "") endif()
check_support(HAS_BACKTRACE has_backtrace.cpp "" "backtrace" "${CPPTRACE_BACKTRACE_PATH_DEFINITION}")
check_support(HAS_DL has_dl.cpp "" "dl" "") if(NOT WIN32) # No need to bother checking in msvc, but do check in minngw
check_support(HAS_CXXABI has_cxxabi.cpp "" "" "") check_support(HAS_UNWIND has_unwind.cpp "" "" "")
if(NOT MSVC) check_support(HAS_EXECINFO has_execinfo.cpp "" "" "")
set(STACKTRACE_LINK_LIB "stdc++_libbacktrace") check_support(HAS_BACKTRACE has_backtrace.cpp "" "backtrace" "${CPPTRACE_BACKTRACE_PATH_DEFINITION}")
else() check_support(HAS_DL has_dl.cpp "" "dl" "")
set(STACKTRACE_LINK_LIB "") set(STACKTRACE_LINK_LIB "stdc++_libbacktrace")
endif() check_support(HAS_STACKTRACE has_stacktrace.cpp "" "${STACKTRACE_LINK_LIB}" "")
check_support(HAS_STACKTRACE has_stacktrace.cpp "" "${STACKTRACE_LINK_LIB}" "") if(APPLE)
if(APPLE)
find_program(ADDR2LINE_PATH atos PATHS ENV PATH) find_program(ADDR2LINE_PATH atos PATHS ENV PATH)
else() else()
find_program(ADDR2LINE_PATH addr2line PATHS ENV PATH) find_program(ADDR2LINE_PATH addr2line PATHS ENV PATH)
@ -141,19 +140,11 @@ if(
message(FATAL_ERROR "Cpptrace auto config: No unwinding back-end seems to be supported, stack tracing will not work. To compile anyway set CPPTRACE_UNWIND_WITH_NOTHING.") message(FATAL_ERROR "Cpptrace auto config: No unwinding back-end seems to be supported, stack tracing will not work. To compile anyway set CPPTRACE_UNWIND_WITH_NOTHING.")
endif() endif()
elseif(MINGW) elseif(MINGW)
if(HAS_UNWIND) set(CPPTRACE_UNWIND_WITH_DBGHELP On)
set(CPPTRACE_UNWIND_WITH_UNWIND On) message(STATUS "Cpptrace auto config: Using dbghelp for unwinding")
message(STATUS "Cpptrace auto config: Using libgcc unwind for unwinding")
elseif(HAS_EXECINFO)
set(CPPTRACE_UNWIND_WITH_EXECINFO On)
message(STATUS "Cpptrace auto config: Using execinfo.h for unwinding")
else()
set(CPPTRACE_UNWIND_WITH_WINAPI On)
message(STATUS "Cpptrace auto config: Using winapi for unwinding")
endif()
elseif(WIN32) elseif(WIN32)
set(CPPTRACE_UNWIND_WITH_DBGHELP On) set(CPPTRACE_UNWIND_WITH_DBGHELP On)
message(STATUS "Cpptrace auto config: Using winapi for unwinding") message(STATUS "Cpptrace auto config: Using dbghelp for unwinding")
endif() endif()
else() else()
#message(STATUS "MANUAL CONFIG SPECIFIED") #message(STATUS "MANUAL CONFIG SPECIFIED")