[interp] Fix resuming into interp frame during EH (#12092)
[mono-project.git] / sdks / README.md
blobe83158ed2c9eb8726c45e7e858e57528b15c9ea9
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    ```
12       git clean -xffd
13    ```
15    The previous should be sufficient but if that does not work then try hard resetting
17    ```
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)
29 ## Setup
31 Copy `Make.config.sample` to `Make.config` and edit the new file to disable building the target you're not interested in.
32 Unless you have a very particular need, the BCL build should be left enabled as it's needed by all test runners.
34 ## Building for XA/XI/XM and WebAssembly
36 To build Mono for Android, iOS or WebAssembly, the build scripts can be found in `sdks/builds/`. 
38 The `make` targets are as follow:
40 ```
41 # Android
42 mono$ make -C sdks/builds provision-android && make -C sdks/android accept-android-license
43 mono$ make -C sdks/builds provision-mxe
44 mono$ make -C sdks/builds archive-android NINJA= IGNORE_PROVISION_ANDROID=1 IGNORE_PROVISION_MXE=1
46 # iOS
47 mono$ make -C sdks/builds archive-ios NINJA=
49 # WebAssembly
50 mono$ make -C sdks/builds provision-wasm
51 mono$ make -C sdks/builds archive-wasm  NINJA=
53 # Mac
54 mono$ make -C sdks/builds archive-mac [upcoming]
55 ```
57 # Testing instructions
59 ## WebAssembly
61 First, ensure the `runtime`, `AOT` and `bcl` have been built and packaged in the `builds` directory:
63 ```
64 mono$ make -C sdks/builds package-wasm-runtime package-wasm-cross package-wasm-bcl
65 ````
67 Go to the `wasm` directory for building and testing WebAssembly. Right now the following targets are available:
69 - mono: Encompasses all the previous steps
70 - build: Build the test runner and test suites
71 - run-all-mini: Run mini test suite
72 - run-all-corlib: Run corlib test suite
73 - run-all-system: Run System test suite
74 - run-all-system-core: Run System.Core test suite
75 - run-all-binding: Run bindings test suite
76 - run-browser-tests: Run tests that require a browser environment
77 - build-aot-all: build all AOT samples and tests
78 - run-aot-all: run all AOT samples and tests
79 - clean: cleans the wasm directory
81 For bcl or runtime changes, you must manually run the corresponding build/package steps in `builds`.
82 For test suite changes, it's enough to just rerun the local target.
84 # Dependencies
86 | Project     | Dependencies        |
87 | ----------- | ------------------- |
88 | Android     | Android SDK and NDK |
89 | iOS         | Xcode               |
90 | WebAssembly |                     |
92 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).