cannam@128
|
1 $! make libz under VMS written by
|
cannam@128
|
2 $! Martin P.J. Zinser
|
cannam@128
|
3 $!
|
cannam@128
|
4 $! In case of problems with the install you might contact me at
|
cannam@128
|
5 $! zinser@zinser.no-ip.info(preferred) or
|
cannam@128
|
6 $! martin.zinser@eurexchange.com (work)
|
cannam@128
|
7 $!
|
cannam@128
|
8 $! Make procedure history for Zlib
|
cannam@128
|
9 $!
|
cannam@128
|
10 $!------------------------------------------------------------------------------
|
cannam@128
|
11 $! Version history
|
cannam@128
|
12 $! 0.01 20060120 First version to receive a number
|
cannam@128
|
13 $! 0.02 20061008 Adapt to new Makefile.in
|
cannam@128
|
14 $! 0.03 20091224 Add support for large file check
|
cannam@128
|
15 $! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite
|
cannam@128
|
16 $! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in
|
cannam@128
|
17 $! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new exmples
|
cannam@128
|
18 $! subdir path, update module search in makefile.in
|
cannam@128
|
19 $! 0.07 20120115 Triggered by work done by Alexey Chupahin completly redesigned
|
cannam@128
|
20 $! shared image creation
|
cannam@128
|
21 $! 0.08 20120219 Make it work on VAX again, pre-load missing symbols to shared
|
cannam@128
|
22 $! image
|
cannam@128
|
23 $! 0.09 20120305 SMS. P1 sets builder ("MMK", "MMS", " " (built-in)).
|
cannam@128
|
24 $! "" -> automatic, preference: MMK, MMS, built-in.
|
cannam@128
|
25 $!
|
cannam@128
|
26 $ on error then goto err_exit
|
cannam@128
|
27 $!
|
cannam@128
|
28 $ true = 1
|
cannam@128
|
29 $ false = 0
|
cannam@128
|
30 $ tmpnam = "temp_" + f$getjpi("","pid")
|
cannam@128
|
31 $ tt = tmpnam + ".txt"
|
cannam@128
|
32 $ tc = tmpnam + ".c"
|
cannam@128
|
33 $ th = tmpnam + ".h"
|
cannam@128
|
34 $ define/nolog tconfig 'th'
|
cannam@128
|
35 $ its_decc = false
|
cannam@128
|
36 $ its_vaxc = false
|
cannam@128
|
37 $ its_gnuc = false
|
cannam@128
|
38 $ s_case = False
|
cannam@128
|
39 $!
|
cannam@128
|
40 $! Setup variables holding "config" information
|
cannam@128
|
41 $!
|
cannam@128
|
42 $ Make = "''p1'"
|
cannam@128
|
43 $ name = "Zlib"
|
cannam@128
|
44 $ version = "?.?.?"
|
cannam@128
|
45 $ v_string = "ZLIB_VERSION"
|
cannam@128
|
46 $ v_file = "zlib.h"
|
cannam@128
|
47 $ ccopt = "/include = []"
|
cannam@128
|
48 $ lopts = ""
|
cannam@128
|
49 $ dnsrl = ""
|
cannam@128
|
50 $ aconf_in_file = "zconf.h.in#zconf.h_in#zconf_h.in"
|
cannam@128
|
51 $ conf_check_string = ""
|
cannam@128
|
52 $ linkonly = false
|
cannam@128
|
53 $ optfile = name + ".opt"
|
cannam@128
|
54 $ mapfile = name + ".map"
|
cannam@128
|
55 $ libdefs = ""
|
cannam@128
|
56 $ vax = f$getsyi("HW_MODEL").lt.1024
|
cannam@128
|
57 $ axp = f$getsyi("HW_MODEL").ge.1024 .and. f$getsyi("HW_MODEL").lt.4096
|
cannam@128
|
58 $ ia64 = f$getsyi("HW_MODEL").ge.4096
|
cannam@128
|
59 $!
|
cannam@128
|
60 $! 2012-03-05 SMS.
|
cannam@128
|
61 $! Why is this needed? And if it is needed, why not simply ".not. vax"?
|
cannam@128
|
62 $!
|
cannam@128
|
63 $!!! if axp .or. ia64 then set proc/parse=extended
|
cannam@128
|
64 $!
|
cannam@128
|
65 $ whoami = f$parse(f$environment("Procedure"),,,,"NO_CONCEAL")
|
cannam@128
|
66 $ mydef = F$parse(whoami,,,"DEVICE")
|
cannam@128
|
67 $ mydir = f$parse(whoami,,,"DIRECTORY") - "]["
|
cannam@128
|
68 $ myproc = f$parse(whoami,,,"Name") + f$parse(whoami,,,"type")
|
cannam@128
|
69 $!
|
cannam@128
|
70 $! Check for MMK/MMS
|
cannam@128
|
71 $!
|
cannam@128
|
72 $ if (Make .eqs. "")
|
cannam@128
|
73 $ then
|
cannam@128
|
74 $ If F$Search ("Sys$System:MMS.EXE") .nes. "" Then Make = "MMS"
|
cannam@128
|
75 $ If F$Type (MMK) .eqs. "STRING" Then Make = "MMK"
|
cannam@128
|
76 $ else
|
cannam@128
|
77 $ Make = f$edit( Make, "trim")
|
cannam@128
|
78 $ endif
|
cannam@128
|
79 $!
|
cannam@128
|
80 $ gosub find_version
|
cannam@128
|
81 $!
|
cannam@128
|
82 $ open/write topt tmp.opt
|
cannam@128
|
83 $ open/write optf 'optfile'
|
cannam@128
|
84 $!
|
cannam@128
|
85 $ gosub check_opts
|
cannam@128
|
86 $!
|
cannam@128
|
87 $! Look for the compiler used
|
cannam@128
|
88 $!
|
cannam@128
|
89 $ gosub check_compiler
|
cannam@128
|
90 $ close topt
|
cannam@128
|
91 $ close optf
|
cannam@128
|
92 $!
|
cannam@128
|
93 $ if its_decc
|
cannam@128
|
94 $ then
|
cannam@128
|
95 $ ccopt = "/prefix=all" + ccopt
|
cannam@128
|
96 $ if f$trnlnm("SYS") .eqs. ""
|
cannam@128
|
97 $ then
|
cannam@128
|
98 $ if axp
|
cannam@128
|
99 $ then
|
cannam@128
|
100 $ define sys sys$library:
|
cannam@128
|
101 $ else
|
cannam@128
|
102 $ ccopt = "/decc" + ccopt
|
cannam@128
|
103 $ define sys decc$library_include:
|
cannam@128
|
104 $ endif
|
cannam@128
|
105 $ endif
|
cannam@128
|
106 $!
|
cannam@128
|
107 $! 2012-03-05 SMS.
|
cannam@128
|
108 $! Why /NAMES = AS_IS? Why not simply ".not. vax"? And why not on VAX?
|
cannam@128
|
109 $!
|
cannam@128
|
110 $ if axp .or. ia64
|
cannam@128
|
111 $ then
|
cannam@128
|
112 $ ccopt = ccopt + "/name=as_is/opt=(inline=speed)"
|
cannam@128
|
113 $ s_case = true
|
cannam@128
|
114 $ endif
|
cannam@128
|
115 $ endif
|
cannam@128
|
116 $ if its_vaxc .or. its_gnuc
|
cannam@128
|
117 $ then
|
cannam@128
|
118 $ if f$trnlnm("SYS").eqs."" then define sys sys$library:
|
cannam@128
|
119 $ endif
|
cannam@128
|
120 $!
|
cannam@128
|
121 $! Build a fake configure input header
|
cannam@128
|
122 $!
|
cannam@128
|
123 $ open/write conf_hin config.hin
|
cannam@128
|
124 $ write conf_hin "#undef _LARGEFILE64_SOURCE"
|
cannam@128
|
125 $ close conf_hin
|
cannam@128
|
126 $!
|
cannam@128
|
127 $!
|
cannam@128
|
128 $ i = 0
|
cannam@128
|
129 $FIND_ACONF:
|
cannam@128
|
130 $ fname = f$element(i,"#",aconf_in_file)
|
cannam@128
|
131 $ if fname .eqs. "#" then goto AMISS_ERR
|
cannam@128
|
132 $ if f$search(fname) .eqs. ""
|
cannam@128
|
133 $ then
|
cannam@128
|
134 $ i = i + 1
|
cannam@128
|
135 $ goto find_aconf
|
cannam@128
|
136 $ endif
|
cannam@128
|
137 $ open/read/err=aconf_err aconf_in 'fname'
|
cannam@128
|
138 $ open/write aconf zconf.h
|
cannam@128
|
139 $ACONF_LOOP:
|
cannam@128
|
140 $ read/end_of_file=aconf_exit aconf_in line
|
cannam@128
|
141 $ work = f$edit(line, "compress,trim")
|
cannam@128
|
142 $ if f$extract(0,6,work) .nes. "#undef"
|
cannam@128
|
143 $ then
|
cannam@128
|
144 $ if f$extract(0,12,work) .nes. "#cmakedefine"
|
cannam@128
|
145 $ then
|
cannam@128
|
146 $ write aconf line
|
cannam@128
|
147 $ endif
|
cannam@128
|
148 $ else
|
cannam@128
|
149 $ cdef = f$element(1," ",work)
|
cannam@128
|
150 $ gosub check_config
|
cannam@128
|
151 $ endif
|
cannam@128
|
152 $ goto aconf_loop
|
cannam@128
|
153 $ACONF_EXIT:
|
cannam@128
|
154 $ write aconf ""
|
cannam@128
|
155 $ write aconf "/* VMS specifics added by make_vms.com: */"
|
cannam@128
|
156 $ write aconf "#define VMS 1"
|
cannam@128
|
157 $ write aconf "#include <unistd.h>"
|
cannam@128
|
158 $ write aconf "#include <unixio.h>"
|
cannam@128
|
159 $ write aconf "#ifdef _LARGEFILE"
|
cannam@128
|
160 $ write aconf "# define off64_t __off64_t"
|
cannam@128
|
161 $ write aconf "# define fopen64 fopen"
|
cannam@128
|
162 $ write aconf "# define fseeko64 fseeko"
|
cannam@128
|
163 $ write aconf "# define lseek64 lseek"
|
cannam@128
|
164 $ write aconf "# define ftello64 ftell"
|
cannam@128
|
165 $ write aconf "#endif"
|
cannam@128
|
166 $ write aconf "#if !defined( __VAX) && (__CRTL_VER >= 70312000)"
|
cannam@128
|
167 $ write aconf "# define HAVE_VSNPRINTF"
|
cannam@128
|
168 $ write aconf "#endif"
|
cannam@128
|
169 $ close aconf_in
|
cannam@128
|
170 $ close aconf
|
cannam@128
|
171 $ if f$search("''th'") .nes. "" then delete 'th';*
|
cannam@128
|
172 $! Build the thing plain or with mms
|
cannam@128
|
173 $!
|
cannam@128
|
174 $ write sys$output "Compiling Zlib sources ..."
|
cannam@128
|
175 $ if make.eqs.""
|
cannam@128
|
176 $ then
|
cannam@128
|
177 $ if (f$search( "example.obj;*") .nes. "") then delete example.obj;*
|
cannam@128
|
178 $ if (f$search( "minigzip.obj;*") .nes. "") then delete minigzip.obj;*
|
cannam@128
|
179 $ CALL MAKE adler32.OBJ "CC ''CCOPT' adler32" -
|
cannam@128
|
180 adler32.c zlib.h zconf.h
|
cannam@128
|
181 $ CALL MAKE compress.OBJ "CC ''CCOPT' compress" -
|
cannam@128
|
182 compress.c zlib.h zconf.h
|
cannam@128
|
183 $ CALL MAKE crc32.OBJ "CC ''CCOPT' crc32" -
|
cannam@128
|
184 crc32.c zlib.h zconf.h
|
cannam@128
|
185 $ CALL MAKE deflate.OBJ "CC ''CCOPT' deflate" -
|
cannam@128
|
186 deflate.c deflate.h zutil.h zlib.h zconf.h
|
cannam@128
|
187 $ CALL MAKE gzclose.OBJ "CC ''CCOPT' gzclose" -
|
cannam@128
|
188 gzclose.c zutil.h zlib.h zconf.h
|
cannam@128
|
189 $ CALL MAKE gzlib.OBJ "CC ''CCOPT' gzlib" -
|
cannam@128
|
190 gzlib.c zutil.h zlib.h zconf.h
|
cannam@128
|
191 $ CALL MAKE gzread.OBJ "CC ''CCOPT' gzread" -
|
cannam@128
|
192 gzread.c zutil.h zlib.h zconf.h
|
cannam@128
|
193 $ CALL MAKE gzwrite.OBJ "CC ''CCOPT' gzwrite" -
|
cannam@128
|
194 gzwrite.c zutil.h zlib.h zconf.h
|
cannam@128
|
195 $ CALL MAKE infback.OBJ "CC ''CCOPT' infback" -
|
cannam@128
|
196 infback.c zutil.h inftrees.h inflate.h inffast.h inffixed.h
|
cannam@128
|
197 $ CALL MAKE inffast.OBJ "CC ''CCOPT' inffast" -
|
cannam@128
|
198 inffast.c zutil.h zlib.h zconf.h inffast.h
|
cannam@128
|
199 $ CALL MAKE inflate.OBJ "CC ''CCOPT' inflate" -
|
cannam@128
|
200 inflate.c zutil.h zlib.h zconf.h infblock.h
|
cannam@128
|
201 $ CALL MAKE inftrees.OBJ "CC ''CCOPT' inftrees" -
|
cannam@128
|
202 inftrees.c zutil.h zlib.h zconf.h inftrees.h
|
cannam@128
|
203 $ CALL MAKE trees.OBJ "CC ''CCOPT' trees" -
|
cannam@128
|
204 trees.c deflate.h zutil.h zlib.h zconf.h
|
cannam@128
|
205 $ CALL MAKE uncompr.OBJ "CC ''CCOPT' uncompr" -
|
cannam@128
|
206 uncompr.c zlib.h zconf.h
|
cannam@128
|
207 $ CALL MAKE zutil.OBJ "CC ''CCOPT' zutil" -
|
cannam@128
|
208 zutil.c zutil.h zlib.h zconf.h
|
cannam@128
|
209 $ write sys$output "Building Zlib ..."
|
cannam@128
|
210 $ CALL MAKE libz.OLB "lib/crea libz.olb *.obj" *.OBJ
|
cannam@128
|
211 $ write sys$output "Building example..."
|
cannam@128
|
212 $ CALL MAKE example.OBJ "CC ''CCOPT' [.test]example" -
|
cannam@128
|
213 [.test]example.c zlib.h zconf.h
|
cannam@128
|
214 $ call make example.exe "LINK example,libz.olb/lib" example.obj libz.olb
|
cannam@128
|
215 $ write sys$output "Building minigzip..."
|
cannam@128
|
216 $ CALL MAKE minigzip.OBJ "CC ''CCOPT' [.test]minigzip" -
|
cannam@128
|
217 [.test]minigzip.c zlib.h zconf.h
|
cannam@128
|
218 $ call make minigzip.exe -
|
cannam@128
|
219 "LINK minigzip,libz.olb/lib" -
|
cannam@128
|
220 minigzip.obj libz.olb
|
cannam@128
|
221 $ else
|
cannam@128
|
222 $ gosub crea_mms
|
cannam@128
|
223 $ write sys$output "Make ''name' ''version' with ''Make' "
|
cannam@128
|
224 $ 'make'
|
cannam@128
|
225 $ endif
|
cannam@128
|
226 $!
|
cannam@128
|
227 $! Create shareable image
|
cannam@128
|
228 $!
|
cannam@128
|
229 $ gosub crea_olist
|
cannam@128
|
230 $ write sys$output "Creating libzshr.exe"
|
cannam@128
|
231 $ call map_2_shopt 'mapfile' 'optfile'
|
cannam@128
|
232 $ LINK_'lopts'/SHARE=libzshr.exe modules.opt/opt,'optfile'/opt
|
cannam@128
|
233 $ write sys$output "Zlib build completed"
|
cannam@128
|
234 $ delete/nolog tmp.opt;*
|
cannam@128
|
235 $ exit
|
cannam@128
|
236 $AMISS_ERR:
|
cannam@128
|
237 $ write sys$output "No source for config.hin found."
|
cannam@128
|
238 $ write sys$output "Tried any of ''aconf_in_file'"
|
cannam@128
|
239 $ goto err_exit
|
cannam@128
|
240 $CC_ERR:
|
cannam@128
|
241 $ write sys$output "C compiler required to build ''name'"
|
cannam@128
|
242 $ goto err_exit
|
cannam@128
|
243 $ERR_EXIT:
|
cannam@128
|
244 $ set message/facil/ident/sever/text
|
cannam@128
|
245 $ close/nolog optf
|
cannam@128
|
246 $ close/nolog topt
|
cannam@128
|
247 $ close/nolog aconf_in
|
cannam@128
|
248 $ close/nolog aconf
|
cannam@128
|
249 $ close/nolog out
|
cannam@128
|
250 $ close/nolog min
|
cannam@128
|
251 $ close/nolog mod
|
cannam@128
|
252 $ close/nolog h_in
|
cannam@128
|
253 $ write sys$output "Exiting..."
|
cannam@128
|
254 $ exit 2
|
cannam@128
|
255 $!
|
cannam@128
|
256 $!
|
cannam@128
|
257 $MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES
|
cannam@128
|
258 $ V = 'F$Verify(0)
|
cannam@128
|
259 $! P1 = What we are trying to make
|
cannam@128
|
260 $! P2 = Command to make it
|
cannam@128
|
261 $! P3 - P8 What it depends on
|
cannam@128
|
262 $
|
cannam@128
|
263 $ If F$Search(P1) .Eqs. "" Then Goto Makeit
|
cannam@128
|
264 $ Time = F$CvTime(F$File(P1,"RDT"))
|
cannam@128
|
265 $arg=3
|
cannam@128
|
266 $Loop:
|
cannam@128
|
267 $ Argument = P'arg
|
cannam@128
|
268 $ If Argument .Eqs. "" Then Goto Exit
|
cannam@128
|
269 $ El=0
|
cannam@128
|
270 $Loop2:
|
cannam@128
|
271 $ File = F$Element(El," ",Argument)
|
cannam@128
|
272 $ If File .Eqs. " " Then Goto Endl
|
cannam@128
|
273 $ AFile = ""
|
cannam@128
|
274 $Loop3:
|
cannam@128
|
275 $ OFile = AFile
|
cannam@128
|
276 $ AFile = F$Search(File)
|
cannam@128
|
277 $ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
|
cannam@128
|
278 $ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
|
cannam@128
|
279 $ Goto Loop3
|
cannam@128
|
280 $NextEL:
|
cannam@128
|
281 $ El = El + 1
|
cannam@128
|
282 $ Goto Loop2
|
cannam@128
|
283 $EndL:
|
cannam@128
|
284 $ arg=arg+1
|
cannam@128
|
285 $ If arg .Le. 8 Then Goto Loop
|
cannam@128
|
286 $ Goto Exit
|
cannam@128
|
287 $
|
cannam@128
|
288 $Makeit:
|
cannam@128
|
289 $ VV=F$VERIFY(0)
|
cannam@128
|
290 $ write sys$output P2
|
cannam@128
|
291 $ 'P2
|
cannam@128
|
292 $ VV='F$Verify(VV)
|
cannam@128
|
293 $Exit:
|
cannam@128
|
294 $ If V Then Set Verify
|
cannam@128
|
295 $ENDSUBROUTINE
|
cannam@128
|
296 $!------------------------------------------------------------------------------
|
cannam@128
|
297 $!
|
cannam@128
|
298 $! Check command line options and set symbols accordingly
|
cannam@128
|
299 $!
|
cannam@128
|
300 $!------------------------------------------------------------------------------
|
cannam@128
|
301 $! Version history
|
cannam@128
|
302 $! 0.01 20041206 First version to receive a number
|
cannam@128
|
303 $! 0.02 20060126 Add new "HELP" target
|
cannam@128
|
304 $ CHECK_OPTS:
|
cannam@128
|
305 $ i = 1
|
cannam@128
|
306 $ OPT_LOOP:
|
cannam@128
|
307 $ if i .lt. 9
|
cannam@128
|
308 $ then
|
cannam@128
|
309 $ cparm = f$edit(p'i',"upcase")
|
cannam@128
|
310 $!
|
cannam@128
|
311 $! Check if parameter actually contains something
|
cannam@128
|
312 $!
|
cannam@128
|
313 $ if f$edit(cparm,"trim") .nes. ""
|
cannam@128
|
314 $ then
|
cannam@128
|
315 $ if cparm .eqs. "DEBUG"
|
cannam@128
|
316 $ then
|
cannam@128
|
317 $ ccopt = ccopt + "/noopt/deb"
|
cannam@128
|
318 $ lopts = lopts + "/deb"
|
cannam@128
|
319 $ endif
|
cannam@128
|
320 $ if f$locate("CCOPT=",cparm) .lt. f$length(cparm)
|
cannam@128
|
321 $ then
|
cannam@128
|
322 $ start = f$locate("=",cparm) + 1
|
cannam@128
|
323 $ len = f$length(cparm) - start
|
cannam@128
|
324 $ ccopt = ccopt + f$extract(start,len,cparm)
|
cannam@128
|
325 $ if f$locate("AS_IS",f$edit(ccopt,"UPCASE")) .lt. f$length(ccopt) -
|
cannam@128
|
326 then s_case = true
|
cannam@128
|
327 $ endif
|
cannam@128
|
328 $ if cparm .eqs. "LINK" then linkonly = true
|
cannam@128
|
329 $ if f$locate("LOPTS=",cparm) .lt. f$length(cparm)
|
cannam@128
|
330 $ then
|
cannam@128
|
331 $ start = f$locate("=",cparm) + 1
|
cannam@128
|
332 $ len = f$length(cparm) - start
|
cannam@128
|
333 $ lopts = lopts + f$extract(start,len,cparm)
|
cannam@128
|
334 $ endif
|
cannam@128
|
335 $ if f$locate("CC=",cparm) .lt. f$length(cparm)
|
cannam@128
|
336 $ then
|
cannam@128
|
337 $ start = f$locate("=",cparm) + 1
|
cannam@128
|
338 $ len = f$length(cparm) - start
|
cannam@128
|
339 $ cc_com = f$extract(start,len,cparm)
|
cannam@128
|
340 if (cc_com .nes. "DECC") .and. -
|
cannam@128
|
341 (cc_com .nes. "VAXC") .and. -
|
cannam@128
|
342 (cc_com .nes. "GNUC")
|
cannam@128
|
343 $ then
|
cannam@128
|
344 $ write sys$output "Unsupported compiler choice ''cc_com' ignored"
|
cannam@128
|
345 $ write sys$output "Use DECC, VAXC, or GNUC instead"
|
cannam@128
|
346 $ else
|
cannam@128
|
347 $ if cc_com .eqs. "DECC" then its_decc = true
|
cannam@128
|
348 $ if cc_com .eqs. "VAXC" then its_vaxc = true
|
cannam@128
|
349 $ if cc_com .eqs. "GNUC" then its_gnuc = true
|
cannam@128
|
350 $ endif
|
cannam@128
|
351 $ endif
|
cannam@128
|
352 $ if f$locate("MAKE=",cparm) .lt. f$length(cparm)
|
cannam@128
|
353 $ then
|
cannam@128
|
354 $ start = f$locate("=",cparm) + 1
|
cannam@128
|
355 $ len = f$length(cparm) - start
|
cannam@128
|
356 $ mmks = f$extract(start,len,cparm)
|
cannam@128
|
357 $ if (mmks .eqs. "MMK") .or. (mmks .eqs. "MMS")
|
cannam@128
|
358 $ then
|
cannam@128
|
359 $ make = mmks
|
cannam@128
|
360 $ else
|
cannam@128
|
361 $ write sys$output "Unsupported make choice ''mmks' ignored"
|
cannam@128
|
362 $ write sys$output "Use MMK or MMS instead"
|
cannam@128
|
363 $ endif
|
cannam@128
|
364 $ endif
|
cannam@128
|
365 $ if cparm .eqs. "HELP" then gosub bhelp
|
cannam@128
|
366 $ endif
|
cannam@128
|
367 $ i = i + 1
|
cannam@128
|
368 $ goto opt_loop
|
cannam@128
|
369 $ endif
|
cannam@128
|
370 $ return
|
cannam@128
|
371 $!------------------------------------------------------------------------------
|
cannam@128
|
372 $!
|
cannam@128
|
373 $! Look for the compiler used
|
cannam@128
|
374 $!
|
cannam@128
|
375 $! Version history
|
cannam@128
|
376 $! 0.01 20040223 First version to receive a number
|
cannam@128
|
377 $! 0.02 20040229 Save/set value of decc$no_rooted_search_lists
|
cannam@128
|
378 $! 0.03 20060202 Extend handling of GNU C
|
cannam@128
|
379 $! 0.04 20090402 Compaq -> hp
|
cannam@128
|
380 $CHECK_COMPILER:
|
cannam@128
|
381 $ if (.not. (its_decc .or. its_vaxc .or. its_gnuc))
|
cannam@128
|
382 $ then
|
cannam@128
|
383 $ its_decc = (f$search("SYS$SYSTEM:DECC$COMPILER.EXE") .nes. "")
|
cannam@128
|
384 $ its_vaxc = .not. its_decc .and. (F$Search("SYS$System:VAXC.Exe") .nes. "")
|
cannam@128
|
385 $ its_gnuc = .not. (its_decc .or. its_vaxc) .and. (f$trnlnm("gnu_cc") .nes. "")
|
cannam@128
|
386 $ endif
|
cannam@128
|
387 $!
|
cannam@128
|
388 $! Exit if no compiler available
|
cannam@128
|
389 $!
|
cannam@128
|
390 $ if (.not. (its_decc .or. its_vaxc .or. its_gnuc))
|
cannam@128
|
391 $ then goto CC_ERR
|
cannam@128
|
392 $ else
|
cannam@128
|
393 $ if its_decc
|
cannam@128
|
394 $ then
|
cannam@128
|
395 $ write sys$output "CC compiler check ... hp C"
|
cannam@128
|
396 $ if f$trnlnm("decc$no_rooted_search_lists") .nes. ""
|
cannam@128
|
397 $ then
|
cannam@128
|
398 $ dnrsl = f$trnlnm("decc$no_rooted_search_lists")
|
cannam@128
|
399 $ endif
|
cannam@128
|
400 $ define/nolog decc$no_rooted_search_lists 1
|
cannam@128
|
401 $ else
|
cannam@128
|
402 $ if its_vaxc then write sys$output "CC compiler check ... VAX C"
|
cannam@128
|
403 $ if its_gnuc
|
cannam@128
|
404 $ then
|
cannam@128
|
405 $ write sys$output "CC compiler check ... GNU C"
|
cannam@128
|
406 $ if f$trnlnm(topt) then write topt "gnu_cc:[000000]gcclib.olb/lib"
|
cannam@128
|
407 $ if f$trnlnm(optf) then write optf "gnu_cc:[000000]gcclib.olb/lib"
|
cannam@128
|
408 $ cc = "gcc"
|
cannam@128
|
409 $ endif
|
cannam@128
|
410 $ if f$trnlnm(topt) then write topt "sys$share:vaxcrtl.exe/share"
|
cannam@128
|
411 $ if f$trnlnm(optf) then write optf "sys$share:vaxcrtl.exe/share"
|
cannam@128
|
412 $ endif
|
cannam@128
|
413 $ endif
|
cannam@128
|
414 $ return
|
cannam@128
|
415 $!------------------------------------------------------------------------------
|
cannam@128
|
416 $!
|
cannam@128
|
417 $! If MMS/MMK are available dump out the descrip.mms if required
|
cannam@128
|
418 $!
|
cannam@128
|
419 $CREA_MMS:
|
cannam@128
|
420 $ write sys$output "Creating descrip.mms..."
|
cannam@128
|
421 $ create descrip.mms
|
cannam@128
|
422 $ open/append out descrip.mms
|
cannam@128
|
423 $ copy sys$input: out
|
cannam@128
|
424 $ deck
|
cannam@128
|
425 # descrip.mms: MMS description file for building zlib on VMS
|
cannam@128
|
426 # written by Martin P.J. Zinser
|
cannam@128
|
427 # <zinser@zinser.no-ip.info or martin.zinser@eurexchange.com>
|
cannam@128
|
428
|
cannam@128
|
429 OBJS = adler32.obj, compress.obj, crc32.obj, gzclose.obj, gzlib.obj\
|
cannam@128
|
430 gzread.obj, gzwrite.obj, uncompr.obj, infback.obj\
|
cannam@128
|
431 deflate.obj, trees.obj, zutil.obj, inflate.obj, \
|
cannam@128
|
432 inftrees.obj, inffast.obj
|
cannam@128
|
433
|
cannam@128
|
434 $ eod
|
cannam@128
|
435 $ write out "CFLAGS=", ccopt
|
cannam@128
|
436 $ write out "LOPTS=", lopts
|
cannam@128
|
437 $ write out "all : example.exe minigzip.exe libz.olb"
|
cannam@128
|
438 $ copy sys$input: out
|
cannam@128
|
439 $ deck
|
cannam@128
|
440 @ write sys$output " Example applications available"
|
cannam@128
|
441
|
cannam@128
|
442 libz.olb : libz.olb($(OBJS))
|
cannam@128
|
443 @ write sys$output " libz available"
|
cannam@128
|
444
|
cannam@128
|
445 example.exe : example.obj libz.olb
|
cannam@128
|
446 link $(LOPTS) example,libz.olb/lib
|
cannam@128
|
447
|
cannam@128
|
448 minigzip.exe : minigzip.obj libz.olb
|
cannam@128
|
449 link $(LOPTS) minigzip,libz.olb/lib
|
cannam@128
|
450
|
cannam@128
|
451 clean :
|
cannam@128
|
452 delete *.obj;*,libz.olb;*,*.opt;*,*.exe;*
|
cannam@128
|
453
|
cannam@128
|
454
|
cannam@128
|
455 # Other dependencies.
|
cannam@128
|
456 adler32.obj : adler32.c zutil.h zlib.h zconf.h
|
cannam@128
|
457 compress.obj : compress.c zlib.h zconf.h
|
cannam@128
|
458 crc32.obj : crc32.c zutil.h zlib.h zconf.h
|
cannam@128
|
459 deflate.obj : deflate.c deflate.h zutil.h zlib.h zconf.h
|
cannam@128
|
460 example.obj : [.test]example.c zlib.h zconf.h
|
cannam@128
|
461 gzclose.obj : gzclose.c zutil.h zlib.h zconf.h
|
cannam@128
|
462 gzlib.obj : gzlib.c zutil.h zlib.h zconf.h
|
cannam@128
|
463 gzread.obj : gzread.c zutil.h zlib.h zconf.h
|
cannam@128
|
464 gzwrite.obj : gzwrite.c zutil.h zlib.h zconf.h
|
cannam@128
|
465 inffast.obj : inffast.c zutil.h zlib.h zconf.h inftrees.h inffast.h
|
cannam@128
|
466 inflate.obj : inflate.c zutil.h zlib.h zconf.h
|
cannam@128
|
467 inftrees.obj : inftrees.c zutil.h zlib.h zconf.h inftrees.h
|
cannam@128
|
468 minigzip.obj : [.test]minigzip.c zlib.h zconf.h
|
cannam@128
|
469 trees.obj : trees.c deflate.h zutil.h zlib.h zconf.h
|
cannam@128
|
470 uncompr.obj : uncompr.c zlib.h zconf.h
|
cannam@128
|
471 zutil.obj : zutil.c zutil.h zlib.h zconf.h
|
cannam@128
|
472 infback.obj : infback.c zutil.h inftrees.h inflate.h inffast.h inffixed.h
|
cannam@128
|
473 $ eod
|
cannam@128
|
474 $ close out
|
cannam@128
|
475 $ return
|
cannam@128
|
476 $!------------------------------------------------------------------------------
|
cannam@128
|
477 $!
|
cannam@128
|
478 $! Read list of core library sources from makefile.in and create options
|
cannam@128
|
479 $! needed to build shareable image
|
cannam@128
|
480 $!
|
cannam@128
|
481 $CREA_OLIST:
|
cannam@128
|
482 $ open/read min makefile.in
|
cannam@128
|
483 $ open/write mod modules.opt
|
cannam@128
|
484 $ src_check_list = "OBJZ =#OBJG ="
|
cannam@128
|
485 $MRLOOP:
|
cannam@128
|
486 $ read/end=mrdone min rec
|
cannam@128
|
487 $ i = 0
|
cannam@128
|
488 $SRC_CHECK_LOOP:
|
cannam@128
|
489 $ src_check = f$element(i, "#", src_check_list)
|
cannam@128
|
490 $ i = i+1
|
cannam@128
|
491 $ if src_check .eqs. "#" then goto mrloop
|
cannam@128
|
492 $ if (f$extract(0,6,rec) .nes. src_check) then goto src_check_loop
|
cannam@128
|
493 $ rec = rec - src_check
|
cannam@128
|
494 $ gosub extra_filnam
|
cannam@128
|
495 $ if (f$element(1,"\",rec) .eqs. "\") then goto mrloop
|
cannam@128
|
496 $MRSLOOP:
|
cannam@128
|
497 $ read/end=mrdone min rec
|
cannam@128
|
498 $ gosub extra_filnam
|
cannam@128
|
499 $ if (f$element(1,"\",rec) .nes. "\") then goto mrsloop
|
cannam@128
|
500 $MRDONE:
|
cannam@128
|
501 $ close min
|
cannam@128
|
502 $ close mod
|
cannam@128
|
503 $ return
|
cannam@128
|
504 $!------------------------------------------------------------------------------
|
cannam@128
|
505 $!
|
cannam@128
|
506 $! Take record extracted in crea_olist and split it into single filenames
|
cannam@128
|
507 $!
|
cannam@128
|
508 $EXTRA_FILNAM:
|
cannam@128
|
509 $ myrec = f$edit(rec - "\", "trim,compress")
|
cannam@128
|
510 $ i = 0
|
cannam@128
|
511 $FELOOP:
|
cannam@128
|
512 $ srcfil = f$element(i," ", myrec)
|
cannam@128
|
513 $ if (srcfil .nes. " ")
|
cannam@128
|
514 $ then
|
cannam@128
|
515 $ write mod f$parse(srcfil,,,"NAME"), ".obj"
|
cannam@128
|
516 $ i = i + 1
|
cannam@128
|
517 $ goto feloop
|
cannam@128
|
518 $ endif
|
cannam@128
|
519 $ return
|
cannam@128
|
520 $!------------------------------------------------------------------------------
|
cannam@128
|
521 $!
|
cannam@128
|
522 $! Find current Zlib version number
|
cannam@128
|
523 $!
|
cannam@128
|
524 $FIND_VERSION:
|
cannam@128
|
525 $ open/read h_in 'v_file'
|
cannam@128
|
526 $hloop:
|
cannam@128
|
527 $ read/end=hdone h_in rec
|
cannam@128
|
528 $ rec = f$edit(rec,"TRIM")
|
cannam@128
|
529 $ if (f$extract(0,1,rec) .nes. "#") then goto hloop
|
cannam@128
|
530 $ rec = f$edit(rec - "#", "TRIM")
|
cannam@128
|
531 $ if f$element(0," ",rec) .nes. "define" then goto hloop
|
cannam@128
|
532 $ if f$element(1," ",rec) .eqs. v_string
|
cannam@128
|
533 $ then
|
cannam@128
|
534 $ version = 'f$element(2," ",rec)'
|
cannam@128
|
535 $ goto hdone
|
cannam@128
|
536 $ endif
|
cannam@128
|
537 $ goto hloop
|
cannam@128
|
538 $hdone:
|
cannam@128
|
539 $ close h_in
|
cannam@128
|
540 $ return
|
cannam@128
|
541 $!------------------------------------------------------------------------------
|
cannam@128
|
542 $!
|
cannam@128
|
543 $CHECK_CONFIG:
|
cannam@128
|
544 $!
|
cannam@128
|
545 $ in_ldef = f$locate(cdef,libdefs)
|
cannam@128
|
546 $ if (in_ldef .lt. f$length(libdefs))
|
cannam@128
|
547 $ then
|
cannam@128
|
548 $ write aconf "#define ''cdef' 1"
|
cannam@128
|
549 $ libdefs = f$extract(0,in_ldef,libdefs) + -
|
cannam@128
|
550 f$extract(in_ldef + f$length(cdef) + 1, -
|
cannam@128
|
551 f$length(libdefs) - in_ldef - f$length(cdef) - 1, -
|
cannam@128
|
552 libdefs)
|
cannam@128
|
553 $ else
|
cannam@128
|
554 $ if (f$type('cdef') .eqs. "INTEGER")
|
cannam@128
|
555 $ then
|
cannam@128
|
556 $ write aconf "#define ''cdef' ", 'cdef'
|
cannam@128
|
557 $ else
|
cannam@128
|
558 $ if (f$type('cdef') .eqs. "STRING")
|
cannam@128
|
559 $ then
|
cannam@128
|
560 $ write aconf "#define ''cdef' ", """", '''cdef'', """"
|
cannam@128
|
561 $ else
|
cannam@128
|
562 $ gosub check_cc_def
|
cannam@128
|
563 $ endif
|
cannam@128
|
564 $ endif
|
cannam@128
|
565 $ endif
|
cannam@128
|
566 $ return
|
cannam@128
|
567 $!------------------------------------------------------------------------------
|
cannam@128
|
568 $!
|
cannam@128
|
569 $! Check if this is a define relating to the properties of the C/C++
|
cannam@128
|
570 $! compiler
|
cannam@128
|
571 $!
|
cannam@128
|
572 $ CHECK_CC_DEF:
|
cannam@128
|
573 $ if (cdef .eqs. "_LARGEFILE64_SOURCE")
|
cannam@128
|
574 $ then
|
cannam@128
|
575 $ copy sys$input: 'tc'
|
cannam@128
|
576 $ deck
|
cannam@128
|
577 #include "tconfig"
|
cannam@128
|
578 #define _LARGEFILE
|
cannam@128
|
579 #include <stdio.h>
|
cannam@128
|
580
|
cannam@128
|
581 int main(){
|
cannam@128
|
582 FILE *fp;
|
cannam@128
|
583 fp = fopen("temp.txt","r");
|
cannam@128
|
584 fseeko(fp,1,SEEK_SET);
|
cannam@128
|
585 fclose(fp);
|
cannam@128
|
586 }
|
cannam@128
|
587
|
cannam@128
|
588 $ eod
|
cannam@128
|
589 $ test_inv = false
|
cannam@128
|
590 $ comm_h = false
|
cannam@128
|
591 $ gosub cc_prop_check
|
cannam@128
|
592 $ return
|
cannam@128
|
593 $ endif
|
cannam@128
|
594 $ write aconf "/* ", line, " */"
|
cannam@128
|
595 $ return
|
cannam@128
|
596 $!------------------------------------------------------------------------------
|
cannam@128
|
597 $!
|
cannam@128
|
598 $! Check for properties of C/C++ compiler
|
cannam@128
|
599 $!
|
cannam@128
|
600 $! Version history
|
cannam@128
|
601 $! 0.01 20031020 First version to receive a number
|
cannam@128
|
602 $! 0.02 20031022 Added logic for defines with value
|
cannam@128
|
603 $! 0.03 20040309 Make sure local config file gets not deleted
|
cannam@128
|
604 $! 0.04 20041230 Also write include for configure run
|
cannam@128
|
605 $! 0.05 20050103 Add processing of "comment defines"
|
cannam@128
|
606 $CC_PROP_CHECK:
|
cannam@128
|
607 $ cc_prop = true
|
cannam@128
|
608 $ is_need = false
|
cannam@128
|
609 $ is_need = (f$extract(0,4,cdef) .eqs. "NEED") .or. (test_inv .eq. true)
|
cannam@128
|
610 $ if f$search(th) .eqs. "" then create 'th'
|
cannam@128
|
611 $ set message/nofac/noident/nosever/notext
|
cannam@128
|
612 $ on error then continue
|
cannam@128
|
613 $ cc 'tmpnam'
|
cannam@128
|
614 $ if .not. ($status) then cc_prop = false
|
cannam@128
|
615 $ on error then continue
|
cannam@128
|
616 $! The headers might lie about the capabilities of the RTL
|
cannam@128
|
617 $ link 'tmpnam',tmp.opt/opt
|
cannam@128
|
618 $ if .not. ($status) then cc_prop = false
|
cannam@128
|
619 $ set message/fac/ident/sever/text
|
cannam@128
|
620 $ on error then goto err_exit
|
cannam@128
|
621 $ delete/nolog 'tmpnam'.*;*/exclude='th'
|
cannam@128
|
622 $ if (cc_prop .and. .not. is_need) .or. -
|
cannam@128
|
623 (.not. cc_prop .and. is_need)
|
cannam@128
|
624 $ then
|
cannam@128
|
625 $ write sys$output "Checking for ''cdef'... yes"
|
cannam@128
|
626 $ if f$type('cdef_val'_yes) .nes. ""
|
cannam@128
|
627 $ then
|
cannam@128
|
628 $ if f$type('cdef_val'_yes) .eqs. "INTEGER" -
|
cannam@128
|
629 then call write_config f$fao("#define !AS !UL",cdef,'cdef_val'_yes)
|
cannam@128
|
630 $ if f$type('cdef_val'_yes) .eqs. "STRING" -
|
cannam@128
|
631 then call write_config f$fao("#define !AS !AS",cdef,'cdef_val'_yes)
|
cannam@128
|
632 $ else
|
cannam@128
|
633 $ call write_config f$fao("#define !AS 1",cdef)
|
cannam@128
|
634 $ endif
|
cannam@128
|
635 $ if (cdef .eqs. "HAVE_FSEEKO") .or. (cdef .eqs. "_LARGE_FILES") .or. -
|
cannam@128
|
636 (cdef .eqs. "_LARGEFILE64_SOURCE") then -
|
cannam@128
|
637 call write_config f$string("#define _LARGEFILE 1")
|
cannam@128
|
638 $ else
|
cannam@128
|
639 $ write sys$output "Checking for ''cdef'... no"
|
cannam@128
|
640 $ if (comm_h)
|
cannam@128
|
641 $ then
|
cannam@128
|
642 call write_config f$fao("/* !AS */",line)
|
cannam@128
|
643 $ else
|
cannam@128
|
644 $ if f$type('cdef_val'_no) .nes. ""
|
cannam@128
|
645 $ then
|
cannam@128
|
646 $ if f$type('cdef_val'_no) .eqs. "INTEGER" -
|
cannam@128
|
647 then call write_config f$fao("#define !AS !UL",cdef,'cdef_val'_no)
|
cannam@128
|
648 $ if f$type('cdef_val'_no) .eqs. "STRING" -
|
cannam@128
|
649 then call write_config f$fao("#define !AS !AS",cdef,'cdef_val'_no)
|
cannam@128
|
650 $ else
|
cannam@128
|
651 $ call write_config f$fao("#undef !AS",cdef)
|
cannam@128
|
652 $ endif
|
cannam@128
|
653 $ endif
|
cannam@128
|
654 $ endif
|
cannam@128
|
655 $ return
|
cannam@128
|
656 $!------------------------------------------------------------------------------
|
cannam@128
|
657 $!
|
cannam@128
|
658 $! Check for properties of C/C++ compiler with multiple result values
|
cannam@128
|
659 $!
|
cannam@128
|
660 $! Version history
|
cannam@128
|
661 $! 0.01 20040127 First version
|
cannam@128
|
662 $! 0.02 20050103 Reconcile changes from cc_prop up to version 0.05
|
cannam@128
|
663 $CC_MPROP_CHECK:
|
cannam@128
|
664 $ cc_prop = true
|
cannam@128
|
665 $ i = 1
|
cannam@128
|
666 $ idel = 1
|
cannam@128
|
667 $ MT_LOOP:
|
cannam@128
|
668 $ if f$type(result_'i') .eqs. "STRING"
|
cannam@128
|
669 $ then
|
cannam@128
|
670 $ set message/nofac/noident/nosever/notext
|
cannam@128
|
671 $ on error then continue
|
cannam@128
|
672 $ cc 'tmpnam'_'i'
|
cannam@128
|
673 $ if .not. ($status) then cc_prop = false
|
cannam@128
|
674 $ on error then continue
|
cannam@128
|
675 $! The headers might lie about the capabilities of the RTL
|
cannam@128
|
676 $ link 'tmpnam'_'i',tmp.opt/opt
|
cannam@128
|
677 $ if .not. ($status) then cc_prop = false
|
cannam@128
|
678 $ set message/fac/ident/sever/text
|
cannam@128
|
679 $ on error then goto err_exit
|
cannam@128
|
680 $ delete/nolog 'tmpnam'_'i'.*;*
|
cannam@128
|
681 $ if (cc_prop)
|
cannam@128
|
682 $ then
|
cannam@128
|
683 $ write sys$output "Checking for ''cdef'... ", mdef_'i'
|
cannam@128
|
684 $ if f$type(mdef_'i') .eqs. "INTEGER" -
|
cannam@128
|
685 then call write_config f$fao("#define !AS !UL",cdef,mdef_'i')
|
cannam@128
|
686 $ if f$type('cdef_val'_yes) .eqs. "STRING" -
|
cannam@128
|
687 then call write_config f$fao("#define !AS !AS",cdef,mdef_'i')
|
cannam@128
|
688 $ goto msym_clean
|
cannam@128
|
689 $ else
|
cannam@128
|
690 $ i = i + 1
|
cannam@128
|
691 $ goto mt_loop
|
cannam@128
|
692 $ endif
|
cannam@128
|
693 $ endif
|
cannam@128
|
694 $ write sys$output "Checking for ''cdef'... no"
|
cannam@128
|
695 $ call write_config f$fao("#undef !AS",cdef)
|
cannam@128
|
696 $ MSYM_CLEAN:
|
cannam@128
|
697 $ if (idel .le. msym_max)
|
cannam@128
|
698 $ then
|
cannam@128
|
699 $ delete/sym mdef_'idel'
|
cannam@128
|
700 $ idel = idel + 1
|
cannam@128
|
701 $ goto msym_clean
|
cannam@128
|
702 $ endif
|
cannam@128
|
703 $ return
|
cannam@128
|
704 $!------------------------------------------------------------------------------
|
cannam@128
|
705 $!
|
cannam@128
|
706 $! Write configuration to both permanent and temporary config file
|
cannam@128
|
707 $!
|
cannam@128
|
708 $! Version history
|
cannam@128
|
709 $! 0.01 20031029 First version to receive a number
|
cannam@128
|
710 $!
|
cannam@128
|
711 $WRITE_CONFIG: SUBROUTINE
|
cannam@128
|
712 $ write aconf 'p1'
|
cannam@128
|
713 $ open/append confh 'th'
|
cannam@128
|
714 $ write confh 'p1'
|
cannam@128
|
715 $ close confh
|
cannam@128
|
716 $ENDSUBROUTINE
|
cannam@128
|
717 $!------------------------------------------------------------------------------
|
cannam@128
|
718 $!
|
cannam@128
|
719 $! Analyze the project map file and create the symbol vector for a shareable
|
cannam@128
|
720 $! image from it
|
cannam@128
|
721 $!
|
cannam@128
|
722 $! Version history
|
cannam@128
|
723 $! 0.01 20120128 First version
|
cannam@128
|
724 $! 0.02 20120226 Add pre-load logic
|
cannam@128
|
725 $!
|
cannam@128
|
726 $ MAP_2_SHOPT: Subroutine
|
cannam@128
|
727 $!
|
cannam@128
|
728 $ SAY := "WRITE_ SYS$OUTPUT"
|
cannam@128
|
729 $!
|
cannam@128
|
730 $ IF F$SEARCH("''P1'") .EQS. ""
|
cannam@128
|
731 $ THEN
|
cannam@128
|
732 $ SAY "MAP_2_SHOPT-E-NOSUCHFILE: Error, inputfile ''p1' not available"
|
cannam@128
|
733 $ goto exit_m2s
|
cannam@128
|
734 $ ENDIF
|
cannam@128
|
735 $ IF "''P2'" .EQS. ""
|
cannam@128
|
736 $ THEN
|
cannam@128
|
737 $ SAY "MAP_2_SHOPT: Error, no output file provided"
|
cannam@128
|
738 $ goto exit_m2s
|
cannam@128
|
739 $ ENDIF
|
cannam@128
|
740 $!
|
cannam@128
|
741 $ module1 = "deflate#deflateEnd#deflateInit_#deflateParams#deflateSetDictionary"
|
cannam@128
|
742 $ module2 = "gzclose#gzerror#gzgetc#gzgets#gzopen#gzprintf#gzputc#gzputs#gzread"
|
cannam@128
|
743 $ module3 = "gzseek#gztell#inflate#inflateEnd#inflateInit_#inflateSetDictionary"
|
cannam@128
|
744 $ module4 = "inflateSync#uncompress#zlibVersion#compress"
|
cannam@128
|
745 $ open/read map 'p1
|
cannam@128
|
746 $ if axp .or. ia64
|
cannam@128
|
747 $ then
|
cannam@128
|
748 $ open/write aopt a.opt
|
cannam@128
|
749 $ open/write bopt b.opt
|
cannam@128
|
750 $ write aopt " CASE_SENSITIVE=YES"
|
cannam@128
|
751 $ write bopt "SYMBOL_VECTOR= (-"
|
cannam@128
|
752 $ mod_sym_num = 1
|
cannam@128
|
753 $ MOD_SYM_LOOP:
|
cannam@128
|
754 $ if f$type(module'mod_sym_num') .nes. ""
|
cannam@128
|
755 $ then
|
cannam@128
|
756 $ mod_in = 0
|
cannam@128
|
757 $ MOD_SYM_IN:
|
cannam@128
|
758 $ shared_proc = f$element(mod_in, "#", module'mod_sym_num')
|
cannam@128
|
759 $ if shared_proc .nes. "#"
|
cannam@128
|
760 $ then
|
cannam@128
|
761 $ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",-
|
cannam@128
|
762 f$edit(shared_proc,"upcase"),shared_proc)
|
cannam@128
|
763 $ write bopt f$fao("!AS=PROCEDURE,-",shared_proc)
|
cannam@128
|
764 $ mod_in = mod_in + 1
|
cannam@128
|
765 $ goto mod_sym_in
|
cannam@128
|
766 $ endif
|
cannam@128
|
767 $ mod_sym_num = mod_sym_num + 1
|
cannam@128
|
768 $ goto mod_sym_loop
|
cannam@128
|
769 $ endif
|
cannam@128
|
770 $MAP_LOOP:
|
cannam@128
|
771 $ read/end=map_end map line
|
cannam@128
|
772 $ if (f$locate("{",line).lt. f$length(line)) .or. -
|
cannam@128
|
773 (f$locate("global:", line) .lt. f$length(line))
|
cannam@128
|
774 $ then
|
cannam@128
|
775 $ proc = true
|
cannam@128
|
776 $ goto map_loop
|
cannam@128
|
777 $ endif
|
cannam@128
|
778 $ if f$locate("}",line).lt. f$length(line) then proc = false
|
cannam@128
|
779 $ if f$locate("local:", line) .lt. f$length(line) then proc = false
|
cannam@128
|
780 $ if proc
|
cannam@128
|
781 $ then
|
cannam@128
|
782 $ shared_proc = f$edit(line,"collapse")
|
cannam@128
|
783 $ chop_semi = f$locate(";", shared_proc)
|
cannam@128
|
784 $ if chop_semi .lt. f$length(shared_proc) then -
|
cannam@128
|
785 shared_proc = f$extract(0, chop_semi, shared_proc)
|
cannam@128
|
786 $ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",-
|
cannam@128
|
787 f$edit(shared_proc,"upcase"),shared_proc)
|
cannam@128
|
788 $ write bopt f$fao("!AS=PROCEDURE,-",shared_proc)
|
cannam@128
|
789 $ endif
|
cannam@128
|
790 $ goto map_loop
|
cannam@128
|
791 $MAP_END:
|
cannam@128
|
792 $ close/nolog aopt
|
cannam@128
|
793 $ close/nolog bopt
|
cannam@128
|
794 $ open/append libopt 'p2'
|
cannam@128
|
795 $ open/read aopt a.opt
|
cannam@128
|
796 $ open/read bopt b.opt
|
cannam@128
|
797 $ALOOP:
|
cannam@128
|
798 $ read/end=aloop_end aopt line
|
cannam@128
|
799 $ write libopt line
|
cannam@128
|
800 $ goto aloop
|
cannam@128
|
801 $ALOOP_END:
|
cannam@128
|
802 $ close/nolog aopt
|
cannam@128
|
803 $ sv = ""
|
cannam@128
|
804 $BLOOP:
|
cannam@128
|
805 $ read/end=bloop_end bopt svn
|
cannam@128
|
806 $ if (svn.nes."")
|
cannam@128
|
807 $ then
|
cannam@128
|
808 $ if (sv.nes."") then write libopt sv
|
cannam@128
|
809 $ sv = svn
|
cannam@128
|
810 $ endif
|
cannam@128
|
811 $ goto bloop
|
cannam@128
|
812 $BLOOP_END:
|
cannam@128
|
813 $ write libopt f$extract(0,f$length(sv)-2,sv), "-"
|
cannam@128
|
814 $ write libopt ")"
|
cannam@128
|
815 $ close/nolog bopt
|
cannam@128
|
816 $ delete/nolog/noconf a.opt;*,b.opt;*
|
cannam@128
|
817 $ else
|
cannam@128
|
818 $ if vax
|
cannam@128
|
819 $ then
|
cannam@128
|
820 $ open/append libopt 'p2'
|
cannam@128
|
821 $ mod_sym_num = 1
|
cannam@128
|
822 $ VMOD_SYM_LOOP:
|
cannam@128
|
823 $ if f$type(module'mod_sym_num') .nes. ""
|
cannam@128
|
824 $ then
|
cannam@128
|
825 $ mod_in = 0
|
cannam@128
|
826 $ VMOD_SYM_IN:
|
cannam@128
|
827 $ shared_proc = f$element(mod_in, "#", module'mod_sym_num')
|
cannam@128
|
828 $ if shared_proc .nes. "#"
|
cannam@128
|
829 $ then
|
cannam@128
|
830 $ write libopt f$fao("UNIVERSAL=!AS",-
|
cannam@128
|
831 f$edit(shared_proc,"upcase"))
|
cannam@128
|
832 $ mod_in = mod_in + 1
|
cannam@128
|
833 $ goto vmod_sym_in
|
cannam@128
|
834 $ endif
|
cannam@128
|
835 $ mod_sym_num = mod_sym_num + 1
|
cannam@128
|
836 $ goto vmod_sym_loop
|
cannam@128
|
837 $ endif
|
cannam@128
|
838 $VMAP_LOOP:
|
cannam@128
|
839 $ read/end=vmap_end map line
|
cannam@128
|
840 $ if (f$locate("{",line).lt. f$length(line)) .or. -
|
cannam@128
|
841 (f$locate("global:", line) .lt. f$length(line))
|
cannam@128
|
842 $ then
|
cannam@128
|
843 $ proc = true
|
cannam@128
|
844 $ goto vmap_loop
|
cannam@128
|
845 $ endif
|
cannam@128
|
846 $ if f$locate("}",line).lt. f$length(line) then proc = false
|
cannam@128
|
847 $ if f$locate("local:", line) .lt. f$length(line) then proc = false
|
cannam@128
|
848 $ if proc
|
cannam@128
|
849 $ then
|
cannam@128
|
850 $ shared_proc = f$edit(line,"collapse")
|
cannam@128
|
851 $ chop_semi = f$locate(";", shared_proc)
|
cannam@128
|
852 $ if chop_semi .lt. f$length(shared_proc) then -
|
cannam@128
|
853 shared_proc = f$extract(0, chop_semi, shared_proc)
|
cannam@128
|
854 $ write libopt f$fao("UNIVERSAL=!AS",-
|
cannam@128
|
855 f$edit(shared_proc,"upcase"))
|
cannam@128
|
856 $ endif
|
cannam@128
|
857 $ goto vmap_loop
|
cannam@128
|
858 $VMAP_END:
|
cannam@128
|
859 $ else
|
cannam@128
|
860 $ write sys$output "Unknown Architecture (Not VAX, AXP, or IA64)"
|
cannam@128
|
861 $ write sys$output "No options file created"
|
cannam@128
|
862 $ endif
|
cannam@128
|
863 $ endif
|
cannam@128
|
864 $ EXIT_M2S:
|
cannam@128
|
865 $ close/nolog map
|
cannam@128
|
866 $ close/nolog libopt
|
cannam@128
|
867 $ endsubroutine
|