+.I \-pkg:package1[,packageN]
+Reference assemblies for the given packages.
+.Sp
+The compiler will invoke pkg-config --libs on the set of packages
+specified on the command line to obtain libraries and directories to
+compile the code.
+.Sp
+This is typically used with third party components, like this:
+.nf
+
+ $ mcs -pkg:gtk-sharp demo.cs
+.fi
+.RS
+.ne 8
+.TP
+.I \-pkg:dotnet
+This will instruct the compiler to reference the System.* libraries
+available on a typical dotnet framework installation, notice that this
+does not include all of the Mono libraries, only the System.* ones. This
+is a convenient shortcut for those porting code.
+.TP
+.I \-pkg:olive
+Use this to reference the "Olive" libraries (the 3.0 and 3.5 extended
+libraries).
+.TP
+.I \-pkg:silver
+References the assemblies for creating Moonlight/Silverlight
+applications. This is automatically used when using the
+.I smcs
+compiler, but it is here when developers want to use it with the
+.I gmcs
+compiler.
+.TP
+.I \-pkg:silverdesktop
+Use this option to create Moonlight/Silverlight applications that
+target the desktop. This option allows developers to consume the
+Silverlight APIs with the full 2.0 profile API available to them,
+unlike
+.I smcs
+it gives full access to all the APIs that are part of Mono. The only
+downside is that applications created with silverdesktop will not run
+on the browser. Typically these applications will be launched
+with the
+.I mopen
+command line tool.
+.TP
+For more details see the PACKAGE section in this document
+.ne
+.RE
+.TP
+.I \-platform:ARCH
+Used to specify the target platform. The possible values are: anycpu,
+x86, x64 or itanium. As of June 2009, the Mono runtime only have support
+to emit anycpu and x86 assemblies.
+.TP
+.I -resource:RESOURCE[,ID]
+Embeds to the given resource file. The optional ID can be used to
+give a different name to the resource. If not specified, the resource
+name will be the file name.
+.TP
+.I -linkresource:RESOURCE[,ID]
+Links to the specified RESOURCE. The optional ID can be used to give
+a name to the linked resource.
+.TP
+.I -r:ASSEMBLY1[,ASSEMBLY2], \-reference ASSEMBLY1[,ASSEMBLY2]
+Reference the named assemblies. Use this to use classes from the named
+assembly in your program. The assembly will be loaded from either the
+system directory where all the assemblies live, or from the path
+explicitly given with the -L option.
+.Sp
+You can also use a semicolon to separate the assemblies instead of a
+comma.
+.TP
+.I -reference:ALIAS=ASSEMBLY
+Extern alias reference support for C#.
+.Sp
+If you have different assemblies that provide the same types, the
+extern alias support allows you to provide names that your software
+can use to tell those appart. The types from ASSEMBLY will be
+exposed as ALIAS, then on the C# source code, you need to do:
+.Sp
+.nf
+ extern alias ALIAS;
+.fi
+To bring it into your namespace. For example, to cope with two
+graphics libraries that define "Graphics.Point", one in
+"OpenGL.dll" and one in "Postscript.dll", you would invoke the
+compiler like this:
+.Sp
+.nf
+ mcs -r:Postscript=Postscript.dll -r:OpenGL=OpenGL.dll
+.fi
+.Sp
+And in your source code, you would write:
+.Sp
+.nf
+ extern alias Postscript;
+ extern alias OpenGL;
+
+ class X {
+ // This is a Graphics.Point from Postscrip.dll
+ Postscript.Point p = new Postscript.Point ();
+
+ // This is a Graphics.Point from OpenGL.dll
+ OpenGL.Point p = new OpenGL.Point ();
+ }
+.fi