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>