aboutsummaryrefslogtreecommitdiffstats
path: root/src/app/CMakeLists.txt
diff options
context:
space:
mode:
authorMahmoud Badri <mahmoud.badri@qt.io>2020-09-21 12:58:35 +0300
committerMahmoud Badri <mahmoud.badri@qt.io>2021-01-18 22:08:14 +0000
commitcc7be5724ad9e25c03710a17ce50e09088497709 (patch)
treedeee0d0f76a2b30d0c49f4f9379d7c0bb9b7e98a /src/app/CMakeLists.txt
parent89ad72c78958bd3706ce9ca6461cec8487bb1441 (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.txt51
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()