aboutsummaryrefslogtreecommitdiffstats
path: root/src/app/CMakeLists.txt
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2021-01-19 15:49:30 +0100
committerEike Ziller <eike.ziller@qt.io>2021-01-20 15:26:03 +0000
commit44901a38634b34041a7f7d14f68679d7b8e2a252 (patch)
treee5043270ee68703c853050a30fc719bf48bb5a37 /src/app/CMakeLists.txt
parentacdb16dd4a32c0e7bdc4ad0003c757487a718f0c (diff)
Find Crashpad via CMake configuration
Makes it possible to point CMake to crashpad via CMAKE_PREFIX_PATH if it was built to <crashpad>/out/Default, or by setting individual CRASHPAD_* variables to the sources and build results. Change-Id: I9634fe7ab8c1e14b7e0f3ccf3415396c8dc1e71a Reviewed-by: Cristian Adam <cristian.adam@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Diffstat (limited to 'src/app/CMakeLists.txt')
-rw-r--r--src/app/CMakeLists.txt59
1 files changed, 10 insertions, 49 deletions
diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt
index 41c56f03ca..127e364536 100644
--- a/src/app/CMakeLists.txt
+++ b/src/app/CMakeLists.txt
@@ -80,53 +80,14 @@ if (APPLE)
)
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()
+extend_qtc_executable(qtcreator
+ CONDITION BUILD_WITH_CRASHPAD
+ DEFINES
+ 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
+ DEPENDS Crashpad::Crashpad
+)
+if(BUILD_WITH_CRASHPAD)
+ install(FILES ${CRASHPAD_BIN_DIR}/crashpad_handler${CMAKE_EXECUTABLE_SUFFIX} DESTINATION "${IDE_LIBEXEC_PATH}")
endif()