Implement vararg support for s390. Minor fix to atomic operation for s390.
[mono.git] / README
blob6dc8fff9f6d4b54bc5b705efc233086e35656a8e
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
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                 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
77         Then, go into the mono directory, and configure:
79                 cd mono
80                 ./autogen.sh --prefix=/usr/local
82         Depending on whether you have an existing Mono installation or
83         not, you can try the following:
85         i.   If you have an existing Mono installation
86              -----------------------------------------
88         First verify that you have a working installation:
90                 echo 'class X { static void Main () { System.Console.Write("OK");}}' > x.cs
92         Compile:
94                 mcs x.cs
96         And run:
98                 mono x.exe
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.
104         You are ready to start your CVS upgrade.  Compile with
106                 make
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/.
112         Now, go to step (iii) below.
114         ii.  If you don't have a working Mono installation
115              ---------------------------------------------
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).
121         You can also try a slightly more risky approach that should work
122         almost all the time.  
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
128                 make get-monolite-latest
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,
134         You can then run:
136                 make
138         iii. Testing and Installation
139              ------------------------
141         You can run the mono and mcs testsuites with the command:
143                 make -k check
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
149                 http://go-mono.com/tests/displayTestResults.php
151         You can now install it:
153                 make install
155         Failure to follow these steps will result in a broken installation. 
157 2. Using Mono
158 =============
160         Once you have installed the software, you can run a few programs:
162         * runtime engine
164                 mono program.exe
165           or
166                 mint program.exe
168         * C# compiler
170                 mcs program.cs
172         * CIL Disassembler
174                 monodis program.exe
176         See the man pages for mono(1), mint(1), monodis(1) and mcs(2)
177         for further details.
179 3. Directory Roadmap
180 ====================
182         doc/
183                 Contains the web site contents.
185         docs/
186                 Technical documents about the Mono runtime.
188         data/
189                 Configuration files installed as part of the Mono runtime.
191         mono/
192                 The core of the Mono Runtime.
194                 metadata/
195                         The object system and metadata reader.
197                 jit/
198                         The Just in Time Compiler.
200                 dis/
201                         CIL executable Disassembler
203                 cli/
204                         Common code for the JIT and the interpreter.
206                 io-layer/
207                         The I/O layer and system abstraction for 
208                         emulating the .NET IO model.
210                 cil/
211                         Common Intermediate Representation, XML
212                         definition of the CIL bytecodes.
214                 interp/
215                         Interpreter for CLI executables.
217                 arch/
218                         Architecture specific portions.
220         man/
222                 Manual pages for the various Mono commands and programs.
224         scripts/
226                 Scripts used to invoke Mono and the corresponding program.
228         runtime/
230                 A directory holding a pre-compiled version of the Mono
231                 runtime.