Annotation of embedaddon/libxml2/vms/readme.vms, revision 1.1
1.1 ! misho 1: Issues in porting libxml to VMS
! 2: ===============================
! 3:
! 4: Here's a summary of the issues I encountered when building LIBXML under
! 5: VMS. There was some VMS support in the version I got, but it was a little
! 6: out of date with the result that some newer files had problems.
! 7:
! 8: I present this list "as is" to hopefully act as a guide to anyone having
! 9: problems in the future.
! 10:
! 11: That's it. Good luck!
! 12:
! 13: John A Fotheringham (jaf@jafsoft.com)
! 14: October 2001
! 15:
! 16: Updated October 2002 by Craig A Berry (craigberry@mac.com)
! 17:
! 18: Installation kit
! 19: ----------------
! 20:
! 21: - File attributes. Having downloaded essentially a Unix distribution, some
! 22: of the file attributes weren't correct... especially those in the [.VMS]
! 23: subdirectory. In EDT you could see line feeds and carriage returns as
! 24: <LF><CR> etc. To correct this use the command
! 25:
! 26: $ set file <filespec> /attr=rfm=stm
! 27:
! 28: This sets the record format to be "stream". Other variants may be used
! 29: instead depending on how you got the files onto your system. Files will
! 30: look okay in an EDT editor once the attributes are set. Without
! 31: this the command file may not run correctly, since it may be interpreted
! 32: as a single line.
! 33:
! 34: - VMS-specific files are in a [.VMS] directory. If you've found this file
! 35: then you already know this :-) This directory contains
! 36:
! 37: BUILD_LIBXML.COM - a build command file, which I've radically re-worked
! 38: CONFIG.VMS - a configuration file to replace config.h
! 39:
! 40: - Don't execute BUILD_LIBXML.COM until you've done all the following
! 41:
! 42: - read these notes
! 43: - reviewed the configuration section of BUILD_LIBXML.COM, and in particular
! 44: updated the module lists in line with MAKEFILE
! 45: - identified the location of the include files, so that you can manually
! 46: set the LIBXML logical if need be.
! 47: - re-read these notes :-p
! 48:
! 49: instructions for all these steps are below.
! 50:
! 51: - the file [.vms]config.vms is used in lieu of a Configure-generated config.h.
! 52: This file contains a number of define statements that identify the software
! 53: options required under VMS
! 54:
! 55: - The include files are in a [.INCLUDE.LIBXML] subdirectory. You need
! 56: a logical "libxml" to point to this so that include statements of the
! 57: form
! 58:
! 59: #include <libxml/parser.h>
! 60:
! 61: will work correctly. The source files are mostly two levels above this
! 62: directory, although there are some .h files there as well.
! 63:
! 64: - The command file BUILD_LIBXML.COM will do the following
! 65:
! 66: - setup some logicals
! 67: - set def to the source directory
! 68: - compile modules and place them into a LIBXML.OLB library
! 69: - compile and link a number of self-test programs
! 70: - compile and link a number of utilities and test programs
! 71: - set def back to the original directory (i.e. if it fails you might not be
! 72: where you started :-)
! 73:
! 74: before running this command file review the configuration segment at
! 75: the top. In particular compare the lists of modules with those in the
! 76: most recent version of the Unix MAKEFILE. Instructions are contained
! 77: in the command file itself.
! 78:
! 79: The command file will attempt to set two logicals
! 80:
! 81: - xml_srcdir. The directory containing the source files
! 82: - libxml. The include file directory.
! 83:
! 84: It attempts this by looking for modules globals.c and globals.h in
! 85: nearby directories. If this logic fails, you'll need to manually define
! 86: these logicals.
! 87:
! 88:
! 89: The TRIO package
! 90: ----------------
! 91: - A sub-package TRIO is used to provide some functions not naturally available
! 92: under VMS. These include support for infinite and undefined numbers,
! 93: and specialised print functions like "snprintf"
! 94:
! 95: I had to make several changes to trionan.c in discussion with the author
! 96: (hopefully these are now included in the distro, so I won't list them here)
! 97:
! 98: To build this software we need to add
! 99:
! 100: /IEEE_MODE=UNDERFLOW_TO_ZERO/FLOAT=IEEE
! 101:
! 102: to the compile command for xpath.c and trio.c, and to any main program
! 103: that uses this functionality. BUILD_LIBXML.COM should do this for you.
! 104:
! 105: - to build in trio support you need the define WITH_TRIO to be set. This
! 106: is done by default for VMS in xmlversion.h
! 107:
! 108:
! 109: Compiler and linker errors
! 110: --------------------------
! 111: - the DEC C compiler may produce a number of warnings when compiling the
! 112: C code. These include
! 113:
! 114: - Implicit function warnings. These indicate functions whose type is
! 115: not defined in a .h file. This will probably only happen if your
! 116: configuration is not correct (e.g. for "snprintf" if you haven't
! 117: edited xmlversion.h to set WITH_TRIO
! 118:
! 119: - uninitialised variables. Not usually a problem. You can solve this
! 120: by editing the code to initialise the variables affected
! 121:
! 122: Changes made to the codebase
! 123: ----------------------------
! 124: - I changed all dummy declarations in trio.c to be
! 125:
! 126: va_list dummy = NULL;
! 127:
! 128: to prevent compiler whinge in TRIO.C about uninitialised variables
! 129:
! 130: - I had to add the following to nanoftp.c
! 131:
! 132: #if defined(VMS) || defined(__VMS)
! 133: #define SOCKLEN_T unsigned int
! 134: #endif
! 135:
! 136: This matches similar lines already added to nanohttp.c
! 137:
! 138: - Several variables and function names exceed the 31 character limit
! 139: of the VMS linker. The solution adopted has been to use the
! 140: /NAMES=SHORTENED compiler option, which requires DEC/Compaq C 5.7
! 141: or later. For a complete list of the names that needed shortening
! 142: and the short names generated by the compiler, see [.vms]config.vms.
! 143:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>