Home | History | Annotate | only in /external/libxml2/vms
Up to higher level directory
NameDateSize
build_libxml.com24-Aug-20168.5K
config.vms24-Aug-20167K
diffs.vms24-Aug-20165.6K
readme.vms24-Aug-20165.2K

readme.vms

      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 (a] jafsoft.com)
     14 October 2001
     15 
     16 Updated October 2002 by Craig A Berry (craigberry (a] 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 
    144