-*- mode: Text -*-

-------------------------------------------------------------------------------
				BUILDING FLICK
-------------------------------------------------------------------------------

In order to build Flick you will need:

	An ANSI C compiler	gcc 2.7.2.1 is our usual compiler; Flick has
				previously been built with gcc 2.6.3 and 2.5.8.
				(See note about gcc 2.5.8 below.)

	An ANSI C++ compiler	g++ 2.7.2.1 is our usual compiler; again, Flick
				has worked with g++ 2.6.3 / 2.5.8 in the past.

	GNU make		Versions 3.69, 3.74, 3.75, and 3.77 have been
				tested.

	flex or lex		Flex versions 2.4.6, 2.5.2, and 2.5.4 have been
				tested.  Vendor-provided versions of lex should
				work, but this has not been extensively tested.

	bison or yacc		Bison version 1.25 has been tested; version
				1.22 is known *not* to work.  Vendor-provided
				versions of yacc should work, but have not been
				extensively tested.

	Disk space		You will need ~125MB of free disk space for a
				fully debuggable Flick object tree, and an
				additional 90--180MB in order to run the Flick
				tests.

NOTE that using gcc/g++ 2.5.8 may cause problems with debugging.  Flick's data
structures are not fully specified in the debugging information output by early
versions of g++.  This causes gdb not to examine many data structures fully.
We recommend that you use g++ 2.7.2.1 in order to avoid this problem.

Once you have those tools, you must unpack the Flick distribution tar file and
create a build tree to contain the object files.  If you create a build
directory called `obj', your directory setup would look as follows:

	~/flick-1.2c		- the Flick source tree
	~/obj			- the Flick object tree

In that configuration, you would type the following commands in order to first
configure Flick for your operating system and then compile all of the Flick
tools:

	cd ~/obj
	../flick-1.2c/configure
	make

(*** Cygwin users: see `support/cygwin32/README' for help building Flick on
Windows 95/NT with the Cygwin library.)

If all goes well, links to the suite of Flick programs will be installed in
`~/obj/bin'.  See the instructions below to install the Flick tools in a place
outside of the Flick object tree.

We have successfully built and tested this release of Flick on the following
platforms:

    FreeBSD 3.0-CURRENT		(Intel Pentium II, gcc/g++ 2.7.2.1)
    Linux 2.2.3			(Intel Pentium II, egcs 1.1.1)
    SunOS 5.5.1 (Solaris)	(Sun 4m SPARC, gcc/g++ 2.8.0)
    4.3+ BSD			(HP 9000/J210XC PA-RISC 1.1, gcc/g++ 2.7.2)
    Windows 95			(egcs 1.1 w/Cygnus' Cygwin library b20.1)
    Windows NT 4.0		(egcs 1.1 w/Cygnus' Cygwin library b20.1)

FreeBSD is our current development platform.  Flick-generated stubs have also
been tested on Mach/Lites and our Fluke OS.  If you build Flick on a platform
other than these, we'd love to hear about it.  Of course, if the build fails,
we'd like to know about that, too.  Send build reports, bug reports, praise and
damnation to <flick-bugs@cs.utah.edu>.


-------------------------------------------------------------------------------
		     BUILDING THE FLICK RUNTIME LIBRARIES
-------------------------------------------------------------------------------

Flick's `configure' script automatically determines which of Flick's runtime
libraries should be built and installed for your system.  In general, the IIOP
and ONC/TCP runtimes (for CORBA C language stubs and ONC RPC C language stubs,
respectively) are always built.  The other, more special-purpose runtime
libraries are built only when `configure' detects that special header files are
available on your system.  Read the `doc/usersguide/user.ps' file for details.

Flick's C++ CORBA stub generator creates stubs that work with TAO, the
real-time ORB from Washington University in St. Louis.  You will need a copy of
TAO (from <http://www.cs.wustl.edu/~schmidt/TAO.html>) in order to make use of
Flick's optimized C++ CORBA stubs.  TAO provides all the required runtime
support for Flick-generated C++ stubs, and therefore, there is no library in
Flick's `runtime' directory for C++ CORBA stubs.


-------------------------------------------------------------------------------
			       INSTALLING FLICK
-------------------------------------------------------------------------------

You can install the Flick binaries, libraries, and header files in a
``standard'' place on your system by typing the following command in the root
directory of the Flick object tree (`~/obj' in our example configuration):

	make install

By default, the root installation directory is `/usr/local'.  You can change
this default by specifying the `--prefix' option to `configure', e.g.:

	../flick-1.2c/configure --prefix=/usr/local/flick

	make		# to build Flick
	make install	# to install Flick under `/usr/local/flick'

It is not necessary to ``install'' Flick in order to run the provided tests
(see below) or to build your own stubs.


-------------------------------------------------------------------------------
				 TESTING FLICK
-------------------------------------------------------------------------------

Flick comes with a set of test IDL inputs and example programs; these are in
the `test' subdirectory of the distribution.  A `make' in the root of the Flick
object tree will *not* run the Flick tools against these test inputs.

However, running your newly compiled tools against the provided tests is easy.
In a sentence: Go to the `test' subdirectory of your Flick object tree and type
`make'.

The `README' file in Flick's `test' source directory contains additional, more
detailed instructions for compiling the various test IDL inputs and programs.

The test programs (in `test/programs/*') illustrate how client and server code
can use Flick's IIOP, ONC/TCP, Mach 3, and Trapeze runtime libraries in
conjunction with Flick-generated stubs.  Read the `doc/usersguide/user.ps' file
for instructions for using Flick to compile your own IDL files.

Note that most of the example application programs in `test/examples' are out
of date and may not compile at all.  The exception is `test/examples/phone',
which is the example developed in the Flick user's guide.  The `phone' example
is implemented for both CORBA and ONC RPC.

-------------------------------------------------------------------------------

## End of file.

