chd 0.1.1

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