========================================

This file contains the original INSTALL file that came with the
SunSoft IDL compiler release.  This information in this file is
historical in nature and the much of the specific information probably
is inaccurate with respect to the current state of TAO IDL.  Please
see the ../TAO-INSTALL.html documentation that comes with TAO for
up-to-date information on the installation process.

Specifically, some of the files referred to below have been renamed in
TAO IDL.

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.
