diff options
author | Daniel Veillard <veillard@src.gnome.org> | 2001-11-13 15:24:36 +0000 |
---|---|---|
committer | Daniel Veillard <veillard@src.gnome.org> | 2001-11-13 15:24:36 +0000 |
commit | d33cfbf16ca3834097ab54a2215b74fb5ea7420a (patch) | |
tree | 5152b18d7991135d7c36eb7d9cb5a265641c15b2 /vms | |
parent | a11001b2cb2a327b537083255ad8963ada3c9bab (diff) | |
download | android_external_libxml2-d33cfbf16ca3834097ab54a2215b74fb5ea7420a.tar.gz android_external_libxml2-d33cfbf16ca3834097ab54a2215b74fb5ea7420a.tar.bz2 android_external_libxml2-d33cfbf16ca3834097ab54a2215b74fb5ea7420a.zip |
updated instructions and diffs from John A Fotheringham Daniel
* vms/*: updated instructions and diffs from John A Fotheringham
Daniel
Diffstat (limited to 'vms')
-rwxr-xr-x | vms/build_libxml.com | 99 | ||||
-rw-r--r-- | vms/diffs.vms | 192 | ||||
-rw-r--r-- | vms/readme.vms | 194 |
3 files changed, 460 insertions, 25 deletions
diff --git a/vms/build_libxml.com b/vms/build_libxml.com index 28f69c91..57a46e4c 100755 --- a/vms/build_libxml.com +++ b/vms/build_libxml.com @@ -1,51 +1,80 @@ $! BUILD_LIBXML.COM $! -$! Build the LIBXML object library +$! Build the LIBXML library $! -$! Ensure the logical name LIBXML is defined to point to the LIBXML source -$! directory. This procedure creates an object library LIBXML.OLB in the LIBXML -$! directory. After the library is built, you can link LIBXML routines into -$! your code with the command $ LINK your_modules,LIBXML:LIBXML.OLB/LIBRARY +$! Arguments: +$! +$! "NOWARN" - suppress known/expected warnings +$! "DEBUG" - build everythign in debug +$! +$! This procedure creates an object library XMLOLB:LIBXML.OLB directory. +$! After the library is built, you can link LIBXML routines into +$! your code with the command +$! +$! $ LINK your_modules,XMLOLB:LIBXML.OLB/LIBRARY $! +$! Change History +$! -------------- +$! Command file author : John A Fotheringham (jaf@jafsoft.com) +$! Last update : 2 Nov 2001 +$! $!- configuration ------------------------------------------------------------- $! $!- compile command. If p1="nowarn" suppress the expected warning types $! -$ cc_command = "CC/DEBUG/NOOPT" +$ if p1.eqs."DEBUG" .or. p2.eqs."DEBUG" +$ then +$ debug = "Y" +$ cc_command = "CC/DEBUG/NOOPT" +$ else +$ debug = "N" +$ cc_command = "CC" +$ endif $ if p1.eqs."NOWARN" then - cc_command = cc_command + "/WARN=DISABLE=(FLOATOVERFL,NOMAINUFLO)" $! $!- list of sources to be built into the LIBXML library. Compare this list -$! to the definition of "libxml2_la_SOURCES" in the file MAKEFILE. +$! to the definition of "libxml2_la_SOURCES" in the file MAKEFILE.IN. +$! Currently this definition includes the list WITH_TRIO_SOURCES_TRUE $! $ sources = "SAX.c entities.c encoding.c error.c parserInternals.c parser.c" $ sources = sources + " tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c valid.c" $ sources = sources + " xlink.c HTMLparser.c HTMLtree.c debugXML.c xpath.c " $ sources = sources + " xpointer.c xinclude.c nanohttp.c nanoftp.c " $ sources = sources + " DOCBparser.c catalog.c globals.c threads.c" -$! -$!- for VMS, we add in trio support -$! $ sources = sources + " trio.c strio.c" $! $!- list of main modules to compile and link. Compare this list to the -$! definition of bin_PROGRAMS in MAKEFILE. +$! definition of bin_PROGRAMS in MAKEFILE.IN $! $ bin_progs = "xmllint xmlcatalog" $! $!- list of test modules to compile and link. Compare this list to the $! definition of noinst_PROGRAMS in MAKEFILE. $! -$ test_progs = "testSAX testHTML testXPath testURI testDocbook" +$ test_progs = "testSAX testHTML testXPath testURI testDocbook testThreads" $! $!- set up build logicals -----------------------------------------------------\ $! +$ 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("xml_srcdir").eqs."" $ then -$ globfile = f$search("[...]globals.c") +$ globfile = f$search("[-...]globals.c") $ if globfile.eqs."" $ then -$ write sys$output "Can't locate globals.c. You need to define a XML_SRCDIR logical" +$ write sys$output "Can't locate globals.c. You need to manually define a XML_SRCDIR logical" +$ exit $ else $ srcdir = f$element(0,"]",globfile)+ "]" $ define/process xml_srcdir "''srcdir'" @@ -55,10 +84,10 @@ $ endif $! $ if f$trnlnm("libxml").eqs."" $ then -$ globfile = f$search("[...]globals.h") -$ if globfile.nes."" +$ globfile = f$search("[-...]globals.h") +$ if globfile.eqs."" $ then -$ write sys$output "Can't locate globals.h. You need to define a LIBXML logical" +$ write sys$output "Can't locate globals.h. You need to manually define a LIBXML logical" $ exit $ else $ includedir = f$element(0,"]",globfile)+ "]" @@ -79,14 +108,18 @@ $! object library $! $ set def xml_srcdir $ if f$search("DEBUG.DIR").eqs."" then create/dir [.DEBUG] -$ if f$search("LIBXML.OLB").eqs."" then library/create LIBXML.OLB +$ if f$search("XMLOLB:LIBXML.OLB").eqs."" +$ then +$ write sys$output "Creating new object library XMLOLB:LIBXML.OLB" +$ library/create XMLOLB:LIBXML.OLB +$ endif $! $ goto start_here $ start_here: ! move this line to debug/rerun parts of this command file $! $!- compile modules into the library ------------------------------------------ $! -$ lib_command = "LIBRARY/REPLACE LIBXML.OLB" +$ lib_command = "LIBRARY/REPLACE XMLOLB:LIBXML.OLB" $ link_command = "" $! $ write sys$output "" @@ -102,11 +135,18 @@ $ next_source = f$element (S_no," ",sources) $ if next_source.nes."" .and. next_source.nes." " $ then $! +$ on error then goto ERROR_OUT +$ on control_y then goto ERROR_OUT $ if next_source.eqs."xpath.c" $ then $ call build 'next_source' /IEEE_MODE=UNDERFLOW_TO_ZERO/FLOAT=IEEE $ else -$ call build 'next_source' +$ if next_source.eqs."trio.c" +$ then +$ call build 'next_source' /WARN=DISABLE=UNINIT1 +$ else +$ call build 'next_source' +$ endif $ endif $ s_no = s_no + 1 $ goto source_loop @@ -115,7 +155,7 @@ $ endif $! $!- now build self-test programs ---------------------------------------------- $! -$! these pograms are built as ordinary modules into LIBXML.OLB. Here they +$! these pograms are built as ordinary modules into XMLOLB:LIBXML.OLB. Here they $! are built a second time with /DEFINE=(STANDALONE) in which case a main() $! is also compiled into the module $ @@ -150,6 +190,8 @@ $ next_prog = f$element (p_no," ",all_progs) $ if next_prog.nes."" .and. next_prog.nes." " $ then $! +$ on error then goto ERROR_OUT +$ on control_y then goto ERROR_OUT $ call build 'next_prog'.c /IEEE_MODE=UNDERFLOW_TO_ZERO/FLOAT=IEEE $ p_no = p_no + 1 $ goto prog_loop @@ -158,6 +200,9 @@ $ endif $! $!- Th-th-th-th-th-that's all folks! ------------------------------------------ $! +$ goto exit_here ! move this line to avoid parts of this command file +$ exit_here: +$! $ exit $ goto exit_out $! @@ -183,10 +228,12 @@ $ name = f$element(0,".",source_file) $ object_file = f$fao("[.debug]!AS.OBJ",name) $! $!- compile -$ write sys$output "Compiling ",p1,p2,"..." -$ cc_command /object='object_file 'source_file' 'p2' +$! +$ write sys$output "Compiling ",p1," ",p2,"..." +$ cc_command'p2' /object='object_file 'source_file' $! $!- insert into library if command defined +$! $ if lib_command.nes."" then lib_command 'object_file' $! $!- link module if command defined @@ -194,8 +241,10 @@ $ if link_command.nes."" $ then $ text = f$element(0,".",p1) ! lose the ".c" $ write sys$output "Linking ",text,"..." -$ link_command 'object_file',- - []libxml.olb/library +$ opts = "" +$ if debug then opts = "/DEBUG" +$ link_command'opts' 'object_file',- + XMLOLB:libxml.olb/library $ endif $! $EXIT_BUILD: diff --git a/vms/diffs.vms b/vms/diffs.vms new file mode 100644 index 00000000..5402910c --- /dev/null +++ b/vms/diffs.vms @@ -0,0 +1,192 @@ +-------------------------------------------------------------------------- +GLOBALS.C + +105a106 +> int xmlDoValidityCheckingDefaultValue = 0; +111,121c112,113 +< #if defined(VMS) || defined(__VMS) +< #define PLATFORM_VMS +< /* int xmlDoValidityCheckingDefaultVal = 0; +< * int xmlSubstituteEntitiesDefaultVal = 0; +< */ +< #define xmlDoValidityCheckingDefaultValue xmlDoValidityCheckingDefaultVal +< #define xmlSubstituteEntitiesDefaultValue xmlSubstituteEntitiesDefaultVal +< #else +< int xmlDoValidityCheckingDefaultValue = 0; +< int xmlSubstituteEntitiesDefaultValue = 0; +< #endif +--- +> int xmlSubstituteEntitiesDefaultValue = 0; +> +289,291d280 +< #ifdef PLATFORM_VMS +< gs->xmlDoValidityCheckingDefaultVal = 0; +< #else +293,294d281 +< #endif +< +316,318d302 +< #ifdef PLATFORM_VMS +< gs->xmlSubstituteEntitiesDefaultVal = 0; +< #else +320d303 +< #endif +404,419c387,390 +< #ifdef PLATFORM_VMS +< extern int xmlDoValidityCheckingDefaultVal; +< #undef xmlDoValidityCheckingDefaultVal +< int * +< __xmlDoValidityCheckingDefVal(void) { +< if (IS_MAIN_THREAD) +< return (&xmlDoValidityCheckingDefaultVal); +< else +< return (&xmlGetGlobalState()->xmlDoValidityCheckingDefaultVal); +< } +< #define __xmlDoValidityCheckingDefaultValue __xmlDoValidityCheckingDefVal +< #else +< extern int xmlDoValidityCheckingDefaultValue; +< #undef xmlDoValidityCheckingDefaultValue +< int * +< __xmlDoValidityCheckingDefaultValue(void) { +--- +> extern int xmlDoValidityCheckingDefaultValue; +> #undef xmlDoValidityCheckingDefaultValue +> int * +> __xmlDoValidityCheckingDefaultValue(void) { +424,425c395 +< } +< #endif +--- +> } +577,592c547,550 +< #ifdef PLATFORM_VMS +< extern int xmlSubstituteEntitiesDefaultVal; +< #undef xmlSubstituteEntitiesDefaultVal +< int * +< __xmlSubsEntitiesDefaultValue(void) { +< if (IS_MAIN_THREAD) +< return (&xmlSubstituteEntitiesDefaultVal); +< else +< return (&xmlGetGlobalState()->xmlSubstituteEntitiesDefaultVal); +< } +< #define __xmlSubstituteEntitiesDefaultValue __xmlSubsEntitiesDefaultValue +< #else +< extern int xmlSubstituteEntitiesDefaultValue; +< #undef xmlSubstituteEntitiesDefaultValue +< int * +< __xmlSubstituteEntitiesDefaultValue(void) { +--- +> extern int xmlSubstituteEntitiesDefaultValue; +> #undef xmlSubstituteEntitiesDefaultValue +> int * +> __xmlSubstituteEntitiesDefaultValue(void) { +597,598c555 +< } +< #endif +--- +> } + + +-------------------------------------------------------------------------- +TRIO.C +113,116d112 +< #if defined(VMS) || defined(__VMS) +< # include <unistd.h> +< #endif /* Platform is VMS */ +< +123d118 +< + + +-------------------------------------------------------------------------- +GLOBALS.H +78,86c78,79 +< #if defined(VMS) || defined(__VMS) +< int xmlSubstituteEntitiesDefaultVal; /* 31 character name limit */ +< int xmlDoValidityCheckingDefaultVal; +< #define xmlSubstituteEntitiesDefaultValue xmlSubstituteEntitiesDefaultVal +< #define xmlDoValidityCheckingDefaultValue xmlDoValidityCheckingDefaultVal +< #else +< int xmlSubstituteEntitiesDefaultValue; +< int xmlDoValidityCheckingDefaultValue; +< #endif +--- +> int xmlSubstituteEntitiesDefaultValue; +> int xmlDoValidityCheckingDefaultValue; +211,226c204,209 +< #if defined(VMS) || defined(__VMS) +< #ifdef LIBXML_THREAD_ENABLED +< extern int *__xmlDoValidityCheckingDefaultVal(void); +< #define xmlDoValidityCheckingDefaultVal \ +< (*(__xmlDoValidityCheckingDefaultVal())) +< #else +< LIBXML_DLL_IMPORT extern int xmlDoValidityCheckingDefaultVal; +< #endif +< #else +< #ifdef LIBXML_THREAD_ENABLED +< extern int *__xmlDoValidityCheckingDefaultValue(void); +< #define xmlDoValidityCheckingDefaultValue \ +< (*(__xmlDoValidityCheckingDefaultValue())) +< #else +< LIBXML_DLL_IMPORT extern int xmlDoValidityCheckingDefaultValue; +< #endif +--- +> #ifdef LIBXML_THREAD_ENABLED +> extern int *__xmlDoValidityCheckingDefaultValue(void); +> #define xmlDoValidityCheckingDefaultValue \ +> (*(__xmlDoValidityCheckingDefaultValue())) +> #else +> LIBXML_DLL_IMPORT extern int xmlDoValidityCheckingDefaultValue; +317,332c300,305 +< #if defined(VMS) || defined(__VMS) +< #ifdef LIBXML_THREAD_ENABLED +< extern int *__xmlSubsEntitiesDefaultValue(void); +< #define xmlSubsEntitiesDefaultValue \ +< (*(__xmlSubsEntitiesDefaultValue())) +< #else +< LIBXML_DLL_IMPORT extern int xmlSubsEntitiesDefaultValue; +< #endif +< #else +< #ifdef LIBXML_THREAD_ENABLED +< extern int *__xmlSubstituteEntitiesDefaultValue(void); +< #define xmlSubstituteEntitiesDefaultValue \ +< (*(__xmlSubstituteEntitiesDefaultValue())) +< #else +< LIBXML_DLL_IMPORT extern int xmlSubstituteEntitiesDefaultValue; +< #endif +--- +> #ifdef LIBXML_THREAD_ENABLED +> extern int *__xmlSubstituteEntitiesDefaultValue(void); +> #define xmlSubstituteEntitiesDefaultValue \ +> (*(__xmlSubstituteEntitiesDefaultValue())) +> #else +> LIBXML_DLL_IMPORT extern int xmlSubstituteEntitiesDefaultValue; + + +-------------------------------------------------------------------------- +XMLIO.H +79,82d78 +< #if defined(VMS) || defined(__VMS) +< void xmlRegisterDefInputCallbacks (void); +< #define xmlRegisterDefaultInputCallbacks xmlRegisterDefInputCallbacks +< #else +84d79 +< #endif +130,133d124 +< #if defined(VMS) || defined(__VMS) +< void xmlRegisterDefOutputCallbacks(void); +< #define xmlRegisterDefaultOutputCallbacks xmlRegisterDefOutputCallbacks +< #else +135,136d125 +< #endif +< + +-------------------------------------------------------------------------- +XPATHINTERNALS.H +433,436d432 +< #if defined(VMS) || defined(__VMS) +< void xmlXPathRegisteredVarsCleanup(xmlXPathContextPtr ctxt); +< #define xmlXPathRegisteredVariablesCleanup xmlXPathRegisteredVarsCleanup +< #else +438d433 +< #endif diff --git a/vms/readme.vms b/vms/readme.vms new file mode 100644 index 00000000..9fe045b0 --- /dev/null +++ b/vms/readme.vms @@ -0,0 +1,194 @@ +Issues in porting libxml to VMS +=============================== + +Here's a summary of the issues I encountered when building LIBXML under +VMS. There was some VMS support in the version I got, but it was a little +out of date with the result that some newer files had problems. + +I present this list "as is" to hopefully act as a guide to anyone having +problems in the future. + +That's it. Good luck! + +John A Fotheringham (jaf@jafsoft.com) +October 2001 + + +Installation kit +---------------- + +- File attributes. Having downloaded essentially a Unix distribution, some + of the file attributes weren't 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_LIBXML.COM - a build command file, which I've radically re-worked + CONFIG.VMS - a configuration file to replace config.h + +- Don't execute BUILD_LIBXML.COM until you've done all the following + + - read these notes + - copied CONFIG.VMS to CONFIG.H + - reviewed the configuration section of BUILD_LIBXML.COM, and in particular + updated the module lists in line with MAKEFILE + - edited XMLVERSION.H so that WITH_TRIO is defined + - identified the location of the include files, so that you can manually + set the LIBXML logical if need be. + - re-read these notes :-p + + instructions for all these steps are below. + +- the file [.vms]config.vms should be used to replace config.h. This file + contains a number of define statements that identify the software options + required under VMS + +- The include files are in a [.INCLUDE.LIBXML] subdirectory. You need + a logical "libxml" to point to this so that include statements of the + form + + #include <libxml/parser.h> + + will work correctly. The source files are mostly two levels above this + directory, although there are some .h files there as well. + +- The command file BUILD_LIBXML.COM will do the following + + - setup some logicals + - set def to the source directory + - compile modules and place them into a LIBXML.OLB library + - compile and link a number of self-test programs + - compile and link a number of utilities and test programs + - 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 the Unix MAKEFILE. Instructions are contained + in the command file itself. + + The command file will attempt to set two logicals + + - xml_srcdir. The directory containing the source files + - libxml. The include file directory. + + It attempts this by looking for modules globals.c and globals.h in + nearby directories. If this logic fails, you'll need to manually define + these logicals. + + +The TRIO package +---------------- +- A sub-package TRIO is used to provide some functions not naturally available + under VMS. These include support for infinite and undefined numbers, + and specialised print functions like "snprintf" + + I had to make several changes to trionan.c in discussion with the author + (hopefully these are now included in the distro, so I won't list them here) + + To build this software we need to add + + /IEEE_MODE=UNDERFLOW_TO_ZERO/FLOAT=IEEE + + to the compile command for xpath.c and trio.c, and to any main program + that uses this functionality. BUILD_LIBXML.COM should do this for you. + +- to build in trio support you need the define WITH_TRIO to be set. This + is done by editing xmlversion.h + + +Compiler and linker errors +-------------------------- +- the DEC C compiler will produce a number of warnings when compiling the + C code. These include + + - Implicit function warnings. These indicate functions whose type is + not defined in a .h file. This will probably only happen if your + configuration is not correct (e.g. for "snprintf" if you haven't + edited xmlversion.h to set WITH_TRIO + + These messages also occur for "read" and "write" when compiling trio.c + + - uninitialised variables. Not usually a problem. You can solve this + by editing the code to initialise the variables affected + + and with respect to the trionan code + + - no main module for UNDERFLOW_TO_ZERO + - float overflow when compiling trionan.c STANDALONE + + You can suppress these "expected" messages by using the compile command + + $ CC /WARN=DISABLE=(FLOATOVERFL,NOMAINUFLO) + + This can be achieved by specifying "NOWARN" as the first command + parameter to BUILD_LIBXML as follows + + $ @BUILD_LIBXML NOWARN + +- 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 + is compiled. + + I'm not sure what the solution for this is, but this is a fairly benign error. + + +Changes made to the codebase +---------------------------- +- I changed all dummy declarations in trio.c to be + + va_list dummy = NULL; + + to prevent compiler whinge in TRIO.C about uninitialised variables + +- I had to add the following to nanoftp.c + + #if defined(VMS) || defined(__VMS) + #define SOCKLEN_T unsigned int + #endif + + This matches similar lines already added to nanohttp.c + +- Several variables and function names exceed the 31 character limit + used in VMS. This leads to compiler warnings. The solution adopted + has been + + a) where variables or functions are defined, set up an ifdef on VMS + to define a variable/function of a shorter name. This may need to + be done in the .h file, and in the implementation .c file + + b) use define statements to map the long name onto a shorter name. That + way all future code can refer to the function/variable by the long name, + reducing the need to add VMS-specific code everywhere. + + In the current distro, I had to do this for the following names + + in globals.c, parserinternals.c, globals.h, parser.h + xmlSubstituteEntitiesDefaultValue + xmlDoValidityCheckingDefaultValue + + in globals.c, globals.h + __xmlDoValidityCheckingDefaultValue + + in xmlio.c, xmlio.h + xmlRegisterDefaultInputCallbacks + xmlRegisterDefaultOutputCallbacks + + in xpath.c and xpathinternals.h + xmlXPathRegisteredVariablesCleanup + |