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