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