+ 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.
+
+ * libzlib
+
+ This library and the development headers are required for compression
+ file support in the 2.0 profile.
+
+ 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
+
+ For people with non-standard installations of the auto* utils and of
+ pkg-config (common on misconfigured OSX and windows boxes), you could get
+ an error like this:
+
+ ./configure: line 19176: syntax error near unexpected token `PKG_CHECK_MODULES(BASE_DEPENDENCIES,' ...
+
+ This means that you need to set the ACLOCAL_FLAGS environment var
+ when invoking autogen.sh, like this:
+
+ ACLOCAL_FLAGS="-I $acprefix/share/aclocal" ./autogen.sh --prefix=/usr/loca
+
+ where $acprefix is the prefix where aclocal has been installed.
+
+ 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
+
+ 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.
+
+ d. Common Configuration Options
+ -------------------------------
+
+ The following are the configuration options that someone
+ building Mono might want to use:
+
+
+ --with-gc=[boehm, included, sgen, none]
+
+ Selects the garbage collector engine to use, the
+ default is the "included" value.
+
+ included:
+ This is the default value, and its
+ the most feature complete, it will allow Mono
+ to use typed allocations and support the
+ debugger.
+
+ It is essentially a slightly modified Boehm GC
+
+ boehm:
+ This is used to use a system-install Boehm GC,
+ it is useful to test new features available in
+ Boehm GC, but we do not recommend that people
+ use this, as it disables a few features.
+
+ sgen:
+ The under-development Generational GC for
+ Mono, do not use this in production.
+
+ none:
+ Disables the inclusion of a garbage
+ collector.
+
+ --with-tls=__thread,pthread
+
+ Controls how Mono should access thread local storage,
+ pthread forces Mono to use the pthread APIs, while
+ __thread uses compiler-optimized access to it.
+
+ Although __thread is faster, it requires support from
+ the compiler, kernel and libc. Old Linux systems do
+ not support with __thread.