2004-11-07 Ben Maurer <bmaurer@ximian.com>
[mono-project.git] / README
blob0c1dff13c8aa1773de39ee2a4b4cf94fbbe5b316
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.0
22                   Available from: http://www.gtk.org/
24         Optional dependencies:
26                 * ICU library
28                   http://oss.software.ibm.com/icu/index.html
30                   You will need this one to get complete support for the international
31                   features of the .NET Framework.
33                 * Cairo and libgdiplus
35                   If you want to get support for System.Drawing, you will need to get
36                   both Libgdiplus and Cairo.
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:
44                 ./configure --prefix=/usr/local
45                 make
46                 make install
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.
53         MacOS X Users: you will need to download the latest Boehm GC
54         Alpha release for garbage collection to work properly.
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:
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 bootstrap 
68     c. Building the software from CVS
69     ---------------------------------
71         If you are building the software from CVS, make sure that you
72         have up-to-date mcs and mono sources:
74                 cvs co mono mcs
76         Then, go into the mono directory, and configure:
78                 cd mono
79                 ./autogen.sh --prefix=/usr/local
81         Depending on whether you have an existing Mono installation or
82         not, you can try the following:
84         i.   If you have an existing Mono installation
85              -----------------------------------------
87         First verify that you have a working installation:
89                 echo 'class X { static void Main () { System.Console.Write("OK");}}' > x.cs
91         Compile:
93                 mcs x.cs
95         And run:
97                 mono x.exe
99         If you get the output `OK' and no errors, and you have mono
100         version 0.31 or later, continue.  Otherwise, you can try option
101         (ii) below.
103         You are ready to start your CVS upgrade.  Compile with
105                 make bootstrap
107         This will automatically go into the mcs/ tree and build the
108         binaries there, and copy them into the appropriate
109         sub-directories of  mono/runtime/.
111         Now, go to step (iii) below.
113         ii.  If you don't have a working Mono installation
114              ---------------------------------------------
116         If you don't have a working Mono installation, an obvious choice
117         is to install the latest released packages of 'mono' for your
118         distribution and go back to step (i).
120         You can also try a slightly more risky approach that should work
121         almost all the time.  
123         This works by first getting the latest version of the 'monolite'
124         distribution, which contains just enough to run the 'mcs'
125         compiler.  You do this by
127                 make get-monolite-latest
129         This should place a monolite-latest.tar.gz in the parent
130         directory of the 'mono' source tree.  You can then run:
132                 make monolite-bootstrap
134         This will automatically gunzip and untar the tarball, place the
135         files appropriately, and then complete the bootstrap.
137         iii. Testing and Installation
138              ------------------------
140         You can run the mono and mcs testsuites with the command:
142                 make -k bootstrap-check
144         Expect to find several testsuite failures, especially in the
145         mcs/ tree.  As a sanity check, you can compare the failures you
146         got with
148                 http://go-mono.com/tests/displayTestResults.php
150         You can now install it:
152                 make install
154         Failure to follow these steps will result in a broken installation. 
156         iv.  Other useful "bootstrap"-like facilities
157              ----------------------------------------
159         If you have a CVS snapshot that you keep updating periodically,
160         and/or do your development in, you may try using a couple of
161         specialty make targets that may be slightly faster than a
162         "make bootstrap".
164         You can try a two-stage bootstrap with:
166                 make faststrap
168         This assumes that you have already run a "make bootstrap" on the
169         tree before.
171         If you want to avoid waiting even for that, you can try the
172         riskier one-stage build:
174                 make fasterstrap
176         This should be attempted only if you're sure that the sources of
177         the mcs compiler itself and the sources of the libraries used by
178         it have not been changed.
180 2. Using Mono
181 =============
183         Once you have installed the software, you can run a few programs:
185         * runtime engine
187                 mono program.exe
188           or
189                 mint program.exe
191         * C# compiler
193                 mcs program.cs
195         * CIL Disassembler
197                 monodis program.exe
199         See the man pages for mono(1), mint(1), monodis(1) and mcs(2)
200         for further details.
202 3. Directory Roadmap
203 ====================
205         doc/
206                 Contains the web site contents.
208         docs/
209                 Technical documents about the Mono runtime.
211         data/
212                 Configuration files installed as part of the Mono runtime.
214         mono/
215                 The core of the Mono Runtime.
217                 metadata/
218                         The object system and metadata reader.
220                 jit/
221                         The Just in Time Compiler.
223                 dis/
224                         CIL executable Disassembler
226                 cli/
227                         Common code for the JIT and the interpreter.
229                 io-layer/
230                         The I/O layer and system abstraction for 
231                         emulating the .NET IO model.
233                 cil/
234                         Common Intermediate Representation, XML
235                         definition of the CIL bytecodes.
237                 interp/
238                         Interpreter for CLI executables.
240                 arch/
241                         Architecture specific portions.
243         man/
245                 Manual pages for the various Mono commands and programs.
247         scripts/
249                 Scripts used to invoke Mono and the corresponding program.
251         runtime/
253                 A directory holding a pre-compiled version of the Mono
254                 runtime.