%% -*- mode: LaTeX -*-
%%
%% Copyright (c) 1997, 1998, 1999 The University of Utah and the Computer
%% Systems Laboratory at the University of Utah (CSL).
%%
%% This file is part of Flick, the Flexible IDL Compiler Kit.
%%
%% Flick is free software; you can redistribute it and/or modify it under the
%% terms of the GNU General Public License as published by the Free Software
%% Foundation; either version 2 of the License, or (at your option) any later
%% version.
%%
%% Flick is distributed in the hope that it will be useful, but WITHOUT ANY
%% WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
%% FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
%% details.
%%
%% You should have received a copy of the GNU General Public License along with
%% Flick; see the file COPYING.  If not, write to the Free Software Foundation,
%% 59 Temple Place #330, Boston, MA 02111, USA.
%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Flick's runtimes provide the definitions and functions that are necessary in
order for you to compile Flick-generated stubs into working code.  For
instance, Flick's runtime header files provide the definitions of the macros
used in generated stubs.  Flick's runtime libraries provide functions to manage
object references, interact with the underlying IPC layer, and so on.

Flick's current runtimes were written to provide the minimum functionality
required by Flick-generated code.  The runtimes are not intended to be highly
flexible or composable or even complete; for instance, Flick's IIOP runtime for
C stubs has minimal CORBA ORB functionality.  The current set of runtimes is
simply sufficient to get clients and servers talking to one another.  Future
versions of Flick will include more complete runtimes, or will include more
code generators that work with runtimes developed by third parties.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{The Runtime Libraries and Headers}
\label{sec:The Runtime Libraries and Headers}

Flick's runtime libraries are contained under the \filename{runtime/libraries}
directory of the Flick distribution:

\begin{filenamelist}
  \item[libflick-iiop.a] The IIOP runtime library for C stubs, to be using with
  stubs generated by Flick's IIOP back end, \program{flick-c-pbe-iiop}.

  \item[libflick-suntcp.a] The ONC/TCP runtime library, to be used with stubs
  generated by Flick's ONC/TCP back end, \program{flick-c-pbe-sun}.

  \item[libflick-mach3mig.a] The Mach~3 runtime library, to be used with stubs
  generated by Flick's Mach~3 back end, \program{flick-c-pbe-mach3mig}.

  \item[libflick-trapeze.a] The Trapeze runtime library, to be used with stubs
  generated by Flick's Trapeze back end, \program{flick-c-pbe-trapeze}.
\end{filenamelist}

The runtime libraries for three of Flick's back ends are distributed separately
and are not further described in this manual:

\begin{commandlist}
  \item[flick-c-pbe-iiopxx] As previously described, this back end generates
  C++ stubs that work with TAO version~\taoversion{}, the real-time ORB from
  Washington University in St.\ Louis.  You will need a copy of TAO (from
  \taourl{} or \taosrcurl{}) in order to run the code produced by Flick's
  IIOP/C++ back end.

  \item[flick-c-pbe-khazana] The Khazana runtime will be included as part of
  the Khazana distribution.  See \khazanaurl{} for information about Khazana.

  \item[flick-c-pbe-fluke] The runtime library and header files for Fluke stubs
  are included as part of the Fluke operating system.  See \flukeurl{} for
  information about Fluke.
\end{commandlist}

Flick's runtime header files are contained in the \filename{runtime/headers}
directories of your Flick source tree \emph{and} your Flick build tree.  While
most of Flick's runtime headers are located in the Flick source tree, two of
Flick's runtime header files are generated by Flick's \program{configure}
script, and are therefore located in the \emph{object tree} that you create
when you build the Flick tools.  To compile Flick-generated stubs, you must
make sure that both the source- and object-tree \filename{runtime/headers}
directories are contained in your C compiler's system include path.
Alternately, the Flick installation process (described in
Section~\ref{sec:Installing Flick}) will place all of the required header files
in a single place on your system.

The rest of this chapter describes Flick's IIOP and ONC/TCP runtimes in detail.
Chapter~\ref{cha:Putting It Together: A Phonebook Application} shows how to use
each of these runtimes in a simple phonebook application.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{The IIOP Runtime}
\label{sec:The IIOP Runtime}

\input{corba-runtime}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{The ONC/TCP Runtime}
\label{sec:The ONC/TCP Runtime}

\input{rpc-runtime}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% End of file.

