1#                                               23 February 2007.  SMS.
2#
3#    Zip 3.0 for VMS - MMS (or MMK) Source Description File.
4#
5
6# This description file is included by other description files.  It is
7# not intended to be used alone.  Verify proper inclusion.
8
9.IFDEF INCL_DESCRIP_SRC
10.ELSE
11$$$$ THIS DESCRIPTION FILE IS NOT INTENDED TO BE USED THIS WAY.
12.ENDIF
13
14
15# Define MMK architecture macros when using MMS.
16
17.IFDEF __MMK__                  # __MMK__
18.ELSE                           # __MMK__
19ALPHA_X_ALPHA = 1
20IA64_X_IA64 = 1
21VAX_X_VAX = 1
22.IFDEF $(MMS$ARCH_NAME)_X_ALPHA     # $(MMS$ARCH_NAME)_X_ALPHA
23__ALPHA__ = 1
24.ENDIF                              # $(MMS$ARCH_NAME)_X_ALPHA
25.IFDEF $(MMS$ARCH_NAME)_X_IA64      # $(MMS$ARCH_NAME)_X_IA64
26__IA64__ = 1
27.ENDIF                              # $(MMS$ARCH_NAME)_X_IA64
28.IFDEF $(MMS$ARCH_NAME)_X_VAX       # $(MMS$ARCH_NAME)_X_VAX
29__VAX__ = 1
30.ENDIF                              # $(MMS$ARCH_NAME)_X_VAX
31.ENDIF                          # __MMK__
32
33# Combine command-line VAX C compiler macros.
34
35.IFDEF VAXC                     # VAXC
36VAXC_OR_FORCE_VAXC = 1
37.ELSE                           # VAXC
38.IFDEF FORCE_VAXC                   # FORCE_VAXC
39VAXC_OR_FORCE_VAXC = 1
40.ENDIF                              # FORCE_VAXC
41.ENDIF                          # VAXC
42
43# Analyze architecture-related and option macros.
44
45.IFDEF __ALPHA__                # __ALPHA__
46DECC = 1
47DESTM = ALPHA
48.ELSE                           # __ALPHA__
49.IFDEF __IA64__                     # __IA64__
50DECC = 1
51DESTM = IA64
52.ELSE                               # __IA64__
53.IFDEF __VAX__                          # __VAX__
54.IFDEF VAXC_OR_FORCE_VAXC                   # VAXC_OR_FORCE_VAXC
55DESTM = VAXV
56.ELSE                                       # VAXC_OR_FORCE_VAXC
57.IFDEF GNUC                                     # GNUC
58CC = GCC
59DESTM = VAXG
60.ELSE                                           # GNUC
61DECC = 1
62DESTM = VAX
63.ENDIF                                          # GNUC
64.ENDIF                                      # VAXC_OR_FORCE_VAXC
65.ELSE                                   # __VAX__
66DESTM = UNK
67UNK_DEST = 1
68.ENDIF                                  # __VAX__
69.ENDIF                              # __IA64__
70.ENDIF                          # __ALPHA__
71
72.IFDEF IM                       # IM
73DESTI = I
74.ELSE                           # IM
75DESTI =
76.ENDIF                          # IM
77
78.IFDEF LARGE                    # LARGE
79.IFDEF __VAX__                      # __VAX__
80DESTL =
81.ELSE                               # __VAX__
82DESTL = L
83.ENDIF                              # __VAX__
84.ELSE                           # LARGE
85DESTL =
86.ENDIF                          # LARGE
87
88DEST = $(DESTM)$(DESTI)$(DESTL)
89SEEK_BZ = $(DESTM)$(DESTL)
90
91# Library module name suffix for XXX_.OBJ with GNU C.
92
93.IFDEF GNUC                     # GNUC
94GCC_ = _
95.ELSE                           # GNUC
96GCC_ =
97.ENDIF                          # GNUC
98
99# Check for option problems.
100
101.IFDEF __VAX__                  # __VAX__
102.IFDEF LARGE                        # LARGE
103LARGE_VAX = 1
104.ENDIF                              # LARGE
105.IFDEF VAXC_OR_FORCE_VAXC           # VAXC_OR_FORCE_VAXC
106.IFDEF GNUC                             # GNUC
107VAX_MULTI_CMPL = 1
108.ENDIF                                  # GNUC
109.ENDIF                              # VAXC_OR_FORCE_VAXC
110.ELSE                           # __VAX__
111.IFDEF VAXC_OR_FORCE_VAXC           # VAXC_OR_FORCE_VAXC
112NON_VAX_CMPL = 1
113.ELSE                               # VAXC_OR_FORCE_VAXC
114.IFDEF GNUC                             # GNUC
115NON_VAX_CMPL = 1
116.ENDIF                                  # GNUC
117.ENDIF                              # VAXC_OR_FORCE_VAXC
118.ENDIF                          # __VAX__
119
120# Complain if warranted.  Otherwise, show destination directory.
121# Make the destination directory, if necessary.
122				
123.IFDEF UNK_DEST                 # UNK_DEST
124.FIRST
125	@ write sys$output -
126 "   Unknown system architecture."
127.IFDEF __MMK__                      # __MMK__
128	@ write sys$output -
129 "   MMK on IA64?  Try adding ""/MACRO = __IA64__""."
130.ELSE                               # __MMK__
131	@ write sys$output -
132 "   MMS too old?  Try adding ""/MACRO = MMS$ARCH_NAME=ALPHA"","
133	@ write sys$output -
134 "   or ""/MACRO = MMS$ARCH_NAME=IA64"", or ""/MACRO = MMS$ARCH_NAME=VAX"","
135	@ write sys$output -
136 "   as appropriate.  (Or try a newer version of MMS.)"
137.ENDIF                              # __MMK__
138	@ write sys$output ""
139	I_WILL_DIE_NOW.  /$$$$INVALID$$$$
140.ELSE                           # UNK_DEST
141.IFDEF VAX_MULTI_CMPL               # VAX_MULTI_CMPL
142.FIRST
143	@ write sys$output -
144 "   Macro ""GNUC"" is incompatible with ""VAXC"" or ""FORCE_VAXC""."
145	@ write sys$output ""
146	I_WILL_DIE_NOW.  /$$$$INVALID$$$$
147.ELSE                               # VAX_MULTI_CMPL
148.IFDEF NON_VAX_CMPL                     # NON_VAX_CMPL
149.FIRST
150	@ write sys$output -
151 "   Macros ""GNUC"", ""VAXC"", and ""FORCE_VAXC"" are valid only on VAX."
152	@ write sys$output ""
153	I_WILL_DIE_NOW.  /$$$$INVALID$$$$
154.ELSE                                   # NON_VAX_CMPL
155.IFDEF LARGE_VAX                            # LARGE_VAX
156.FIRST
157	@ write sys$output -
158 "   Macro ""LARGE"" is invalid on VAX."
159	@ write sys$output ""
160	I_WILL_DIE_NOW.  /$$$$INVALID$$$$
161.ELSE                                       # LARGE_VAX
162.IFDEF IZ_BZIP2                                 # IZ_BZIP2
163CDEFS_BZ = , BZIP2_SUPPORT
164CFLAGS_INCL = /INCLUDE = ([], [.VMS])
165INCL_BZIP2_M = , ZBZ2ERR
166LIB_BZIP2_OPTS = LIB_BZIP2:LIBBZ2_NS.OLB /library,
167.FIRST
168	@ define incl_bzip2 $(IZ_BZIP2)
169	@ @[.VMS]FIND_BZIP2_LIB.COM $(IZ_BZIP2) $(SEEK_BZ) -
170	   LIBBZ2_NS.OLB lib_bzip2
171	@ write sys$output ""
172	@ if (f$trnlnm( "lib_bzip2") .nes. "") then -
173	   write sys$output "   BZIP2 dir: ''f$trnlnm( "lib_bzip2")'"
174	@ if (f$trnlnm( "lib_bzip2") .eqs. "") then -
175	   write sys$output "   Can not find BZIP2 object library."
176	@ write sys$output ""
177	@ if (f$trnlnm( "lib_bzip2") .eqs. "") then -
178	   I_WILL_DIE_NOW.  /$$$$INVALID$$$$
179	@ write sys$output "   Destination: [.$(DEST)]"
180	@ write sys$output ""
181	if (f$search( "$(DEST).DIR;1") .eqs. "") then -
182	 create /directory [.$(DEST)]
183.ELSE                                           # IZ_BZIP2
184CDEFS_BZ =
185CFLAGS_INCL = /include = []
186INCL_BZIP2_M = , ZBZ2ERR
187LIB_BZIP2_OPTS =
188.FIRST
189	@ write sys$output "   Destination: [.$(DEST)]"
190	@ write sys$output ""
191	if (f$search( "$(DEST).DIR;1") .eqs. "") then -
192	 create /directory [.$(DEST)]
193.ENDIF                                          # IZ_BZIP2
194.ENDIF                                      # LARGE_VAX
195.ENDIF                                  # NON_VAX_CMPL
196.ENDIF                              # VAX_MULTI_CMPL
197.ENDIF                          # UNK_DEST
198
199# DBG options.
200
201.IFDEF DBG                      # DBG
202CFLAGS_DBG = /debug /nooptimize
203LINKFLAGS_DBG = /debug /traceback
204.ELSE                           # DBG
205CFLAGS_DBG =
206LINKFLAGS_DBG = /notraceback
207.ENDIF                          # DBG
208
209# "IM" scheme for storing VMS/RMS file attributes.
210
211.IFDEF IM                       # IM
212CDEFS_IM = , VMS_IM_EXTRA
213.ELSE                           # IM
214CDEFS_IM =
215.ENDIF                          # IM
216
217# Large-file options.
218
219.IFDEF LARGE                    # LARGE
220CDEFS_LARGE = , LARGE_FILE_SUPPORT
221.ELSE                           # LARGE
222CDEFS_LARGE =
223.ENDIF                          # LARGE
224
225# C compiler defines.
226
227.IFDEF LOCAL_ZIP
228C_LOCAL_ZIP = , $(LOCAL_ZIP)
229.ELSE
230C_LOCAL_ZIP =
231.ENDIF
232
233CDEFS = VMS $(CDEFS_BZ) $(CDEFS_IM) $(CDEFS_LARGE) $(C_LOCAL_ZIP)
234
235CDEFS_UNX = /define = ($(CDEFS))
236
237CDEFS_CLI = /define = ($(CDEFS), VMSCLI)
238
239CDEFS_UTIL = /define = ($(CDEFS), UTIL)
240
241# Other C compiler options.
242
243.IFDEF DECC                             # DECC
244CFLAGS_ARCH = /decc /prefix = (all)
245.ELSE                                   # DECC
246.IFDEF FORCE_VAXC                           # FORCE_VAXC
247CFLAGS_ARCH = /vaxc
248.IFDEF VAXC                                     # VAXC
249.ELSE                                           # VAXC
250VAXC = 1
251.ENDIF                                          # VAXC
252.ELSE                                       # FORCE_VAXC
253CFLAGS_ARCH =
254.ENDIF                                      # FORCE_VAXC
255.ENDIF                                  # DECC
256
257.IFDEF VAXC_OR_FORCE_VAXC               # VAXC_OR_FORCE_VAXC
258OPT_FILE = [.$(DEST)]VAXCSHR.OPT
259LFLAGS_ARCH = $(OPT_FILE) /options, 
260.ELSE                                   # VAXC_OR_FORCE_VAXC
261.IFDEF GNUC                                 # GNUC
262OPT_FILE = [.$(DEST)]VAXCSHR.OPT
263LFLAGS_GNU = GNU_CC:[000000]GCCLIB.OLB /LIBRARY
264LFLAGS_ARCH = $(LFLAGS_GNU), SYS$DISK:$(OPT_FILE) /options, 
265.ELSE                                       # GNUC
266OPT_FILE =
267LFLAGS_ARCH =
268.ENDIF                                      # GNUC
269.ENDIF                                  # VAXC_OR_FORCE_VAXC
270
271# LIST options.
272
273.IFDEF LIST                     # LIST
274.IFDEF DECC                         # DECC
275CFLAGS_LIST = /list = $*.LIS /show = (all, nomessages)
276.ELSE                               # DECC
277CFLAGS_LIST = /list = $*.LIS /show = (all)
278.ENDIF                              # DECC
279LINKFLAGS_LIST = /map = $*.MAP /cross_reference /full
280.ELSE                           # LIST
281CFLAGS_LIST =
282LINKFLAGS_LIST =
283.ENDIF                          # LIST
284
285# Common CFLAGS and LINKFLAGS.
286
287CFLAGS = \
288 $(CFLAGS_ARCH) $(CFLAGS_DBG) $(CFLAGS_INCL) $(CFLAGS_LIST) $(CCOPTS) \
289 /object = $(MMS$TARGET)
290
291LINKFLAGS = \
292 $(LINKFLAGS_DBG) $(LINKFLAGS_LIST) $(LINKOPTS) \
293 /executable = $(MMS$TARGET)
294
295# Object library module=object lists.
296
297#    Primary object library, [].
298
299MODS_OBJS_LIB_ZIP_N = \
300 CRC32=[.$(DEST)]CRC32.OBJ \
301 CRYPT=[.$(DEST)]CRYPT.OBJ \
302 DEFLATE=[.$(DEST)]DEFLATE.OBJ \
303 FILEIO=[.$(DEST)]FILEIO.OBJ \
304 GLOBALS=[.$(DEST)]GLOBALS.OBJ \
305 TREES=[.$(DEST)]TREES.OBJ \
306 TTYIO=[.$(DEST)]TTYIO.OBJ \
307 UTIL=[.$(DEST)]UTIL.OBJ \
308 ZBZ2ERR=[.$(DEST)]ZBZ2ERR.OBJ \
309 ZIPFILE=[.$(DEST)]ZIPFILE.OBJ \
310 ZIPUP=[.$(DEST)]ZIPUP.OBJ
311
312#    Primary object library, [.VMS].
313                    
314MODS_OBJS_LIB_ZIP_V = \
315 VMS=[.$(DEST)]VMS.OBJ \
316 VMSMUNCH=[.$(DEST)]VMSMUNCH.OBJ \
317 VMSZIP=[.$(DEST)]VMSZIP.OBJ
318
319MODS_OBJS_LIB_ZIP = $(MODS_OBJS_LIB_ZIP_N) $(MODS_OBJS_LIB_ZIP_V)
320
321#    Utility object library, normal, [].
322
323MODS_OBJS_LIB_ZIPUTILS_N = \
324 GLOBALS=[.$(DEST)]GLOBALS.OBJ \
325 TTYIO=[.$(DEST)]TTYIO.OBJ
326
327#    Utility object library, variant, [].
328
329MODS_OBJS_LIB_ZIPUTILS_U = \
330 CRC32$(GCC_)=[.$(DEST)]CRC32_.OBJ \
331 CRYPT$(GCC_)=[.$(DEST)]CRYPT_.OBJ \
332 FILEIO$(GCC_)=[.$(DEST)]FILEIO_.OBJ \
333 UTIL$(GCC_)=[.$(DEST)]UTIL_.OBJ \
334 ZIPFILE$(GCC_)=[.$(DEST)]ZIPFILE_.OBJ
335
336#    Utility object library, normal, [.VMS].
337
338MODS_OBJS_LIB_ZIPUTILS_N_V = \
339 VMSMUNCH=[.$(DEST)]VMSMUNCH.OBJ
340
341#    Utility object library, variant, [.VMS].
342
343MODS_OBJS_LIB_ZIPUTILS_U_V = \
344 VMS$(GCC_)=[.$(DEST)]VMS_.OBJ
345
346MODS_OBJS_LIB_ZIPUTILS = $(MODS_OBJS_LIB_ZIPUTILS_N) \
347 $(MODS_OBJS_LIB_ZIPUTILS_U) \
348 $(MODS_OBJS_LIB_ZIPUTILS_N_V) \
349 $(MODS_OBJS_LIB_ZIPUTILS_U_V) \
350
351#    CLI object library, [.VMS].
352
353MODS_OBJS_LIB_ZIPCLI_C_V = \
354 CMDLINE=[.$(DEST)]CMDLINE.OBJ
355
356MODS_OBJS_LIB_ZIPCLI_CLD_V = \
357 ZIP_CLITABLE=[.$(DEST)]ZIP_CLI.OBJ
358
359MODS_OBJS_LIB_ZIPCLI = \
360 $(MODS_OBJS_LIB_ZIPCLI_C_V) \
361 $(MODS_OBJS_LIB_ZIPCLI_CLD_V)
362
363# Executables.
364
365ZIP = [.$(DEST)]ZIP.EXE
366
367ZIP_CLI = [.$(DEST)]ZIP_CLI.EXE
368
369ZIPUTILS = \
370 [.$(DEST)]ZIPCLOAK.EXE \
371 [.$(DEST)]ZIPNOTE.EXE \
372 [.$(DEST)]ZIPSPLIT.EXE
373
374