X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=README;h=1cc99950c1cd2d1ee26dc93272760d25bfc8498c;hb=a17adea98d0e3b4b130ba2d3c65521c26e7f32a7;hp=0c1dff13c8aa1773de39ee2a4b4cf94fbbe5b316;hpb=8ff8dec32bf802759bff11e354a1bcb5fa987f13;p=mono.git diff --git a/README b/README index 0c1dff13c8a..1cc99950c1c 100644 --- a/README +++ b/README @@ -1,9 +1,9 @@ This is Mono. -1. Installation -2. Using Mono -3. Directory Roadmap + 1. Installation + 2. Using Mono + 3. Directory Roadmap 1. Compilation and Installation =============================== @@ -17,23 +17,30 @@ This is Mono. Available from: http://www.freedesktop.org/Software/pkgconfig - * glib 2.0 + * glib 2.4 Available from: http://www.gtk.org/ - Optional dependencies: + On Itanium, you must obtain libunwind: + + http://www.hpl.hp.com/research/linux/libunwind/download.php4 - * ICU library + On Solaris, make sure that you used GNU tar to unpack this package, as + Solaris tar will not unpack this correctly, and you will get strange errors. - http://oss.software.ibm.com/icu/index.html + On Solaris, make sure that you use the GNU toolchain to build the software. - You will need this one to get complete support for the international - features of the .NET Framework. + Optional dependencies: - * Cairo and libgdiplus + * libgdiplus If you want to get support for System.Drawing, you will need to get - both Libgdiplus and Cairo. + Libgdiplus. + + * libzlib + + This library and the development headers are required for compression + file support in the 2.0 profile. b. Building the Software ------------------------ @@ -45,13 +52,8 @@ This is Mono. 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. + Mono supports a JIT engine on x86, SPARC, SPARCv9, S/390, AMD64, ARM + and PowerPC systems. If you obtained this as a snapshot, you will need an existing Mono installation. To upgrade your installation, unpack both @@ -63,119 +65,263 @@ This is Mono. mv mcs-XXX mcs cd mono ./autogen.sh --prefix=/usr/local - make bootstrap + make - c. Building the software from CVS + c. Building the software from SVN --------------------------------- - If you are building the software from CVS, make sure that you + If you are building the software from SVN, make sure that you have up-to-date mcs and mono sources: - cvs co mono mcs + 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 running autogen.sh; make; make install in the + mono module directory. - Depending on whether you have an existing Mono installation or - not, you can try the following: + You can also try a slightly more risky approach: this may not work, + so start from the released tarball as detailed above. - i. If you have an existing Mono installation - ----------------------------------------- + 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: - First verify that you have a working installation: + make get-monolite-latest - echo 'class X { static void Main () { System.Console.Write("OK");}}' > x.cs + This will download and automatically gunzip and untar the + tarball, and place the files appropriately so that you can then + just run: - Compile: + make - mcs x.cs + To ensure that you're using the 'monolite' distribution, you can + also try passing EXTERNAL_MCS=false on the make command-line. - And run: + Testing and Installation + ------------------------ - mono x.exe + You can run (part of) the mono and mcs testsuites with the command: - If you get the output `OK' and no errors, and you have mono - version 0.31 or later, continue. Otherwise, you can try option - (ii) below. + make check - You are ready to start your CVS upgrade. Compile with + All tests should pass. - make bootstrap + 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 - This will automatically go into the mcs/ tree and build the - binaries there, and copy them into the appropriate - sub-directories of mono/runtime/. + make -k check - Now, go to step (iii) below. + Expect to find a few testsuite failures. As a sanity check, you + can compare the failures you got with - ii. If you don't have a working Mono installation - --------------------------------------------- + http://go-mono.com/tests/displayTestResults.php - 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 go back to step (i). + You can now install mono with: - You can also try a slightly more risky approach that should work - almost all the time. + make install - This works by first getting the latest version of the 'monolite' - distribution, which contains just enough to run the 'mcs' - compiler. You do this by + Failure to follow these steps may result in a broken installation. - make get-monolite-latest + d. Common Configuration Options + ------------------------------- - This should place a monolite-latest.tar.gz in the parent - directory of the 'mono' source tree. You can then run: + The following are the configuration options that someone + building Mono might want to use: + - make monolite-bootstrap + --with-gc=[boehm, included, sgen, none] - This will automatically gunzip and untar the tarball, place the - files appropriately, and then complete the bootstrap. + Selects the garbage collector engine to use, the + default is the "included" value. + + included: + This is the default value, and its + the most feature complete, it will allow Mono + to use typed allocations and support the + debugger. - iii. Testing and Installation - ------------------------ + It is essentially a slightly modified Boehm GC - You can run the mono and mcs testsuites with the command: + boehm: + This is used to use a system-install Boehm GC, + it is useful to test new features available in + Boehm GC, but we do not recommend that people + use this, as it disables a few features. - make -k bootstrap-check + sgen: + The under-development Generational GC for + Mono, do not use this in production. - Expect to find several testsuite failures, especially in the - mcs/ tree. As a sanity check, you can compare the failures you - got with + none: + Disables the inclusion of a garbage + collector. - http://go-mono.com/tests/displayTestResults.php + --with-tls=__thread,pthread - You can now install it: + Controls how Mono should access thread local storage, + pthread forces Mono to use the pthread APIs, while + __thread uses compiler-optimized access to it. - make install + Although __thread is faster, it requires support from + the compiler, kernel and libc. Old Linux systems do + not support with __thread. + + This value is typically pre-configured and there is no + need to set it, unless you are trying to debug a + problem. - Failure to follow these steps will result in a broken installation. + --with-sigaltstack=yes,no - iv. Other useful "bootstrap"-like facilities - ---------------------------------------- + This controls whether Mono will install a special + signal handler to handle stack overflows. If set to + "yes", it will turn stack overflows into the + StackOverflowException. Otherwise when a stack + overflow happens, your program will receive a + segmentation fault. - If you have a CVS snapshot that you keep updating periodically, - and/or do your development in, you may try using a couple of - specialty make targets that may be slightly faster than a - "make bootstrap". + The configure script will try to detect if your + operating system supports this. Some older Linux + systems do not support this feature, or you might want + to override the auto-detection. - You can try a two-stage bootstrap with: + --with-static-mono=yes,no - make faststrap + This controls whether `mono' should link against a + static library (libmono.a) or a shared library + (libmono.so). - This assumes that you have already run a "make bootstrap" on the - tree before. + This defaults to yes, and will improve the performance + of the `mono' program. - If you want to avoid waiting even for that, you can try the - riskier one-stage build: + This only affects the `mono' binary, the shared + library libmono.so will always be produced for + developers that want to embed the runtime in their + application. - make fasterstrap + --with-xen-opt=yes,no + + The default value for this is `yes', and it makes Mono + generate code which might be slightly slower on + average systems, but the resulting executable will run + faster under the Xen virtualization system. + + --with-large-heap=yes,no + + Enable support for GC heaps larger than 3GB. + + This value is set to `no' by default. + + --with-ikvm-native=yes,no + + Controls whether the IKVM JNI interface library is + built or not. This is used if you are planning on + using the IKVM Java Virtual machine with Mono. + + This defaults to `yes'. + + --with-preview=yes,no + + Whether you want to build libraries that are still not + completed (The 2.0 APIs). It defaults to `yes'. + + --with-libgdiplus=installed,sibling, + + This is used to configure where should Mono look for + libgdiplus when running the System.Drawing tests. + + It defaults to `installed', which means that the + library is available to Mono through the regular + system setup. + + `sibling' can be used to specify that a libgdiplus + that resides as a sibling of this directory (mono) + should be used. + + Or you can specify a path to a libgdiplus. + + --enable-minimal=LIST + + Use this feature to specify optional runtime + components that you might not want to include. This + is only useful for developers embedding Mono that + require a subset of Mono functionality. + + The list is a comma-separated list of components that + should be removed, these are: + + aot: + Disables support for the Ahead of Time + compilation. + + profiler: + Disables support for the default profiler. + + decimal: + Disables support for System.Decimal. + + pinvoke: + Support for Platform Invocation services, + disabling this will drop support for any + libraries using DllImport. + + debug: + Drop debugging support. + + reflection_emit: + Drop System.Reflection.Emit support + + large_code: + Disables support for large assemblies. + + logging: + Disables support for debug logging. + + com: + Disables COM support. + + 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. + + --disable-dev-random + + Mono uses /dev/random to obtain good random data for + any source that requires random numbers. If your + system does not support this, you might want to + disable it. + + There are a number of runtime options to control this + also, see the man page. - This should be attempted only if you're sure that the sources of - the mcs compiler itself and the sources of the libraries used by - it have not been changed. 2. Using Mono ============= @@ -185,8 +331,6 @@ This is Mono. * runtime engine mono program.exe - or - mint program.exe * C# compiler @@ -202,9 +346,6 @@ This is Mono. 3. Directory Roadmap ==================== - doc/ - Contains the web site contents. - docs/ Technical documents about the Mono runtime. @@ -217,7 +358,7 @@ This is Mono. metadata/ The object system and metadata reader. - jit/ + mini/ The Just in Time Compiler. dis/ @@ -235,7 +376,7 @@ This is Mono. definition of the CIL bytecodes. interp/ - Interpreter for CLI executables. + Interpreter for CLI executables (obsolete). arch/ Architecture specific portions. @@ -250,7 +391,6 @@ This is Mono. runtime/ - A directory holding a pre-compiled version of the Mono - runtime. - + A directory that contains the Makefiles that link the + mono/ and mcs/ build systems.