This is MonoKickstart, a standalone Mono "kick" application to run C# programs on GNU/Linux and macOS without depending on a system installation of Mono.
kick.c is released under the zlib license. See LICENSE for details.
binreloc is released under the WTFPL license. See binreloc.LICENSE for details.
Originally developed by Edward Rudd for Bastion, MonoKickstart is a reworking of the stock generated kickstart code from Mono to easily run C# applications on *nix platforms. macOS support was added in 2013 for FNA titles.
We have provided a precompiled MonoKickstart application for you to use in your programs. Included are kick binaries and libmono binaries for macOS and Linux. We have also provided the subset of the C# BCL needed by FNA; if you need any other DLLs, you can find them in a standard binary release of Mono.
To use the precompiled MonoKickstart, simply rename the kick.bin.* binaries to the name of your .exe assembly (for instance, MyGame.bin.x86 starts MyGame.exe).
If you wish to use additional shared libraries (for instance, libSDL2), simply add the library to the architecture's lib folder:
macOS: osx/ Linux: lib64/
Be sure to run ./fixDylibs.sh
on macOS if you add new libraries!
Recent versions of .NET broke compatibility with previous versions, in ways that are non-trivial for applications to fix. To work around the issue, we have integrated a patch from the OpenBSD community to allow for replicating old .NET behavior by simply setting MONO_FORCE_COMPAT to a non-null value:
https://github.com/openbsd/ports/commit/7670058636c4985f47fa8da6dceaa9e7fec4f933
Thanks to the OpenBSD community for the fix!