Use class instead of struct in HtmlTextWriter.cs under TARGET_JVM for better perf.
[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           or
145                 mint program.exe
146
147         * C# compiler
148
149                 mcs program.cs
150
151         * CIL Disassembler
152
153                 monodis program.exe
154
155         See the man pages for mono(1), mint(1), monodis(1) and mcs(2)
156         for further details.
157
158 3. Directory Roadmap
159 ====================
160
161         doc/
162                 Contains the web site contents.
163
164         docs/
165                 Technical documents about the Mono runtime.
166
167         data/
168                 Configuration files installed as part of the Mono runtime.
169
170         mono/
171                 The core of the Mono Runtime.
172
173                 metadata/
174                         The object system and metadata reader.
175
176                 jit/
177                         The Just in Time Compiler.
178
179                 dis/
180                         CIL executable Disassembler
181
182                 cli/
183                         Common code for the JIT and the interpreter.
184
185                 io-layer/
186                         The I/O layer and system abstraction for 
187                         emulating the .NET IO model.
188
189                 cil/
190                         Common Intermediate Representation, XML
191                         definition of the CIL bytecodes.
192
193                 interp/
194                         Interpreter for CLI executables.
195
196                 arch/
197                         Architecture specific portions.
198
199         man/
200
201                 Manual pages for the various Mono commands and programs.
202
203         scripts/
204
205                 Scripts used to invoke Mono and the corresponding program.
206
207         runtime/
208
209                 A directory that contains the Makefiles that link the
210                 mono/ and mcs/ build systems.
211