.\" @(#)mimosa.1 1.8 86/08/21;
.TH MIMOSA 1 "5 May 1991"
.SH NAME
mimosa \- Cedar/Mesa compiler
.SH SYNOPSIS
.B mimosa
[
.B \-options
]
.if n .ti +5
.I sourcefile .\|.\|.
.SH DESCRIPTION
.IX  mimosa  ""  "\fLmimosa\fP \(em Cedar/Mesa compiler"
.IX  "Cedar/Mesa compiler"
.IX  "programming languages"  "mimosa command"  ""  "\fLmimosa\fP \(em Cedar/Mesa compiler"
.IX  "languages"  "mimosa command"  ""  "\fLmimosa\fP \(em Cedar/Mesa compiler"
.IX  "compilers"  "mimosa command"  ""  "\fLmimosa\fP \(em Cedar/Mesa compiler"
.LP
.I mimosa
is the 
.B Cedar/Mesa 
compiler.  It translates programs written in the 
.B Cedar/Mesa
programming language into relocatable
binary programs for subsequent loading, Cinding or linking.
.LP
.I mimosa
expects input files to have the extension .mesa. The Mesa/Cedar compiler accepts two types of inputs - Definitions modules and Program modules. The output of the Mesa/Cedar compiler depends on the type of input: for Definitions modules the result is a single output file with the suffix 
.B .mob. 
For Program modules there are two output files - the first has the suffix 
.B .mob,
the second has the suffix 
.B .o. 
See 
.SM FILES,
below for a complete list of mimosa-related filename suffixes.
.SH OPTIONS
.LP
.TP 1i
.B \-a
Insert code to count how many times each basic block is executed.
Creates a
.B .d
file for every
.B .mesa
file compiled.  The
.B .d
file accumulates execution data for the corresponding source file.  The
.IR tcov (1)
utility can then be run on the source file to generate statistics about the program. [ Sun only ]
.TP
.B \-b
Don't insert code to perform bounds checking.
.TP
.B \-c
Don't compile, but produce the .c intermediate file.
.TP
.B \-d
Show but do not execute the commands constructed
by the compilation driver.
.TP
.B \-e
Use external initialization code.
.TP
.B \-f
Generate old style signal catch code.
.TP
.B \-g
Don't produce additional symbol table information for 
.IR dbx (1)
and 
.IR dbxtool (1). 
.TP
.B \-h
Display helpful information about 
.I mimosa.
.TP
.B \-i
Print server status information.
.TP
.B \-j
Finish the mimosa compile from the .c file.
.TP
.B \-k
Keep (rather than discard) the intermediate files generated during compilation.
.TP
.B \-l
Use .c2c.c instead of .c for filename extension.
.TP
.B \-m
Don't compile, but produce the Mimosa intermediate files.
.TP
.B \-n
Don't insert code to perform nil checking.
.TP
.B \-o[N]
Optimize the object code using level N optimization, where N is a value [0..4].  The specification of N is optional.  The value of N defaults to 3.  If the target architecture's C compiler does not support multiple level optimization the level is ignored.
.TP
.B \-p
Prepare the object code to collect data for profiling with
.IR prof (1).
Invokes a run-time recording mechanism that produces a
.I mon.out
file (at normal termination).
.TP
.B \-pw
Pause if Warnings are encountered.  The default is to notify the client of the warnings but continue to process the command line.
.TP
.B \-q
Generate position independent code with -pic. [ Sun only ]
.TP
.B \-Q
Generate position independent code with -PIC. [ Sun only ]
.TP
.B \-r
Do address arithmetic checking (warns the programmer of non-portable pointer arithmetic).
.TP
.B \-s
Don't assemble the program but produce an assembly source file.
.TP
.B \-target arch
Compile code for the arch architecture machine.  The valid options for
arch are sun4, rs6000, and dec.  The default \-target value is
the architecture of the machine upon which mimosa is being run.
This flag takes precedences over
the the TARGET←ARCH environment variable (described below).
.TP
.B \-t
Don't report execution times for the various compilation passes.
.TP
.B \-u
Don't report uninitialized variables.
.TP
.B \-v
Verbose.  Print the version number of the mimosa and the name of
each program it executes.
.TP
.B \-w
Do not print warnings.
.TP
.B \-x filename
Call /usr/lib/inline with "-i filename".  [ Sun only ]
.TP
.B \-y
Yell about runtime calls.
.TP
.B \-z
Produce Mesa debugging information.  dbx debugging is only 
supported on the Sun.  All other platforms must use the Cirio debugger.
.SH EXAMPLES
.LP
This simple form of the mimosa command is almost always sufficient to produce even the most complicated systems:
.LP
.RS
mitty% mv FooImpl.c FooImpl.mesa
.RE
.RS
mitty% mimosa -z -k FooImpl
.RE
.RS
MCMC
.RE
.RS
mimosa: seconds: 37
.RE
.RS
mitty% 
.RE
.LP
The switches 
.I \-z \-k 
instruct mimosa to invoke the symbol table translator ms to enable Mesa source level debugging of the resulting file, 
.I FooImpl.o.
.SH ENVIRONMENT
.PD 0
.TP 1.7i
.B TOOLS←SHMTYPE
is an environment variable that specifies the type of shared memory the packaged tool will use for its execution.  The possible values are
.I mmap
(memory mapped) and
.I sv
(SystemV).
.I sv
is the default.  If
.B TOOLS←SHMTYPE=mmap,
then the packaged tools world will be started with
.B shmtype=mmap;
otherwise the packaged tools world will be started with
.B shmtype=sv.  
If the 
.B shmtype=mmap
is specified mimosa will check for the existence of a /pcrswap directory prior to starting the packaged tools world.

.TP 1.7i
.B MIMOSA←SERVER←arch, MIMOSA←SERVER
MIMOSA←SERVER←arch is the name of a set of environment variables that
determine which machine is used to do any cross-compilation.  There is
one environment variable for each archtitecture supported by -target.
Mimosa does not verify that machine $MIMOSA←SERVER←arch is of the
architecture type specified by the \-target option.  This environment
variable is only consulted if the local machine is not of the same
architecture as specified by the \-target option.  MIMOSA←SERVER is
used if MIMOSA←SERVER←arch is undefined.  MIMOSA←SERVER is provided
for backward compatibility and its use is discouraged.

.TP 1.7i
.B TARGET←ARCH
is the name of the target architecture for which the compiling is being done.
The valid values of $TARGET←ARCH are the same as for the 
\-target argument.  A rsh is done
to a remote machine if the local machine is not of the $TARGET←ARCH
architecture.  The user should have appropriate .rhosts entries.  Any
\-target argument takes precedence over the value of TARGET←ARCH.

.SH FILES
.PD 0
.TP 1.7i
.IB file .c
.B C 
intermediate file
.TP
.IB file .cTypes
intermediate symbol file output from Mimosa
.TP
.IB file .d
.IR tcov (1)
test coverage input file
.TP
.IB file .errlog
Mimosa error log
.TP
.IB file .icd
Mimosa intermediate code output file
.TP
.IB file .mesa
Cedar/Mesa source file
.TP
.IB file .names
intermediate symbol file output from Mimosa
.TP
.IB file .o
object file
.TP
.IB file .s
assembler source file
.TP
.IB file .tcov
output from 
.IR tcov (1)
.TP
.I Compiler.log
Mimosa compiler log file
.TP
.I mon.out
file produced for analysis by
.IR prof (1)
.TP
.I gmon.out
file produced for analysis by
.IR gprof (1)
.PD
.SH "SEE ALSO"
adb(1), ar(1), as(1), cinder(1), cc(1), cpp(1), dbx(1), gprof(1), ld(1), 
make(1), monitor(3), prof(1), tcov(1) 
.LP
.I The Mesa Language Manual,
1985
.LP
.I Language Change Summary,
1989
.SH DIAGNOSTICS
The diagnostics produced by 
.B mimosa  
itself are intended to be
self-explanatory.  Occasional obscure messages may be produced by
the Mimosa front end, C2C back end, C preprocessor, C compiler or the assembler.