[xml] [PATCH 2.4.25] VMS build update

The patch attached here as a GNU unified diff is a revision of John Fotheringham's work of about a year ago (and whatever he inherited from before that) to get libxml2 to build on VMS. Some changes to the build procedure were necessary because of other changes in the intervening year, but I've also taken a different approach to some aspects of the port in order to improve maintainability. As much as possible I've moved VMS support into the vms/ subdirectory instead of being scattered about everywhere.

The most significant change is that I changed the way we shorten symbol names longer than 31 characters; there is a compiler option to do this in all versions of the DEC/Compaq/HP C compiler released in the last five years or so, and by letting the compiler handle it we can get rid of the VMS-specific macro definitions scattered all over the sources.

Here are the other changes in no particular order:

htmlparser.c, parser.c, and uri.c each gets one small code tweak to avoid compiler warnings about mixing signed and unsigned values.

trionan.c failed to compile because a couple of commas in argument lists were missing (no one's built using WITH_TRIO recently?). The patch inserts the commas.

triodef.h has been fixed so it no longer assumes that a DEC C compiler implies Tru64 since it could mean either Tru64 or OpenVMS.

triodef.h undef's C99 support for VMS since even though recent versions of the compiler report a _STDC_VER of 1999L, the C run-time is still missing functions like nan() and strtof().

vms/build_libxml.com has been pretty thoroughly worked over to improve robustness and get rid of all the special cases to handle compiler errors and warnings. The code has been fixed so none of that is necessary anymore. New modules added in the last year have also been added to the list of what gets built.

vms/readme.vms has been updated to reflect other changes.

vms/config.vms had a spurious carriage return at the end of every line as if it had been created under Windows and then transferred in binary. The patch thus replaces every line of that file even when nothing is different except the line ending. Ugly (it inflates the patch significantly) but it should do the trick.

I think that's pretty much everything. After the patch I get a clean build using Compaq C 6.4 or 6.5 under OpenVMS Alpha 7.2-1, 7.3, and 7.3-1.

Things not addressed in the patch:

The file vms/diffs.vms is now out of date. My opinion is that it should be removed from the repository since there are other ways to see what changes have been made (there's a cvs browser, right?). If someone feels strongly that it should stay, then my patch attached here should replace it.

I started to port the test suite until I realized all of the result files use UNIX syntax in filenames that show up in error messages. How has this been handled on other non-UNIX platforms, or has the test suite never been ported?

It would be nice to build a shareable image (DLL, dynamic library, or whatever you call it); maybe I'll get to that one of these days.

I am happy to discuss/explain further any of the above.  Enjoy.

Attachment: libxml_vms_update.gz
Description: application/gzip

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]