X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=README;h=6d1033ac3a5b680c38400ec41b4b3274d570baa2;hb=082873782a2b0acccc32774b52686a1ba3cc9977;hp=1cc99950c1cd2d1ee26dc93272760d25bfc8498c;hpb=2007998771b1c4d9e762943676d7959daaf74385;p=mono.git diff --git a/README b/README index 1cc99950c1c..6d1033ac3a5 100644 --- a/README +++ b/README @@ -52,8 +52,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,6 +67,14 @@ This is Mono. ./autogen.sh --prefix=/usr/local make + 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 SVN --------------------------------- @@ -82,6 +90,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 +129,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: @@ -151,11 +172,20 @@ This is Mono. 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 +201,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 +221,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 +237,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 +264,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 +283,23 @@ 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 build libraries that are still not - completed (The 2.0 APIs). It defaults to `yes'. + 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-libgdiplus=installed,sibling, @@ -262,6 +316,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 +340,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 +473,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 +545,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 +559,10 @@ 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. +