214 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			214 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| .TH FM2 1
 | |
| .SH NAME
 | |
| afm2 \- fast ACK compatible Modula-2 compiler
 | |
| .SH SYNOPSIS
 | |
| .B afm2
 | |
| [
 | |
| .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 \-_
 | |
| ]
 | |
| [
 | |
| .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(1ACK)-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
 | |
| 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, 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 CHANGE_ME.
 | |
| .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\-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\-_\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(1ACK) unix manual page.
 | |
| .SH DIAGNOSTICS
 | |
| Diagnostics are intended to be self-explanatory.
 | |
| .SH REMARKS
 | |
| You need the 4th ACK distribution to be able to use this program.
 |