1 This project provides build scripts and sample apps for Mono targeting its supported platforms. Supported are Android, iOS and WebAssembly.
9 if you have already built before using a previous version of automake you may need to clean the repo.
15 The previous should be sufficient but if that does not work then try hard resetting
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
21 - [ninja build system](https://ninja-build.org)
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)
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.
36 To build Mono for Android, iOS or WebAssembly, the build scripts can be found in `sdks/builds/`. There are 5 predefined targets that can be invoked:
38 - toolchain: setup the toolchain so we can cross-compile the runtime for the appropriate platform
39 - configure: configure the build of Mono
41 - package: provide a package of the built Mono, the result can be found in `sdks/builds/out/`
42 - clean: clean the Mono build directory
44 The `make` targets are as follow:
48 make -C builds {toolchain,configure,build,package,clean}-android-{armeabi,armeabi-v7a,arm64-v8a,x86,x86_64}
51 make -C builds {toolchain,configure,build,package,clean}-ios-{target{32,64},sim{32,64},cross{32,64}}
54 make -C builds {toolchain,configure,build,package,clean}-wasm-runtime
57 # Testing instructions
61 First, ensure the bcl and wasm-runtime have been built and packaged in the `builds` directory:
64 make build-wasm-runtime package-wasm-runtime
65 make build-bcl package-bcl
68 Go to the `wasm` directory for building and testing WebAssembly. Right now the following targets are available:
70 - do-runtime: Encompasses all the previous steps
71 - build: Build the test runner and test suites
72 - run-all-mini: Run mini test suite
73 - run-all-corlib: Run corlib test suite
74 - run-all-system: Run System test suite
75 - run-all-system-core: Run System.Core test suite
76 - run-all-binding: Run bindings test suite
78 For bcl or runtime changes, you must manually run the corresponding build/package steps in `builds`.
79 For test suite changes, it's enough to just rerun the local target.
83 | Project | Dependencies |
84 | ----------- | ------------------- |
85 | Android | Android SDK and NDK |
89 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).