.TH MODULA\-2 1ACK .ad .SH NAME Modula-2 \- ACK Modula-2 compiler .SH SYNOPSIS \fBack\fR \-m\fImach\fR files .br \fImach\fR files .SH INTRODUCTION This document provides a short introduction to the use of the ACK Modula-2 compiler. It also tells you where to find definition modules for "standard" modules. .SH FILENAMES Usually, a Modula-2 program consists of several definition and implementation modules, and one program module. Definition modules must reside in files with names having a ".def" extension. Implementation modules and program modules must reside in files having a ".mod" extension. .PP 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. .SH CALLING THE COMPILER The easiest way to do this is to let the \fIack\fR(1) program do it for you. So, to compile a program module "prog.mod", just call .nf \fBack\fR \-m\fImach\fR prog.mod [ objects of implementation modules ] or \fImach\fR prog.mod [ objects of implementation modules ] .fi where \fImach\fR is one of the target machines of ACK. .PP To compile an implementation module, use the \-\fBc\fR flag to produce a ".o" file. Definition modules can not be compiled; the compiler reads them when they are needed. .PP For more details on the \fIack\fR program see \fIack\fR(1). .SH DEFINITION MODULES "Standard" definition modules can be found in the directory \fB~em/lib/m2\fR. .PP 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 \-\fBI\fR flag in the order given, and then in the directory mentioned above. .SH FLAGS The \fIack\fR(1) program recognizes (among others) the following flags, that are passed to the Modula-2 compiler: .IP \fB\-I\fIdirname\fR .br append \fIdirname\fR to the list of directories where definition modules are looked for. .IP \fB\-I\fP don't look in the directory \fB~em/lib/m2\fR. .IP \fB\-M\fP\fIn\fP set maximum identifier length to \fIn\fR. The minimum value of \fIn\fR is 14, because the keyword "IMPLEMENTATION" is that long. .IP \fB\-n\fR do not generate EM register messages. The user-declared variables will not be stored into registers on the target machine. .IP \fB\-L\fR do not generate the EM \fBfil\fR and \fBlin\fR instructions that enable an interpreter 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\-x\fR make all procedure names global, so that \fIadb\fR(1) understands them. .IP \fB\-Xs\fR make INTEGER ranges symmetric, t.i., MIN(INTEGER) = - MAX(INTEGER). This is useful for interpreters that use the "real" MIN(INTEGER) to indicate "undefined". .LP .SH SEE ALSO \fIack\fR(1ACK), \fIem_m2\fR(6ACK), \fIm2mm(1ACK)\fR .SH FILES .IR ~em/lib/em_m2 : binary of the Modula-2 compiler. .SH DIAGNOSTICS All warning and error messages are written on standard error output. .SH REMARKS Debugging and profiling facilities may be present during the development of \fIem_m2\fP.