2004-12-15 Sebastien Pouliot <sebastien@ximian.com>
[mono.git] / README
diff --git a/README b/README
index 07c2df049aff42b38c5d0ef97b478c39b4645af5..6d257c99df310772741bdd2e00c2615f4aeab765 100644 (file)
--- a/README
+++ b/README
 
 This is Mono.
 
-Installation:
+1. Installation
+2. Using Mono
+3. Directory Roadmap
 
-       Read doc/download for installation instructions, 
-       or read the HTML version:
+1. Compilation and Installation
+===============================
 
-               http://www.go-mono.com/download.html
+   a. Build Requirements
+   ---------------------
 
-* Using Mono
+       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
+
+    c. Building the software from SVN
+    ---------------------------------
+
+       If you are building the software from SVN, make sure that you
+       have up-to-date mcs and mono sources:
+
+               svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mono
+               svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mcs
+
+       Then, go into the mono directory, and configure:
+
+               cd mono
+               ./autogen.sh --prefix=/usr/local
+               make
+
+       This will automatically go into the mcs/ tree and build the
+       binaries there.
+
+       This assumes that you have a working mono installation, and that
+       there's a C# compiler named 'mcs', and a corresponding IL
+       runtime called 'mono'.  You can use two make variables
+       EXTERNAL_MCS and EXTERNAL_RUNTIME to override these.  e.g., you
+       can say
+
+         make EXTERNAL_MCS=/foo/bar/mcs EXTERNAL_RUNTIME=/somewhere/else/mono
+       
+       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 try from the beginning.
+
+       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 with:
+
+               make get-monolite-latest
+
+       This will download and automatically gunzip and untar the
+       tarball, and place the files appropriately so that you can then
+       just run:
+
+               make
+
+       To ensure that you're using the 'monolite' distribution, you can
+       also try passing EXTERNAL_MCS=false on the make command-line.
+
+       Testing and Installation
+        ------------------------
+
+       You can run (part of) the mono and mcs testsuites with the command:
+
+               make check
+
+       All tests should pass.  
+
+       If you want more extensive tests, including those that test the
+       class libraries, you need to re-run 'configure' with the
+       '--enable-nunit-tests' flag, and try
+
+               make -k check
+
+       Expect to find a few testsuite failures.  As a sanity check, you
+       can compare the failures you got with
+
+               http://go-mono.com/tests/displayTestResults.php
+
+       You can now install mono with:
+
+               make install
+
+       Failure to follow these steps may result in a broken installation. 
+
+2. Using Mono
+=============
 
        Once you have installed the software, you can run a few programs:
 
@@ -29,10 +164,17 @@ Installation:
        See the man pages for mono(1), mint(1), monodis(1) and mcs(2)
        for further details.
 
-* A directory roadmap:
+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 Mono Runtime.
@@ -63,4 +205,15 @@ Installation:
                arch/
                        Architecture specific portions.
 
+       man/
+
+               Manual pages for the various Mono commands and programs.
+
+       scripts/
+
+               Scripts used to invoke Mono and the corresponding program.
+
+       runtime/
 
+               A directory that contains the Makefiles that link the
+               mono/ and mcs/ build systems.