Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / man / mono-config.5
index 1229a104b21cb6debc2083272f85d4b8b3ae204c..a8e31f3ed3356515a970d082eb42bb5537a13e2f 100644 (file)
@@ -5,7 +5,7 @@
 .\"   Miguel de Icaza (miguel@gnu.org)
 .\"   Paolo Molaro (lupus@ximian.com)
 .\"
-.TH Mono "Mono 1.0"
+.TH Mono "mono-config"
 .SH NAME
 mono-config \- Mono runtime file format configuration
 .SH DESCRIPTION
@@ -14,7 +14,8 @@ installation prefix /etc/mono/config file, the ~/.mono/config or from
 the file pointed by the MONO_CONFIG environment variable.
 .PP
 For each assembly loaded a config file with the name:
-/path/to/the/assembly.exe.config is loaded, too.
+/path/to/the/assembly.exe.config is loaded as well as the
+~/.mono/assemblies/ASSEMBLY/ASSEMBLY.EXT.config file. 
 .PP
 This file controls the behavior of the runtime.
 .PP
@@ -23,6 +24,10 @@ contained inside a
 .B<configuration> 
 section (It actually uses GMarkup
 to parse the file).
+.PP
+This page describes the Unix-specific and Mono-specific extensions to
+the configuration file;   For complete details, see the
+http://www.mono-project.com/Config web page.
 .SH <dllmap> directive
 You use the dllmap directive to map shared libraries referenced by
 P/Invoke in your assemblies to a different shared library.
@@ -33,7 +38,9 @@ The
 element takes two attributes:
 .TP
 .I dll
-This should be the same string used in the DllImport attribute
+This should be the same string used in the DllImport attribute, optionally
+prefixed with "i:" to indicate that the string must be matched in a
+case-insensitive way
 .TP
 .I target
 This should be the name of the library where the function can be found: 
@@ -53,20 +60,58 @@ element takes 3 attributes:
 This is the target library, where the function can be found.
 .TP
 .I name
-This is the name of the fuction as it appears in the metadata: it is the name 
+This is the name of the function as it appears in the metadata: it is the name 
 of the P/Invoke method.
 .TP
 .I target
 This is the name of the function to lookup instead of the name specified in the 
 P/Invoke method.
+.SH Mapping based on operating system and cpu
+Both the
+.B dllmap
+and the
+.B dllentry
+elements allow the following two attributes which make it easy to use a single
+configuration file and support multiple operating systems and architectures with
+different mapping requirements:
+.TP
+.I os
+This is the name of the operating system for which the mapping should be applied.
+Allowed values are: linux, osx, solaris, freebsd, openbsd, netbsd, windows, aix, hpux.
+.TP
+.I cpu
+This is the name of the architecture for which the mapping should be applied.
+Allowed values are: x86, x86-64, sparc, ppc, s390, s390x, arm, mips,
+alpha, hppa, ia64.
+.TP
+.I wordsize
+This is the size of registers on the target architecture, it can be
+either 32 or 64.  
+.PP
+The attribute value for both attributes can be a comma-separated list of the allowed
+values. Additionally, the first character may be a
+.I '!'
+to reverse the meaning. An attribute value of "!windows,osx", for example, would mean
+that the entry is considered on all operating systems, except on Windows and OS X.
+No spaces are allowed in any part of the value.
+.PP
+Note that later entries will override the entries defined earlier in the file.
 .SH EXAMPLES
 The following example maps references to the `cygwin1.dll' shared
 library to the `libc.so.6' file.  
 .nf
 <configuration>
-       <dllmap dll="cygwin1.dll" target="libc.so.6"/>
+       <dllmap dll="i:cygwin1.dll" target="libc.so.6"/>
 </configuration>
 .fi
+The library name in the DllImport attribute is allowed to be in any
+case variant, like the following examples:
+.nf
+.nf
+       [DllImport ("cygwin1.dll")]
+       [DllImport ("Cygwin1.dll")]
+       [DllImport ("cygwiN1.Dll")]
+.fi
 .PP
 This one maps the following C# method:
 .nf
@@ -76,11 +121,15 @@ This one maps the following C# method:
 to
 .B differentfunction
 in
-.B libdifferent.so.
+.B libdifferent.so
+, but to the same function in the library
+.B libanother.so
+when running under the Solaris and FreeBSD operating systems.
 .nf
 <configuration>
        <dllmap dll="libc">
                <dllentry dll="libdifferent.so" name="somefunction" target="differentfunction" />
+               <dllentry os="solaris,freebsd" dll="libanother.so" name="somefunction" target="differentfunction" />
        </dllmap>
 </configuration>
 .fi