2004-10-11 Rafael Teixeira <rafaelteixeirabr@hotmail.com>
[mono.git] / README
diff --git a/README b/README
index 554141a51302ca8e5a7470313ef65b09ac6b52d5..0c1dff13c8aa1773de39ee2a4b4cf94fbbe5b316 100644 (file)
--- a/README
+++ b/README
 
 This is Mono.
 
-A directory roadmap:
+1. Installation
+2. Using Mono
+3. Directory Roadmap
+
+1. Compilation and Installation
+===============================
+
+   a. Build Requirements
+   ---------------------
+
+       To build Mono, you will need the following components:
+
+               * pkg-config
+
+                 Available from: http://www.freedesktop.org/Software/pkgconfig
+
+               * glib 2.0
+
+                 Available from: http://www.gtk.org/
+
+       Optional dependencies:
+
+               * ICU library
+
+                 http://oss.software.ibm.com/icu/index.html
+
+                 You will need this one to get complete support for the international
+                 features of the .NET Framework.
+
+               * Cairo and libgdiplus
+
+                 If you want to get support for System.Drawing, you will need to get
+                 both Libgdiplus and Cairo.
+
+    b. Building the Software
+    ------------------------
+       
+       If you obtained this package as an officially released tarball,
+       this is very simple, use configure and make:
+
+               ./configure --prefix=/usr/local
+               make
+               make install
+
+       Mono supports a JIT engine on x86, SPARC and PowerPC systems.
+       The various commands that ship with Mono default to the JIT engine
+       on x86 and SPARC, to turn it on for PPC systems, use the --with-jit=yes 
+       command line option to configure.
+
+       MacOS X Users: you will need to download the latest Boehm GC
+       Alpha release for garbage collection to work properly.
+
+       If you obtained this as a snapshot, you will need an existing
+       Mono installation.  To upgrade your installation, unpack both
+       mono and mcs:
+
+               tar xzf mcs-XXXX.tar.gz
+               tar xzf mono-XXXX.tar.gz
+               mv mono-XXX mono
+               mv mcs-XXX mcs
+               cd mono
+               ./autogen.sh --prefix=/usr/local
+               make bootstrap 
+
+    c. Building the software from CVS
+    ---------------------------------
+
+       If you are building the software from CVS, make sure that you
+       have up-to-date mcs and mono sources:
+
+               cvs co mono mcs
+
+       Then, go into the mono directory, and configure:
+
+               cd mono
+               ./autogen.sh --prefix=/usr/local
+
+       Depending on whether you have an existing Mono installation or
+       not, you can try the following:
+
+       i.   If you have an existing Mono installation
+            -----------------------------------------
+
+       First verify that you have a working installation:
+
+               echo 'class X { static void Main () { System.Console.Write("OK");}}' > x.cs
+
+       Compile:
+
+               mcs x.cs
+
+       And run:
+
+               mono x.exe
+
+       If you get the output `OK' and no errors, and you have mono
+       version 0.31 or later, continue.  Otherwise, you can try option
+       (ii) below.
+
+       You are ready to start your CVS upgrade.  Compile with
+
+               make bootstrap
+
+       This will automatically go into the mcs/ tree and build the
+       binaries there, and copy them into the appropriate
+       sub-directories of  mono/runtime/.
+
+       Now, go to step (iii) below.
+
+       ii.  If you don't have a working Mono installation
+            ---------------------------------------------
+
+       If you don't have a working Mono installation, an obvious choice
+       is to install the latest released packages of 'mono' for your
+       distribution and go back to step (i).
+
+       You can also try a slightly more risky approach that should work
+       almost all the time.  
+
+       This works by first getting the latest version of the 'monolite'
+       distribution, which contains just enough to run the 'mcs'
+       compiler.  You do this by
+
+               make get-monolite-latest
+
+       This should place a monolite-latest.tar.gz in the parent
+       directory of the 'mono' source tree.  You can then run:
+
+               make monolite-bootstrap
+
+       This will automatically gunzip and untar the tarball, place the
+       files appropriately, and then complete the bootstrap.
+
+       iii. Testing and Installation
+            ------------------------
+
+       You can run the mono and mcs testsuites with the command:
+
+               make -k bootstrap-check
+
+       Expect to find several testsuite failures, especially in the
+       mcs/ tree.  As a sanity check, you can compare the failures you
+       got with
+
+               http://go-mono.com/tests/displayTestResults.php
+
+       You can now install it:
+
+               make install
+
+       Failure to follow these steps will result in a broken installation. 
+
+       iv.  Other useful "bootstrap"-like facilities
+            ----------------------------------------
+
+       If you have a CVS snapshot that you keep updating periodically,
+       and/or do your development in, you may try using a couple of
+       specialty make targets that may be slightly faster than a
+       "make bootstrap".
+
+       You can try a two-stage bootstrap with:
+
+               make faststrap
+
+       This assumes that you have already run a "make bootstrap" on the
+       tree before.
+
+       If you want to avoid waiting even for that, you can try the
+       riskier one-stage build:
+
+               make fasterstrap
+
+       This should be attempted only if you're sure that the sources of
+       the mcs compiler itself and the sources of the libraries used by
+       it have not been changed.
+
+2. Using Mono
+=============
+
+       Once you have installed the software, you can run a few programs:
+
+       * runtime engine
+
+               mono program.exe
+         or
+               mint program.exe
+
+       * C# compiler
+
+               mcs program.cs
+
+       * CIL Disassembler
+
+               monodis program.exe
+
+       See the man pages for mono(1), mint(1), monodis(1) and mcs(2)
+       for further details.
+
+3. Directory Roadmap
+====================
 
        doc/
-               Contains documentation and the web site contents.
+               Contains the web site contents.
+
+       docs/
+               Technical documents about the Mono runtime.
+
+       data/
+               Configuration files installed as part of the Mono runtime.
 
        mono/
-               The core of the executable.
+               The core of the Mono Runtime.
 
                metadata/
-                       The library to deal with executables and libraries for
-                       .NET
+                       The object system and metadata reader.
+
+               jit/
+                       The Just in Time Compiler.
 
                dis/
                        CIL executable Disassembler
@@ -19,6 +226,10 @@ A directory roadmap:
                cli/
                        Common code for the JIT and the interpreter.
 
+               io-layer/
+                       The I/O layer and system abstraction for 
+                       emulating the .NET IO model.
+
                cil/
                        Common Intermediate Representation, XML
                        definition of the CIL bytecodes.
@@ -26,20 +237,20 @@ A directory roadmap:
                interp/
                        Interpreter for CLI executables.
 
-* Using Mono
+               arch/
+                       Architecture specific portions.
 
-       Once you have installed the software, you can run a few programs:
+       man/
 
-               monodis program.exe
+               Manual pages for the various Mono commands and programs.
 
-       That will dump the bytecodes for program.exe.  Monodis support
-       a number of options that dumps various metadata tables
-       (chapter 23 of the Partition III).
+       scripts/
 
-       You can try the interpreter like this:
-
-               mint program.exe
+               Scripts used to invoke Mono and the corresponding program.
 
+       runtime/
 
+               A directory holding a pre-compiled version of the Mono
+               runtime.