File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / vms / readme.vms
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:37:58 2012 UTC (12 years, 5 months ago) by misho
Branches: libxml2, MAIN
CVS tags: v2_9_1p0, v2_9_1, v2_8_0p0, v2_8_0, v2_7_8, HEAD
libxml2

    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>