1 | $! BUILD_XSLT.COM
|
---|
2 | $!
|
---|
3 | $! Build the XSLT library
|
---|
4 | $!
|
---|
5 | $! Arguments:
|
---|
6 | $!
|
---|
7 | $! p1 - "DEBUG" is you want to build with debug
|
---|
8 | $!
|
---|
9 | $! This package requires libxml to have already been installed. You need
|
---|
10 | $! to ensure that the logical name LIBXML is defined and points to the
|
---|
11 | $! directory containing libxml's .h files
|
---|
12 | $!
|
---|
13 | $! This procedure creates the object libraries
|
---|
14 | $!
|
---|
15 | $! XML_LIBDIR:LIBXSLT.OLB
|
---|
16 | $! XML_LIBDIR:LIBEXSLT.OLB
|
---|
17 | $!
|
---|
18 | $! and the program
|
---|
19 | $!
|
---|
20 | $! XSLTPROC
|
---|
21 | $!
|
---|
22 | $! After the library is built, you can link these routines into
|
---|
23 | $! your code with the command
|
---|
24 | $!
|
---|
25 | $! LINK your_modules,XML_LIBDIR:LIBEXSLT/LIB,LIBXSLT/LIBRARY,LIBXML/LIB
|
---|
26 | $!
|
---|
27 | $! Change History
|
---|
28 | $! --------------
|
---|
29 | $! Command file author : John A Fotheringham ([email protected])
|
---|
30 | $! Last update : 2 Nov 2001
|
---|
31 | $!
|
---|
32 | $!- configuration -------------------------------------------------------------
|
---|
33 | $!
|
---|
34 | $!- compile command.
|
---|
35 | $!
|
---|
36 | $ cc_opts = "/INCLUDE=([],XML_SRCDIR:,[-.libxslt])/NAMES=(SHORTENED)/FLOAT=IEEE/IEEE_MODE=DENORM_RESULTS"
|
---|
37 | $!
|
---|
38 | $ if p1.eqs."DEBUG"
|
---|
39 | $ then
|
---|
40 | $ debug = "Y"
|
---|
41 | $ cc_command = "CC''cc_opts'/DEBUG/NOOPTIMIZE/LIST/SHOW=ALL"
|
---|
42 | $ else
|
---|
43 | $ debug = "N"
|
---|
44 | $ cc_command = "CC''cc_opts'"
|
---|
45 | $ endif
|
---|
46 | $!
|
---|
47 | $!- configure multiple build passes for each library. -------------------------
|
---|
48 | $!
|
---|
49 | $! For each pass:
|
---|
50 | $!
|
---|
51 | $! "libname" is the name of the library or module being created
|
---|
52 | $!
|
---|
53 | $! "progname" is the name of the program being created
|
---|
54 | $!
|
---|
55 | $! "src" is the list of sources to be built into the library or program
|
---|
56 | $! - This should be compared to the definition of
|
---|
57 | $! "<NAME>_la_SOURCES" in the MAKEFILE.IN file in
|
---|
58 | $! corresponding directory.
|
---|
59 | $!
|
---|
60 | $ num_passes = 3 ! two libraries and a program
|
---|
61 | $!
|
---|
62 | $!- pass 1 - library LIBXSLT
|
---|
63 | $!
|
---|
64 | $ libname_1 = "LIBXSLT"
|
---|
65 | $ h_file_1 = "xslt.h"
|
---|
66 | $ progname_1 = ""
|
---|
67 | $!
|
---|
68 | $ ! see "libxslt_la_SOURCES" in [.libxslt]makefile.in
|
---|
69 | $ src_1 = "xslt.c xsltutils.c pattern.c templates.c variables.c keys.c"
|
---|
70 | $ src_1 = src_1 + " numbers.c extensions.c extra.c functions.c"
|
---|
71 | $ src_1 = src_1 + " namespaces.c imports.c attributes.c documents.c"
|
---|
72 | $ src_1 = src_1 + " preproc.c transform.c security.c"
|
---|
73 | $!
|
---|
74 | $!- pass 2 - library LIBEXSLT
|
---|
75 | $!
|
---|
76 | $ libname_2 = "LIBEXSLT"
|
---|
77 | $ h_file_2 = "exslt.h"
|
---|
78 | $ progname_2 = ""
|
---|
79 | $!
|
---|
80 | $ ! see "libexslt_la_SOURCES" in [.libexslt]makefile.in
|
---|
81 | $ src_2 = "exslt.c common.c math.c sets.c functions.c strings.c date.c saxon.c dynamic.c"
|
---|
82 | $!
|
---|
83 | $!- pass 3 - program XSLTPROC
|
---|
84 | $!
|
---|
85 | $ libname_3 = ""
|
---|
86 | $ h_file_3 = ""
|
---|
87 | $ progname_3 = "XSLTPROC"
|
---|
88 | $!
|
---|
89 | $ ! see "xsltproc_SOURCES" in [.xsltproc]makefile.in
|
---|
90 | $ src_3 = "xsltproc.c"
|
---|
91 | $!
|
---|
92 | $!- set up and check logicals -----------------------------------------------
|
---|
93 | $!
|
---|
94 | $! XML_LIBDIR - object library directory
|
---|
95 | $! XML_SRCDIR - top-level build directory of libxml package -- needed for config.h and trio.h
|
---|
96 | $! LIBXML - source directory containing .h files for libxml package
|
---|
97 | $!
|
---|
98 | $ if f$trnlnm("XML_LIBDIR").eqs.""
|
---|
99 | $ then
|
---|
100 | $ on error then continue
|
---|
101 | $ globfile = f$search("[--...]libxml.olb")
|
---|
102 | $ if globfile.eqs.""
|
---|
103 | $ then
|
---|
104 | $ write sys$output ""
|
---|
105 | $ write sys$output " You need to define the XML_LIBDIR logical name to"
|
---|
106 | $ write sys$output " point to the directory containing your object"
|
---|
107 | $ write sys$output " libraries. This should already contain LIBXML.OLB"
|
---|
108 | $ write sys$output " from the libxml package, and will be the directory"
|
---|
109 | $ write sys$output " the new LIBXSLT.OLB library will be placed in"
|
---|
110 | $ write sys$output ""
|
---|
111 | $ exit
|
---|
112 | $ else
|
---|
113 | $ srcdir = f$parse(globfile,,,"DEVICE") + f$parse(globfile,,,"DIRECTORY")
|
---|
114 | $ define/process XML_LIBDIR "''srcdir'"
|
---|
115 | $ write sys$output "Defining XML_LIBDIR as ""''srcdir'"""
|
---|
116 | $ endif
|
---|
117 | $ endif
|
---|
118 | $!
|
---|
119 | $ if f$trnlnm("libxml").eqs.""
|
---|
120 | $ then
|
---|
121 | $ ! look for globals.h in a directory installed paralle to this one
|
---|
122 | $ on error then continue
|
---|
123 | $ globfile = f$search("[--...]globals.h")
|
---|
124 | $ if globfile.eqs.""
|
---|
125 | $ then
|
---|
126 | $ write sys$output ""
|
---|
127 | $ write sys$output " You need to define a LIBXML logical directory to"
|
---|
128 | $ write sys$output " point to the directory containing the .h files"
|
---|
129 | $ write sys$output " for the libxml package"
|
---|
130 | $ write sys$output ""
|
---|
131 | $ exit
|
---|
132 | $ else
|
---|
133 | $ srcdir = f$element(0,"]",globfile)+ "]"
|
---|
134 | $ define/process LIBXML "''srcdir'"
|
---|
135 | $ write sys$output "Defining LIBXML as ""''srcdir'"""
|
---|
136 | $ endif
|
---|
137 | $ endif
|
---|
138 | $!
|
---|
139 | $ if f$trnlnm("XML_SRCDIR").eqs.""
|
---|
140 | $ then
|
---|
141 | $ globfile = f$search("[--...]globals.c")
|
---|
142 | $ if globfile.eqs.""
|
---|
143 | $ then
|
---|
144 | $ write sys$output "Can't locate globals.c. You need to manually define a XML_SRCDIR logical"
|
---|
145 | $ exit
|
---|
146 | $ else
|
---|
147 | $ srcdir = f$parse(globfile,,,"DEVICE") + f$parse(globfile,,,"DIRECTORY")
|
---|
148 | $ define/process XML_SRCDIR "''srcdir'"
|
---|
149 | $ write sys$output "Defining XML_SRCDIR as ""''srcdir'"""
|
---|
150 | $ endif
|
---|
151 | $ endif
|
---|
152 | $!
|
---|
153 | $!- set up some working logicals -------------------
|
---|
154 | $!
|
---|
155 | $ pass_no = 1
|
---|
156 | $ set_pass_logical:
|
---|
157 | $!
|
---|
158 | $ if pass_no.le.num_passes
|
---|
159 | $ then
|
---|
160 | $!
|
---|
161 | $ Libname = libname_'pass_no'
|
---|
162 | $ progname = progname_'pass_no'
|
---|
163 | $ if libname.nes.""
|
---|
164 | $ then
|
---|
165 | $ logname = "''libname'_SRCDIR"
|
---|
166 | $ else
|
---|
167 | $ logname = "''progname'_SRCDIR"
|
---|
168 | $ endif
|
---|
169 | $ findfile = f$element(0," ",src_'pass_no')
|
---|
170 | $!
|
---|
171 | $!--- set up a source directory logical
|
---|
172 | $!
|
---|
173 | $ if f$trnlnm("''logname'").eqs.""
|
---|
174 | $ then
|
---|
175 | $ ! look for the target file in a parallel subdirectory
|
---|
176 | $ globfile = f$search("[-...]''findfile'")
|
---|
177 | $ if globfile.eqs.""
|
---|
178 | $ then
|
---|
179 | $ write sys$output "Can't locate ''findfile'. You need to manually define a ''logname' logical"
|
---|
180 | $ exit
|
---|
181 | $ else
|
---|
182 | $ srcdir = f$element(0,"]",globfile)+ "]"
|
---|
183 | $ define/process 'logname' "''srcdir'"
|
---|
184 | $ write sys$output "Defining ''logname' as ""''srcdir'"""
|
---|
185 | $ endif
|
---|
186 | $ endif
|
---|
187 | $!
|
---|
188 | $!--- if it's a library, set up a logical pointing to the .h files
|
---|
189 | $!
|
---|
190 | $ if libname.nes.""
|
---|
191 | $ then
|
---|
192 | $ if f$trnlnm("''libname'").eqs.""
|
---|
193 | $ then
|
---|
194 | $ ! look for the target .h file in a parallel subdirectory
|
---|
195 | $ h_file = h_file_'pass_no'
|
---|
196 | $ globfile = f$search("[-...]''h_file'")
|
---|
197 | $ if globfile.eqs.""
|
---|
198 | $ then
|
---|
199 | $ write sys$output "Can't locate ''h_file'. You need to manually define a ''libname' logical"
|
---|
200 | $ exit
|
---|
201 | $ else
|
---|
202 | $ includedir = f$element(0,"]",globfile)+ "]"
|
---|
203 | $ define/process 'libname' "''includedir'"
|
---|
204 | $ write sys$output "Defining ''libname' as ""''includedir'"""
|
---|
205 | $ endif
|
---|
206 | $ endif
|
---|
207 | $ endif
|
---|
208 | $!
|
---|
209 | $ pass_no = pass_no +1
|
---|
210 | $ goto set_pass_logical
|
---|
211 | $!
|
---|
212 | $ endif ! for each pass
|
---|
213 | $!
|
---|
214 | $!- set up error handling (such as it is) -------------------------------------
|
---|
215 | $!
|
---|
216 | $ exit_status = 1
|
---|
217 | $ saved_default = f$environment("default")
|
---|
218 | $ on error then goto ERROR_OUT
|
---|
219 | $ on control_y then goto ERROR_OUT
|
---|
220 | $!
|
---|
221 | $ goto start_here
|
---|
222 | $ start_here: ! move this line to debug/rerun parts of this command file
|
---|
223 | $!
|
---|
224 | $!- compile modules into the library ------------------------------------------
|
---|
225 | $!
|
---|
226 | $!
|
---|
227 | $ pass_no = 1 ! make three passes, one for each library, one for XSLTPROC
|
---|
228 | $ pass_loop:
|
---|
229 | $!
|
---|
230 | $ if pass_no.le.num_passes
|
---|
231 | $ then
|
---|
232 | $ Libname = libname_'pass_no'
|
---|
233 | $ progname = progname_'pass_no'
|
---|
234 | $ if libname.nes.""
|
---|
235 | $ then
|
---|
236 | $ logname = "''libname'_SRCDIR"
|
---|
237 | $ pass_description = "the XML_LIBDIR:''libname'.OLB object library"
|
---|
238 | $ else
|
---|
239 | $ logname = "''progname'_SRCDIR"
|
---|
240 | $ pass_description = "the programs in ''progname'"
|
---|
241 | $ endif
|
---|
242 | $ src = src_'pass_no'
|
---|
243 | $!
|
---|
244 | $!- create the library if need
|
---|
245 | $!
|
---|
246 | $ if libname.nes.""
|
---|
247 | $ then
|
---|
248 | $ if f$search("XML_LIBDIR:''libname'.OLB").eqs.""
|
---|
249 | $ then
|
---|
250 | $ write sys$output "Creating new object library XML_LIBDIR:''libname'.OLB..."
|
---|
251 | $ library/create XML_LIBDIR:'libname'.OLB
|
---|
252 | $ endif
|
---|
253 | $ endif
|
---|
254 | $!
|
---|
255 | $!- move to the source directory
|
---|
256 | $!
|
---|
257 | $ set def 'logname'
|
---|
258 | $!
|
---|
259 | $!- define the library and link commands (link command not used as is)
|
---|
260 | $!
|
---|
261 | $ if libname.nes.""
|
---|
262 | $ then
|
---|
263 | $ lib_command = "LIBRARY/REPLACE XML_LIBDIR:''libname'.OLB"
|
---|
264 | $ link_command = ""
|
---|
265 | $ else
|
---|
266 | $ lib_command = ""
|
---|
267 | $ link_command = "LINK"
|
---|
268 | $ endif
|
---|
269 | $!
|
---|
270 | $ write sys$output ""
|
---|
271 | $ write sys$output "Building ''pass_description'
|
---|
272 | $ write sys$output ""
|
---|
273 | $!
|
---|
274 | $ s_no = 0
|
---|
275 | $ src = f$edit(src,"COMPRESS")
|
---|
276 | $!
|
---|
277 | $ source_loop:
|
---|
278 | $!
|
---|
279 | $ next_source = f$element (S_no," ",src)
|
---|
280 | $ if next_source.nes."" .and. next_source.nes." "
|
---|
281 | $ then
|
---|
282 | $ call build 'next_source'
|
---|
283 | $ s_no = s_no + 1
|
---|
284 | $ goto source_loop
|
---|
285 | $ endif
|
---|
286 | $!
|
---|
287 | $ pass_no = pass_no + 1
|
---|
288 | $ goto pass_loop
|
---|
289 | $!
|
---|
290 | $ endif ! for each pass
|
---|
291 | $!
|
---|
292 | $!- Th-th-th-th-th-that's all folks! ------------------------------------------
|
---|
293 | $!
|
---|
294 | $EXIT_OUT:
|
---|
295 | $!
|
---|
296 | $ set def 'saved_default
|
---|
297 | $ exit 'exit_status
|
---|
298 | $!
|
---|
299 | $
|
---|
300 | $ERROR_OUT:
|
---|
301 | $ exit_status = $status
|
---|
302 | $ write sys$output "''f$message(exit_status)'"
|
---|
303 | $ goto EXIT_OUT
|
---|
304 | $! |
---|
305 |
|
---|
306 | $!- the BUILD subroutine. Compile then insert into library or link as required
|
---|
307 | $!
|
---|
308 | $BUILD: subroutine
|
---|
309 | $ on warning then goto EXIT_BUILD
|
---|
310 | $ source_file = p1
|
---|
311 | $ name = f$element(0,".",source_file)
|
---|
312 | $ object_file = f$fao("XML_LIBDIR:!AS.OBJ",name)
|
---|
313 | $!
|
---|
314 | $!- compile
|
---|
315 | $ write sys$output "Compiling ",p1,p2,"..."
|
---|
316 | $ cc_command /object='object_file 'source_file' 'p2'
|
---|
317 | $!
|
---|
318 | $!- insert into library if command defined
|
---|
319 | $!
|
---|
320 | $ if lib_command.nes.""
|
---|
321 | $ then
|
---|
322 | $ lib_command 'object_file'
|
---|
323 | $ delete/nolog 'object_file';*
|
---|
324 | $ endif
|
---|
325 | $!
|
---|
326 | $!- link module if command defined
|
---|
327 | $!
|
---|
328 | $ if link_command.nes.""
|
---|
329 | $ then
|
---|
330 | $ text = f$element(0,".",p1) ! lose the ".c"
|
---|
331 | $ write sys$output "Linking ",text,"..."
|
---|
332 | $ dbgopts = ""
|
---|
333 | $ if debug then dbgopts = "/DEBUG"
|
---|
334 | $ link_command'dbgopts' 'object_file',-
|
---|
335 | XML_LIBDIR:libexslt/lib,-
|
---|
336 | XML_LIBDIR:libxslt/lib,-
|
---|
337 | XML_LIBDIR:libxml/library
|
---|
338 | $ endif
|
---|
339 | $!
|
---|
340 | $EXIT_BUILD:
|
---|
341 | $ exit $status
|
---|
342 | $!
|
---|
343 | $endsubroutine
|
---|