1!==========================================================================
2! MMS description file for bzip2 support in UnZip 6              2008-02-16
3!==========================================================================
4!
5! To build the LIBBZ2_NS library, edit the USER CUSTOMIZATION
6! lines below to taste, then do
7!	mms
8! or
9!	mmk
10! if you use Matt's Make (free MMS-compatible make utility).
11!
12! In all other cases where you want to explicitly specify a makefile target,
13! you have to specify your compiling environment, too. These are:
14!
15!	$ MMS/MACRO=(__ALPHA__=1)		! Alpha AXP, (DEC C)
16!	$ MMS/MACRO=(__IA64__=1)		! IA64, (DEC C)
17!	$ MMS/MACRO=(__DECC__=1)		! VAX, using DEC C
18!	$ MMS/MACRO=(__FORCE_VAXC__=1)		! VAX, prefering VAXC over DECC
19!	$ MMS/MACRO=(__VAXC__=1)		! VAX, where VAXC is default
20!	$ MMS/MACRO=(__GNUC__=1)		! VAX, using GNU C
21!
22
23! To delete all .OBJ, .OLB, .EXE and .HLP files,
24!	mms clean
25
26## The "DO_THE_BUILD" target does no longer work with current
27## releases of the MMS tool, sigh.
28#DO_THE_BUILD :
29#	@ decc = f$search("SYS$SYSTEM:DECC$COMPILER.EXE").nes.""
30#	@ axp = (f$getsyi("HW_MODEL") .ge. 1024) .and. -
31#	   (f$getsyi("HW_MODEL") .lt. 4096)
32#	@ i64 = f$getsyi("HW_MODEL") .ge. 4096
33#	@ macro = "/MACRO=("
34#.IFDEF CCOPTS
35#	@ macro = macro + """CCOPTS=$(CCOPTS)"","
36#.ENDIF
37#	@ if decc then macro = macro + "__DECC__=1,"
38#	@ if axp then macro = macro + "__ALPHA__=1,"
39#	@ if i64 then macro = macro + "__IA64__=1,"
40#	@ if .not.(axp .or. i64 .or. decc) then macro = macro + "__VAXC__=1,"
41#	@ macro = f$extract(0,f$length(macro)-1,macro)+ ")"
42#	$(MMS)$(MMSQUALIFIERS)'macro' DEFAULT
43
44# Define MMK architecture macros when using MMS.
45
46.IFDEF __MMK__                  # __MMK__
47.ELSE                           # __MMK__
48ALPHA_X_ALPHA = 1
49IA64_X_IA64 = 1
50VAX_X_VAX = 1
51.IFDEF $(MMS$ARCH_NAME)_X_ALPHA     # $(MMS$ARCH_NAME)_X_ALPHA
52__ALPHA__ = 1
53.ENDIF                              # $(MMS$ARCH_NAME)_X_ALPHA
54.IFDEF $(MMS$ARCH_NAME)_X_IA64      # $(MMS$ARCH_NAME)_X_IA64
55__IA64__ = 1
56.ENDIF                              # $(MMS$ARCH_NAME)_X_IA64
57.IFDEF $(MMS$ARCH_NAME)_X_VAX       # $(MMS$ARCH_NAME)_X_VAX
58__VAX__ = 1
59.ENDIF                              # $(MMS$ARCH_NAME)_X_VAX
60.ENDIF                          # __MMK__
61
62.IFDEF __ALPHA__                # __ALPHA__
63DEST = ALPHA
64#E = .AXP_EXE
65#O = .AXP_OBJ
66#A = .AXP_OLB
67.ELSE                           # __ALPHA__
68.IFDEF __IA64__                     # __IA64__
69DEST = IA64
70#E = .I64_EXE
71#O = .I64_OBJ
72#A = .I64_OLB
73.ELSE                               # __IA64__
74.IFDEF __DECC__                         # __DECC__
75DEST = VAX
76#E = .VAX_DECC_EXE
77#O = .VAX_DECC_OBJ
78#A = .VAX_DECC_OLB
79.ENDIF                                  # __DECC__
80.IFDEF __FORCE_VAXC__                   # __FORCE_VAXC__
81__VAXC__ = 1
82.ENDIF                                  # __FORCE_VAXC__
83.IFDEF __VAXC__                         # __VAXC__
84DEST = VAXV
85#E = .VAX_VAXC_EXE
86#O = .VAX_VAXC_OBJ
87#A = .VAX_VAXC_OLB
88.ENDIF                                  # __VAXC__
89.IFDEF __GNUC__                         # __GNUC__
90DEST = VAXG
91#E = .VAX_GNUC_EXE
92#O = .VAX_GNUC_OBJ
93#A = .VAX_GNUC_OLB
94.ENDIF                                  # __GNUC__
95.ENDIF                              # __IA64__
96.ENDIF                          # __ALPHA__
97.IFDEF O                        # O
98.ELSE                           # O
99!If EXE and OBJ extensions aren't defined, define them
100E = .EXE
101O = .OBJ
102A = .OLB
103.ENDIF                          # O
104
105.IFDEF SRCDIR
106.ELSE
107SRCDIR = []
108.ENDIF
109.IFDEF DSTDIR                   # DSTDIR
110.ELSE                           # DSTDIR
111.IFDEF DEST                       # DEST
112DSTDIR = [.$(DEST)]
113.ELSE                             # DEST
114DSTDIR = []
115.ENDIF                            # DEST
116.ENDIF                          # DSTDIR
117
118!!!!!!!!!!!!!!!!!!!!!!!!!!! USER CUSTOMIZATION !!!!!!!!!!!!!!!!!!!!!!!!!!!!
119! add any common optional preprocessor flags (macros) here
120! (do not forget a trailing comma!!):
121COMMON_DEFS =
122!!!!!!!!!!!!!!!!!!!!!!!! END OF USER CUSTOMIZATION !!!!!!!!!!!!!!!!!!!!!!!!
123
124.IFDEF __GNUC__
125CC = gcc
126LIBS = ,GNU_CC:[000000]GCCLIB.OLB/LIB
127.ELSE
128CC = cc
129LIBS =
130.ENDIF
131
132CFLAGS = /NOLIST
133
134OPTFILE = sys$disk:[.vms]vaxcshr.opt
135
136.IFDEF __ALPHA__                # __ALPHA__
137CC_OPTIONS = /STANDARD=RELAX/PREFIX=ALL/ANSI/NAMES=(AS_IS)
138CC_DEFS =
139.ELSE                           # __ALPHA__
140.IFDEF __IA64__                     # __IA64__
141CC_OPTIONS = /STANDARD=RELAX/PREFIX=ALL/ANSI/NAMES=(AS_IS)
142CC_DEFS =
143.ELSE                               # __IA64__
144.IFDEF __DECC__                         # __DECC__
145CC_OPTIONS = /DECC/STANDARD=RELAX/PREFIX=ALL/NAMES=(AS_IS)
146CC_DEFS =
147.ELSE                                   # __DECC__
148.IFDEF __FORCE_VAXC__                       # __FORCE_VAXC__
149!Select VAXC on systems where DEC C exists
150CC_OPTIONS = /VAXC
151.ELSE                                       # __FORCE_VAXC__
152!No flag allowed/needed on a pure VAXC system
153CC_OPTIONS =
154.ENDIF                                      # __FORCE_VAXC__
155CC_DEFS =
156.ENDIF                                  # __DECC__
157.ENDIF                              # __IA64__
158.ENDIF                          # __ALPHA__
159
160!
161! The .FIRST target is needed only if we're serious about building,
162! and then, only if BZIP2 support was requested.
163!
164.IFDEF MMSTARGETS               # MMSTARGETS
165.FIRST
166	@ write sys$output "   Destination: $(DSTDIR)"
167	@ write sys$output ""
168	if ("$(DEST)" .nes. "") then -
169	 if (f$search("$(DEST).DIR;1") .eqs. "") then -
170	  create /directory $(DSTDIR)
171.ENDIF                          # MMSTARGETS
172CC_DEFS2 =
173CFLAGS_INCL = /INCLUDE = []
174
175.IFDEF __DEBUG__
176CDEB = /DEBUG/NOOPTIMIZE
177.ELSE
178CDEB =
179.ENDIF
180
181CFLAGS_ALL  = $(CC_OPTIONS) $(CFLAGS) $(CDEB) $(CFLAGS_INCL) -
182              /def=($(CC_DEFS) $(COMMON_DEFS) BZ_NO_STDIO, VMS) -
183              $(CCOPTS)
184
185
186OBJBZ2LIB = \
187 $(DSTDIR)blocksort$(O), \
188 $(DSTDIR)huffman$(O), \
189 $(DSTDIR)crctable$(O), \
190 $(DSTDIR)randtable$(O), \
191 $(DSTDIR)compress$(O), \
192 $(DSTDIR)decompress$(O), \
193 $(DSTDIR)bzlib$(O)
194
195OLBBZ2 = $(DSTDIR)LIBBZ2_NS$(A)
196
197BZIP2_H = $(SRCDIR)bzlib.h $(SRCDIR)bzlib_private.h
198
199!!!!!!!!!!!!!!!!!!! override default rules: !!!!!!!!!!!!!!!!!!!
200.suffixes :
201.suffixes : .ANL $(E) $(A) .MLB .HLB .TLB .FLB $(O) -
202	    .FORM .BLI .B32 .C .c .COB -
203	    .FOR .BAS .B16 .PLI .PEN .PAS .MAC .MAR .M64 .CLD .MSG .COR .DBL -
204	    .RPG .SCN .IFDL .RBA .RC .RCO .RFO .RPA .SC .SCO .SFO .SPA .SPL -
205	    .SQLADA .SQLMOD .RGK .RGC .MEM .RNO .HLP .RNH .L32 .REQ .R32 -
206	    .L16 .R16 .TXT .H .FRM .MMS .DDL .COM .DAT .OPT .CDO .SDML .ADF -
207	    .GDF .LDF .MDF .RDF .TDF
208
209$(O)$(A) :
210	If "''F$Search("$(MMS$TARGET)")'" .EQS. "" Then $(LIBR)/Create $(MMS$TARGET)
211	$(LIBR)$(LIBRFLAGS) $(MMS$TARGET) $(MMS$SOURCE)
212
213.c$(O) :
214	$(CC) $(CFLAGS_ALL) /OBJ=$(MMS$TARGET) $(MMS$SOURCE)
215
216!!!!!!!!!!!!!!!!!! here starts the bzip2 specific part !!!!!!!!!!!
217
218DEFAULT default :	CHK_DESTDIR $(OLBBZ2)
219	@	!	Do nothing.
220
221CLEAN.COM clean.com :
222	@ open/write tmp $(MMS$TARGET)
223	@ write tmp "$!"
224	@ write tmp "$!	Clean.com --	procedure to delete files. It always returns success"
225	@ write tmp "$!			status despite any error or warnings. Also it extracts"
226	@ write tmp "$!			filename from MMS ""module=file"" format."
227	@ write tmp "$!"
228	@ write tmp "$ on control_y then goto ctly"
229	@ write tmp "$ if p1.eqs."""" then exit 1"
230	@ write tmp "$ i = -1"
231	@ write tmp "$scan_list:"
232	@ write tmp "$	i = i+1"
233	@ write tmp "$	item = f$elem(i,"","",p1)"
234	@ write tmp "$	if item.eqs."""" then goto scan_list"
235	@ write tmp "$	if item.eqs."","" then goto done		! End of list"
236	@ write tmp "$	item = f$edit(item,""trim"")		! Clean of blanks"
237	@ write tmp "$	wild = f$elem(1,""="",item)"
238	@ write tmp "$	show sym wild"
239	@ write tmp "$	if wild.eqs.""="" then wild = f$elem(0,""="",item)"
240	@ write tmp "$	vers = f$parse(wild,,,""version"",""syntax_only"")"
241	@ write tmp "$	if vers.eqs."";"" then wild = wild - "";"" + "";*"""
242	@ write tmp "$scan:"
243	@ write tmp "$		f = f$search(wild)"
244	@ write tmp "$		if f.eqs."""" then goto scan_list"
245	@ write tmp "$		on error then goto err"
246	@ write tmp "$		on warning then goto warn"
247	@ write tmp "$		delete/log 'f'"
248	@ write tmp "$warn:"
249	@ write tmp "$err:"
250	@ write tmp "$		goto scan"
251	@ write tmp "$done:"
252	@ write tmp "$ctly:"
253	@ write tmp "$	exit 1"
254	@ close tmp
255
256CLEAN clean : clean.com
257	@clean "$(OBJBZ2LIB)"
258	@clean "$(OLBBZ2)"
259	@- delete/noconfirm/nolog clean.com;*
260        @- if ("$(DEST).dir" .nes. "") then -
261	   if (f$search("$(DEST).dir") .nes. "") then -
262	    set protect=w:d $(DEST).dir;*
263        @- if ("$(DEST).dir" .nes. "") then -
264	   if (f$search("$(DEST).dir") .nes. "") then -
265	    delete/noconfirm $(DEST).dir;*
266
267CHK_DESTDIR chk_destdir :
268	@ If ("$(DEST)" .NES. "") Then -
269	   If "''F$Search("$(DEST).DIR;1")'" .EQS. "" Then -
270	    Create /directory $(DSTDIR)
271
272$(OLBBZ2)	: $(OBJBZ2LIB)
273	If "''F$Search("$(MMS$TARGET)")'" .EQS. "" Then $(LIBR)/Create $(MMS$TARGET)
274	$(LIBR)$(LIBRFLAGS) $(MMS$TARGET) $(MMS$CHANGED_LIST)
275	@ write sys$output "$(MMS$TARGET) updated."
276
277$(OBJBZ2LIB)	: $(BZIP2_H)
278
279$(DSTDIR)blocksort$(O)	: $(SRCDIR)blocksort.c
280$(DSTDIR)huffman$(O)	: $(SRCDIR)huffman.c
281$(DSTDIR)crctable$(O)	: $(SRCDIR)crctable.c
282$(DSTDIR)randtable$(O)	: $(SRCDIR)randtable.c
283$(DSTDIR)compress$(O)	: $(SRCDIR)compress.c
284$(DSTDIR)decompress$(O)	: $(SRCDIR)decompress.c
285$(DSTDIR)bzlib$(O)	: $(SRCDIR)bzlib.c
286