GTK+ for OpenVMS Release Notes January 2003 GTK1210-OPENVMS-A1.SFX_AXPEXE » introduction » new features » prerequisites » expanding and installing GTK+ for OpenVMS » building GTK+ for OpenVMS » your application and GTK+ for OpenVMS » POSIX and GNV considerations » source file changes » build files included in GTK+ for OpenVMS Introduction GTK+ Version 1.2.10-A1 for OpenVMS Alpha is an open source, free software library for creating graphical user interfaces. It is an unofficial, interim port of GTK+. See Problem Reporting for information on reporting problems in GTK+ for OpenVMS. See http://www.gtk.org for more information about GTK+. New Features in the 1.2.10-A1 Kit The following new features and changes are included in the 1.2.10-A1 kit, released January 23, 2003. - Merged in the 1.2-10 code - Added file [GTK_1_2_10.GLIB]XLIBSHR_VMS.OPT for linking against DECW$XLIBSHR - Changed GSMATCH statement from "GSMATCH=LEQUAL,1,1" to "GSMATCH=LEQUAL,1,10" - Added file LICENSE.TXT New Features in the 1.2.8-A2 Kit The following new features and changes are included in the 1.2.8-A2 kit, released April 10, 2002. - Maps the F11 key to Escape - Includes latent support for X shared memory - "I got some other key" print statement now prints the key code - Links LIBGLIB against DECW$XLIBSHR as the VMS JACKETS now map setlocale calls to __XSETLOCALE - Fixes IM (input method) bug that was preventing IM from functioning - Changes GSMATCH statement from "GSMATCH=LEQUAL,1,1" to "GSMATCH=LEQUAL,1,2" 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 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.) 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. Download GTK+ Version 1.2.10-A1 for OpenVMS. 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. 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:[GTK_1_2_10] $ SET DEFAULT DKA0:[GTK_1_2_10] To expand and install the GTK+ for OpenVMS self-extracting archive, run the kit you downloaded by entering the following command: $ RUN GTK1210-OPENVMS-A1.SFX_AXPEXE Building GTK+ for OpenVMS This section explains how to build GTK+ for OpenVMS. Edit [GTK_1_2_10]VMS_BUILD_SETUP.COM to match your system's configuration. If you do not have Perl or AWK, edit [GTK_1_2_10.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. (Optional) If you need to build a debug version of GTK+, enter the following command: $ DEFINE BUILD_DEBUG 1 Run VMS_BUILD.COM from the top-level directory: $ SET DEFAULT [GTK_1_2_10] $ @VMS_BUILD 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: [GTK_1_2_10.GLIB]LIBGLIB.EXE [GTK_1_2_10.GLIB.GMODULE]LIBGMODULE.EXE [GTK_1_2_10.GTK.GDK]LIBGDK.EXE [GTK_1_2_10.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: [GTK_1_2_10.GLIB] [GTK_1_2_10.GLIB.GMODULE] When compiling code that uses GTK, include the following directories on your header file include path: [GTK_1_2_10.GTK] [GTK_1_2_10.GLIB] [GTK_1_2_10.GLIB.GMODULE] There are four shareable images against which you need to link your application, as follows: [GTK_1_2_10.GLIB]LIBGLIB.EXE [GTK_1_2_10.GLIB.GMODULE]LIBGMODULE.EXE [GTK_1_2_10.GTK.GDK]LIBGDK.EXE [GTK_1_2_10.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:[GTK_1_2_10], you can configure an autoconf based application as follows: configure \ --with-glib --with-glib-prefix=/dkb300/GTK_1_2_10/glib/ \ --with-gtk --with-gtk-prefix=/dkb300/GTK_1_2_10/gtk/ Source File Changes Following is a summary of the changes made to the GTK+ source files. glib [GTK_1_2_10.GLIB]GMAIN.C Changed to use event flags as the wakeup mechanism [GTK_1_2_10.GLIB]LIBGLIB_CREATE_VMS.OPT Changed GSMATCH statement from "GSMATCH=LEQUAL,1,1" to "GSMATCH=LEQUAL,1,10" [GTK_1_2_10.GLIB.GMODULE]LIBGMODULE_CREATE_VMS.OPT Changed GSMATCH statement from "GSMATCH=LEQUAL,1,1" to "GSMATCH=LEQUAL,1,10" [GTK_1_2_10.GLIB]VMS_GLIB-CONFIG.COM Fixed a problem that occured if translation of GROOTU (defined in VMS_BUILD_SETUP.COM) was greater than 20 characters. A substitute command would fail and the created glib-config would not contain the glib include file directories. Removed "/glib-1.2" from includedir. gtk [GTK_1_2_10.GTK.GDK]GDKDND.C Use VMS_SETUP_WINDOW_NOTIFICATION macro when a window is created [GTK_1_2_10.GTK.GDK]GDKEVENTS.C Map the F11 key to Escape 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 GTK_NO_KEY_TRANSLATION is replaced with GTK_KEY_MAPPING_MODE. 0 is no mapping. 1 is LK keyboard mode, and 2 is PC keyboard mode. Default is 0. [GTK_1_2_10.GTK.GDK]GDKIMAGE.C Latent support for X shared memory [GTK_1_2_10.GTK.GDK]GDKIM.C Fix IM (input method) bug that was preventing IM from functioning [GTK_1_2_10.GTK.GDK]GDKWINDOW.C Use VMS_SETUP_WINDOW_NOTIFICATION macro when a window is created [GTK_1_2_10.GTK.GDK]GXID.C Change name of socket_fd (this file is not built) [GTK_1_2_10.GTK.GDK]LIBGDK_CREATE_VMS.OPT Changed GSMATCH statement from "GSMATCH=LEQUAL,1,1" to "GSMATCH=LEQUAL,1,10" [GTK_1_2_10.GTK.GTK]GTKDND.C Add stdlib.h so that abs is known [GTK_1_2_10.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 /) [GTK_1_2_10.GTK.GTK]GTKMAIN.C Translate HOME to UNIX equivalent and re-save Include unixlib.h [GTK_1_2_10.GTK.GTK]LIBGTK_CREATE_VMS.OPT Changed GSMATCH statement from "GSMATCH=LEQUAL,1,1" to "GSMATCH=LEQUAL,1,10" Include unixlib.h [GTK_1_2_10.GTK.GTK]TESTINPUT.C "I got some other key" print statement prints the key code [GTK_1_2_10.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 HP provides the following OpenVMS-specific build files in the GTK+ kit. File Description [GTK_1_2_10]VMS_CC.COM Command file to compile a single C file [GTK_1_2_10]VMS_SHARE.COM Command file to create a shareable image [GTK_1_2_10]VMS_LINK.COM Command file to create an executable image [GTK_1_2_10]VMS_BUILD_SETUP.COM Common setup file invoked by each vms_build.com [GTK_1_2_10]VMS_BUILD.COM Command file for building on OpenVMS [GTK_1_2_10.GLIB]CONFIG.H_VMS Prebuilt OpenVMS version of config.h [GTK_1_2_10.GLIB]GLIBCONFIG.H_VMS Prebuilt OpenVMS version of glibconfig.h [GTK_1_2_10.GLIB]LIBGLIB_VMS.OPT Linker options file to pull in libglib [GTK_1_2_10.GLIB]LIBGLIB_CREATE_VMS.OPT Linker options file to create libglib shareable image [GTK_1_2_10.GLIB]VMS_BUILD.COM Command file for building on OpenVMS [GTK_1_2_10.GLIB]VMS_GLIB-config.com Command file to create glib-config [GTK_1_2_10.GLIB]XLIBSHR_VMS.OPT Linker options file for linking against DECW$XLIBSHR [GTK_1_2_10.GLIB.GMODULE] GMODULECONF.H_VMS Prebuilt OpenVMS version of gmoduleconf.h [GTK_1_2_10.GLIB.GMODULE] LIBGMODULE_VMS.OPT Linker options file to pull in libgmodule [GTK_1_2_10.GLIB.GMODULE] LIBGMODULE_CREATE_VMS.OPT Linker options file to create libgmodule shareable image [GTK_1_2_10.GLIB.GMODULE]VMS_BUILD.COM Command file for building on OpenVMS [GTK_1_2_10.GLIB.GTHREAD]VMS_BUILD.COM Command file for building on OpenVMS [GTK_1_2_10.GLIB.TESTS]VMS_BUILD.COM Command file for building on OpenVMS [GTK_1_2_10.GTK]CONFIG.H_VMS Prebuilt OpenVMS version of config.h [GTK_1_2_10.GTK]VMS_BUILD.COM Command file for building on OpenVMS [GTK_1_2_10.GTK]VMS_GTK-config.com Command file to create gtk-config [GTK_1_2_10.GTK.GDK]LIBGDK_VMS.OPT Linker options file to pull in libgdk [GTK_1_2_10.GTK.GDK] LIBGDK_CREATE_VMS.OPT Linker options file to create libgdk shareable image [GTK_1_2_10.GTK.GDK]VMS_BUILD.COM Command file for building on OpenVMS [GTK_1_2_10.GTK.GTK]LIBGTK_VMS.OPT Linker options file to pull in libgtk [GTK_1_2_10.GTK.GTK] LIBGTK_CREATE_VMS.OPT Linker options file to create libgtk shareable image [GTK_1_2_10.GTK.GTK]VMS_BUILD.COM Command file for building on OpenVMS [GTK_1_2_10.GTK.PO]VMS_BUILD.COM Command file for building on OpenVMS -- end of file --