CM3(1) MODULA-3 PROGRAMMER'S MANUAL CM3(1)
NAME
cm3- Critical Mass Modula-3 Compiler
SYNOPSIS
cm3 [options]
DESCRIPTION
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
code.
OPTIONS
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.
-realclean
Delete entire derived target directory.
-find Locate source files.
-depend
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.
-profile
Generate profiling code.
-lazy Generate lazy module initialization code.
-linkall
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
library.
-a <foo>
Build a library named foo.
-o <foo>
Build program named foo.
-skiplink
Skip the final link step.
Message Options
-? Print a short help message.
-silent
Produce no diagnostic output.
-why Explain why code is being recompiled.
-commands
List system commands as they are performed.
-verbose
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.
-version
Print the compilers version information and exit.
-config
Print the compilers version information and exit.
Miscellaneous Options
-keep Preserve intermediate and temporary files.
-times Produce a dump of elapsed times.
-override
Include the "m3overrides" file.
-x Include the "m3overrides" file. (see -override ) above.
-D<symbol>
Define <symbol> with the value TRUE.
-D<symbol>=<value>
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>.
-console
Produce a MS-Windows CONSOLE subsystem program.
-gui Produce a MS-Windows GUI subsystem program.
-windows
Produce a MS-Windows GUI subsystem program.
-pretend <version>
Pretend to run CM3 as if it were <version>.
-no-m3ship-resolution
Use quake variables in .M3SHIP files (experimental).
-group-writable
Use group-writable file modes in quake installation procedures.
ENVIRONMENT
CM3_INSTALL_PREFIX
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.
M3CONFIG
Platform dependent configuration file to use. By default this
is cm3.cfg.
QUAKE_SHELL
Shell to be used by the quake interpreter for exec(2).
QUAKE_SHELL_OPTION
Command option for the quake shell (eg., -c, or /c).
QUAKE_TMPDIR
The directory for temporary files used by quake.
FILES
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.
VERSIONS
The version of cm3 herein described is 5.7.1
cm3 conforms to DEC-SRC Research Report 52, with several additional
features.
Deviations
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.
WIDECHAR
In support of unicode characters this new builtin type is a
16-bit character, and may be used by TEXT.
LONGINT
The LONGINT type is an additional builtin type, and is a signed
integral type with 64 bits.
BUGS
Probably too many to count.
Websites
The Free Critical Mass website <http://www.opencm3.net/>.
Modula-3 Resource Page <http://www.modula3.org/>.
Wikipedias Modula-3 Entry <http://en.wikipedia.org/wiki/Modula-3>.
Manual Pages
modula3(7).
modula3(7),m3makefile(7),m3overrides(7).
Books
"Modula-3", Samual Harbison
"Systems Programming with Modula-3", Greg Nelson.
"Algorithms in MODULA-3", Robert Sedgewick
AUTHOR
Peter. P. Eiserloh (eiserlohpp -at- yahoo.com)