diff options
author | Mahmoud Badri <mahmoud.badri@qt.io> | 2020-09-21 12:58:35 +0300 |
---|---|---|
committer | Mahmoud Badri <mahmoud.badri@qt.io> | 2021-01-18 22:08:14 +0000 |
commit | cc7be5724ad9e25c03710a17ce50e09088497709 (patch) | |
tree | deee0d0f76a2b30d0c49f4f9379d7c0bb9b7e98a /src/app/CMakeLists.txt | |
parent | 89ad72c78958bd3706ce9ca6461cec8487bb1441 (diff) |
Add Crashpad to Qt Creator and Qt Design Studio
Fixes: QDS-2748
Change-Id: I87e25682f066d167eebfd7b78c46c166e5062e11
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Diffstat (limited to 'src/app/CMakeLists.txt')
-rw-r--r-- | src/app/CMakeLists.txt | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index 0e52bde5dd..41c56f03ca 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -79,3 +79,54 @@ if (APPLE) DESTINATION ${IDE_DATA_PATH} ) endif() + +# Crashpad +set(CRASHPAD_BACKEND_URL "" CACHE STRING "Crashpad backend URL") +set(CRASHPAD_SRC "" CACHE STRING "Path to Crashpad source code") +set(CRASHPAD_BUILD "" CACHE STRING "Path to Crashpad build folder") + +if (CRASHPAD_BACKEND_URL + AND CRASHPAD_SRC + AND EXISTS "${CRASHPAD_SRC}" + AND CRASHPAD_BUILD + AND EXISTS "${CRASHPAD_BUILD}" + AND (WIN32 OR APPLE)) # LINUX isn't supported for now + target_compile_definitions(qtcreator PRIVATE + CRASHPAD_BACKEND_URL="${CRASHPAD_BACKEND_URL}" + ENABLE_CRASHPAD + WIN32_LEAN_AND_MEAN) # It comes usually with precompiled header, but at the installer they are disabled + target_include_directories(qtcreator PRIVATE + "${CRASHPAD_SRC}" + "${CRASHPAD_SRC}/third_party/mini_chromium/mini_chromium") + + if (WIN32) + target_link_libraries(qtcreator PUBLIC ${CRASHPAD_BUILD}/obj/third_party/mini_chromium/mini_chromium/base/base.lib + ${CRASHPAD_BUILD}/obj/util/util.lib + ${CRASHPAD_BUILD}/obj/client/client.lib + advapi32) + install(FILES ${CRASHPAD_BUILD}/crashpad_handler.exe DESTINATION "${IDE_LIBEXEC_PATH}") + + elseif(APPLE) + find_library(FWbsm bsm) + target_link_libraries(qtcreator PUBLIC ${CRASHPAD_BUILD}/obj/third_party/mini_chromium/mini_chromium/base/libbase.a + ${CRASHPAD_BUILD}/obj/util/libutil.a + ${CRASHPAD_BUILD}/obj/client/libclient.a + ${CRASHPAD_BUILD}/obj/out/Default/gen/util/mach/mig_output.child_portServer.o + ${CRASHPAD_BUILD}/obj/out/Default/gen/util/mach/mig_output.child_portUser.o + ${CRASHPAD_BUILD}/obj/out/Default/gen/util/mach/mig_output.excServer.o + ${CRASHPAD_BUILD}/obj/out/Default/gen/util/mach/mig_output.excUser.o + ${CRASHPAD_BUILD}/obj/out/Default/gen/util/mach/mig_output.mach_excServer.o + ${CRASHPAD_BUILD}/obj/out/Default/gen/util/mach/mig_output.mach_excUser.o + ${CRASHPAD_BUILD}/obj/out/Default/gen/util/mach/mig_output.notifyServer.o + ${CRASHPAD_BUILD}/obj/out/Default/gen/util/mach/mig_output.notifyUser.o + ${FWbsm} ${FWAppKit} ${FWIOKit} ${FWSecurity}) + install(FILES ${CRASHPAD_BUILD}/crashpad_handler DESTINATION "${IDE_LIBEXEC_PATH}") + + elseif(UNIX) + # TODO: Crashpad is not well supported on linux currently + target_link_libraries(qtcreator PUBLIC ${CRASHPAD_BUILD}/obj/third_party/mini_chromium/mini_chromium/base/libbase.a + ${CRASHPAD_BUILD}/obj/util/libutil.a + ${CRASHPAD_BUILD}/obj/client/libclient.a) + install(FILES ${CRASHPAD_BUILD}/crashpad_handler DESTINATION "${IDE_LIBEXEC_PATH}") + endif() +endif() |