Annotation of embedaddon/libxml2/vms/readme.vms, revision 1.1.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>