123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- .TH FM2 1
- .SH NAME
- afm2 \- fast ACK compatible Modula-2 compiler
- .SH SYNOPSIS
- .B afm2
- [
- .B \-c
- ]
- [
- .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 \-_
- ]
- [
- .B \-g
- ]
- [
- .BI \-U name
- ]
- [
- .BI -M compiler
- ]
- .I sourcefile ...
- .SH DESCRIPTION
- .LP
- .I afm2
- is a fast
- .B Modula-2
- compiler. It translates
- .B Modula-2
- programs
- into ack(1)-compatible relocatable object modules, and does so in one pass.
- Then, if the \fB\-c\fP flag is not given,
- .I afm2
- offers the object modules to a link-editor,
- to create an executable binary.
- .LP
- .I Afm2
- 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.
- .SH OPTIONS
- .LP
- .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, then in the ACK include directory,
- 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 $TARGET_HOME/lib/m2.
- .I afm2
- 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\-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\-g\fP
- .br
- Produce symbolic debugging information for grind(1).
- .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\-_\fP
- .br
- allow for underscores within identifiers. Identifiers may not start or end
- with an underscore, even if this flag is given.
- .IP \fB\-M\fIcompiler\fR
- .br
- use \fIcompiler\fR as Modula-2 compiler instead of the default.
- .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]
- ack(1) unix manual page.
- .IP [4]
- grind(1) unix manual page.
- .SH DIAGNOSTICS
- Diagnostics are intended to be self-explanatory.
|