Add this for backwards compatibility
[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         Optional dependencies:
29
30                 * libgdiplus
31
32                   If you want to get support for System.Drawing, you will need to get
33                   Libgdiplus.
34
35     b. Building the Software
36     ------------------------
37         
38         If you obtained this package as an officially released tarball,
39         this is very simple, use configure and make:
40
41                 ./configure --prefix=/usr/local
42                 make
43                 make install
44
45         Mono supports a JIT engine on x86, SPARC, SPARCv9, S/390, AMD64 and PowerPC systems.
46
47         If you obtained this as a snapshot, you will need an existing
48         Mono installation.  To upgrade your installation, unpack both
49         mono and mcs:
50
51                 tar xzf mcs-XXXX.tar.gz
52                 tar xzf mono-XXXX.tar.gz
53                 mv mono-XXX mono
54                 mv mcs-XXX mcs
55                 cd mono
56                 ./autogen.sh --prefix=/usr/local
57                 make
58
59     c. Building the software from SVN
60     ---------------------------------
61
62         If you are building the software from SVN, make sure that you
63         have up-to-date mcs and mono sources:
64
65                 svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mono
66                 svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mcs
67
68         Then, go into the mono directory, and configure:
69
70                 cd mono
71                 ./autogen.sh --prefix=/usr/local
72                 make
73
74         This will automatically go into the mcs/ tree and build the
75         binaries there.
76
77         This assumes that you have a working mono installation, and that
78         there's a C# compiler named 'mcs', and a corresponding IL
79         runtime called 'mono'.  You can use two make variables
80         EXTERNAL_MCS and EXTERNAL_RUNTIME to override these.  e.g., you
81         can say
82
83           make EXTERNAL_MCS=/foo/bar/mcs EXTERNAL_RUNTIME=/somewhere/else/mono
84         
85         If you don't have a working Mono installation
86         ---------------------------------------------
87
88         If you don't have a working Mono installation, an obvious choice
89         is to install the latest released packages of 'mono' for your
90         distribution and try from the beginning.
91
92         You can also try a slightly more risky approach that should work
93         almost all the time.  
94
95         This works by first getting the latest version of the 'monolite'
96         distribution, which contains just enough to run the 'mcs'
97         compiler.  You do this with:
98
99                 make get-monolite-latest
100
101         This will download and automatically gunzip and untar the
102         tarball, and place the files appropriately so that you can then
103         just run:
104
105                 make
106
107         To ensure that you're using the 'monolite' distribution, you can
108         also try passing EXTERNAL_MCS=false on the make command-line.
109
110         Testing and Installation
111          ------------------------
112
113         You can run (part of) the mono and mcs testsuites with the command:
114
115                 make check
116
117         All tests should pass.  
118
119         If you want more extensive tests, including those that test the
120         class libraries, you need to re-run 'configure' with the
121         '--enable-nunit-tests' flag, and try
122
123                 make -k check
124
125         Expect to find a few testsuite failures.  As a sanity check, you
126         can compare the failures you got with
127
128                 http://go-mono.com/tests/displayTestResults.php
129
130         You can now install mono with:
131
132                 make install
133
134         Failure to follow these steps may result in a broken installation. 
135
136 2. Using Mono
137 =============
138
139         Once you have installed the software, you can run a few programs:
140
141         * runtime engine
142
143                 mono program.exe
144
145         * C# compiler
146
147                 mcs program.cs
148
149         * CIL Disassembler
150
151                 monodis program.exe
152
153         See the man pages for mono(1), mint(1), monodis(1) and mcs(2)
154         for further details.
155
156 3. Directory Roadmap
157 ====================
158
159         docs/
160                 Technical documents about the Mono runtime.
161
162         data/
163                 Configuration files installed as part of the Mono runtime.
164
165         mono/
166                 The core of the Mono Runtime.
167
168                 metadata/
169                         The object system and metadata reader.
170
171                 jit/
172                         The Just in Time Compiler.
173
174                 dis/
175                         CIL executable Disassembler
176
177                 cli/
178                         Common code for the JIT and the interpreter.
179
180                 io-layer/
181                         The I/O layer and system abstraction for 
182                         emulating the .NET IO model.
183
184                 cil/
185                         Common Intermediate Representation, XML
186                         definition of the CIL bytecodes.
187
188                 interp/
189                         Interpreter for CLI executables.
190
191                 arch/
192                         Architecture specific portions.
193
194         man/
195
196                 Manual pages for the various Mono commands and programs.
197
198         scripts/
199
200                 Scripts used to invoke Mono and the corresponding program.
201
202         runtime/
203
204                 A directory that contains the Makefiles that link the
205                 mono/ and mcs/ build systems.
206