| Index: third_party/libxml/src/vms/readme.vms
|
| diff --git a/third_party/libxml/src/vms/readme.vms b/third_party/libxml/src/vms/readme.vms
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..91dddeb9891e7f878cdf888f720e39def108fe44
|
| --- /dev/null
|
| +++ b/third_party/libxml/src/vms/readme.vms
|
| @@ -0,0 +1,143 @@
|
| +Issues in porting libxml to VMS
|
| +===============================
|
| +
|
| +Here's a summary of the issues I encountered when building LIBXML under
|
| +VMS. There was some VMS support in the version I got, but it was a little
|
| +out of date with the result that some newer files had problems.
|
| +
|
| +I present this list "as is" to hopefully act as a guide to anyone having
|
| +problems in the future.
|
| +
|
| +That's it. Good luck!
|
| +
|
| +John A Fotheringham (jaf@jafsoft.com)
|
| +October 2001
|
| +
|
| +Updated October 2002 by Craig A Berry (craigberry@mac.com)
|
| +
|
| +Installation kit
|
| +----------------
|
| +
|
| +- File attributes. Having downloaded essentially a Unix distribution, some
|
| + of the file attributes weren't correct... especially those in the [.VMS]
|
| + subdirectory. In EDT you could see line feeds and carriage returns as
|
| + <LF><CR> etc. To correct this use the command
|
| +
|
| + $ set file <filespec> /attr=rfm=stm
|
| +
|
| + This sets the record format to be "stream". Other variants may be used
|
| + instead depending on how you got the files onto your system. Files will
|
| + look okay in an EDT editor once the attributes are set. Without
|
| + this the command file may not run correctly, since it may be interpreted
|
| + as a single line.
|
| +
|
| +- VMS-specific files are in a [.VMS] directory. If you've found this file
|
| + then you already know this :-) This directory contains
|
| +
|
| + BUILD_LIBXML.COM - a build command file, which I've radically re-worked
|
| + CONFIG.VMS - a configuration file to replace config.h
|
| +
|
| +- Don't execute BUILD_LIBXML.COM until you've done all the following
|
| +
|
| + - read these notes
|
| + - reviewed the configuration section of BUILD_LIBXML.COM, and in particular
|
| + updated the module lists in line with MAKEFILE
|
| + - identified the location of the include files, so that you can manually
|
| + set the LIBXML logical if need be.
|
| + - re-read these notes :-p
|
| +
|
| + instructions for all these steps are below.
|
| +
|
| +- the file [.vms]config.vms is used in lieu of a Configure-generated config.h.
|
| + This file contains a number of define statements that identify the software
|
| + options required under VMS
|
| +
|
| +- The include files are in a [.INCLUDE.LIBXML] subdirectory. You need
|
| + a logical "libxml" to point to this so that include statements of the
|
| + form
|
| +
|
| + #include <libxml/parser.h>
|
| +
|
| + will work correctly. The source files are mostly two levels above this
|
| + directory, although there are some .h files there as well.
|
| +
|
| +- The command file BUILD_LIBXML.COM will do the following
|
| +
|
| + - setup some logicals
|
| + - set def to the source directory
|
| + - compile modules and place them into a LIBXML.OLB library
|
| + - compile and link a number of self-test programs
|
| + - compile and link a number of utilities and test programs
|
| + - set def back to the original directory (i.e. if it fails you might not be
|
| + where you started :-)
|
| +
|
| + before running this command file review the configuration segment at
|
| + the top. In particular compare the lists of modules with those in the
|
| + most recent version of the Unix MAKEFILE. Instructions are contained
|
| + in the command file itself.
|
| +
|
| + The command file will attempt to set two logicals
|
| +
|
| + - xml_srcdir. The directory containing the source files
|
| + - libxml. The include file directory.
|
| +
|
| + It attempts this by looking for modules globals.c and globals.h in
|
| + nearby directories. If this logic fails, you'll need to manually define
|
| + these logicals.
|
| +
|
| +
|
| +The TRIO package
|
| +----------------
|
| +- A sub-package TRIO is used to provide some functions not naturally available
|
| + under VMS. These include support for infinite and undefined numbers,
|
| + and specialised print functions like "snprintf"
|
| +
|
| + I had to make several changes to trionan.c in discussion with the author
|
| + (hopefully these are now included in the distro, so I won't list them here)
|
| +
|
| + To build this software we need to add
|
| +
|
| + /IEEE_MODE=UNDERFLOW_TO_ZERO/FLOAT=IEEE
|
| +
|
| + to the compile command for xpath.c and trio.c, and to any main program
|
| + that uses this functionality. BUILD_LIBXML.COM should do this for you.
|
| +
|
| +- to build in trio support you need the define WITH_TRIO to be set. This
|
| + is done by default for VMS in xmlversion.h
|
| +
|
| +
|
| +Compiler and linker errors
|
| +--------------------------
|
| +- the DEC C compiler may produce a number of warnings when compiling the
|
| + C code. These include
|
| +
|
| + - Implicit function warnings. These indicate functions whose type is
|
| + not defined in a .h file. This will probably only happen if your
|
| + configuration is not correct (e.g. for "snprintf" if you haven't
|
| + edited xmlversion.h to set WITH_TRIO
|
| +
|
| + - uninitialised variables. Not usually a problem. You can solve this
|
| + by editing the code to initialise the variables affected
|
| +
|
| +Changes made to the codebase
|
| +----------------------------
|
| +- I changed all dummy declarations in trio.c to be
|
| +
|
| + va_list dummy = NULL;
|
| +
|
| + to prevent compiler whinge in TRIO.C about uninitialised variables
|
| +
|
| +- I had to add the following to nanoftp.c
|
| +
|
| + #if defined(VMS) || defined(__VMS)
|
| + #define SOCKLEN_T unsigned int
|
| + #endif
|
| +
|
| + This matches similar lines already added to nanohttp.c
|
| +
|
| +- Several variables and function names exceed the 31 character limit
|
| + of the VMS linker. The solution adopted has been to use the
|
| + /NAMES=SHORTENED compiler option, which requires DEC/Compaq C 5.7
|
| + or later. For a complete list of the names that needed shortening
|
| + and the short names generated by the compiler, see [.vms]config.vms.
|
| +
|
|
|