======================================== 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.