From 839502650cc5df3fe64756276a6fc79d940c6aa9 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Tue, 10 May 2022 17:50:09 +0200 Subject: [PATCH] qds: ENABLE_CRASHPAD on macos (universal builds) using a newer crashpad version build with: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git export PATH=$PWD/depot_tools:$PATH mkdir crashpad cd crashpad ../depot_tools/fetch crashpad cd crashpad gn gen out/Default --args='target_cpu="mac_universal"' ninja -C out/Default Change-Id: I782c09cb564aff725652cd1419a8dec78bc04fc5 Reviewed-by: Reviewed-by: Qt CI Bot Reviewed-by: Tim Jenssen --- CMakeLists.txt | 2 +- cmake/FindCrashpad.cmake | 32 +++++++------------------------- src/app/main.cpp | 5 ----- 3 files changed, 8 insertions(+), 31 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d2359e6a21c..aec846721de 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,7 +91,7 @@ set(CRASHPAD_BACKEND_URL "" CACHE STRING "Crashpad backend URL") set(BUILD_WITH_CRASHPAD OFF) # Linux is not supported for now # x86_64;arm64 is not supported for now -if(CRASHPAD_BACKEND_URL AND (WIN32 OR (APPLE AND NOT "${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64;arm64"))) +if(CRASHPAD_BACKEND_URL AND (WIN32 OR APPLE)) # Linux is not supported for now find_package(Crashpad QUIET) if(TARGET Crashpad::Crashpad) set(BUILD_WITH_CRASHPAD ON) diff --git a/cmake/FindCrashpad.cmake b/cmake/FindCrashpad.cmake index 8b16fd83be2..181c4b0518d 100644 --- a/cmake/FindCrashpad.cmake +++ b/cmake/FindCrashpad.cmake @@ -57,25 +57,9 @@ find_path(CRASHPAD_GEN_DIR "${CMAKE_PREFIX_PATH}" ) -if(APPLE) - find_path(CRASHPAD_OBJ_DIR - NAMES mig_output.child_portServer.o - PATH_SUFFIXES gen/util/mach - HINTS - "${CRASHPAD_OBJECT_DIR}" - "${CRASHPAD_LIB_DIR}/out/Default" - "${CMAKE_PREFIX_PATH}" - ) - set(CRASHPAD_APPLE_VARS CRASHPAD_OBJ_DIR CRASHPAD_GEN_DIR) - find_library(FWbsm bsm) - find_library(FWAppKit AppKit) - find_library(FWIOKit IOKit) - find_library(FWSecurity Security) -endif() - include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Crashpad DEFAULT_MSG - CRASHPAD_BIN_DIR CRASHPAD_INCLUDE_DIR CRASHPAD_LIB_DIR ${CRASHPAD_APPLE_VARS} + CRASHPAD_BIN_DIR CRASHPAD_INCLUDE_DIR CRASHPAD_LIB_DIR ) if(Crashpad_FOUND) @@ -93,18 +77,16 @@ if(Crashpad_FOUND) set_target_properties(Crashpad::Crashpad PROPERTIES IMPORTED_LOCATION "${CRASHPAD_LIB_DIR}/client/client.lib") elseif(APPLE) + find_library(FWbsm bsm) + find_library(FWAppKit AppKit) + find_library(FWIOKit IOKit) + find_library(FWSecurity Security) target_link_libraries(Crashpad::Crashpad INTERFACE "${CRASHPAD_LIB_DIR}/third_party/mini_chromium/mini_chromium/base/libbase.a" "${CRASHPAD_LIB_DIR}/util/libutil.a" + "${CRASHPAD_LIB_DIR}/util/libmig_output.a" "${CRASHPAD_LIB_DIR}/client/libclient.a" - "${CRASHPAD_OBJ_DIR}/mig_output.child_portServer.o" - "${CRASHPAD_OBJ_DIR}/mig_output.child_portUser.o" - "${CRASHPAD_OBJ_DIR}/mig_output.excServer.o" - "${CRASHPAD_OBJ_DIR}/mig_output.excUser.o" - "${CRASHPAD_OBJ_DIR}/mig_output.mach_excServer.o" - "${CRASHPAD_OBJ_DIR}/mig_output.mach_excUser.o" - "${CRASHPAD_OBJ_DIR}/mig_output.notifyServer.o" - "${CRASHPAD_OBJ_DIR}/mig_output.notifyUser.o" + "${CRASHPAD_LIB_DIR}/client/libcommon.a" ${FWbsm} ${FWAppKit} ${FWIOKit} ${FWSecurity}) set_target_properties(Crashpad::Crashpad PROPERTIES IMPORTED_LOCATION "${CRASHPAD_LIB_DIR}/client/libclient.a") diff --git a/src/app/main.cpp b/src/app/main.cpp index e17ef27e209..202b0461df9 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -412,11 +412,6 @@ QStringList lastSessionArgument() #ifdef ENABLE_CRASHPAD bool startCrashpad(const QString &libexecPath, bool crashReportingEnabled) { - if (QSysInfo::currentCpuArchitecture() == "arm64") { - qDebug() << "The crashpad_handler binary does not work on arm64 properly. So it is disabled for now."; - return false; - } - using namespace crashpad; // Cache directory that will store crashpad information and minidumps