Updates.
[mono.git] / README
1
2 This is Mono.
3
4         1. Installation
5         2. Using Mono
6         3. Directory Roadmap
7
8 1. Compilation and Installation
9 ===============================
10
11    a. Build Requirements
12    ---------------------
13
14         To build Mono, you will need the following components:
15
16                 * pkg-config
17
18                   Available from: http://www.freedesktop.org/Software/pkgconfig
19
20                 * glib 2.4
21
22                   Available from: http://www.gtk.org/
23
24         On Itanium, you must obtain libunwind:
25
26                 http://www.hpl.hp.com/research/linux/libunwind/download.php4
27
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.
30
31         On Solaris, make sure that you use the GNU toolchain to build the software.
32
33         Optional dependencies:
34
35                 * libgdiplus
36
37                   If you want to get support for System.Drawing, you will need to get
38                   Libgdiplus.
39
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:
45
46                 ./configure --prefix=/usr/local
47                 make
48                 make install
49
50         Mono supports a JIT engine on x86, SPARC, SPARCv9, S/390, AMD64, ARM
51         and PowerPC systems.
52
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:
56
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
64
65     c. Building the software from SVN
66     ---------------------------------
67
68         If you are building the software from SVN, make sure that you
69         have up-to-date mcs and mono sources:
70
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
73
74         Then, go into the mono directory, and configure:
75
76                 cd mono
77                 ./autogen.sh --prefix=/usr/local
78                 make
79
80         This will automatically go into the mcs/ tree and build the
81         binaries there.
82
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
88
89           make EXTERNAL_MCS=/foo/bar/mcs EXTERNAL_RUNTIME=/somewhere/else/mono
90         
91         If you don't have a working Mono installation
92         ---------------------------------------------
93
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.
98
99         You can also try a slightly more risky approach: this may not work,
100         so start from the released tarball as detailed above.
101
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:
105
106                 make get-monolite-latest
107
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:
111
112                 make
113
114         To ensure that you're using the 'monolite' distribution, you can
115         also try passing EXTERNAL_MCS=false on the make command-line.
116
117         Testing and Installation
118          ------------------------
119
120         You can run (part of) the mono and mcs testsuites with the command:
121
122                 make check
123
124         All tests should pass.  
125
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
129
130                 make -k check
131
132         Expect to find a few testsuite failures.  As a sanity check, you
133         can compare the failures you got with
134
135                 http://go-mono.com/tests/displayTestResults.php
136
137         You can now install mono with:
138
139                 make install
140
141         Failure to follow these steps may result in a broken installation. 
142
143 2. Using Mono
144 =============
145
146         Once you have installed the software, you can run a few programs:
147
148         * runtime engine
149
150                 mono program.exe
151
152         * C# compiler
153
154                 mcs program.cs
155
156         * CIL Disassembler
157
158                 monodis program.exe
159
160         See the man pages for mono(1), mint(1), monodis(1) and mcs(2)
161         for further details.
162
163 3. Directory Roadmap
164 ====================
165
166         docs/
167                 Technical documents about the Mono runtime.
168
169         data/
170                 Configuration files installed as part of the Mono runtime.
171
172         mono/
173                 The core of the Mono Runtime.
174
175                 metadata/
176                         The object system and metadata reader.
177
178                 mini/
179                         The Just in Time Compiler.
180
181                 dis/
182                         CIL executable Disassembler
183
184                 cli/
185                         Common code for the JIT and the interpreter.
186
187                 io-layer/
188                         The I/O layer and system abstraction for 
189                         emulating the .NET IO model.
190
191                 cil/
192                         Common Intermediate Representation, XML
193                         definition of the CIL bytecodes.
194
195                 interp/
196                         Interpreter for CLI executables (obsolete).
197
198                 arch/
199                         Architecture specific portions.
200
201         man/
202
203                 Manual pages for the various Mono commands and programs.
204
205         scripts/
206
207                 Scripts used to invoke Mono and the corresponding program.
208
209         runtime/
210
211                 A directory that contains the Makefiles that link the
212                 mono/ and mcs/ build systems.
213