2003-01-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[mono.git] / man / mcs.1
index 2967e1bd926b2414701820a6b728407bb7294a4b..68e5f33092302c3c2688006f227cec5e1e706db8 100755 (executable)
--- a/man/mcs.1
+++ b/man/mcs.1
@@ -6,11 +6,18 @@ mcs \- Mono Compiler Suite.
 [option] [source-files]
 .SH DESCRIPTION
 mcs is the Mono C# compiler, an implementation of the ECMA-334
-specification.  You can pass one or more options to drive the
+language specification.  You can pass one or more options to drive the
 compiler, and a set of source files.  Extra options or arguments can
 be provided in a response file.  Response files are referenced by
 prepending the @ symbol to the response file name.
 .PP
+The Mono C# compiler accepts the same options than the Microsoft C#
+compiler does.  Those options can start with a slash or a dash
+(/checked is the same as -checked).  Additionally to this, the
+GNU-like options are supported, those begin with "--".  All
+MCS-specific flags which are not available in the Microsoft C#
+compiler are available only with the GNU-style options. 
+.PP
 C# source files must end with a ".cs" extension.  Compilation of C#
 source code requires all the files that make up a library, module or
 executable to be provided on the command line.  There is no support
@@ -29,14 +36,42 @@ Executables are not bound to a specific CPU or operating system.
 .I \-\-about
 Displays information about the Mono C# compiler
 .TP
-.I \-\-checked
+.I -checked, -checked+
 Sets the default compilation mode to `checked'.  This makes all
 the math operations checked (the default is unchecked).
 .TP
-.I \-\-define SYMBOL
-Defines a symbol named SYMBOL.  This can be tested in the source code
-by the pre-processor.
-.TP
+.I -checked-
+Sets the default compilation mode to `unchecked'.  This makes all
+the math operations unchecked (this is the default).
+.TP
+.I -codepage:ID
+Specifies the code page used to process the input files from the
+point it is specified on.  By default files will be processed in the
+Latin-1 code page.  The compiler will also automatically detect
+Unicode files that have an embedded byte mark at the beginning.   The
+special ID "utf8" can be used to switch to utf8 and the ID "reset"
+restores the automatic handling of code pages.
+.TP
+.I \-define:SYMLIST, -d:SYMLIST
+Defines the symbol listed by the semi-colon separeted list SYMLIST
+SYMBOL.  This can be tested in the source code by the pre-processor,
+or can be used by methods that have been tagged with the Conditional
+attribute. 
+.TP
+.I \-debug, \-debug+, \-g
+Generate debugging information.  The debugging information is stored
+in a file with the extension .dbg (if you install system wide
+assemblies, you need to install this file as well).  To get stack
+traces with debugging information, you need to invoke the mono runtime
+with the `--debug' flag.  
+.TP
+.I \-debug-
+Do not generate debugging information.
+.TP
+.I \-\-expect-error X L
+The compiler will expect the code to generate an error 
+named `X' in line `L'.  This is only used by the test suite.
+.TP 
 .I \-\-fatal 
 This is used for debugging the compiler.  This makes the error emission
 generate an exception that can be caught by a debugger.
@@ -45,31 +80,50 @@ generate an exception that can be caught by a debugger.
 Generates a stack trace at the time the error is reported, useful for
 debugging the compiler.
 .TP
+.I -lib:PATHLIST
+Each path specified in the comma-separated list will direct the
+compiler to look for libraries in that specified path.
+.TP
 .I \-L PATH
 Directs the compiler to look for libraries in the specified path.
-Multiple paths can be provided.
+Multiple paths can be provided by using the option multiple times.
 .TP
-.I \-\-nostdlib
+.I \-nostdlib, -nostdlib+
 Use this flag if you want to compile the core library.  This makes the
 compiler load its internal types from the assembly being compiled.
 .TP
-.I \-\-nowarn XXX
-Makes the compiler ignore warning XXX.
+.I \-noconfig, \-noconfig+
+Disables the default compiler configuration to be loaded.  The
+compiler by default has references to the system assemblies. 
 .TP
-.I \-o FNAME
-Names the output file to be generated.
+.I \-nowarn:WARNLIST
+Makes the compiler ignore warnings specified in the comma-separeted
+list WARNLIST>
 .TP
-.I \-\-optimize
-Turns on optimizations in the compiler.  
+.I -out:FNAME, -o FNAME
+Names the output file to be generated.
 .TP
 .I \-\-parse
 Used for benchmarking.  The compiler will only parse its input files.
 .TP
-.I \-\-probe X L
-Probes for the code to generate an error named `X' in line `L'.  This
-is only used by the test suite.
+.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 \-recurse:PATTERN, --recurse PATTERN
+Does recursive compilation using the specified pattern.  In Unix the
+shell will perform globbing, so you migth want to use it like this:
+.PP
+.nf
+               bash$ mcs -recurse:'*.cs' 
+.fi
 .TP
-.I \-\-target KIND
+.I \-target:KIND, \-t:KIND
 Used to specify the desired target.  The possible values are: exe,
 winexe, library and module.  
 .TP
@@ -77,19 +131,24 @@ winexe, library and module.
 Another debugging flag.  Used to display the times at various points
 in the compilation process.
 .TP
-.I \-\-unsafe
+.I \-unsafe, -unsafe+
 Enables compilation of unsafe code.
 .TP
-.I \-\-werror
+.I \-warnaserror, \-warnaserror+
 Treat warnings as errors.
 .TP
-.I \-\-wlevel LEVEL
+.I \-warn:LEVEL
 Sets the warning level.  0 is the lowest warning level, and 4 is the
 highest.  The default is 2.
 .TP
-.I \-r ASSEMBLY
-Reference the named assembly.  Use this to use classes from the named
-assembly in your program.
+.I -r:ASSEMBLY1[,ASSEMBLY2], \-r 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.
+.PP
+You can also use a semicolon to separate the assemblies instead of a
+comma. 
 .TP
 .I \-v 
 Debugging. Turns on verbose yacc parsing.
@@ -98,19 +157,52 @@ Debugging. Turns on verbose yacc parsing.
 Use this to stop option parsing, and allow option-looking parameters
 to be passed on the command line.
 .PP
+.SH SPECIAL DEFINES
+The 
+.B TRACE
+and
+.B DEBUG
+defines have a special meaning to the compiler.
+.PP
+By default calls to methods and properties in the
+System.Diagnostics.Trace class are not generated unless the TRACE
+symbol is defined (either through a "#define TRACE") in your source
+code, or by using the
+.I "--define TRACE"
+in the command line.
+.PP
+By default calls to methods and properties in the
+System.Diagnostics.Debug class are not generated unless the DEBUG
+symbol is defined (either through a "#define DEBUG") in your source
+code, or by using the
+.I "--define DEBUG"
+in the command line.
+.PP
+Note that the effect of defining TRACE and DEBUG is a global setting,
+even if they are only defined in a single file.
+.PP
+.SH DEBUGGING SUPPORT
+When use the "--debug" or "-g" flag, MCS will create an assembler file
+FILE-debug.s containing debugging information where FILE is the name of
+the generated assembly. You need to run this file through the assembler
+to get a object file FILE-debug.o.  See mono's "--dwarf-plus" argument
+for details on how to use this file.
 .SH NOTES
 During compilation the MCS compiler defines the __MonoCS__ symbol,
 this can be used by pre-processor instructions to compile Mono C#
 compiler specific code.
 .SH AUTHORS
-The Mono C# Compiler was written by Miguel de Icaza and Ravi Pratap at
-Ximian. 
+The Mono C# Compiler was written by Miguel de Icaza, Ravi Pratap and
+Martin Baulig at Ximian.
 .PP
 .SH LICENSE
 The Mono Compiler Suite is released under the terms of the GNU GPL.
 Please read the accompanying `COPYING' file for details.  Alternative
 licenses are available from Ximian.
 .PP
+.SH SEE ALSO
+mono(1), mint(1)
+.PP
 .SH BUGS
 To report bugs in the compiler, you can use `bug-buddy', or you can
 file bug reports in our bug tracking system: