72 lines
2.3 KiB
Markdown
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.
|