|
@@ -0,0 +1,230 @@
|
|
|
+.TH FM2 1
|
|
|
+.SH NAME
|
|
|
+fm2 \- fast CC compatible Modula-2 compiler
|
|
|
+.SH SYNOPSIS
|
|
|
+.B fm2
|
|
|
+[
|
|
|
+.B \-c
|
|
|
+]
|
|
|
+[
|
|
|
+.B \-O
|
|
|
+]
|
|
|
+[
|
|
|
+.B \-v
|
|
|
+]
|
|
|
+[
|
|
|
+.B \-vn
|
|
|
+]
|
|
|
+[ \fB\-D\fIname\fR ]
|
|
|
+[ \fB\-D\fIname\fB=\fIdef\fR ]
|
|
|
+[
|
|
|
+.BI \-I pathname
|
|
|
+]
|
|
|
+[
|
|
|
+.BI \-w classes
|
|
|
+]
|
|
|
+[
|
|
|
+.BI \-W classes
|
|
|
+]
|
|
|
+[
|
|
|
+.B \-L
|
|
|
+]
|
|
|
+[
|
|
|
+.B \-o
|
|
|
+.I outfile
|
|
|
+]
|
|
|
+[
|
|
|
+.B \-R
|
|
|
+]
|
|
|
+[
|
|
|
+.B \-A
|
|
|
+]
|
|
|
+[
|
|
|
+.B \-3
|
|
|
+]
|
|
|
+[
|
|
|
+.B \-U
|
|
|
+]
|
|
|
+[
|
|
|
+.B \-e
|
|
|
+]
|
|
|
+[
|
|
|
+.BI \-U name
|
|
|
+]
|
|
|
+[
|
|
|
+.BI -M compiler
|
|
|
+]
|
|
|
+.I sourcefile ...
|
|
|
+.SH DESCRIPTION
|
|
|
+.LP
|
|
|
+.I fm2
|
|
|
+is a fast
|
|
|
+.B Modula-2
|
|
|
+compiler. It translates
|
|
|
+.B Modula-2
|
|
|
+programs
|
|
|
+into cc(1)-compatible relocatable object modules, and does so in one pass.
|
|
|
+Then, if the \fB\-c\fP flag is not given,
|
|
|
+.I fm2
|
|
|
+offers the object modules to a link-editor,
|
|
|
+to create an executable binary.
|
|
|
+.LP
|
|
|
+.I Fm2
|
|
|
+accepts several types of filename arguments. Files with
|
|
|
+names ending in
|
|
|
+.B .mod
|
|
|
+are taken to be
|
|
|
+.B Modula-2
|
|
|
+source programs.
|
|
|
+They are compiled, and the resulting object module is placed in the current
|
|
|
+directory.
|
|
|
+The object module is named after its source file, the suffix
|
|
|
+.B .o
|
|
|
+replacing
|
|
|
+.BR .mod
|
|
|
+in the name of the object.
|
|
|
+A file with suffix
|
|
|
+.B .mod
|
|
|
+is passed through the C preprocessor if it begins with a '#'.
|
|
|
+.PP
|
|
|
+Definition modules are not separately compiled. The compiler reads them when
|
|
|
+it needs them.
|
|
|
+Definition modules are expected to reside in files with names ending
|
|
|
+in
|
|
|
+.BR .def .
|
|
|
+The name of the file in which a definition module is stored must be the same as
|
|
|
+the module-name, apart from the extension.
|
|
|
+Also, in most Unix systems filenames are only 14 characters long.
|
|
|
+So, given an IMPORT declaration for a module called "LongModulName",
|
|
|
+the compiler will try to open a file called "LongModulN.def".
|
|
|
+The requirement does not hold for implementation or program modules,
|
|
|
+but is certainly recommended.
|
|
|
+.LP
|
|
|
+Other arguments refer to loader options,
|
|
|
+object modules, or object libraries.
|
|
|
+Unless the
|
|
|
+.B \-c
|
|
|
+flag is given, these modules and libraries, together with the results of any
|
|
|
+specified compilations, are passed (in the order given) to the
|
|
|
+link-editor to produce
|
|
|
+an output file named
|
|
|
+.IR a.out .
|
|
|
+You can specify a name for the executable by using the
|
|
|
+.B \-o
|
|
|
+option.
|
|
|
+.LP
|
|
|
+If a single
|
|
|
+.B Modula-2
|
|
|
+program is compiled and loaded all at once, the object module
|
|
|
+file is deleted.
|
|
|
+.SH OPTIONS
|
|
|
+.LP
|
|
|
+The \fB\-l\fIlib\fR, \fB\-d\fP, \fB\-n\fP, \fB\-N\fP,
|
|
|
+\fB\-r\fP, \fB\-s\fP, \fB\-S\fP, \fB\-i\fP, and \fB\-u\fP options are
|
|
|
+passed to the link-editor program.
|
|
|
+The \fB\-u\fP option takes an extra argument.
|
|
|
+.IP \fB\-c\fP
|
|
|
+.br
|
|
|
+Suppress the loading phase of the compilation, and force an object module to
|
|
|
+be produced, even if only one program is compiled.
|
|
|
+A single object module can be named explicitly using the
|
|
|
+.B \-o
|
|
|
+option.
|
|
|
+.IP \fB\-D\fIname\fR\fB=\fIdef\fR
|
|
|
+Define a symbol
|
|
|
+.I name
|
|
|
+to the
|
|
|
+preprocessor, as if by "#define".
|
|
|
+.IP \fB\-D\fIname\fR
|
|
|
+.br
|
|
|
+same as \fB\-D\fIname\fB=1\fR.
|
|
|
+.IP \fB\-I\fIpathname\fR
|
|
|
+.br
|
|
|
+Add
|
|
|
+.I pathname
|
|
|
+to the list of directories in which to search for
|
|
|
+.B #include
|
|
|
+files with filenames not beginning with slash.
|
|
|
+The preprocessor first searches for
|
|
|
+.B #include
|
|
|
+files in the directory containing
|
|
|
+.I sourcefile,
|
|
|
+then in directories in
|
|
|
+.B \-I
|
|
|
+options, and finally, in
|
|
|
+.I /usr/include.
|
|
|
+This flag is also passed to the compiler. When the compiler needs a definition
|
|
|
+module, it is first searched for in the current directory, then in the
|
|
|
+directories given to it by the \fB\-I\fP flag, and then in a default directory,
|
|
|
+.I CHANGE_ME.
|
|
|
+.I fm2
|
|
|
+This default directory contains all definition modules of
|
|
|
+the runtime system.
|
|
|
+.IP "\fB\-o \fIoutput\fR"
|
|
|
+Name the final output file
|
|
|
+.I output.
|
|
|
+.IP \fB\-O\fP
|
|
|
+.br
|
|
|
+Use a version of the compiler that is just a bit slower, but produces
|
|
|
+better code.
|
|
|
+.IP \fB\-U\fIname\fR
|
|
|
+.br
|
|
|
+Remove any initial definition of
|
|
|
+.I name.
|
|
|
+.IP \fB\-v\fP
|
|
|
+.br
|
|
|
+Verbose. Print the commands as they are executed.
|
|
|
+.IP \fB\-vn\fP
|
|
|
+.br
|
|
|
+Verbose, no execute. Only print the commands, do not execute them.
|
|
|
+.IP \fB\-L\fR
|
|
|
+do not generate code to keep track of
|
|
|
+the current location in the source code.
|
|
|
+.IP \fB\-w\fR\fIclasses\fR
|
|
|
+suppress warning messages whose class is a member of \fIclasses\fR.
|
|
|
+Currently, there are three classes: \fBO\fR, indicating old-flashioned use,
|
|
|
+\fBW\fR, indicating "ordinary" warnings, and \fBR\fR, indicating
|
|
|
+restricted Modula-2.
|
|
|
+If no \fIclasses\fR are given, all warnings are suppressed.
|
|
|
+By default, warnings in class \fBO\fR and \fBW\fR are given.
|
|
|
+.IP \fB\-W\fR\fIclasses\fR
|
|
|
+allow for warning messages whose class is a member of \fIclasses\fR.
|
|
|
+.IP \fB\-R\fP
|
|
|
+.br
|
|
|
+disable all range-checks.
|
|
|
+.IP \fB\-A\fP
|
|
|
+.br
|
|
|
+enable extra array bound checks. Unfortunately, the back-end used for this
|
|
|
+compiler is a bit sloppy, so extra array bound checks are needed if you want
|
|
|
+detection of array bound errors.
|
|
|
+.IP \fB\-3\fP
|
|
|
+.br
|
|
|
+Only accept Modula-2 programs that strictly conform to the 3rd Edition of
|
|
|
+[1].
|
|
|
+.IP \fB\-U\fP
|
|
|
+.br
|
|
|
+allow for underscores within identifiers. Identifiers may not start or end
|
|
|
+with an underscore, even if this flag is given.
|
|
|
+.IP \fB\-e\fP
|
|
|
+.br
|
|
|
+allow for local extensions. Currently, the only local extensions are
|
|
|
+procedure constants.
|
|
|
+.IP \fB\-M\fIcompiler\fR
|
|
|
+.br
|
|
|
+use \fIcompiler\fR as Modula-2 compiler instead of the default.
|
|
|
+.PP
|
|
|
+The compiler does not do any version-control. Instead, a makefile
|
|
|
+generator,
|
|
|
+.IR m2mm ,
|
|
|
+is included.
|
|
|
+.SH "SEE ALSO"
|
|
|
+.IP [1]
|
|
|
+N. Wirth, \fIProgramming in Modula-2\fP, 3rd edition, Springer Verlag.
|
|
|
+.IP [2]
|
|
|
+C.J.H. Jacobs, \fIThe ACK Modula-2 Compiler\fP.
|
|
|
+.IP [3]
|
|
|
+cc(1) unix manual page.
|
|
|
+.IP [4]
|
|
|
+m2mm(1) manual page.
|
|
|
+.SH DIAGNOSTICS
|
|
|
+Diagnostics are intended to be self-explanatory.
|