[gc] add stop-the-world api (#20379)
[mono-project.git] / sdks / README.md
blobf91cabd5e148c3334cf031be725b2f91e4ac894d
1 This project provides build scripts and sample apps for Mono targeting its supported platforms. Supported are Android, iOS and WebAssembly.
3 # Build instructions
5 ## Dependencies
7 - automake 1.16.1
9   if you have already built before using a previous version of automake you may need to clean the repo.
11   ```bash
12   git clean -xffd
13   ```
15   The previous should be sufficient but if that does not work then try hard resetting
17   ```bash
18   git reset --hard && git clean -xffd && git submodule foreach --recursive git reset --hard && git submodule foreach --recursive git clean -xffd && git submodule update --init --recursive
19   ```
21 - [ninja build system](https://ninja-build.org)
23   - Getting Ninja
25     You can [download the Ninja binary](https://github.com/ninja-build/ninja/releases) or [find
26     it in your system's package manager](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages)
28 ## Setup
30 Copy `Make.config.sample` to `Make.config` and edit the new file to disable building the target you're not interested in.
31 Unless you have a very particular need, the BCL build should be left enabled as it's needed by all test runners.
33 ## Building for XA/XI/XM and WebAssembly
35 To build Mono for Android, iOS or WebAssembly, the build scripts can be found in `sdks/builds/`. 
37 For Android, you need to copy `sdks/Make.config.sample` to `sdks/Make.config` and set
39 ```
40 ENABLE_ANDROID = 1
41 ```
43 The `make` targets are as follow:
45 ```bash
46 # Android
47 make -C sdks/builds provision-android && make -C sdks/android accept-android-license
48 make -C sdks/builds provision-mxe
49 make -C sdks/builds archive-android NINJA= IGNORE_PROVISION_ANDROID=1 IGNORE_PROVISION_MXE=1
51 # iOS
52 make -C sdks/builds archive-ios NINJA=
54 # WebAssembly
55 make -C sdks/builds provision-wasm
56 make -C sdks/builds archive-wasm  NINJA=
58 # Mac
59 make -C sdks/builds archive-mac [upcoming]
60 ```
62 # WebAssembly
64 Go to the `wasm` directory for building and testing WebAssembly.  For more information view the [WebAssembly readme](./wasm/README.md)
67 # Dependencies
69 | Project     | Dependencies        |
70 | ----------- | ------------------- |
71 | Android     | Android SDK and NDK |
72 | iOS         | Xcode               |
73 | WebAssembly |                     |
75 See `sdks/versions.mk` for specific version numbers, and `sdks/paths.mk` for where they should be installed. These dependencies will not be installed as part of the build process, and will be expected to be present; an error will be triggered if it's not the case. If you need an additional version, please do contact us or submit a pull-request against [mono/mono](https://github.com/mono/mono).