Annotation of embedaddon/libxml2/vms/build_libxml.com, revision 1.1
1.1 ! misho 1: $! BUILD_LIBXML.COM
! 2: $!
! 3: $! Build the LIBXML library
! 4: $!
! 5: $! Arguments:
! 6: $!
! 7: $! "DEBUG" - build everything in debug
! 8: $!
! 9: $! This procedure creates an object library XML_LIBDIR:LIBXML.OLB directory.
! 10: $! After the library is built, you can link LIBXML routines into
! 11: $! your code with the command
! 12: $!
! 13: $! $ LINK your_modules,XML_LIBDIR:LIBXML.OLB/LIBRARY
! 14: $!
! 15: $! Change History
! 16: $! --------------
! 17: $! Command file author : John A Fotheringham (jaf@jafsoft.com)
! 18: $! Update history : 19 March 2008 Tycho Hilhorst
! 19: $! - added module schematron.c (prevent xmllint errors)
! 20: $! - added /DEF and /INCLUDE options to cc_opts to tell
! 21: $! config.h is available, and where to find it
! 22: $! : 13 October 2003 Craig Berry (craigberry@mac.com)
! 23: $! more new module additions
! 24: $! : 25 April 2003 Craig Berry (craigberry@mac.com)
! 25: $! added xmlreader.c and relaxng.c to source list
! 26: $! : 28 September 2002 Craig Berry (craigberry@mac.com)
! 27: $! updated to work with current sources
! 28: $! miscellaneous enhancements to build process
! 29: $!
! 30: $!- configuration -------------------------------------------------------------
! 31: $!
! 32: $!- compile command. If p1="nowarn" suppress the expected warning types
! 33: $!
! 34: $ cc_opts = "/DEF=HAVE_CONFIG_H/NAMES=(SHORTENED)/FLOAT=IEEE/IEEE_MODE=DENORM_RESULTS/INCLUDE=xml_srcdir"
! 35: $!
! 36: $ if p1.eqs."DEBUG" .or. p2.eqs."DEBUG"
! 37: $ then
! 38: $ debug = "Y"
! 39: $ cc_command = "CC''cc_opts'/DEBUG/NOOPTIMIZE/LIST/SHOW=ALL"
! 40: $ else
! 41: $ debug = "N"
! 42: $ cc_command = "CC''cc_opts'"
! 43: $ endif
! 44: $!
! 45: $!- list of sources to be built into the LIBXML library. Compare this list
! 46: $! to the definition of "libxml2_la_SOURCES" in the file MAKEFILE.IN.
! 47: $! Currently this definition includes the list WITH_TRIO_SOURCES_TRUE
! 48: $!
! 49: $ sources = "SAX.c entities.c encoding.c error.c parserInternals.c"
! 50: $ sources = sources + " parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c"
! 51: $ sources = sources + " valid.c xlink.c HTMLparser.c HTMLtree.c debugXML.c xpath.c"
! 52: $ sources = sources + " xpointer.c xinclude.c nanohttp.c nanoftp.c DOCBparser.c"
! 53: $ sources = sources + " catalog.c globals.c threads.c c14n.c xmlstring.c"
! 54: $ sources = sources + " xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c"
! 55: $ sources = sources + " triostr.c trio.c xmlreader.c relaxng.c dict.c SAX2.c"
! 56: $ sources = sources + " xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c"
! 57: $ sources = sources + " schematron.c"
! 58: $!
! 59: $!- list of main modules to compile and link. Compare this list to the
! 60: $! definition of bin_PROGRAMS in MAKEFILE.IN
! 61: $!
! 62: $ bin_progs = "xmllint xmlcatalog"
! 63: $!
! 64: $!- list of test modules to compile and link. Compare this list to the
! 65: $! definition of noinst_PROGRAMS in MAKEFILE.
! 66: $!
! 67: $ noinst_PROGRAMS = "testSchemas testRelax testSAX testHTML testXPath testURI " -
! 68: + "testThreads testC14N testAutomata testRegexp testReader"
! 69: $!
! 70: $!- set up build logicals -----------------------------------------------------\
! 71: $!
! 72: $!
! 73: $!- start from where the procedure is in case it's submitted in batch ----------\
! 74: $!
! 75: $ whoami = f$parse(f$environment("PROCEDURE"),,,,"NO_CONCEAL")
! 76: $ procdir = f$parse(whoami,,,"DEVICE") + f$parse(whoami,,,"DIRECTORY")
! 77: $ set default 'procdir'
! 78: $!
! 79: $ if f$trnlnm("XML_LIBDIR").eqs.""
! 80: $ then
! 81: $ if f$search("[-]lib.dir") .eqs. ""
! 82: $ then
! 83: $ create/directory/log [-.lib]
! 84: $ endif
! 85: $ xml_libdir = f$parse("[-.lib]",,,"DEVICE") + f$parse("[-.lib]",,,"DIRECTORY")
! 86: $ define/process XML_LIBDIR 'xml_libdir'
! 87: $ write sys$output "Defining XML_LIBDIR as """ + f$trnlnm("XML_LIBDIR") + """
! 88: $ endif
! 89: $!
! 90: $ if f$trnlnm("XML_SRCDIR").eqs.""
! 91: $ then
! 92: $ globfile = f$search("[-...]globals.c")
! 93: $ if globfile.eqs.""
! 94: $ then
! 95: $ write sys$output "Can't locate globals.c. You need to manually define a XML_SRCDIR logical"
! 96: $ exit
! 97: $ else
! 98: $ srcdir = f$parse(globfile,,,"DEVICE") + f$parse(globfile,,,"DIRECTORY")
! 99: $ define/process XML_SRCDIR "''srcdir'"
! 100: $ write sys$output "Defining XML_SRCDIR as ""''srcdir'"""
! 101: $ endif
! 102: $ endif
! 103: $!
! 104: $ copy/log config.vms xml_srcdir:config.h
! 105: $!
! 106: $ if f$trnlnm("libxml").eqs.""
! 107: $ then
! 108: $ globfile = f$search("[-...]globals.h")
! 109: $ if globfile.eqs.""
! 110: $ then
! 111: $ write sys$output "Can't locate globals.h. You need to manually define a LIBXML logical"
! 112: $ exit
! 113: $ else
! 114: $ includedir = f$parse(globfile,,,"DEVICE") + f$parse(globfile,,,"DIRECTORY")
! 115: $ define/process libxml "''includedir'"
! 116: $ write sys$output "Defining libxml as ""''includedir'"""
! 117: $ endif
! 118: $ endif
! 119: $!
! 120: $!- set up error handling (such as it is) -------------------------------------
! 121: $!
! 122: $ exit_status = 1
! 123: $ saved_default = f$environment("default")
! 124: $ on error then goto ERROR_OUT
! 125: $ on control_y then goto ERROR_OUT
! 126: $!
! 127: $!- move to the source directory and create any necessary subdirs and the
! 128: $! object library
! 129: $!
! 130: $ set default xml_srcdir
! 131: $ if f$search("DEBUG.DIR").eqs."" then create/dir [.DEBUG]
! 132: $ if f$search("XML_LIBDIR:LIBXML.OLB").eqs.""
! 133: $ then
! 134: $ write sys$output "Creating new object library XML_LIBDIR:LIBXML.OLB"
! 135: $ library/create XML_LIBDIR:LIBXML.OLB
! 136: $ endif
! 137: $!
! 138: $ goto start_here
! 139: $ start_here: ! move this line to debug/rerun parts of this command file
! 140: $!
! 141: $!- compile modules into the library ------------------------------------------
! 142: $!
! 143: $ lib_command = "LIBRARY/REPLACE/LOG XML_LIBDIR:LIBXML.OLB"
! 144: $ link_command = ""
! 145: $!
! 146: $ write sys$output ""
! 147: $ write sys$output "Building modules into the LIBXML object library"
! 148: $ write sys$output ""
! 149: $!
! 150: $ s_no = 0
! 151: $ sources = f$edit(sources,"COMPRESS")
! 152: $!
! 153: $ source_loop:
! 154: $!
! 155: $ next_source = f$element (S_no," ",sources)
! 156: $ if next_source.nes."" .and. next_source.nes." "
! 157: $ then
! 158: $!
! 159: $ on error then goto ERROR_OUT
! 160: $ on control_y then goto ERROR_OUT
! 161: $ call build 'next_source'
! 162: $ s_no = s_no + 1
! 163: $ goto source_loop
! 164: $!
! 165: $ endif
! 166: $!
! 167: $!- now build self-test programs ----------------------------------------------
! 168: $!
! 169: $! these programs are built as ordinary modules into XML_LIBDIR:LIBXML.OLB. Here they
! 170: $! are built a second time with /DEFINE=(STANDALONE) in which case a main()
! 171: $! is also compiled into the module
! 172: $
! 173: $ lib_command = ""
! 174: $ link_command = "LINK"
! 175: $!
! 176: $ library/compress XML_LIBDIR:LIBXML.OLB
! 177: $ purge XML_LIBDIR:LIBXML.OLB
! 178: $!
! 179: $ write sys$output ""
! 180: $ write sys$output "Building STANDALONE self-test programs"
! 181: $ write sys$output ""
! 182: $!
! 183: $ call build NANOFTP.C /DEFINE=(STANDALONE)
! 184: $ call build NANOHTTP.C /DEFINE=(STANDALONE)
! 185: $ call build TRIONAN.C /DEFINE=(STANDALONE)
! 186: $!
! 187: $!- now build main and test programs ------------------------------------------
! 188: $!
! 189: $!
! 190: $ lib_command = ""
! 191: $ link_command = "LINK"
! 192: $!
! 193: $ write sys$output ""
! 194: $ write sys$output "Building main programs and test programs"
! 195: $ write sys$output ""
! 196: $!
! 197: $ p_no = 0
! 198: $ all_progs = bin_progs + " " + noinst_PROGRAMS
! 199: $ all_progs = f$edit(all_progs,"COMPRESS")
! 200: $!
! 201: $ prog_loop:
! 202: $!
! 203: $ next_prog = f$element (p_no," ",all_progs)
! 204: $ if next_prog.nes."" .and. next_prog.nes." "
! 205: $ then
! 206: $!
! 207: $ on error then goto ERROR_OUT
! 208: $ on control_y then goto ERROR_OUT
! 209: $ call build 'next_prog'.c
! 210: $ p_no = p_no + 1
! 211: $ goto prog_loop
! 212: $!
! 213: $ endif
! 214: $!
! 215: $!- Th-th-th-th-th-that's all folks! ------------------------------------------
! 216: $!
! 217: $ goto exit_here ! move this line to avoid parts of this command file
! 218: $ exit_here:
! 219: $!
! 220: $ exit
! 221: $ goto exit_out
! 222: $!
! 223: $!
! 224: $EXIT_OUT:
! 225: $!
! 226: $ purge/nolog [.debug]
! 227: $ set default 'saved_default
! 228: $ exit 'exit_status
! 229: $!
! 230: $
! 231: $ERROR_OUT:
! 232: $ exit_status = $status
! 233: $ write sys$output "''f$message(exit_status)'"
! 234: $ goto EXIT_OUT
! 235: $!
! 236: $!- the BUILD subroutine. Compile then insert into library or link as required
! 237: $!
! 238: $BUILD: subroutine
! 239: $ on warning then goto EXIT_BUILD
! 240: $ source_file = p1
! 241: $ name = f$parse(source_file,,,"NAME")
! 242: $ object_file = f$parse("[.debug].OBJ",name,,,"SYNTAX_ONLY")
! 243: $!
! 244: $!- compile
! 245: $!
! 246: $ write sys$output "''cc_command'''p2'/object=''object_file' ''source_file'"
! 247: $ cc_command'p2' /object='object_file 'source_file'
! 248: $!
! 249: $!- insert into library if command defined
! 250: $!
! 251: $ if lib_command.nes."" then lib_command 'object_file'
! 252: $!
! 253: $!- link module if command defined
! 254: $ if link_command.nes.""
! 255: $ then
! 256: $ opts = ""
! 257: $ if debug then opts = "/DEBUG"
! 258: $ write sys$output "''link_command'''opts' ''object_file',XML_LIBDIR:libxml.olb/library"
! 259: $ link_command'opts' 'object_file',-
! 260: XML_LIBDIR:libxml.olb/library
! 261: $ endif
! 262: $!
! 263: $EXIT_BUILD:
! 264: $ exit $status
! 265: $!
! 266: $endsubroutine
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>