2006-06-06 Sebastien Pouliot <sebastien@ximian.com>
[mono/afaerber.git] / README
blobd9e5dbc678b17d1270351c8a46a0fe1410549726
2 This is Mono.
4         1. Installation
5         2. Using Mono
6         3. Directory Roadmap
8 1. Compilation and Installation
9 ===============================
11    a. Build Requirements
12    ---------------------
14         To build Mono, you will need the following components:
16                 * pkg-config
18                   Available from: http://www.freedesktop.org/Software/pkgconfig
20                 * glib 2.4
22                   Available from: http://www.gtk.org/
24         On Itanium, you must obtain libunwind:
26                 http://www.hpl.hp.com/research/linux/libunwind/download.php4
28         On Solaris, make sure that you used GNU tar to unpack this package, as
29         Solaris tar will not unpack this correctly, and you will get strange errors.
31         On Solaris, make sure that you use the GNU toolchain to build the software.
33         Optional dependencies:
35                 * libgdiplus
37                   If you want to get support for System.Drawing, you will need to get
38                   Libgdiplus.
40     b. Building the Software
41     ------------------------
42         
43         If you obtained this package as an officially released tarball,
44         this is very simple, use configure and make:
46                 ./configure --prefix=/usr/local
47                 make
48                 make install
50         Mono supports a JIT engine on x86, SPARC, SPARCv9, S/390, AMD64, ARM
51         and PowerPC systems.
53         If you obtained this as a snapshot, you will need an existing
54         Mono installation.  To upgrade your installation, unpack both
55         mono and mcs:
57                 tar xzf mcs-XXXX.tar.gz
58                 tar xzf mono-XXXX.tar.gz
59                 mv mono-XXX mono
60                 mv mcs-XXX mcs
61                 cd mono
62                 ./autogen.sh --prefix=/usr/local
63                 make
65     c. Building the software from SVN
66     ---------------------------------
68         If you are building the software from SVN, make sure that you
69         have up-to-date mcs and mono sources:
71                 svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mono
72                 svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mcs
74         Then, go into the mono directory, and configure:
76                 cd mono
77                 ./autogen.sh --prefix=/usr/local
78                 make
80         This will automatically go into the mcs/ tree and build the
81         binaries there.
83         This assumes that you have a working mono installation, and that
84         there's a C# compiler named 'mcs', and a corresponding IL
85         runtime called 'mono'.  You can use two make variables
86         EXTERNAL_MCS and EXTERNAL_RUNTIME to override these.  e.g., you
87         can say
89           make EXTERNAL_MCS=/foo/bar/mcs EXTERNAL_RUNTIME=/somewhere/else/mono
90         
91         If you don't have a working Mono installation
92         ---------------------------------------------
94         If you don't have a working Mono installation, an obvious choice
95         is to install the latest released packages of 'mono' for your
96         distribution and running autogen.sh; make; make install in the
97         mono module directory.
99         You can also try a slightly more risky approach: this may not work,
100         so start from the released tarball as detailed above.
102         This works by first getting the latest version of the 'monolite'
103         distribution, which contains just enough to run the 'mcs'
104         compiler.  You do this with:
106                 make get-monolite-latest
108         This will download and automatically gunzip and untar the
109         tarball, and place the files appropriately so that you can then
110         just run:
112                 make
114         To ensure that you're using the 'monolite' distribution, you can
115         also try passing EXTERNAL_MCS=false on the make command-line.
117         Testing and Installation
118          ------------------------
120         You can run (part of) the mono and mcs testsuites with the command:
122                 make check
124         All tests should pass.  
126         If you want more extensive tests, including those that test the
127         class libraries, you need to re-run 'configure' with the
128         '--enable-nunit-tests' flag, and try
130                 make -k check
132         Expect to find a few testsuite failures.  As a sanity check, you
133         can compare the failures you got with
135                 http://go-mono.com/tests/displayTestResults.php
137         You can now install mono with:
139                 make install
141         Failure to follow these steps may result in a broken installation. 
143 2. Using Mono
144 =============
146         Once you have installed the software, you can run a few programs:
148         * runtime engine
150                 mono program.exe
152         * C# compiler
154                 mcs program.cs
156         * CIL Disassembler
158                 monodis program.exe
160         See the man pages for mono(1), mint(1), monodis(1) and mcs(2)
161         for further details.
163 3. Directory Roadmap
164 ====================
166         docs/
167                 Technical documents about the Mono runtime.
169         data/
170                 Configuration files installed as part of the Mono runtime.
172         mono/
173                 The core of the Mono Runtime.
175                 metadata/
176                         The object system and metadata reader.
178                 mini/
179                         The Just in Time Compiler.
181                 dis/
182                         CIL executable Disassembler
184                 cli/
185                         Common code for the JIT and the interpreter.
187                 io-layer/
188                         The I/O layer and system abstraction for 
189                         emulating the .NET IO model.
191                 cil/
192                         Common Intermediate Representation, XML
193                         definition of the CIL bytecodes.
195                 interp/
196                         Interpreter for CLI executables (obsolete).
198                 arch/
199                         Architecture specific portions.
201         man/
203                 Manual pages for the various Mono commands and programs.
205         scripts/
207                 Scripts used to invoke Mono and the corresponding program.
209         runtime/
211                 A directory that contains the Makefiles that link the
212                 mono/ and mcs/ build systems.