OLD | NEW |
(Empty) | |
| 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 |
OLD | NEW |