Indendation
[mono.git] / mcs / INSTALL.txt
index e21142f75a840c87ee88ba0c16c4c1bf2bc1b749..cc8338f46e223e141764e375f4da2efc7f2ace0a 100644 (file)
@@ -1,24 +1,55 @@
 Basic Installation
 ==================
 
-The Mono project has developed mono, an x86-specific CL JIT compiler and
-mint, a portable CLI interpreter. The build process of each of these
-depends on nothing more than a C compiler, glib2 and libgc.
+The Mono project has developed mono, a CLI runtime. The build process
+of each of these depends on nothing more than a C compiler and glib2.
 
 However, to provide a working runtime environment, these programs must
-be supplemented by corlib, a CLR assembly to which they are closely
-tied. This package provides the C# sources for corlib as well as some
-additional assemblies and mcs, the Mono C# compiler.
-
-To build this package, you must already have a C# compiler installed.
-Build instructions for *NIX and Microsoft Windows follow.
-
-Building mcs
-============
-
-These instructions apply to both Unix and Windows.  You need GNU make
-to build the software (on Windows, you will need for example the
-Cygwin environment setup)
+be supplemented by the class libraries, which are written in C#.  This
+package contains the components written in C#: class libraries,
+compilers and tools.
+
+*********************************************************************
+*                                                                   *
+*                            NOTICE                                 *
+*                                                                   *
+*      Unless you are developing the class libraries, you should   *
+*      not need to do any build steps in this directory.           *
+*                                                                   *
+*       Go to ../mono and read the README file to compile and       *
+*       install.                                                    *
+*                                                                   *
+*********************************************************************
+
+If you only want to build a snapshot or a fresh CVS checkout of the
+sources, you should go into the `mono' sibling directory and issue the
+make fullbuild command, like this:
+
+         cd ../mono
+         ./autogen.sh --prefix=/usr/local
+         make fullbuild
+
+That will build and install the code in a single pass.  The
+compilation is bundled with the build due to dependencies on the class
+libraries on the runtime.
+
+Build Features for Developers of Mono.
+======================================
+
+These instructions apply to both Linux and Windows. To build this
+package, you must already have a C# compiler installed.  This means
+that to build on Linux, you need to get a distribution of the MCS
+binaries; these are called monocharges. They can be found at
+www.go-mono.com/daily. On Windows, you can just use the
+Microsoft compiler. You also need GNU make to build the software (on
+Windows, you will need for example the Cygwin environment setup).
+
+You can customize your MCS configuration by using:
+
+    ./configure [--prefix=PREFIX] [--profile=PROFILE] 
+
+If you do not run the above, the defaults are /usr/local for the
+prefix, and `default' for the profile.
 
 To build the compiler and class libraries, run:
 
@@ -31,31 +62,76 @@ To install them, run the following:
 
     make install
 
-The default is /usr/local, to change this configuration option type:
+If you get "corlib out of sync" errors, try
+
+    make PROFILE="atomic"
+
+The difference between the two modes is explained farther down.
 
-    echo prefix=/your-prefix > build/config.make
+Troubleshooting
+===============
+
+Occasionally, something in the compiler or runtime changes enough that
+an existing installation cannot complete a full build from cvs.  In this case,
+go to http://go-mono.com/daily and download a monocharge or monolite tarball.
+Unpack and copy the .dlls to $prefix/lib and .exes to $prefix/bin/.  Then
+you should be able to complete the build normally (i.e. using make fullbuild).
+
+       wget http://go-mono.com/daily/monolite-20031028.tar.gz
+       tar -zxvf monolite-20031028.tar.gz
+       cd monolite-20031028
+       cp *.exe /usr/local/bin/.
+       cp *.dll /usr/local/lib/.
+
+Monocharges
+===========
 
 If you are tracking Mono's development, you may sometimes need to share
 the compiled libraries with others, you can do:
 
     make monocharge
 
-Or a light version:
+Or a light version, which contains only the essential libraries and
+results in a much smaller file:
 
     make monocharge-lite
 
-
 Configuration
--------------
+=============
 
 If you want to change the configuration options for the build process,
 place your configuration options in build/config.make
 
-A list of variables that control the build are listed in the
-build/config-default.make
+A list of variables that control the build are listed in the file
+build/config-default.make.
 
-The Build System
-----------------
+Build profiles? What?
+======================
+
+Don't worry about them too much. If you're wondering which to use:
+use the default if you can (that's why it's the default!) and use
+the atomic if you have to.
+
+The default profile uses the C# compiler and class libaries as they
+are built. This lets you build MCS without needing to have already 
+installed it, but can fail if the libraries change significantly.
+(This is the source of the dreaded "corlib out of sync" warning, most
+of the time.)
+
+The atomic profile tries to use the system compiler and preexisting
+MCS libraries. New libaries are built against this constant reference 
+point, so if a newly built library has a binary incompatibility, the
+rest of your build can proceed.
+
+If you want to always use the atomic profile, run this command:
+
+       ./configure --profile=atomic
+
+More About the Build System
+===========================
+
+More information is found in build/README.*. Here's a quick rundown
+of the features:
 
         * Unified build system for Windows and Linux. Windows is still
          fairly untested, but "should work." Unfortunately I don't
@@ -96,4 +172,3 @@ The Build System
          targets. They're made possible because 'make install' now
          supports DESTDIR a la automake, which I'm sure someone cares
          about.
-