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