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

72 lines
2.3 KiB
Markdown

# 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](https://cmake.org/cmake/help/v3.17/manual/cmake-toolchains.7.html#cross-compiling-for-ios-tvos-or-watchos) 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.