build_libxml.com 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  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