diff options
| author | 2023-10-04 13:11:05 -0400 | |
|---|---|---|
| committer | 2023-10-08 11:35:53 -0400 | |
| commit | d3997bad9b84579938d8cdb44b1d17cfab7bbcce (patch) | |
| tree | 4a9128e8ba93d3963ce37b65efd2a940776cae3c /externals/CMakeLists.txt | |
| parent | Merge pull request #11657 from liamwhite/new-codespell (diff) | |
| download | yuzu-d3997bad9b84579938d8cdb44b1d17cfab7bbcce.tar.gz yuzu-d3997bad9b84579938d8cdb44b1d17cfab7bbcce.tar.xz yuzu-d3997bad9b84579938d8cdb44b1d17cfab7bbcce.zip | |
qt: implement automatic crash dump support
Diffstat (limited to 'externals/CMakeLists.txt')
| -rw-r--r-- | externals/CMakeLists.txt | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 9eebc7d65..c2009f34b 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt | |||
| @@ -185,3 +185,105 @@ if (ANDROID) | |||
| 185 | add_subdirectory(libadrenotools) | 185 | add_subdirectory(libadrenotools) |
| 186 | endif() | 186 | endif() |
| 187 | endif() | 187 | endif() |
| 188 | |||
| 189 | # Breakpad | ||
| 190 | # https://github.com/microsoft/vcpkg/blob/master/ports/breakpad/CMakeLists.txt | ||
| 191 | if (YUZU_CRASH_DUMPS AND NOT TARGET libbreakpad_client) | ||
| 192 | set(BREAKPAD_WIN32_DEFINES | ||
| 193 | NOMINMAX | ||
| 194 | UNICODE | ||
| 195 | WIN32_LEAN_AND_MEAN | ||
| 196 | _CRT_SECURE_NO_WARNINGS | ||
| 197 | _CRT_SECURE_NO_DEPRECATE | ||
| 198 | _CRT_NONSTDC_NO_DEPRECATE | ||
| 199 | ) | ||
| 200 | |||
| 201 | # libbreakpad | ||
| 202 | add_library(libbreakpad STATIC) | ||
| 203 | file(GLOB_RECURSE LIBBREAKPAD_SOURCES breakpad/src/processor/*.cc) | ||
| 204 | file(GLOB_RECURSE LIBDISASM_SOURCES breakpad/src/third_party/libdisasm/*.c) | ||
| 205 | list(FILTER LIBBREAKPAD_SOURCES EXCLUDE REGEX "_unittest|_selftest|synth_minidump|/tests|/testdata|/solaris|microdump_stackwalk|minidump_dump|minidump_stackwalk") | ||
| 206 | if (WIN32) | ||
| 207 | list(FILTER LIBBREAKPAD_SOURCES EXCLUDE REGEX "/linux|/mac|/android") | ||
| 208 | target_compile_definitions(libbreakpad PRIVATE ${BREAKPAD_WIN32_DEFINES}) | ||
| 209 | target_include_directories(libbreakpad PRIVATE "${CMAKE_GENERATOR_INSTANCE}/DIA SDK/include") | ||
| 210 | elseif (APPLE) | ||
| 211 | list(FILTER LIBBREAKPAD_SOURCES EXCLUDE REGEX "/linux|/windows|/android") | ||
| 212 | else() | ||
| 213 | list(FILTER LIBBREAKPAD_SOURCES EXCLUDE REGEX "/mac|/windows|/android") | ||
| 214 | endif() | ||
| 215 | target_sources(libbreakpad PRIVATE ${LIBBREAKPAD_SOURCES} ${LIBDISASM_SOURCES}) | ||
| 216 | target_include_directories(libbreakpad | ||
| 217 | PUBLIC | ||
| 218 | ${CMAKE_CURRENT_SOURCE_DIR}/breakpad/src | ||
| 219 | ${CMAKE_CURRENT_SOURCE_DIR}/breakpad/src/third_party/libdisasm | ||
| 220 | ) | ||
| 221 | |||
| 222 | # libbreakpad_client | ||
| 223 | add_library(libbreakpad_client STATIC) | ||
| 224 | file(GLOB LIBBREAKPAD_COMMON_SOURCES breakpad/src/common/*.cc breakpad/src/common/*.c breakpad/src/client/*.cc) | ||
| 225 | |||
| 226 | if (WIN32) | ||
| 227 | file(GLOB_RECURSE LIBBREAKPAD_CLIENT_SOURCES breakpad/src/client/windows/*.cc breakpad/src/common/windows/*.cc) | ||
| 228 | list(FILTER LIBBREAKPAD_COMMON_SOURCES EXCLUDE REGEX "language.cc|path_helper.cc|stabs_to_module.cc|stabs_reader.cc|minidump_file_writer.cc") | ||
| 229 | target_include_directories(libbreakpad_client PRIVATE "${CMAKE_GENERATOR_INSTANCE}/DIA SDK/include") | ||
| 230 | target_compile_definitions(libbreakpad_client PRIVATE ${BREAKPAD_WIN32_DEFINES}) | ||
| 231 | elseif (APPLE) | ||
| 232 | target_compile_definitions(libbreakpad_client PRIVATE HAVE_MACH_O_NLIST_H) | ||
| 233 | file(GLOB_RECURSE LIBBREAKPAD_CLIENT_SOURCES breakpad/src/client/mac/*.cc breakpad/src/common/mac/*.cc) | ||
| 234 | list(APPEND LIBBREAKPAD_CLIENT_SOURCES breakpad/src/common/mac/MachIPC.mm) | ||
| 235 | else() | ||
| 236 | target_compile_definitions(libbreakpad_client PUBLIC -DHAVE_A_OUT_H) | ||
| 237 | file(GLOB_RECURSE LIBBREAKPAD_CLIENT_SOURCES breakpad/src/client/linux/*.cc breakpad/src/common/linux/*.cc) | ||
| 238 | endif() | ||
| 239 | list(APPEND LIBBREAKPAD_CLIENT_SOURCES ${LIBBREAKPAD_COMMON_SOURCES}) | ||
| 240 | list(FILTER LIBBREAKPAD_CLIENT_SOURCES EXCLUDE REGEX "/sender|/tests|/unittests|/testcases|_unittest|_test") | ||
| 241 | target_sources(libbreakpad_client PRIVATE ${LIBBREAKPAD_CLIENT_SOURCES}) | ||
| 242 | target_include_directories(libbreakpad_client PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/breakpad/src) | ||
| 243 | |||
| 244 | if (WIN32) | ||
| 245 | target_link_libraries(libbreakpad_client PRIVATE wininet.lib) | ||
| 246 | elseif (APPLE) | ||
| 247 | find_library(CoreFoundation_FRAMEWORK CoreFoundation) | ||
| 248 | target_link_libraries(libbreakpad_client PRIVATE ${CoreFoundation_FRAMEWORK}) | ||
| 249 | else() | ||
| 250 | find_library(PTHREAD_LIBRARIES pthread) | ||
| 251 | target_compile_definitions(libbreakpad_client PRIVATE HAVE_GETCONTEXT=1) | ||
| 252 | if (PTHREAD_LIBRARIES) | ||
| 253 | target_link_libraries(libbreakpad_client PRIVATE ${PTHREAD_LIBRARIES}) | ||
| 254 | endif() | ||
| 255 | endif() | ||
| 256 | |||
| 257 | # Host tools for symbol processing | ||
| 258 | if (LINUX) | ||
| 259 | find_package(ZLIB REQUIRED) | ||
| 260 | |||
| 261 | add_executable(minidump_stackwalk breakpad/src/processor/minidump_stackwalk.cc) | ||
| 262 | target_link_libraries(minidump_stackwalk PRIVATE libbreakpad libbreakpad_client) | ||
| 263 | |||
| 264 | add_executable(dump_syms | ||
| 265 | breakpad/src/common/dwarf_cfi_to_module.cc | ||
| 266 | breakpad/src/common/dwarf_cu_to_module.cc | ||
| 267 | breakpad/src/common/dwarf_line_to_module.cc | ||
| 268 | breakpad/src/common/dwarf_range_list_handler.cc | ||
| 269 | breakpad/src/common/language.cc | ||
| 270 | breakpad/src/common/module.cc | ||
| 271 | breakpad/src/common/path_helper.cc | ||
| 272 | breakpad/src/common/stabs_reader.cc | ||
| 273 | breakpad/src/common/stabs_to_module.cc | ||
| 274 | breakpad/src/common/dwarf/bytereader.cc | ||
| 275 | breakpad/src/common/dwarf/dwarf2diehandler.cc | ||
| 276 | breakpad/src/common/dwarf/dwarf2reader.cc | ||
| 277 | breakpad/src/common/dwarf/elf_reader.cc | ||
| 278 | breakpad/src/common/linux/crc32.cc | ||
| 279 | breakpad/src/common/linux/dump_symbols.cc | ||
| 280 | breakpad/src/common/linux/elf_symbols_to_module.cc | ||
| 281 | breakpad/src/common/linux/elfutils.cc | ||
| 282 | breakpad/src/common/linux/file_id.cc | ||
| 283 | breakpad/src/common/linux/linux_libc_support.cc | ||
| 284 | breakpad/src/common/linux/memory_mapped_file.cc | ||
| 285 | breakpad/src/common/linux/safe_readlink.cc | ||
| 286 | breakpad/src/tools/linux/dump_syms/dump_syms.cc) | ||
| 287 | target_link_libraries(dump_syms PRIVATE libbreakpad_client ZLIB::ZLIB) | ||
| 288 | endif() | ||
| 289 | endif() | ||