[xbuild] Rename method to make it more consistent.
[mono.git] / README
diff --git a/README b/README
index 188ca1ad94a627139daabafe35db53b6b598516c..d57aef26d8aa35567e313858ffbb0387adda2173 100644 (file)
--- a/README
+++ b/README
@@ -11,16 +11,6 @@ This is Mono.
    a. Build Requirements
    ---------------------
 
-       To build Mono, you will need the following components:
-
-               * pkg-config
-
-                 Available from: http://www.freedesktop.org/Software/pkgconfig
-
-               * glib 2.4
-
-                 Available from: http://www.gtk.org/
-
        On Itanium, you must obtain libunwind:
 
                http://www.hpl.hp.com/research/linux/libunwind/download.php4
@@ -35,7 +25,15 @@ This is Mono.
                * libgdiplus
 
                  If you want to get support for System.Drawing, you will need to get
-                 Libgdiplus.
+                 Libgdiplus.    This library in turn requires glib and pkg-config:
+
+                       * pkg-config
+
+                         Available from: http://www.freedesktop.org/Software/pkgconfig
+
+                       * glib 2.4
+
+                         Available from: http://www.gtk.org/
 
                * libzlib
 
@@ -67,14 +65,25 @@ This is Mono.
                ./autogen.sh --prefix=/usr/local
                make
 
-    c. Building the software from SVN
+       The Mono build system is silent for most compilation commands.
+       To enable a more verbose compile (for example, to pinpoint
+       problems in your makefiles or your system) pass the V=1 flag to make, like this:
+
+                make V=1
+
+
+    c. Building the software from GIT
     ---------------------------------
 
-       If you are building the software from SVN, make sure that you
+       If you are building the software from GIT, 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
+          If you are an anonymous user:
+               git clone git://github.com/mono/mono.git
+
+           If you are a Mono contributors with read/write privileges:
+               git clone git@github.com:mono/mono.git
+
 
        Then, go into the mono directory, and configure:
 
@@ -121,16 +130,16 @@ This is Mono.
        distribution, which contains just enough to run the 'mcs'
        compiler.  You do this with:
 
+               # Run the following line after ./autogen.sh
                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
+               make EXTERNAL_MCS=${PWD}/mcs/class/lib/monolite/gmcs.exe
 
-       To ensure that you're using the 'monolite' distribution, you can
-       also try passing EXTERNAL_MCS=false on the make command-line.
+       And that will use the files downloaded by 'make get-monolite-latest.
 
        Testing and Installation
        ------------------------
@@ -156,19 +165,31 @@ This is Mono.
 
                make install
 
+       You can verify your installation by using the mono-test-install
+       script, it can diagnose some common problems with Mono's install.
+
        Failure to follow these steps may result in a broken installation. 
 
-    d. Common Configuration Options
-    -------------------------------
+    d. Configuration Options
+    ------------------------
 
        The following are the configuration options that someone
        building Mono might want to use:
        
+       --with-sgen=yes,no
+
+               Generational GC support: Used to enable or disable the
+               compilation of a Mono runtime with the SGen garbage collector.
+
+               On platforms that support it, after building Mono, you
+               will have both a mono binary and a mono-sgen binary.
+               Mono uses Boehm, while mono-sgen uses the Simple
+               Generational GC.
 
        --with-gc=[boehm, included, sgen, none]
 
-               Selects the garbage collector engine to use, the
-               default is the "included" value.
+               Selects the default Boehm garbage collector engine to
+               use, the default is the "included" value.
        
                included: 
                        This is the default value, and its
@@ -184,10 +205,6 @@ This is Mono.
                        Boehm GC, but we do not recommend that people
                        use this, as it disables a few features.
 
-               sgen:
-                       The under-development Generational GC for
-                       Mono, do not use this in production.
-
                none:
                        Disables the inclusion of a garbage
                        collector.  
@@ -251,6 +268,17 @@ This is Mono.
 
                This value is set to `no' by default.
 
+       --enable-small-config=yes,no
+
+               Enable some tweaks to reduce memory usage and disk footprint at
+               the expense of some capabilities. Typically this means that the
+               number of threads that can be created is limited (256), that the
+               maxmimum heap size is also reduced (256 MB) and other such limitations
+               that still make mono useful, but more suitable to embedded devices
+               (like mobile phones).
+
+               This value is set to `no' by default.
+
        --with-ikvm-native=yes,no
 
                Controls whether the IKVM JNI interface library is
@@ -259,10 +287,12 @@ This is Mono.
 
                This defaults to `yes'.
 
-       --with-preview=yes,no
+       --with-profile4=yes,no
+
+               Whether you want to build the 4.x profile libraries
+               and runtime.
 
-               Whether you want to build libraries that are still not
-               completed (The 2.0 APIs).   It defaults to `yes'.
+               It defaults to `yes'.
 
        --with-moonlight=yes,no
 
@@ -271,11 +301,24 @@ This is Mono.
                (1.1 and 2.0 APIs).
 
                This will produce the `smcs' compiler which will reference
-               the Silvelright modified assemblies (mscorlib.dll,
+               the Silverlight modified assemblies (mscorlib.dll,
                System.dll, System.Code.dll and System.Xml.Core.dll) and turn
                on the LINQ extensions for the compiler.
 
-               This option defaults to `no' and it is considered pre-alpha.
+       --with-moon-gc=boehm,sgen
+
+               Select the GC to use for Moonlight.
+
+               boehm:
+                       Selects the Boehm Garbage Collector, with the same flags
+                       as the regular Mono build. This is the default.
+
+               sgen:
+                       Selects the new SGen Garbage Collector, which provides
+                       Generational GC support, using the same flags as the
+                       mono-sgen build.
+
+               This defaults to `boehm'.
 
        --with-libgdiplus=installed,sibling,<path>
 
@@ -316,42 +359,96 @@ This is Mono.
                        Disables support for the Ahead of Time
                        compilation.
 
-               profiler:
-                       Disables support for the default profiler.
+               attach:
+                       Support for the Mono.Management assembly and the
+                       VMAttach API (allowing code to be injected into
+                       a target VM)
+
+               com:
+                       Disables COM support.
+
+               debug:
+                       Drop debugging support.
 
                decimal:
                        Disables support for System.Decimal.
 
+               full_messages:
+                       By default Mono comes with a full table
+                       of messages for error codes.   This feature
+                       turns off uncommon error messages and reduces
+                       the runtime size.
+
+               generics:
+                       Generics support.  Disabling this will not
+                       allow Mono to run any 2.0 libraries or
+                       code that contains generics.
+
+               jit:
+                       Removes the JIT engine from the build, this reduces
+                       the executable size, and requires that all code
+                       executed by the virtual machine be compiled with
+                       Full AOT before execution.
+
+               large_code:
+                       Disables support for large assemblies.
+
+               logging:
+                       Disables support for debug logging.
+
                pinvoke:
                        Support for Platform Invocation services,
                        disabling this will drop support for any
                        libraries using DllImport.
 
-               debug:
-                       Drop debugging support.
+               portability:
+                       Removes support for MONO_IOMAP, the environment
+                       variables for simplifying porting applications that 
+                       are case-insensitive and that mix the Unix and Windows path separators.
+
+               profiler:
+                       Disables support for the default profiler.
 
                reflection_emit:
                        Drop System.Reflection.Emit support
 
-               large_code:
-                       Disables support for large assemblies.
+               reflection_emit_save:
+                       Drop support for saving dynamically created
+                       assemblies (AssemblyBuilderAccess.Save) in
+                       System.Reflection.Emit.
 
-               logging:
-                       Disables support for debug logging.
+               shadow_copy:
+                       Disables support for AppDomain's shadow copies
+                       (you can disable this if you do not plan on 
+                       using appdomains).
 
-               com:
-                       Disables COM support.
+               simd:
+                       Disables support for the Mono.SIMD intrinsics
+                       library.
 
                ssa:
                        Disables compilation for the SSA optimization
                        framework, and the various SSA-based
                        optimizations.
 
-               generics:
-                       Generics support.  Disabling this will not
-                       allow Mono to run any 2.0 libraries or
-                       code that contains generics.
-               
+       --enable-llvm
+       --enable-loadedllvm
+
+               This enables the use of LLVM as a code generation engine
+               for Mono.  The LLVM code generator and optimizer will be 
+               used instead of Mono's built-in code generator for both
+               Just in Time and Ahead of Time compilations.
+
+               See the http://www.mono-project.com/Mono_LLVM for the 
+               full details and up-to-date information on this feature.
+
+               You will need to have an LLVM built that Mono can link
+               against,
+
+               The --enable-loadedllvm variant will make the llvm backend
+               into a runtime-loadable module instead of linking it directly
+               into the main mono binary.
+
        --enable-big-arrays
 
                This enables the use arrays whose indexes are larger
@@ -369,6 +466,15 @@ This is Mono.
                ABI that we have exposed through the Mono development
                cycle.
 
+       --enable-parallel-mark
+
+               Use this option to enable the garbage collector to use
+               multiple CPUs to do its work.  This helps performance
+               on multi-CPU machines as the work is divided across CPUS.
+
+               This option is not currently the default as we have
+               not done much testing with Mono.
+
        --enable-dtrace
 
                On Solaris and MacOS X builds a version of the Mono
@@ -386,6 +492,15 @@ This is Mono.
                There are a number of runtime options to control this
                also, see the man page.
 
+       --enable-nacl
+
+               This configures the Mono compiler to generate code
+               suitable to be used by Google's Native Client:
+
+                        http://code.google.com/p/nativeclient/
+
+               Currently this is used with Mono's AOT engine as
+               Native Client does not support JIT engines yet.
 
 2. Using Mono
 =============
@@ -469,3 +584,5 @@ This is Mono.
                independent checkout) from the Mono module, that
                directory is automatically configured to share the
                same prefix than this module gets.
+
+