Home | History | Annotate | Download | only in vms
      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 = "/nowarn/DEF=HAVE_CONFIG_H/NAMES=(as_is,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 = "parser.c SAX.c entities.c encoding.c error.c parserInternals.c"
     50 $   sources = sources + " 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 xmlmodule.c buf.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 $!   copy/log xmlversion.h [-.include.libxml]
    106 $!
    107 $   if f$trnlnm("libxml").eqs.""
    108 $   then
    109 $     globfile = f$search("[-...]globals.h")
    110 $     if globfile.eqs.""
    111 $     then
    112 $	write sys$output "Can't locate globals.h.  You need to manually define a LIBXML logical"
    113 $	exit
    114 $     else
    115 $	includedir = f$parse(globfile,,,"DEVICE") + f$parse(globfile,,,"DIRECTORY")
    116 $	define/process libxml "''includedir'"
    117 $       write sys$output "Defining libxml as ""''includedir'"""
    118 $     endif
    119 $   endif
    120 $!
    121 $!- set up error handling (such as it is) -------------------------------------
    122 $!
    123 $ exit_status = 1
    124 $ saved_default = f$environment("default")
    125 $ on error then goto ERROR_OUT
    126 $ on control_y then goto ERROR_OUT
    127 $!
    128 $!- move to the source directory and create any necessary subdirs and the
    129 $!  object library
    130 $!
    131 $ set default xml_srcdir
    132 $ if f$search("DEBUG.DIR").eqs."" then create/dir [.DEBUG]
    133 $ if f$search("XML_LIBDIR:LIBXML.OLB").eqs.""
    134 $ then
    135 $   write sys$output "Creating new object library XML_LIBDIR:LIBXML.OLB"
    136 $   library/create XML_LIBDIR:LIBXML.OLB
    137 $ endif
    138 $!
    139 $ goto start_here
    140 $ start_here:	  ! move this line to debug/rerun parts of this command file
    141 $!
    142 $!- compile modules into the library ------------------------------------------
    143 $!
    144 $ lib_command   = "LIBRARY/REPLACE/LOG XML_LIBDIR:LIBXML.OLB"
    145 $ link_command	= ""
    146 $!
    147 $ write sys$output ""
    148 $ write sys$output "Building modules into the LIBXML object library"
    149 $ write sys$output ""
    150 $!
    151 $ s_no = 0
    152 $ sources = f$edit(sources,"COMPRESS")
    153 $!
    154 $ source_loop:
    155 $!
    156 $   next_source = f$element (S_no," ",sources)
    157 $   if next_source.nes."" .and. next_source.nes." "
    158 $   then
    159 $!
    160 $     on error then goto ERROR_OUT
    161 $     on control_y then goto ERROR_OUT
    162 $     call build 'next_source'
    163 $     s_no = s_no + 1
    164 $     goto source_loop
    165 $!
    166 $   endif
    167 $!
    168 $!- now build self-test programs ----------------------------------------------
    169 $!
    170 $! these programs are built as ordinary modules into XML_LIBDIR:LIBXML.OLB.  Here they
    171 $! are built a second time with /DEFINE=(STANDALONE) in which case a main()
    172 $! is also compiled into the module
    173 $
    174 $ lib_command	= ""
    175 $ link_command	= "LINK"
    176 $!
    177 $ library/compress XML_LIBDIR:LIBXML.OLB
    178 $ purge XML_LIBDIR:LIBXML.OLB
    179 $!
    180 $ write sys$output ""
    181 $ write sys$output "Building STANDALONE self-test programs"
    182 $ write sys$output ""
    183 $!
    184 $ call build NANOFTP.C	/DEFINE=(STANDALONE)
    185 $ call build NANOHTTP.C	/DEFINE=(STANDALONE)
    186 $ call build TRIONAN.C	/DEFINE=(STANDALONE)
    187 $!
    188 $!- now build main and test programs ------------------------------------------
    189 $!
    190 $!
    191 $ lib_command	= ""
    192 $ link_command	= "LINK"
    193 $!
    194 $ write sys$output ""
    195 $ write sys$output "Building main programs and test programs"
    196 $ write sys$output ""
    197 $!
    198 $ p_no = 0
    199 $ all_progs = bin_progs + " " + noinst_PROGRAMS
    200 $ all_progs = f$edit(all_progs,"COMPRESS")
    201 $!
    202 $ prog_loop:
    203 $!
    204 $   next_prog = f$element (p_no," ",all_progs)
    205 $   if next_prog.nes."" .and. next_prog.nes." "
    206 $   then
    207 $!
    208 $     on error then goto ERROR_OUT
    209 $     on control_y then goto ERROR_OUT
    210 $     call build 'next_prog'.c
    211 $     p_no = p_no + 1
    212 $     goto prog_loop
    213 $!
    214 $   endif
    215 $!
    216 $!- Th-th-th-th-th-that's all folks! ------------------------------------------
    217 $!
    218 $ goto exit_here ! move this line to avoid parts of this command file
    219 $ exit_here:
    220 $!
    221 $ exit
    222 $ goto exit_out
    223 $!
    224 $!
    225 $EXIT_OUT:
    226 $!
    227 $ purge/nolog [.debug]
    228 $ set default 'saved_default
    229 $ exit 'exit_status
    230 $!
    231 $
    232 $ERROR_OUT:
    233 $ exit_status = $status
    234 $ write sys$output "''f$message(exit_status)'"
    235 $ goto EXIT_OUT
    236 $!
    238 $!- the BUILD subroutine.  Compile then insert into library or link as required
    239 $!
    240 $BUILD: subroutine
    241 $   on warning then goto EXIT_BUILD
    242 $   source_file = p1
    243 $   name = f$parse(source_file,,,"NAME")
    244 $   object_file = f$parse("[.debug].OBJ",name,,,"SYNTAX_ONLY")
    245 $!
    246 $!- compile
    247 $!
    248 $   write sys$output "''cc_command'''p2'/object=''object_file' ''source_file'"
    249 $   cc_command'p2' /object='object_file 'source_file'
    250 $!
    251 $!- insert into library if command defined
    252 $!
    253 $   if lib_command.nes.""  then lib_command 'object_file'
    254 $!
    255 $!- link module if command defined
    256 $   if link_command.nes.""
    257 $   then
    258 $	opts = ""
    259 $	if debug then opts = "/DEBUG"
    260 $	write sys$output "''link_command'''opts' ''object_file',XML_LIBDIR:libxml.olb/library"
    261 $	if f$search( "sys$library:iconv.olb" ) .eqs. ""
    262 $	then
    263 $	  link_command'opts' 'object_file',-
    264       		XML_LIBDIR:libxml.olb/library
    265 $	else
    266 $	  link_command'opts' 'object_file',-
    267       		XML_LIBDIR:libxml.olb/library,sys$library:iconv/lib
    268 $	endif
    269 $   endif
    270 $!
    271 $EXIT_BUILD:
    272 $   exit $status
    273 $!
    274 $endsubroutine
    275