Index: third_party/libxslt/vms/readme.vms |
diff --git a/third_party/libxslt/vms/readme.vms b/third_party/libxslt/vms/readme.vms |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7088ee8e3fafae9b06ac5763bca7d675a13fd8d4 |
--- /dev/null |
+++ b/third_party/libxslt/vms/readme.vms |
@@ -0,0 +1,141 @@ |
+Building XSLT under OpenVMS |
+=========================== |
+ |
+Here's a summary of the issues I encountered when building XSLT under |
+VMS. I'd previously done the same for the LIBXML package, on which |
+XSLT depends. |
+ |
+I present this list "as is" to hopefully act as a guide to anyone |
+having similar problems in the future. |
+ |
+That's it. Good luck! |
+ |
+John A Fotheringham (jaf@jafsoft.com) |
+November 2001 |
+ |
+ |
+Installation kit |
+---------------- |
+ |
+- File attributes. When downloading essentially a Unix distribution, |
+ some of the file attributes may not be correct... especially those |
+ in the [.VMS] subdirectory. In EDT you could see line feeds and |
+ carriage returns as <LF><CR> etc. To correct this use the command |
+ |
+ $ set file <filespec> /attr=rfm=stm |
+ |
+ This sets the record format to be "stream". Other variants may be |
+ used instead depending on how you got the files onto your system. |
+ Files will look okay in an EDT editor once the attributes are set. |
+ Without this the command file may not run correctly, since it may |
+ be interpreted as a single line. |
+ |
+- VMS-specific files are in a [.VMS] directory. If you've found |
+ this file then you already know this :-) This directory contains |
+ |
+ BUILD_XSLT.COM - a build command file |
+ README.VMS - these notes |
+ |
+- Don't execute BUILD_LIBXML.COM until you've done all the |
+ following |
+ |
+ - read these notes |
+ - define the logicals XMLOLB and LIBXML |
+ - copy CONFIG.H to [.libxslt] and [.libexslt] |
+ - reviewed the configuration section of BUILD_XSLT.COM, and in |
+ particular update the module lists in line with MAKEFILE |
+ - re-read these notes :-p |
+ |
+ instructions for all these steps are below. |
+ |
+- the XSLT package requires the LIBXML package to have been |
+ previously been installed. The following logicals should be |
+ defined |
+ |
+ LIBXML - the directory containing LIBXML's .h files |
+ XMLOLB - the directory to contain both the LIBXML and XSLT |
+ object libraries |
+ |
+- you'll need to copy config.h into the [.libxslt] and [.libexslt] |
+ directories. If in the future a VMS-specific version is created, |
+ use [.vms]config.vms instead. |
+ |
+- The command file BUILD_XSLT.COM will do the following |
+ |
+ - setup and test some logicals |
+ - set def to the source directory |
+ - compile modules and place them into a LIBXSLT.OLB library |
+ - compile modules and place them into a LIBEZSLT.OLB library |
+ - compile and link the XSLTPROC program |
+ - set def back to the original directory (i.e. if it fails you |
+ might not be where you started :-) |
+ |
+ before running this command file review the configuration segment |
+ at the top. In particular compare the lists of modules with those |
+ in the most recent version of MAKEFILE.IN files sound in the source |
+ directories. Instructions are contained in the command file itself. |
+ |
+ |
+The TRIO package |
+---------------- |
+- The libxml package uses a sub-package TRIO to provide some |
+ functions not naturally available under VMS. These include support |
+ for infinite and undefined numbers, and specialised print functions |
+ like "snprintf" |
+ |
+ To build this software we need to add |
+ |
+ /IEEE_MODE=UNDERFLOW_TO_ZERO/FLOAT=IEEE |
+ |
+ to the compile command for xsltutils, and to any main program |
+ that uses this functionality. BUILD_XSLT.COM should do this |
+ for you. |
+ |
+ Without this you are likely to get run-time errors like this |
+ |
+ %SYSTEM-F-HPARITH, high performance arithmetic trap, Imask=00000000, |
+ Fmask=00000 400, summary=02, PC=000000000006A330, PS=0000001B |
+ -SYSTEM-F-FLTINV, floating invalid operation, PC=000000000006A330, |
+ PS=0000001B |
+ |
+ If this occurs you'll need to locate the modules that need the |
+ above switches applied |
+ |
+ |
+Compiler and linker errors |
+-------------------------- |
+ |
+- with respect to the TRIO package you'll get the error |
+ |
+ "no main module for UNDERFLOW_TO_ZERO" |
+ |
+ You can suppress this "expected" messages by using the compile command |
+ |
+ $ CC /WARN=DISABLE=(NOMAINUFLO) |
+ |
+- the Linker will report the following error |
+ |
+ %LINK-W-MULDEF, symbol DECC$STRERROR multiply defined |
+ in module DECC$SHR file SYS$COMMON:[SYSLIB]DECC$SHR.EXE;5 |
+ |
+ This is complaining that DECC$STRERROR is multiply defined, which |
+ in turn is because this system symbol is getting added to LIBXML.OLB |
+ when strio.c was compiled in the libxml package. |
+ |
+ I'm not sure what the solution for this is, but this is a fairly |
+ benign error. |
+ |
+ |
+Changes made to the codebase |
+---------------------------- |
+ |
+- In the module extensions.c the name |
+ |
+ xsltExtModuleElementPreComputeLookup |
+ |
+ is too long (more than 31 characters). The solution has been |
+ to rename it to a shorter name on VMS builds, and to then |
+ create a #define that maps the longer name to the shorter name, |
+ so that all references to the longer name will work. |
+ |
+ You may need to repeat this exercise with any future modules added. |