Update instructions
[mono.git] / mcs / INSTALL.txt
1 Basic Installation
2 ==================
3
4 The Mono project has developed mono, an x86-specific CL JIT compiler and
5 mint, a portable CLI interpreter. The build process of each of these
6 depends on nothing more than a C compiler, glib2 and libgc.
7
8 However, to provide a working runtime environment, these programs must
9 be supplemented by corlib, a CLR assembly to which they are closely
10 tied. This package provides the C# sources for corlib as well as some
11 additional assemblies and mcs, the Mono C# compiler.
12
13 To build this package, you must already have a C# compiler installed.
14 Build instructions for *NIX and Microsoft Windows follow.
15
16 Building mcs
17 ============
18
19 These instructions apply to both Unix and Windows.  You need GNU make
20 to build the software (on Windows, you will need for example the
21 Cygwin environment setup)
22
23 To build the compiler and class libraries, run:
24
25     make
26
27 The libraries will be placed in the directory class/lib/ and the mcs
28 compiler executable in mcs/.
29
30 To install them, run the following:
31
32     make install
33
34 The default is /usr/local, to change this configuration option type:
35
36     echo prefix=/your-prefix > build/config.make
37
38 If you are tracking Mono's development, you may sometimes need to share
39 the compiled libraries with others, you can do:
40
41     make monocharge
42
43 Or a light version:
44
45     make monocharge-lite
46
47
48 Configuration
49 -------------
50
51 If you want to change the configuration options for the build process,
52 place your configuration options in build/config.make
53
54 A list of variables that control the build are listed in the
55 build/config-default.make
56
57 The Build System
58 ----------------
59
60         * Unified build system for Windows and Linux. Windows is still
61           fairly untested, but "should work." Unfortunately I don't
62           have a Windows machine to test on, but Gonzalo can get
63           corlib to build I think and that's about as complicated as
64           it gets.
65
66         * Profile support. 'make PROFILE=profilename' or 'export
67           PROFILE=profilename ; make' will work. Profiles are defined
68           in build/profiles/profilename.make ; right now there isn't
69           too much going on. The 'bootstrap' profile will build the
70           way makefile.gnu did on Linux, by setting MONO_PATH and
71           using mcs/mcs.exe; the default profile will build against
72           the existing system libraries and compile with 'mcs', which
73           should reduce a lot of 'corlib out of sync' warnings.
74
75         * Important variables are shared among makefiles now; you can
76           edit build/config.make (see build/config-default.make for a
77           template) and give global settings, or just have a much
78           saner time of writing new makefiles.
79
80         * Response files, stamps, and other build trivia now all land
81           in build/deps/, making the library build directories
82           cleaner.
83
84         * Test libraries now live in class/Library/Library_test.dll,
85           not class/Library/Test. 'make test' will build the test DLL,
86           'make run-test' will actually run the nunit tests. Set the
87           variable TEST_HARNESS to run with a program other than
88           nunit-console (for example, nunit-gtk).
89
90         * Standardized recursive targets: all, clean, install, test,
91           run-test.  Read build/README.makefiles for definitions of
92           what they should do
93
94         * (Relatively) sane 'make dist' target; 'make distcheck'
95           support; cute 'make monocharge' and 'make monocharge-lite'
96           targets. They're made possible because 'make install' now
97           supports DESTDIR a la automake, which I'm sure someone cares
98           about.
99