INTERFACE DEFINITION LANGUAGE INSTALLATION GUIDE
-==============================================-

INTRODUCTION

This file describes the installation process for OMG_IDL_CFE version 1.3.
This file explains how to:

- install the source code
- modify the sources to customize them for different configurations
- modify the sources to implement your own back end

TESTED CONFIGURATIONS

This release has been tested and is believed to operate correctly on:
- SunPro Sparcworks 2.x and 3.0 on SunOS 4.1.x
- SunPro Sparcworks 2.x and 3.0 on Solaris 2.3
- g++ 2.5.8 on SunOS 4.1.x
- g++ 2.5.8 on Solaris 2.3

This is the first release of OMG IDL CFE which is preconfigured to compile
correctly for Solaris 2.x and with SunPro SparcWorks compilers.

CUSTOMIZATION

The release contains a file idl_make_vars in the current directory, which
is included in each Makefile. This file defines all the customizable
variables for the CFE.

OSV should be set to a string denoting the operating system upon which you
wish to build the CFE. The CFE as shipped is preconfigured to compile
correctly on Solaris 2.x (OSV=SOLARIS2), and has also been tested on SunOS
4.1.x (OSV=SUNOS4). It contains code donated by HP which enables it to be
compiled on Apollo Domain systems (OSV=apollo) and HPUX systems (OSV=hpux),
but these two configurations have not been tested.

C++ and CCC should be set to identify the C++ compiler you will use to
compile this release. Their values should be identical. Both are set to
address differences between various make programs - some predefine CCC,
others use C++ to denote the C++ compiler. The possible values are CC
(which uses the Sparcworks compilers on SunOS 4.1 and Solaris 2.3) and g++,
which uses the installed version of GNU C++.

CCFLAGS should be set to a list of flags to pass to the C++ compiler. As
shipped, this list is -g. NOTE: We have not extensively tested the release
with optimization turned on.

CPP_FLAGS should be set to a list of flags to pass to the C++ preprocessor.
Use this variable to enable or disable specific customizations you make to
the BE or CFE sources.

YFLAGS should be set to a list of flags to pass to the Yacc program. As
shipped, the list is -d -t, which causes Yacc to generate y.tab.h and
y.tab.c files.

LEXFLAGS should be set to a list of flags to pass to the Lex program. As
shipped, the list -t.

RANLIB should be set to the location of the ranlib program on your system.
As shipped this is ranlib. If your system has no ranlib you can set this
variable to ':' or /bin/true. As shipped the variable is preset to
/bin/true since Solaris 2.x does not use ranlib.

AR should be set to the location of the ar program on your system. As
shipped this is ar. If your system has a different mechanism for creating
libraries, you should modify the value of this variable accordingly.

ARFLAGS should be set to the flags to be passed to the ar program. As
shipped this is 'crv'.

INSTALLATION

a. Disk space requirements

This distribution requires approximately 350 KBytes when compressed. When
uncompressed, untarred and compiled, approximately 10 MBytes of disk space
are consumed on a Sun 4.

b. Getting the software

Use anonymous FTP to omg.org and supply your e-mail address as password.
Change directories to pub/OMG_IDL_CFE_1.3, set bin and get the compressed
tar file OMG_IDL_CFE_1.3.tar.Z.

The distribution may, in the future, be made available from other archives
on the Internet. However, omg.org will always have the most up-to-date
version of this software.

After transferring this file, uncompress it and untar it in a directory of
your choice.

c. Compiling it

If you are using a Sparcstation running Solaris 2.x and have the SunPro
Sparcworks compilers installed, you may directly install the software. If
your hardware or operating system configurations are different, read and
follow the instructions in the previous section first.

At the root directory of the release, issue

   % make

or

   % make all

This will compile the provided sources and the sources found in the be
directory. Executing this make target causes 'make all' to be invoked in
each subdirectory, resulting in building the libraries for each component
and finally a link step producing an executable IDL compiler.

In order to make only the compiler front end components, without compiling
the sources found in the be directory and without building an executable,
issue

  % make libs

This will build the libraries in the ast, fe, util, driver and narrow
directories. To build only the be, issue

  % make be

To build all libraries without creating an executable, issue

  % make all_libs

To remove all files created by the build process, issue

  % make clean

This will not remove any files created by Yacc and Lex, because you may be
using the ones provided in the distribution (see below).

d. Yacc and Lex

Some installations may not have a C++ aware Yacc and Lex processor. For
these installations, we have included the output of yacc and lex in the
release. If you need to use these files to build the release because you
don't have access to a C++ capable Yacc or Lex, go to the "fe" directory,
issue the command:

   % touch lex.yy.cc y.tab.cc y.tab.hh

This will ensure that the processed files appear to be newer than the
source files they were produced from and will cause "make" to skip their
production.

NOTE: The files provided in the distribution have been produced on Solaris
2.3 and may contain OS-specific #include directives. If you intend to use
these files, you may have to edit them to make them work in your
environment. The provided files are known to compile cleanly without
modification with both SunPro Sparcworks compilers and GNU C++ on both
SunOS 4.1 and Solaris 2.3.  We have not tested the grammar and lexer input
files with bison or flex.

IMPLEMENTING A BACK END

To implement your own back end, you can start with the provided sources in
the be directory and modify them. The Makefile understands the 'make all'
target and will generate libbe.a in the demo_be directory. As set up, the
variable CPP_FLAGS allows you to place include files either in the current
directory or in the include directory. Alternatively, you can place your
include files in a new directory and modify CPP_FLAGS to cause the C++
preprocessor to search this new directory for referenced include files, by
adding a new -I directive.

Additional detail on the structure and function of back ends, and on the
protocol which a back end must implement, are found in the document
entitled WRITING_A_BE.

COPYRIGHT

Copyright 1992, 1993, 1994 Sun Microsystems, Inc.  Printed in the United
States of America.  All Rights Reserved.

This product is protected by copyright and distributed under the following
license restricting its use.

The Interface Definition Language Compiler Front End (CFE) is made
available for your use provided that you include this license and copyright
notice on all media and documentation and the software program in which
this product is incorporated in whole or part. You may copy and extend
functionality (but may not remove functionality) of the Interface
Definition Language CFE without charge, but you are not authorized to
license or distribute it to anyone else except as part of a product or
program developed by you or with the express written consent of Sun
Microsystems, Inc. ("Sun").

The names of Sun Microsystems, Inc. and any of its subsidiaries or
affiliates may not be used in advertising or publicity pertaining to
distribution of Interface Definition Language CFE as permitted herein.

This license is effective until terminated by Sun for failure to comply
with this license.  Upon termination, you shall destroy or return all code
and documentation for the Interface Definition Language CFE.

INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF
ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS
FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF
DEALING, USAGE OR TRADE PRACTICE.

INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT
ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES
TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT.

SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH
RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY
INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF.

IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR
ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL
DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

Use, duplication, or disclosure by the government is subject to
restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in
Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR
52.227-19.

Sun, Sun Microsystems and the Sun logo are trademarks or registered
trademarks of Sun Microsystems, Inc.

SunSoft, Inc.  
2550 Garcia Avenue 
Mountain View, California  94043

NOTE:

SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are
trademarks or registered trademarks of Sun Microsystems, Inc.
