Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 1 | $! BUILD_LIBXML.COM |
| 2 | $! |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 3 | $! Build the LIBXML library |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 4 | $! |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 5 | $! Arguments: |
| 6 | $! |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 7 | $! "DEBUG" - build everything in debug |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 8 | $! |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 9 | $! This procedure creates an object library XML_LIBDIR:LIBXML.OLB directory. |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 10 | $! After the library is built, you can link LIBXML routines into |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 11 | $! your code with the command |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 12 | $! |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 13 | $! $ LINK your_modules,XML_LIBDIR:LIBXML.OLB/LIBRARY |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 14 | $! |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 15 | $! Change History |
| 16 | $! -------------- |
| 17 | $! Command file author : John A Fotheringham (jaf@jafsoft.com) |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 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) |
Daniel Veillard | 9339b74 | 2003-10-15 08:18:00 +0000 | [diff] [blame] | 23 | $! more new module additions |
| 24 | $! : 25 April 2003 Craig Berry (craigberry@mac.com) |
Daniel Veillard | 1c96027 | 2003-04-25 23:12:22 +0000 | [diff] [blame] | 25 | $! added xmlreader.c and relaxng.c to source list |
| 26 | $! : 28 September 2002 Craig Berry (craigberry@mac.com) |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 27 | $! updated to work with current sources |
| 28 | $! miscellaneous enhancements to build process |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 29 | $! |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 30 | $!- configuration ------------------------------------------------------------- |
| 31 | $! |
| 32 | $!- compile command. If p1="nowarn" suppress the expected warning types |
| 33 | $! |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 34 | $ cc_opts = "/DEF=HAVE_CONFIG_H/NAMES=(SHORTENED)/FLOAT=IEEE/IEEE_MODE=DENORM_RESULTS/INCLUDE=xml_srcdir" |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 35 | $! |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 36 | $ if p1.eqs."DEBUG" .or. p2.eqs."DEBUG" |
| 37 | $ then |
| 38 | $ debug = "Y" |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 39 | $ cc_command = "CC''cc_opts'/DEBUG/NOOPTIMIZE/LIST/SHOW=ALL" |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 40 | $ else |
| 41 | $ debug = "N" |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 42 | $ cc_command = "CC''cc_opts'" |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 43 | $ endif |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 44 | $! |
| 45 | $!- list of sources to be built into the LIBXML library. Compare this list |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 46 | $! to the definition of "libxml2_la_SOURCES" in the file MAKEFILE.IN. |
| 47 | $! Currently this definition includes the list WITH_TRIO_SOURCES_TRUE |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 48 | $! |
Daniel Veillard | 4edd3ed | 2004-09-20 20:03:01 +0000 | [diff] [blame] | 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" |
Daniel Veillard | 9339b74 | 2003-10-15 08:18:00 +0000 | [diff] [blame] | 55 | $ sources = sources + " triostr.c trio.c xmlreader.c relaxng.c dict.c SAX2.c" |
Daniel Veillard | 4edd3ed | 2004-09-20 20:03:01 +0000 | [diff] [blame] | 56 | $ sources = sources + " xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c" |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 57 | $ sources = sources + " schematron.c" |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 58 | $! |
| 59 | $!- list of main modules to compile and link. Compare this list to the |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 60 | $! definition of bin_PROGRAMS in MAKEFILE.IN |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 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 | $! |
Daniel Veillard | 9339b74 | 2003-10-15 08:18:00 +0000 | [diff] [blame] | 67 | $ noinst_PROGRAMS = "testSchemas testRelax testSAX testHTML testXPath testURI " - |
| 68 | + "testThreads testC14N testAutomata testRegexp testReader" |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 69 | $! |
| 70 | $!- set up build logicals -----------------------------------------------------\ |
| 71 | $! |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 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."" |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 80 | $ then |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 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") + """ |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 88 | $ endif |
| 89 | $! |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 90 | $ if f$trnlnm("XML_SRCDIR").eqs."" |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 91 | $ then |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 92 | $ globfile = f$search("[-...]globals.c") |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 93 | $ if globfile.eqs."" |
| 94 | $ then |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 95 | $ write sys$output "Can't locate globals.c. You need to manually define a XML_SRCDIR logical" |
| 96 | $ exit |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 97 | $ else |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 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'""" |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 101 | $ endif |
| 102 | $ endif |
| 103 | $! |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 104 | $ copy/log config.vms xml_srcdir:config.h |
| 105 | $! |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 106 | $ if f$trnlnm("libxml").eqs."" |
| 107 | $ then |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 108 | $ globfile = f$search("[-...]globals.h") |
| 109 | $ if globfile.eqs."" |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 110 | $ then |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 111 | $ write sys$output "Can't locate globals.h. You need to manually define a LIBXML logical" |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 112 | $ exit |
| 113 | $ else |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 114 | $ includedir = f$parse(globfile,,,"DEVICE") + f$parse(globfile,,,"DIRECTORY") |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 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") |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 124 | $ on error then goto ERROR_OUT |
| 125 | $ on control_y then goto ERROR_OUT |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 126 | $! |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 127 | $!- move to the source directory and create any necessary subdirs and the |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 128 | $! object library |
| 129 | $! |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 130 | $ set default xml_srcdir |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 131 | $ if f$search("DEBUG.DIR").eqs."" then create/dir [.DEBUG] |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 132 | $ if f$search("XML_LIBDIR:LIBXML.OLB").eqs."" |
| 133 | $ then |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 134 | $ write sys$output "Creating new object library XML_LIBDIR:LIBXML.OLB" |
| 135 | $ library/create XML_LIBDIR:LIBXML.OLB |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 136 | $ endif |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 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 | $! |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 143 | $ lib_command = "LIBRARY/REPLACE/LOG XML_LIBDIR:LIBXML.OLB" |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 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 | $! |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 159 | $ on error then goto ERROR_OUT |
| 160 | $ on control_y then goto ERROR_OUT |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 161 | $ call build 'next_source' |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 162 | $ s_no = s_no + 1 |
| 163 | $ goto source_loop |
| 164 | $! |
| 165 | $ endif |
| 166 | $! |
| 167 | $!- now build self-test programs ---------------------------------------------- |
| 168 | $! |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 169 | $! these programs are built as ordinary modules into XML_LIBDIR:LIBXML.OLB. Here they |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 170 | $! are built a second time with /DEFINE=(STANDALONE) in which case a main() |
| 171 | $! is also compiled into the module |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 172 | $ |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 173 | $ lib_command = "" |
| 174 | $ link_command = "LINK" |
| 175 | $! |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 176 | $ library/compress XML_LIBDIR:LIBXML.OLB |
| 177 | $ purge XML_LIBDIR:LIBXML.OLB |
| 178 | $! |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 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) |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 185 | $ call build TRIONAN.C /DEFINE=(STANDALONE) |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 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 |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 198 | $ all_progs = bin_progs + " " + noinst_PROGRAMS |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 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 | $! |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 207 | $ on error then goto ERROR_OUT |
| 208 | $ on control_y then goto ERROR_OUT |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 209 | $ call build 'next_prog'.c |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 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 | $! |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 217 | $ goto exit_here ! move this line to avoid parts of this command file |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 218 | $ exit_here: |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 219 | $! |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 220 | $ exit |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 221 | $ goto exit_out |
| 222 | $! |
| 223 | $! |
| 224 | $EXIT_OUT: |
| 225 | $! |
| 226 | $ purge/nolog [.debug] |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 227 | $ set default 'saved_default |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 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 |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 241 | $ name = f$parse(source_file,,,"NAME") |
| 242 | $ object_file = f$parse("[.debug].OBJ",name,,,"SYNTAX_ONLY") |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 243 | $! |
| 244 | $!- compile |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 245 | $! |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 246 | $ write sys$output "''cc_command'''p2'/object=''object_file' ''source_file'" |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 247 | $ cc_command'p2' /object='object_file 'source_file' |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 248 | $! |
| 249 | $!- insert into library if command defined |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 250 | $! |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 251 | $ if lib_command.nes."" then lib_command 'object_file' |
| 252 | $! |
| 253 | $!- link module if command defined |
Daniel Veillard | 24d87d9 | 2008-03-19 15:43:00 +0000 | [diff] [blame] | 254 | $ if link_command.nes."" |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 255 | $ then |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 256 | $ opts = "" |
| 257 | $ if debug then opts = "/DEBUG" |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 258 | $ write sys$output "''link_command'''opts' ''object_file',XML_LIBDIR:libxml.olb/library" |
Daniel Veillard | d33cfbf | 2001-11-13 15:24:36 +0000 | [diff] [blame] | 259 | $ link_command'opts' 'object_file',- |
Daniel Veillard | e645e8c | 2002-10-22 17:35:37 +0000 | [diff] [blame] | 260 | XML_LIBDIR:libxml.olb/library |
Daniel Veillard | acf7ff0 | 2001-10-29 20:21:47 +0000 | [diff] [blame] | 261 | $ endif |
| 262 | $! |
| 263 | $EXIT_BUILD: |
| 264 | $ exit $status |
| 265 | $! |
| 266 | $endsubroutine |