GTK+ for OpenVMS Alpha Release Notes July 26, 2000 Introduction GTK+ Version 1.2.8 for OpenVMS Alpha is an open source, free software library for creating graphical user interfaces. It is an unofficial, interim port of GTK+. If you have questions or comments, or to report a problem with GTK+ for OpenVMS, please send mail to openvms-internet@compaq.com. Do not report problems to www.gtk.org. See http://www.gtk.org for more information about GTK+. Prerequisites GTK+ for OpenVMS requires the following software. (Other configurations have not been tested.) OpenVMS Alpha Version 7.1-2 Compaq C Version 6.2-006 The OpenVMS Porting Library (from http://www.openvms.compaq.com/openvms/products/ips/porting.html ) must be installed, and: - the Porting Library shareable image must be accessible via the VMS_JACKETS logical name - the Porting Library header files must be accessible (edit VMS_BUILD_SETUP.COM) Perl 5.002_01 or higher (optional) (Perl for OpenVMS is now available for download from http://www.openvms.compaq.com/openvms/products/ips/apache/apache_perl.html ) GNU AWK 2.15 (patchlevel 6) (optional) Note: Perl and AWK are used in a full build, but you can modify the OpenVMS GTK+ build procedures so that neither of these utilities is required. GTK+ for OpenVMS is built in DCL using OpenVMS-specific build procedures. The UNIX tools make and autoconf (configure) are not required. Expanding and Installing GTK+ for OpenVMS Perform the following steps to expand and install GTK+ for OpenVMS. Note: You must also download and install the OpenVMS Porting Library in order to use GTK+ for OpenVMS. 1. Download GTK+ Version 1.2.8 for OpenVMS from http://www.openvms.compaq.com/openvms/products/ips/gtk_down.html A self-extracting archive and a .ZIP file are available for download. The contents of the kits are identical. Download the self-extracting archive to expand and install the kit on an Alpha system. You can expand the .ZIP file on an Alpha system or on a PC, if you want to simply view the files in the kit. 2. After you download the kit, create a directory where you want the source code tree to reside. Set your default directory to that location. $ CREATE/DIRECTORY DKA0:[GTK128] $ SET DEFAULT DKA0:[GTK128] 3. To expand and install the GTK+ for OpenVMS self-extracting archive, run the kit you downloaded. For example: $ RUN DKA0:[KITS]GTK128-OPENVMS-A1.SFX_AXPEXE Building GTK+ for OpenVMS This section explains how to build GTK+ for OpenVMS. 1. Edit [GTK128]VMS_BUILD_SETUP.COM to match your system's configuration. 2. If you do not have Perl or AWK, edit [GTK128.GTK.GTK]VMS_BUILD.COM and uncomment the goto no_perl statement. The OpenVMS kit contains pre-built generated files. You should rebuild GTK.DEFS and the other generated files only if you are making changes to GTK+ source code. 3. (Optional) If you need to build a debug version of GTK+, enter the following command: $ DEFINE BUILD_DEBUG 1 4. Run VMS_BUILD.COM from the top-level directory: $ SET DEFAULT [GTK128] $ @VMS_BUILD 5. Depending upon how fast your system is, the build will take between 10-30 minutes. A few warnings are normal. During a build of GTK+ for OpenVMS, the following directories are built: glib gmodule gthread tests (optional) gtk gdk gtk Each directory contains a VMS_BUILD.COM that is used to build the contents of that directory, plus the contents of its subdirectories. Most tests can be built by invoking VMS_BUILD.COM in the appropriate directory and passing it the parameter test. After the build has completed, four shareable images have been created: [GTK128.GLIB]LIBGLIB.EXE [GTK128.GLIB.GMODULE]LIBGMODULE.EXE [GTK128.GTK.GDK]LIBGDK.EXE [GTK128.GTK.GTK]LIBGTK.EXE Your Application and GTK+ for OpenVMS Consider the following when you build your application and link against the GTK+ shareable images. - The code added to GTK+ for OpenVMS uses event flags 2 and 3 without allocating them. Your application must not use these event flags. This restriction will be lifted in GTK+ 1.3 by ensuring that any event flags used are allocated via LIB$GET_EF. - GTK+ is compiled using /NAMES=AS_IS. This means that all of the entry points in the shareable images are case-sensitive, and you will have to compile your application the same way. If you want to change this, edit VMS_CC.COM (to remove NAMES=AS_IS) and all the xxx_create.opt files (to remove the CASE_SENSITIVE statements) and rebuilt GTK+. - GTK+ is compiled using /NAMES=SHORTEN. This means that any long symbol names in the GTK code are shortened rather than truncated. Your application should also be compiled with this qualifier. - GTK+ is compiled using /FLOAT=IEEE and /IEEE=DENORM. Your application must also be built with these qualifiers. - When compiling code that uses GLib, include the following directories on your header file include path: [GTK128.GLIB] [GTK128.GLIB.GMODULE] - When compiling code that uses GTK, include the following directories on your header file include path: [GTK128.GTK] [GTK128.GLIB] [GTK128.GLIB.GMODULE] - There are four shareable images against which you need to link your application, as follows: [GTK128.GLIB]LIBGLIB.EXE [GTK128.GLIB.GMODULE]LIBGMODULE.EXE [GTK128.GTK.GDK]LIBGDK.EXE [GTK128.GTK.GTK]LIBGTK.EXE POSIX and GNV Considerations If you are building your application inside of POSIX or GNV, then GLib and GTK both need to be installed so that autoconf based applications can locate the installations. If you have built GLib and GTK on OpenVMS, then they are already installed and glib-config and gtk-config can be used as usual. For example, if your GTK+ directory root is DKB300:[GTK128], you can configure an autoconf based application as follows: configure \ --with-glib --with-glib-prefix=/dkb300/gtk128/glib/ \ --with-gtk --with-gtk-prefix=/dkb300/gtk128/gtk/ Source File Changes Following is a summary of the changes made to the GTK+ source files. glib [GTK128.GLIB]GMAIN.C Changed to use event flags as the wakeup mechanism gtk [GTK128.GTK.GDK]GDKDND.C Use VMS_SETUP_WINDOW_NOTIFICATION macro when a window is created [GTK128.GTK.GDK]GDKEVENTS.C Add code to translate OpenVMS-specific MOTIF key bindings so they appear normal Use an event flag (VMS_EF_GTK_WINDOW_EVENT) for notification instead of ConnectionNumber [GTK128.GTK.GDK]GDKWINDOW.C Use VMS_SETUP_WINDOW_NOTIFICATION macro when a window is created [GTK128.GTK.GDK]GXID.C Change name of socket_fd (this file is not built) [GTK128.GTK.GTK]GTKDND.C Add stdlib.h so that abs is known [GTK128.GTK.GTK]GTKFILESEL.H Use macros to copy/compare struct st_ino fields Make a local inode definition inode[3] Perform case blind comparisons Change find_parent_dir_fullname so that it does not use chdir (cannot chdir up to /) [GTK128.GTK.GTK]GTKMAIN.C Translate HOME to UNIX equivalent and re-save Include unixlib.h [GTK128.GTK.GTK]TESTRGB.C ifdef out struct timezone declaration and make second arg in gettimeofday call NULL instead of tz Build Files Included in GTK+ for OpenVMS Compaq provides the following OpenVMS-specific build files in the GTK+ kit. File Description [GTK128]VMS_CC.COM Command file to compile a single C file [GTK128]VMS_SHARE.COM Command file to create a shareable image [GTK128]VMS_LINK.COM Command file to create an executable image [GTK128]VMS_BUILD_SETUP.COM Common setup file invoked by each vms_build.com [GTK128]VMS_BUILD.COM Command file for building on OpenVMS [GTK128.GLIB]CONFIG.H_VMS Prebuilt OpenVMS version of config.h [GTK128.GLIB]GLIBCONFIG.H_VMS Prebuilt OpenVMS version of glibconfig.h [GTK128.GLIB]LIBGLIB_VMS.OPT Linker options file to pull in libglib [GTK128.GLIB]LIBGLIB_CREATE_VMS.OPT Linker options file to create libglib shareable image [GTK128.GLIB]VMS_BUILD.COM Command file for building on OpenVMS [GTK128.GLIB]VMS_GLIB-config.com Command file to create glib-config [GTK128.GLIB.GMODULE] GMODULECONF.H_VMS Prebuilt OpenVMS version of gmoduleconf.h [GTK128.GLIB.GMODULE] LIBGMODULE_VMS.OPT Linker options file to pull in libgmodule [GTK128.GLIB.GMODULE] LIBGMODULE_CREATE_VMS.OPT Linker options file to create libgmodule shareable image [GTK128.GLIB.GMODULE]VMS_BUILD.COM Command file for building on OpenVMS [GTK128.GLIB.GTHREAD]VMS_BUILD.COM Command file for building on OpenVMS [GTK128.GLIB.TESTS]VMS_BUILD.COM Command file for building on OpenVMS [GTK128.GTK]CONFIG.H_VMS Prebuilt OpenVMS version of config.h [GTK128.GTK]VMS_BUILD.COM Command file for building on OpenVMS [GTK128.GTK]VMS_GTK-config.com Command file to create gtk-config [GTK128.GTK.GDK]LIBGDK_VMS.OPT Linker options file to pull in libgdk [GTK128.GTK.GDK] LIBGDK_CREATE_VMS.OPT Linker options file to create libgdk shareable image [GTK128.GTK.GDK]VMS_BUILD.COM Command file for building on OpenVMS [GTK128.GTK.GTK]LIBGTK_VMS.OPT Linker options file to pull in libgtk [GTK128.GTK.GTK] LIBGTK_CREATE_VMS.OPT Linker options file to create libgtk shareable image [GTK128.GTK.GTK]VMS_BUILD.COM Command file for building on OpenVMS [GTK128.GTK.PO]VMS_BUILD.COM Command file for building on OpenVMS -- End of file --