\input manualMacros.tex
\manBegin
\manPageInfo{RCI Reference Manual}{}{}
\manTitle{rcc}{1}
\manSection{NAME}
{\tt \manName{rcc}}
-- Command to compile and load RCCL and RCI programs.
\manSection{USAGE}
\cverbatim
rcc [LIBFILE <name>] [file-list] CTRL [control-file-list] @endcverbatim
where {\tt file-list} is a list of {\tt cc} options and user
level files, and {\tt control-file-list} is a list of {\tt cc} options
and control level files.
\manSection{ARGUMENTS}
\manItem{{\tt LIBFILE} --}
If specified, the next argument is taken to be the name of the configuration
file that {\tt rcc} will look for.
The default configuration file name
is {\tt .rcc}
\manItem{{\tt CTRL} --}
Keyword that delimits the {\it control\/} files from the conventional files.

{\tt rcc} also accepts all of the options of {\tt cc}.
\manSection{DESCRIPTION}
The {\tt rcc} command provides a convenient compilation interface
to the RCI system and libraries. It is used almost
exactly like the C complier {\tt cc}, but provides
the following ``extras'':

\item{$\diamondsuit$}
Files which contain control level code and data are compiled
and loaded in a special way 
so as to ensure that their text and data are grouped together
in known and contiguous locations.

\item{$\diamondsuit$}
Programs are automatically loaded with a list of libraries 
described in a configuration file.

\item{$\diamondsuit$}
Include file directories are supplemented with a list
from the configuration file.

\item{$\diamondsuit$}
By default, {\tt rcc} places its program output into a file named after the
first file argument encountered, instead of {\tt a.out}. 
This can be overridden with the
usual {\tt -o} option.

Files which contain control level code and data are delimited
by placing them to the right of the keyword {\tt CTRL} in the
argument list. Files to the left of {\tt CTRL} are assumed to 
contribute only to the ``conventional'' part of the program.
If {\tt CTRL} is not specified, the program is assumed to
have no control part.

{\tt rcc} obtains information about what load libraries and
include directories to use by reading
configuration files.
Ecah config file contains lines of the form

\cverbatim
        keyword=value @endcverbatim

where {\TT keyword} is one of {\TT user}, {\TT ctrl}, {\TT util}, 
{\TT include},
{\TT begin}, or {\TT end}. The value is a list of files to be
associated with that keyword. Multiple file names are separated
only by white space. Environment variables ({\tt \$<varbname>})
and home directory
syntax ({\tt \~<user>}) are permitted in the file name.
The {\tt value} field is terminated by the end
of the line.
Config file lines which begin with a {\tt \#} or are blank are
considered to be comments.

\manItem{{\tt cc} --}
Defines the actual command to be used for the C compiler. This can
include options as well.
\manItem{{\tt user} --}
Library files to be loaded with the non-control part of the program.
\manItem{{\tt ctrl}, {\tt util} --}
Library files which are loaded with the control part of the program.
\manItem{{\tt include} --}
Include directories to be provided to {\tt cc} with the {\tt -I}
option.
\manItem{{\tt begin}, {\tt end} --}
Contains entry points which denote the beginning and end of the control
code and data. The user is not normally concerned with these entries,
which are defined in the system config file.

{\tt rcc} prints out all of the libraries and include directories it is
referencing, so it is easy to see what is going on.

{\tolerance=10000
The configuration file is
called {\tt .rcc} by default and are searched for first in
the directory {\filefont \$RCCL\-/conf}, then in the user's home directory
({\tt \$HOME}), and finally in the current directory ({\tt .}), with
definitions in
later files overriding those in  
earlier files.  

The {\tt LIBFILE} option allows the user to change
the config file name from {\tt .rcc} to something else, as in

}
\cverbatim
        % rcc LIBFILE .rcc-local ..... @endcverbatim

\manSection{DIAGNOSTICS}
Diagnostics are identical to those for the C compiler, except for a few
possible complaints about such things as a bad configuration file.

\manSection{BUGS}
{\tt rcc} needs to know a little about the standard {\tt cc} command
line syntax. This sometimes causes problems in the face of a large
number of C compilers with differing syntaxes.

\manEnd
\end
