2004-12-04 Martin Baulig <martin@ximian.com>
[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.0
21
22                   Available from: http://www.gtk.org/
23
24         Optional dependencies:
25
26                 * ICU library
27
28                   http://oss.software.ibm.com/icu/index.html
29
30                   You will need this one to get complete support for the international
31                   features of the .NET Framework.
32
33                 * Cairo and libgdiplus
34
35                   If you want to get support for System.Drawing, you will need to get
36                   both Libgdiplus and Cairo.
37
38     b. Building the Software
39     ------------------------
40         
41         If you obtained this package as an officially released tarball,
42         this is very simple, use configure and make:
43
44                 ./configure --prefix=/usr/local
45                 make
46                 make install
47
48         Mono supports a JIT engine on x86, SPARC and PowerPC systems.
49         The various commands that ship with Mono default to the JIT engine
50         on x86 and SPARC, to turn it on for PPC systems, use the --with-jit=yes 
51         command line option to configure.
52
53         MacOS X Users: you will need to download the latest Boehm GC
54         Alpha release for garbage collection to work properly.
55
56         If you obtained this as a snapshot, you will need an existing
57         Mono installation.  To upgrade your installation, unpack both
58         mono and mcs:
59
60                 tar xzf mcs-XXXX.tar.gz
61                 tar xzf mono-XXXX.tar.gz
62                 mv mono-XXX mono
63                 mv mcs-XXX mcs
64                 cd mono
65                 ./autogen.sh --prefix=/usr/local
66                 make
67
68     c. Building the software from CVS
69     ---------------------------------
70
71         If you are building the software from CVS, make sure that you
72         have up-to-date mcs and mono sources:
73
74                 svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mono
75                 svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mcs
76
77         Then, go into the mono directory, and configure:
78
79                 cd mono
80                 ./autogen.sh --prefix=/usr/local
81
82         Depending on whether you have an existing Mono installation or
83         not, you can try the following:
84
85         i.   If you have an existing Mono installation
86              -----------------------------------------
87
88         First verify that you have a working installation:
89
90                 echo 'class X { static void Main () { System.Console.Write("OK");}}' > x.cs
91
92         Compile:
93
94                 mcs x.cs
95
96         And run:
97
98                 mono x.exe
99
100         If you get the output `OK' and no errors, and you have mono
101         version 0.31 or later, continue.  Otherwise, you can try option
102         (ii) below.
103
104         You are ready to start your CVS upgrade.  Compile with
105
106                 make
107
108         This will automatically go into the mcs/ tree and build the
109         binaries there, and copy them into the appropriate
110         sub-directories of  mono/runtime/.
111
112         Now, go to step (iii) below.
113
114         ii.  If you don't have a working Mono installation
115              ---------------------------------------------
116
117         If you don't have a working Mono installation, an obvious choice
118         is to install the latest released packages of 'mono' for your
119         distribution and go back to step (i).
120
121         You can also try a slightly more risky approach that should work
122         almost all the time.  
123
124         This works by first getting the latest version of the 'monolite'
125         distribution, which contains just enough to run the 'mcs'
126         compiler.  You do this by
127
128                 make get-monolite-latest
129
130         This should place a monolite-latest.tar.gz in the parent
131         directory of the 'mono' source tree.  This will automatically
132         gunzip and untar the tarball, place the files appropriately,
133
134         You can then run:
135
136                 make
137
138         iii. Testing and Installation
139              ------------------------
140
141         You can run the mono and mcs testsuites with the command:
142
143                 make -k check
144
145         Expect to find several testsuite failures, especially in the
146         mcs/ tree.  As a sanity check, you can compare the failures you
147         got with
148
149                 http://go-mono.com/tests/displayTestResults.php
150
151         You can now install it:
152
153                 make install
154
155         Failure to follow these steps will result in a broken installation. 
156
157 2. Using Mono
158 =============
159
160         Once you have installed the software, you can run a few programs:
161
162         * runtime engine
163
164                 mono program.exe
165           or
166                 mint program.exe
167
168         * C# compiler
169
170                 mcs program.cs
171
172         * CIL Disassembler
173
174                 monodis program.exe
175
176         See the man pages for mono(1), mint(1), monodis(1) and mcs(2)
177         for further details.
178
179 3. Directory Roadmap
180 ====================
181
182         doc/
183                 Contains the web site contents.
184
185         docs/
186                 Technical documents about the Mono runtime.
187
188         data/
189                 Configuration files installed as part of the Mono runtime.
190
191         mono/
192                 The core of the Mono Runtime.
193
194                 metadata/
195                         The object system and metadata reader.
196
197                 jit/
198                         The Just in Time Compiler.
199
200                 dis/
201                         CIL executable Disassembler
202
203                 cli/
204                         Common code for the JIT and the interpreter.
205
206                 io-layer/
207                         The I/O layer and system abstraction for 
208                         emulating the .NET IO model.
209
210                 cil/
211                         Common Intermediate Representation, XML
212                         definition of the CIL bytecodes.
213
214                 interp/
215                         Interpreter for CLI executables.
216
217                 arch/
218                         Architecture specific portions.
219
220         man/
221
222                 Manual pages for the various Mono commands and programs.
223
224         scripts/
225
226                 Scripts used to invoke Mono and the corresponding program.
227
228         runtime/
229
230                 A directory holding a pre-compiled version of the Mono
231                 runtime.
232
233