CM3(1)                   MODULA-3 PROGRAMMER'S MANUAL                   CM3(1)

       cm3- Critical Mass Modula-3 Compiler

       cm3 [options]

       The Critical Mass Modula-3 Compiler cm3 is a descendant of the Modula-3
       compiler developed by Digital Equipment Corp.  (DEC)  Systems  Research
       Center  (SRC)  and  Olivetti Corp.  Cm3 was a component of a commercial
       product (Reactor) of Critcal Mass.  When that company went out of busi-
       ness,  Elego  Software Solutions acquired the rights to Reactor and its
       components.  They released the Modula-3 compiler cm3 as an open  source
       project, and currently support it by hosting its web site.

   Expected Directory Structure
       Each  modula-3  software  package has a root directory in which certain
       files and directories may appear.  The optional files  m3makefile,  and
       m3overrides  may  be  placed in the root of the package directory.  All
       the source code should be in a directory named src,  and  the  compiler
       will  place  all  generated object files, libraries, and exectuables in
       directories appropriate for the target architecture,  generating  those
       directories  in the package root directory if required.  The src direc-
       tory may contain nested subdirectories further  organizing  the  source

   Mode Options
       -build Compile and Link the entire project

       -ship  Install  the  package  into the CM3_INSTALL_ROOT directory tree.
              NOTE: This may require administrator priviledges.

       -clean Delete derived files.

              Delete entire derived target directory.

       -find  Locate source files.

              Generate package dependencies.

   Compiler Options
       -g     Produce symbol table information for the debugger.

       -O     Optimize the generated code.

       -A     Disable code generation for assertions.

       -once  Don't recompile to improve opaque object code

       -w0 ... -w3
              Limit the compiler warning messages.

       -Z     Generate coverage analysis code.

              Generate profiling code.

       -lazy  Generate lazy module initialization code.

              Generate module initialization code for all modules, even  those
              that  are  not imported directly or indirectly by Main.  This is
              currently experimental and does not always work as expected.

   Program and Library Options
       -c     Compile only, do not link or produce  a  program  executable  or

       -a <foo>
              Build a library named foo.

       -o <foo>
              Build program named foo.

              Skip the final link step.

   Message Options
       -?     Print a short help message.

              Produce no diagnostic output.

       -why   Explain why code is being recompiled.

              List system commands as they are performed.

              List internal steps as they are performed.

       -debug Dump internal debugging information.

       -trace Trace quake code execution.

   Information and Help Options
       -help  Print a short help message.

       -?     See -help.

              Print the compilers version information and exit.

              Print the compilers version information and exit.

   Miscellaneous Options
       -keep  Preserve intermediate and temporary files.

       -times Produce a dump of elapsed times.

              Include the "m3overrides" file.

       -x     Include the "m3overrides" file. (see -override ) above.

              Define <symbol> with the value TRUE.

              Define <symbol> with the supplied <value>.

       -F <fn>
              Prepend the quake code of file <fn>.

       -FP <fn>
              Prepend the quake code of file <fn>.

       -prepend  <fn>
              Prepend the quake code of file <fn>.

       -FA <fn>
              Append the quake code of file <fn>.

       -append <fn>
              Append the quake code of file <fn>.

              Produce a MS-Windows CONSOLE subsystem program.

       -gui   Produce a MS-Windows GUI subsystem program.

              Produce a MS-Windows GUI subsystem program.

       -pretend <version>
              Pretend to run CM3 as if it were <version>.

              Use quake variables in .M3SHIP files (experimental).

              Use  group-writable file modes in quake installation procedures.
              is the path prefix prepended to files being installed.  This  is
              similar to the behavior "make DESTDIR=${prefix}".  Use this when
              creating a software distribution package.

              Platform dependent configuration file to use.  By  default  this
              is cm3.cfg.

              Shell to be used by the quake interpreter for exec(2).

              Command option for the quake shell (eg., -c, or /c).

              The directory for temporary files used by quake.

       The  m3makefile(7).  is a text file read by cm3.  It describes any spe-
       cial actions needed to build or ship the software  package.   This  can
       include linking against specified libraries, creating documentation, or
       a number of other actions.

       The m3overrides(7) file is used to stop a package from linking  against
       the normal cm3 system libraries, but rather use the libraries listed in
       this file.

       The version of cm3 herein described is 5.7.1
       cm3 conforms to DEC-SRC Research Report  52,  with  several  additional

       TEXT   The  text  object in which constant strings are stored, may con-
              tain unicode characters, if no unicode characters are used, then
              only ASCII ones will be used.

              In  support  of  unicode  characters  this new builtin type is a
              16-bit character, and may be used by TEXT.

              The LONGINT type is an additional builtin type, and is a  signed
              integral type with 64 bits.

       Probably too many to count.
       The Free Critical Mass website <>.

       Modula-3 Resource Page <>.

       Wikipedias Modula-3 Entry <>.

   Manual Pages


       "Modula-3", Samual Harbison

       "Systems Programming with Modula-3", Greg Nelson.

       "Algorithms in MODULA-3", Robert Sedgewick

       Peter. P. Eiserloh (eiserlohpp -at-