X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=README;h=d57aef26d8aa35567e313858ffbb0387adda2173;hb=35044c74a25b2c3c983ceca94f5163fa309a495c;hp=1cc99950c1cd2d1ee26dc93272760d25bfc8498c;hpb=4eb352bcb3ef7a71dc9ab62c5cd2d5e7598619f7;p=mono.git diff --git a/README b/README index 1cc99950c1c..d57aef26d8a 100644 --- 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 @@ -52,8 +50,8 @@ This is Mono. make make install - Mono supports a JIT engine on x86, SPARC, SPARCv9, S/390, AMD64, ARM - and PowerPC systems. + Mono supports a JIT engine on x86, SPARC, SPARCv9, S/390, + S/390x, 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 @@ -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: @@ -82,6 +91,19 @@ This is Mono. ./autogen.sh --prefix=/usr/local make + For people with non-standard installations of the auto* utils and of + pkg-config (common on misconfigured OSX and windows boxes), you could get + an error like this: + + ./configure: line 19176: syntax error near unexpected token `PKG_CHECK_MODULES(BASE_DEPENDENCIES,' ... + + This means that you need to set the ACLOCAL_FLAGS environment var + when invoking autogen.sh, like this: + + ACLOCAL_FLAGS="-I $acprefix/share/aclocal" ./autogen.sh --prefix=/usr/loca + + where $acprefix is the prefix where aclocal has been installed. + This will automatically go into the mcs/ tree and build the binaries there. @@ -108,19 +130,19 @@ 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 - ------------------------ + ------------------------ You can run (part of) the mono and mcs testsuites with the command: @@ -143,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 @@ -171,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. @@ -195,6 +225,10 @@ This is Mono. --with-sigaltstack=yes,no + Experimental: Use at your own risk, it is known to + cause problems with garbage collection and is hard to + reproduce those bugs. + 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 @@ -207,7 +241,7 @@ This is Mono. systems do not support this feature, or you might want to override the auto-detection. - --with-static-mono=yes,no + --with-static_mono=yes,no This controls whether `mono' should link against a static library (libmono.a) or a shared library @@ -234,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 @@ -242,10 +287,38 @@ 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. + + It defaults to `yes'. + + --with-moonlight=yes,no + + Whether you want to generate the Silverlight/Moonlight + libraries and toolchain in addition to the default + (1.1 and 2.0 APIs). + + This will produce the `smcs' compiler which will reference + 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. + + --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. - Whether you want to build libraries that are still not - completed (The 2.0 APIs). It defaults to `yes'. + This defaults to `boehm'. --with-libgdiplus=installed,sibling, @@ -262,6 +335,16 @@ This is Mono. Or you can specify a path to a libgdiplus. + --disable-shared-memory + + Use this option to disable the use of shared memory in + Mono (this is equivalent to setting the MONO_DISABLE_SHM + environment variable, although this removes the feature + completely). + + Disabling the shared memory support will disable certain + features like cross-process named mutexes. + --enable-minimal=LIST Use this feature to specify optional runtime @@ -276,42 +359,129 @@ 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 + than Int32.MaxValue. + + By default Mono has the same limitation as .NET on + Win32 and Win64 and limits array indexes to 32-bit + values (even on 64-bit systems). + + In certain scenarios where large arrays are required, + you can pass this flag and Mono will be built to + support 64-bit arrays. + + This is not the default as it breaks the C embedding + 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 + runtime that contains DTrace probes and can + participate in the system profiling using DTrace. + + --disable-dev-random Mono uses /dev/random to obtain good random data for @@ -322,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 ============= @@ -385,6 +564,11 @@ This is Mono. Manual pages for the various Mono commands and programs. + samples/ + + Some simple sample programs on uses of the Mono + runtime as an embedded library. + scripts/ Scripts used to invoke Mono and the corresponding program. @@ -394,3 +578,11 @@ This is Mono. A directory that contains the Makefiles that link the mono/ and mcs/ build systems. + ../olive/ + + If the directory ../olive is present (as an + independent checkout) from the Mono module, that + directory is automatically configured to share the + same prefix than this module gets. + +