X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2FINSTALL.txt;h=2b59d588ba3b029982d950d69de74cd90d231faa;hb=07fdcf989b4e3a326af9bdaee6d7116d55ad2430;hp=a90e4b0831ef309c830ed4c7e40a06131ef24dd3;hpb=74c45be652912f4299ae63dfc966a37c0ad23612;p=mono.git diff --git a/mcs/INSTALL.txt b/mcs/INSTALL.txt index a90e4b0831e..2b59d588ba3 100644 --- a/mcs/INSTALL.txt +++ b/mcs/INSTALL.txt @@ -1,24 +1,57 @@ 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. * +* * +* ../mono is where you have your `mono' source download * +* * +********************************************************************* + +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 command, like this: + + cd ../mono + ./autogen.sh --prefix=/usr/local + make + make install + +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,25 +64,116 @@ 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" + +A better alternative would be to fire off a 'make' from a sibling or +parent 'mono/' tree. - echo prefix=/your-prefix > build/config.make +Troubleshooting +=============== + +We try to maintain the CVS tree such that it is bootstrapable from the +latest released version of mono and mcs. Occasionally, something in the +compiler or runtime changes enough that an existing installation cannot +complete a bootstrap 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 +bootstrap). + + wget http://go-mono.com/daily/monolite-20040505.tar.gz + tar -zxvf monolite-20040505.tar.gz + cd monolite-20040505 + env prefix=/usr/local sh recharge.sh + +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. + +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 + have a Windows machine to test on, but Gonzalo can get + corlib to build I think and that's about as complicated as + it gets. + + * Profile support. 'make PROFILE=profilename' or 'export + PROFILE=profilename ; make' will work. Profiles are defined + in build/profiles/profilename.make ; right now there isn't + too much going on. The 'bootstrap' profile will build the + way makefile.gnu did on Linux, by setting MONO_PATH and + using mcs/mcs.exe; the default profile will build against + the existing system libraries and compile with 'mcs', which + should reduce a lot of 'corlib out of sync' warnings. + + * Important variables are shared among makefiles now; you can + edit build/config.make (see build/config-default.make for a + template) and give global settings, or just have a much + saner time of writing new makefiles. + + * Response files, stamps, and other build trivia now all land + in build/deps/, making the library build directories + cleaner. + + * Test libraries now live in class/Library/Library_test.dll, + not class/Library/Test. 'make test' will build the test DLL, + 'make run-test' will actually run the nunit tests. Set the + variable TEST_HARNESS to run with a program other than + nunit-console (for example, nunit-gtk). + + * Standardized recursive targets: all, clean, install, test, + run-test. Read build/README.makefiles for definitions of + what they should do + + * (Relatively) sane 'make dist' target; 'make distcheck' + support; cute 'make monocharge' and 'make monocharge-lite' + targets. They're made possible because 'make install' now + supports DESTDIR a la automake, which I'm sure someone cares + about.