1
0
mirror of https://gitlab.gnome.org/GNOME/libxslt synced 2025-08-08 21:42:07 +03:00

included OpenVMS port instructions from John A Fotheringham, integrated in

* vms/* Makefile.am: included OpenVMS port instructions from
  John A Fotheringham, integrated in the tar file.
Daniel
This commit is contained in:
Daniel Veillard
2001-11-13 15:17:55 +00:00
parent 07e19b35ab
commit b808c1dd9d
5 changed files with 502 additions and 1 deletions

View File

@@ -1,3 +1,8 @@
Tue Nov 13 16:16:41 CET 2001 Daniel Veillard <daniel@veillard.com>
* vms/* Makefile.am: included OpenVMS port instructions from
John A Fotheringham, integrated in the tar file.
Mon Nov 12 22:46:26 CET 2001 Daniel Veillard <daniel@veillard.com> Mon Nov 12 22:46:26 CET 2001 Daniel Veillard <daniel@veillard.com>
* win32/dsp/* xsltproc/xsltproc.c libxslt/transform.c: Patches * win32/dsp/* xsltproc/xsltproc.c libxslt/transform.c: Patches

View File

@@ -12,7 +12,7 @@ confexec_DATA = xsltConf.sh
bin_SCRIPTS = xslt-config bin_SCRIPTS = xslt-config
dist-hook: libxslt.spec dist-hook: libxslt.spec
(cd $(srcdir) ; tar -cf - --exclude CVS win32) | (cd $(distdir); tar xf -) (cd $(srcdir) ; tar -cf - --exclude CVS win32 vms) | (cd $(distdir); tar xf -)
EXTRA_DIST = xsltConf.sh.in xslt-config.in libxslt.spec libxslt.spec.in \ EXTRA_DIST = xsltConf.sh.in xslt-config.in libxslt.spec libxslt.spec.in \
FEATURES TODO COPYING.LIB Copyright IPR \ FEATURES TODO COPYING.LIB Copyright IPR \

321
vms/build_xslt.com Normal file
View File

@@ -0,0 +1,321 @@
$! BUILD_XSLT.COM
$!
$! Build the XSLT library
$!
$! Arguments:
$!
$! p1 - "DEBUG" is you want to build with debug
$!
$! This package requires libxml to have already been installed. You need
$! to ensure that the logical name LIBXML is defined and points to the
$! directory containing libxml's .h files
$!
$! This procedure creates the object libraries
$!
$! XMLOLB:LIBXSLT.OLB
$! XMLOLB:LIBEXSLT.OLB
$!
$! and the program
$!
$! XSLTPROC
$!
$! After the library is built, you can link these routines into
$! your code with the command
$!
$! LINK your_modules,XMLOLB:LIBEXSLT/LIB,LIBXSLT/LIBRARY,LIBXML/LIB
$!
$! Change History
$! --------------
$! Command file author : John A Fotheringham (jaf@jafsoft.com)
$! Last update : 2 Nov 2001
$!
$!- configuration -------------------------------------------------------------
$!
$!- compile command.
$!
$ if p1.eqs."DEBUG"
$ then
$ debug = "y"
$ cc_command = "CC/DEBUG/NOOPT"
$ else
$ debug = "n"
$ cc_command = "CC"
$ endif
$!
$!- configure multiple build passes for each library. -------------------------
$!
$! For each pass:
$!
$! "libname" is the name of the library or module being created
$!
$! "progname" is the name of the program being created
$!
$! "src" is the list of sources to be built into the library or program
$! - This should be compared to the definition of
$! "<NAME>_la_SOURCES" in the MAKEFILE.IN file in
$! corresponding directory.
$!
$ num_passes = 3 ! two libraries and a program
$!
$!- pass 1 - library LIBXSLT
$!
$ libname_1 = "LIBXSLT"
$ h_file_1 = "xslt.h"
$ progname_1 = ""
$!
$ ! see "libxslt_la_SOURCES" in [.libxslt]makefile.in
$ src_1 = "xslt.c xsltutils.c pattern.c templates.c variables.c keys.c"
$ src_1 = src_1 + " numbers.c extensions.c extra.c functions.c"
$ src_1 = src_1 + " namespaces.c imports.c attributes.c documents.c"
$ src_1 = src_1 + " preproc.c transform.c"
$!
$!- pass 2 - library LIBEXSLT
$!
$ libname_2 = "LIBEXSLT"
$ h_file_2 = "exslt.h"
$ progname_2 = ""
$!
$ ! see "libexslt_la_SOURCES" in [.libexslt]makefile.in
$ src_2 = "exslt.c common.c math.c sets.c functions.c strings.c date.c saxon.c"
$!
$!- pass 3 - program XSLTPROC
$!
$ libname_3 = ""
$ h_file_3 = ""
$ progname_3 = "XSLTPROC"
$!
$ ! see "xsltproc_SOURCES" in [.xsltproc]makefile.in
$ src_3 = "xsltproc.c"
$!
$!- set up and check logicals -----------------------------------------------
$!
$! XMLOLB - object library directory
$! LIBXML - source directory containing .h files for libxml package
$!
$ if f$trnlnm("XMLOLB").eqs.""
$ then
$ write sys$output ""
$ write sys$output " You need to define a XMLOLB logical directory to"
$ write sys$output " point to the directory containing your CMS object"
$ write sys$output " libraries. This should already contain LIBXML.OLB"
$ write sys$output " from the libxml package, and will be the directory"
$ write sys$output " the new LIBXSLT.OLB library will be placed in"
$ write sys$output ""
$ exit
$ endif
$!
$ if f$trnlnm("libxml").eqs.""
$ then
$ ! look for globals.h in a directory installed paralle to this one
$ on error then continue
$ globfile = f$search("[--...]globals.h")
$ if globfile.eqs.""
$ then
$ write sys$output ""
$ write sys$output " You need to define a LIBXML logical directory to"
$ write sys$output " point to the directory containing the .h files"
$ write sys$output " for the libxml package"
$ write sys$output ""
$ exit
$ else
$ srcdir = f$element(0,"]",globfile)+ "]"
$ define/process LIBXML "''srcdir'"
$ write sys$output "Defining LIBXML as ""''srcdir'"""
$ endif
$ endif
$!
$!- set up some working logicals -------------------
$!
$ pass_no = 1
$ set_pass_logical:
$!
$ if pass_no.le.num_passes
$ then
$!
$ Libname = libname_'pass_no'
$ progname = progname_'pass_no'
$ if libname.nes.""
$ then
$ logname = "''libname'_SRCDIR"
$ else
$ logname = "''progname'_SRCDIR"
$ endif
$ findfile = f$element(0," ",src_'pass_no')
$!
$!--- set up a source directory logical
$!
$ if f$trnlnm("''logname'").eqs.""
$ then
$ ! look for the target file in a parallel subdirectory
$ globfile = f$search("[-...]''findfile'")
$ if globfile.eqs.""
$ then
$ write sys$output "Can't locate ''findfile'. You need to manually define a ''logname' logical"
$ exit
$ else
$ srcdir = f$element(0,"]",globfile)+ "]"
$ define/process 'logname' "''srcdir'"
$ write sys$output "Defining ''logname' as ""''srcdir'"""
$ endif
$ endif
$!
$!--- if it's a library, set up a logical pointing to the .h files
$!
$ if libname.nes.""
$ then
$ if f$trnlnm("''libname'").eqs.""
$ then
$ ! look for the target .h file in a parallel subdirectory
$ h_file = h_file_'pass_no'
$ globfile = f$search("[-...]''h_file'")
$ if globfile.eqs.""
$ then
$ write sys$output "Can't locate ''h_file'. You need to manually define a ''libname' logical"
$ exit
$ else
$ includedir = f$element(0,"]",globfile)+ "]"
$ define/process 'libname' "''includedir'"
$ write sys$output "Defining ''libname' as ""''includedir'"""
$ endif
$ endif
$ endif
$!
$ pass_no = pass_no +1
$ goto set_pass_logical
$!
$ endif ! for each pass
$!
$!- set up error handling (such as it is) -------------------------------------
$!
$ exit_status = 1
$ saved_default = f$environment("default")
$ on error then goto ERROR_OUT
$ on control_y then goto ERROR_OUT
$!
$ goto start_here
$ start_here: ! move this line to debug/rerun parts of this command file
$!
$!- compile modules into the library ------------------------------------------
$!
$!
$ pass_no = 1 ! make three passes, one for each library, one for XSLTPROC
$ pass_loop:
$!
$ if pass_no.le.num_passes
$ then
$ Libname = libname_'pass_no'
$ progname = progname_'pass_no'
$ if libname.nes.""
$ then
$ logname = "''libname'_SRCDIR"
$ pass_description = "the XMLOLB:''libname'.OLB object library"
$ else
$ logname = "''progname'_SRCDIR"
$ pass_description = "the programs in ''progname'"
$ endif
$ src = src_'pass_no'
$!
$!- create the library if need
$!
$ if libname.nes.""
$ then
$ if f$search("XMLOLB:''libname'.OLB").eqs.""
$ then
$ write sys$output "Creating new object library XMLOLB:''libname'.OLB..."
$ library/create XMLOLB:'libname'.OLB
$ endif
$ endif
$!
$!- move to the source directory
$!
$ set def 'logname'
$!
$!- define the library and link commands (link command not used as is)
$!
$ if libname.nes.""
$ then
$ lib_command = "LIBRARY/REPLACE XMLOLB:''libname'.OLB"
$ link_command = ""
$ else
$ lib_command = ""
$ link_command = "LINK"
$ endif
$!
$ write sys$output ""
$ write sys$output "Building ''pass_description'
$ write sys$output ""
$!
$ s_no = 0
$ src = f$edit(src,"COMPRESS")
$!
$ source_loop:
$!
$ next_source = f$element (S_no," ",src)
$ if next_source.nes."" .and. next_source.nes." "
$ then
$ if link_command.nes."" .or. next_source.eqs."xsltutils.c"
$ then
$ call build 'next_source' /IEEE_MODE=UNDERFLOW_TO_ZERO/FLOAT=IEEE
$ else
$ call build 'next_source'
$ endif
$ s_no = s_no + 1
$ goto source_loop
$ endif
$!
$ pass_no = pass_no + 1
$ goto pass_loop
$!
$ endif ! for each pass
$!
$!- Th-th-th-th-th-that's all folks! ------------------------------------------
$!
$EXIT_OUT:
$!
$ set def 'saved_default
$ exit 'exit_status
$!
$
$ERROR_OUT:
$ exit_status = $status
$ write sys$output "''f$message(exit_status)'"
$ goto EXIT_OUT
$!
$!- the BUILD subroutine. Compile then insert into library or link as required
$!
$BUILD: subroutine
$ on warning then goto EXIT_BUILD
$ source_file = p1
$ name = f$element(0,".",source_file)
$ object_file = f$fao("XMLOLB:!AS.OBJ",name)
$!
$!- compile
$ write sys$output "Compiling ",p1,p2,"..."
$ cc_command /object='object_file 'source_file' 'p2'
$!
$!- insert into library if command defined
$!
$ if lib_command.nes.""
$ then
$ lib_command 'object_file'
$ delete/nolog 'object_file';*
$ endif
$!
$!- link module if command defined
$!
$ if link_command.nes.""
$ then
$ text = f$element(0,".",p1) ! lose the ".c"
$ write sys$output "Linking ",text,"..."
$ dbgopts = ""
$ if debug then dbgopts = "/DEBUG"
$ link_command'dbgopts' 'object_file',-
XMLOLB:libexslt/lib,-
XMLOLB:libxslt/lib,-
XMLOLB:libxml/library
$ endif
$!
$EXIT_BUILD:
$ exit $status
$!
$endsubroutine

34
vms/diffs.vms Normal file
View File

@@ -0,0 +1,34 @@
---------------------------------------------------------------------------
EXTENSIONS.H
142,154c142
<
< #if defined(VMS) || defined(__VMS)
<
< xsltPreComputeFunction
< xsltExtModElemPreComputeLookup
< (const xmlChar *name,
< const xmlChar *URI);
<
< #define xsltExtModuleElementPreComputeLookup xsltExtModElemPreComputeLookup
<
< #else
<
< xsltPreComputeFunction
---
> xsltPreComputeFunction
158,159d145
< #endif
<
---------------------------------------------------------------------------
EXTENSIONS.C
1142,1146d1141
< #if defined(VMS) || defined(__VMS)
< xsltPreComputeFunction
< xsltExtModElemPreComputeLookup (const xmlChar *name,
< const xmlChar *URI) {
< #else
1150,1151d1144
< #endif
<

141
vms/readme.vms Normal file
View File

@@ -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.