libIDL 0.6.5 for OpenVMS
========================


OVERVIEW

The IDL Compiling Library (libIDL) for OpenVMS Alpha is an open source,
free software library used for creating trees of CORBA Interface Definition
Language (IDL) files. libIDL is part of the GNOME library set.

This port of libIDL to OpenVMS allows you to build the libIDL library 
so that it can be used by the Mozilla build procedure.

More information about libIDL is available from  
http://andrewtv.org/libIDL/index.jsp


PREREQUISITES

  - A system running OpenVMS Alpha V7.3-1, including an ODS-5 volume 
  - GTK+ for OpenVMS, available from
    http://h71000.www7.hp.com/openvms/products/ips/gtk.html
  - GNV, available from http://h71000.www7.hp.com/opensource


DOWNLOADING AND EXPANDING THE KIT

Download libIDL for OpenVMS from 
http://h71000.www7.hp.com/opensource/libidl_down.html

The file that you download is a self-extracting archive 
(named libIDL.SFX_AXPEXE) that contains an OpenVMS BACKUP saveset
(named libIDL.SAV) of the libIDL sources. To expand the file, enter the 
following command:

$ RUN libIDL.SFX_AXPEXE

Set the file attributes as follows:

$ SET FILE /ATTR=(rfm=fix,lrl=32256,rat=none) libIDL.SAV


RESTORING THE BACKUP SAVESET 

To restore the libIDL for OpenVMS backup saveset, enter the following commands: 

$ CREATE/DIR disk:[directory]
$ BACKUP libIDL.sav/SAVE disk:[directory...]*.*

Where disk:[directory] is the location where you want to restore the kit.
This will create a directory tree under disk:[directory].


NOTES

libIDL for OpenVMS is built with its own shell script, because OpenVMS
does not have libtool (which requires autoconf and automake).

Prebuilt versions of lexer.c, parser,c and parser.h are supplied. This
eliminates the need for LEX and YACC during the build.

Mozilla must be able to run libIDL-config. The Mozilla build procedure
can be told where libIDL-config is located via the --with-libIDL-prefix
options. libIDL-config must create valid output for the following options:

  libIDL-config --cflags
  libIDL-config --libs
  libIDL-config --version


SOURCE CODE CHANGES

OpenVMS does not have an alloca routine, so a dummy alloca routine 
(vms_alloca.c) is provided. parser.c was modified to pick up a 
prototype for alloca (to keep the compiler from generating errors).


RESTRICTIONS

- Stack reallocation fails using libIDL for OpenVMS

libIDL includes code that reallocates a stack if the stack 
is about to overflow. This code uses alloca to allocate more memory, 
but alloca is not available on OpenVMS. If a stack needs to be
reallocated, a dummy alloca routine (vms_alloca.c) returns an error message.


BUILDING libIDL for OpenVMS

1. Edit libIDL-config-VMS to match your system. You need to change
   definitions of:

   - LIBIDL_ROOT - where the libIDL code resides (directory where
     libIDL-config-VMS lives). Must be UNIX format.

   - GTK_ROOT - where GTK is located (directory where GLIB.DIR is).
     Must be in UNIX format.

2. In GNV's bash, cd to the libIDL directory and invoke build_vms.sh.
   This should produce libIDL.a.

   $ bash
   bash$ cd /dka0/libIDL
   bash$ build_vms.sh
   Copying libIDL-config-VMS
   Creating IDL.h from IDL.h.new.in
   Running libIDL-config...
   Compiling ns...
   Compiling lexer...
   Compiling parser...
   Compiling util...
   Compiling vms_alloca...
   Creating .a file...
   Compiling tstidl...
   Linking tstidl...
   Installing...
   bash$
   bash$ ls *.a
   libIDL.a
   bash$
   bash$ bin/libIDL-config --version
   0.6.5
   bash$