
VMS support contributed by Jouk Jansen (joukj@hrem.stm.tudelft.nl)


The latest version was tested on a VMSAlpha7.2 system using DECC6.0, but
probably also works for other versions.

At the moment only the libraries LIBMESGL.EXE/LIBMESGL.OLB,
LIBMESAGLU.EXE/LIBMESAGLU.OLB and LIBGLUT.EXE/LIBGLUT.OLB and the demos of the
directory [.DEMOS] can be build.
However, feel free to create the missing "decrip.mms-files" in the other
directories.

 The make files were tested
using the DIGITAL make utility called MMS.  There is also a public domain
clone available (MMK) and I  think, but it is not tested, that this
utility will give (hardly) any problem.

To make everything just type MMS (or MMK) in the main directory of
mesagl.  For MMS the deafult makefile is called descrip.mms, and
that is what I have called it.  I included alse some config files,
all having mms somewhere in the name which all the makefiles need
(just as your unix makefiles).

On Alpha platforms at default a sharable images for the libraries are created.
To get a static library make it by typing MMS/MACRO=(NOSHARE=1).
On VAX platforms only static libraries can be build.

23-sep-2005
changed default compilation to use /float=ieee/ieee=denorm. The reason for 
this is that it makes Mesa on OpenVMS better compatible with other platforms
and other packages for VMS that I maintain.
For more information see
      http://nchrem.tnw.tudelft.nl/openvms
      https://bugs.freedesktop.org/show_bug.cgi?id=4270
You may want to compile Mesa to use VAX-floating point arithmetic, instead
of IEEE floating point by removing the /float=IEEE/denorm flag from the
compiler options in the descrip.mms files.
