1Issues in porting libxml to VMS 2=============================== 3 4Here's a summary of the issues I encountered when building LIBXML under 5VMS. There was some VMS support in the version I got, but it was a little 6out of date with the result that some newer files had problems. 7 8I present this list "as is" to hopefully act as a guide to anyone having 9problems in the future. 10 11That's it. Good luck! 12 13John A Fotheringham (jaf@jafsoft.com) 14October 2001 15 16Updated October 2002 by Craig A Berry (craigberry@mac.com) 17 18Installation 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 89The 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 109Compiler 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 122Changes 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 144