+
This is Mono.
-A directory roadmap:
+ 1. Installation
+ 2. Using Mono
+ 3. Directory Roadmap
+
+1. Compilation and Installation
+===============================
+
+ a. Build Requirements
+ ---------------------
+
+ To build Mono, you will need the following components:
+
+ * pkg-config
+
+ Available from: http://www.freedesktop.org/Software/pkgconfig
+
+ * glib 2.4
+
+ Available from: http://www.gtk.org/
+
+ On Itanium, you must obtain libunwind:
+
+ http://www.hpl.hp.com/research/linux/libunwind/download.php4
+
+ On Solaris, make sure that you used GNU tar to unpack this package, as
+ Solaris tar will not unpack this correctly, and you will get strange errors.
+
+ On Solaris, make sure that you use the GNU toolchain to build the software.
+
+ Optional dependencies:
+
+ * libgdiplus
+
+ If you want to get support for System.Drawing, you will need to get
+ Libgdiplus.
+
+ b. Building the Software
+ ------------------------
+
+ If you obtained this package as an officially released tarball,
+ this is very simple, use configure and make:
+
+ ./configure --prefix=/usr/local
+ make
+ make install
+
+ Mono supports a JIT engine on x86, SPARC, SPARCv9, S/390, AMD64, ARM
+ and PowerPC systems.
+
+ If you obtained this as a snapshot, you will need an existing
+ Mono installation. To upgrade your installation, unpack both
+ mono and mcs:
+
+ tar xzf mcs-XXXX.tar.gz
+ tar xzf mono-XXXX.tar.gz
+ mv mono-XXX mono
+ mv mcs-XXX mcs
+ cd mono
+ ./autogen.sh --prefix=/usr/local
+ make
+
+ c. Building the software from SVN
+ ---------------------------------
+
+ If you are building the software from SVN, make sure that you
+ have up-to-date mcs and mono sources:
+
+ svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mono
+ svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mcs
+
+ Then, go into the mono directory, and configure:
+
+ cd mono
+ ./autogen.sh --prefix=/usr/local
+ make
+
+ This will automatically go into the mcs/ tree and build the
+ binaries there.
+
+ This assumes that you have a working mono installation, and that
+ there's a C# compiler named 'mcs', and a corresponding IL
+ runtime called 'mono'. You can use two make variables
+ EXTERNAL_MCS and EXTERNAL_RUNTIME to override these. e.g., you
+ can say
+
+ make EXTERNAL_MCS=/foo/bar/mcs EXTERNAL_RUNTIME=/somewhere/else/mono
+
+ If you don't have a working Mono installation
+ ---------------------------------------------
+
+ If you don't have a working Mono installation, an obvious choice
+ is to install the latest released packages of 'mono' for your
+ distribution and running autogen.sh; make; make install in the
+ mono module directory.
+
+ You can also try a slightly more risky approach: this may not work,
+ so start from the released tarball as detailed above.
+
+ This works by first getting the latest version of the 'monolite'
+ distribution, which contains just enough to run the 'mcs'
+ compiler. You do this with:
+
+ make get-monolite-latest
- doc/
- Contains documentation and the web site contents.
+ This will download and automatically gunzip and untar the
+ tarball, and place the files appropriately so that you can then
+ just run:
+
+ make
+
+ To ensure that you're using the 'monolite' distribution, you can
+ also try passing EXTERNAL_MCS=false on the make command-line.
+
+ Testing and Installation
+ ------------------------
+
+ You can run (part of) the mono and mcs testsuites with the command:
+
+ make check
+
+ All tests should pass.
+
+ If you want more extensive tests, including those that test the
+ class libraries, you need to re-run 'configure' with the
+ '--enable-nunit-tests' flag, and try
+
+ make -k check
+
+ Expect to find a few testsuite failures. As a sanity check, you
+ can compare the failures you got with
+
+ http://go-mono.com/tests/displayTestResults.php
+
+ You can now install mono with:
+
+ make install
+
+ Failure to follow these steps may result in a broken installation.
+
+2. Using Mono
+=============
+
+ Once you have installed the software, you can run a few programs:
+
+ * runtime engine
+
+ mono program.exe
+
+ * C# compiler
+
+ mcs program.cs
+
+ * CIL Disassembler
+
+ monodis program.exe
+
+ See the man pages for mono(1), mint(1), monodis(1) and mcs(2)
+ for further details.
+
+3. Directory Roadmap
+====================
+
+ docs/
+ Technical documents about the Mono runtime.
+
+ data/
+ Configuration files installed as part of the Mono runtime.
mono/
- The core of the executable.
+ The core of the Mono Runtime.
metadata/
- The library to deal with executables and libraries for
- .NET
+ The object system and metadata reader.
+
+ mini/
+ The Just in Time Compiler.
dis/
CIL executable Disassembler
cli/
Common code for the JIT and the interpreter.
+ io-layer/
+ The I/O layer and system abstraction for
+ emulating the .NET IO model.
+
cil/
Common Intermediate Representation, XML
definition of the CIL bytecodes.
interp/
- Interpreter for CLI executables.
+ Interpreter for CLI executables (obsolete).
-* Using Mono
+ arch/
+ Architecture specific portions.
- Once you have installed the software, you can run a few programs:
+ man/
- monodis program.exe
+ Manual pages for the various Mono commands and programs.
- That will dump the bytecodes for program.exe. Monodis support
- a number of options that dumps various metadata tables
- (chapter 23 of the Partition III).
+ scripts/
- You can try the interpreter like this:
+ Scripts used to invoke Mono and the corresponding program.
- mono-int program.exe
+ runtime/
+ A directory that contains the Makefiles that link the
+ mono/ and mcs/ build systems.