kicad/thirdparty/sentry-native/external/crashpad/README.getsentry.md

2.3 KiB

Sentry Modifications

  • File attachments support for MacOS and Windows. Based on changes made in https://github.com/Youw/crashpad/, distributed with Apache 2.0 License.
  • Add throws declaration to memfd_create for compatibility with different libc versions.
  • Build System Changes Listed Below.
  • MinGW build support.

Build System Changes

In order to minimize external dependencies, and to better integrate with sentry-native, this fork replaced usage of depo_tools with explicit submodules, and added CMake files for building.

Both submodules and CMake files currently only support building on macOS and Windows, and do only export the necessary libraries and executables to integrate the crashpad client.

When updating this fork, make sure to keep the files in sync, as explained below.

Submodules

For macOS and Windows support, only third_party/mini_chromium and third_party/zlib are needed.

The specific submodule commit hashes can be found in the ./DEPS file.

CMake Integration

To allow building crashpad with CMake, the following CMake files were created by manually translating the BUILD.gn files in the same folders (and following included files):

  • ./CMakeLists.txt
  • ./client/CMakeLists.txt
  • ./compat/CMakeLists.txt
  • ./handler/CMakeLists.txt
  • ./minidump/CMakeLists.txt
  • ./snapshot/CMakeLists.txt
  • ./third_party/getopt/CMakeLists.txt
  • ./third_party/mini_chromium/CMakeLists.txt
  • ./third_party/zlib/CMakeLists.txt
  • ./tools/CMakeLists.txt
  • ./util/CMakeLists.txt

The important thing here is to keep the list of source files in sync when updating.

MinGW Changes

MinGW support adds the following files which need to be kept in sync.

  • compat/mingw/
  • third_party/mini_chromium/utf_string_conversion_utils.mingw.cc

Building for iOS

Build support for iOS, or Xcode in general is still a work in progress. Once complete, creating a iOS compatible Xcode project should be as easy as:

cmake -B cmakebuild -GXcode -DCMAKE_SYSTEM_NAME=iOS

See the upstream CMake Docs on iOS for further info.

How To Update

  • Bump the submodules to the commit hashes specified in ./DEPS
  • Go through the changes in BUILD.gn files, and apply them to the corresponding CMakeLists.txt. See the list above.