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.