Annotation of embedaddon/libxml2/vms/build_libxml.com, revision 1.1.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>